<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="https://blog.rootfly.xyz/rss.xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>工具 on Xiang's Blog</title><link>https://blog.rootfly.xyz/tags/%E5%B7%A5%E5%85%B7/</link><description>Recent content in 工具 on Xiang's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.rootfly.xyz/tags/%E5%B7%A5%E5%85%B7/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude Code 使用指南</title><link>https://blog.rootfly.xyz/post/claude-code-guide/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://blog.rootfly.xyz/post/claude-code-guide/</guid><description>Claude Code 终端 AI 编程助手的完整使用指南，涵盖安装、会话管理、权限模式、技能系统、钩子、快捷键等核心功能。</description><content:encoded><![CDATA[&lt;h2 id=&#34;一安装与启动&#34;&gt;一、安装与启动&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @anthropic-ai/claude-code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 基本用法&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude                    &lt;span class=&#34;c1&#34;&gt;# 进入交互式会话&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude &lt;span class=&#34;s2&#34;&gt;&amp;#34;帮我审查这个 PR&amp;#34;&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;# 单次任务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;解释这个函数&amp;#34;&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;# 非交互模式，直接输出到 stdout&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude -n &amp;lt;名称&amp;gt;          &lt;span class=&#34;c1&#34;&gt;# 命名当前会话，方便后续查找&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --worktree         &lt;span class=&#34;c1&#34;&gt;# 在隔离 git worktree 中启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;二会话管理&#34;&gt;二、会话管理&lt;/h2&gt;
&lt;p&gt;会话以 JSONL 文件存储在 &lt;code&gt;~/.claude/projects/&lt;/code&gt; 下，每个会话拥有独立的上下文窗口。&lt;/p&gt;
&lt;h3 id=&#34;21-终端命令&#34;&gt;2.1 终端命令&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;操作&lt;/th&gt;
          &lt;th&gt;命令&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;恢复最近会话&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;claude --continue&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;交互式选择会话&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;claude --resume&lt;/code&gt;（方向键选择，空格预览）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;恢复指定会话&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;claude --resume &amp;lt;名称&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;分支新会话&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;claude --continue --fork-session&lt;/code&gt;（保留历史，从旧会话分叉）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;按 PR 恢复&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;claude --from-pr &amp;lt;编号&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;22-会话内命令&#34;&gt;2.2 会话内命令&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
          &lt;th&gt;别名&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/resume [名称]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;打开会话选择器，或切换到指定会话&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/continue&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/clear&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;清空当前对话上下文，开启新会话&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/reset&lt;/code&gt;、&lt;code&gt;/new&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/compact [指令]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;压缩长对话释放上下文窗口，可选保留重点&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/rename [名称]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;重命名当前会话，不传名称则自动从历史生成&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/branch [名称]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;在当前点分叉出新会话&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/fork&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/export [文件名]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;导出当前对话为纯文本&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/copy [N]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;复制最近一次 AI 回复到剪贴板，&lt;code&gt;/copy 2&lt;/code&gt; 复制倒数第二次&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/btw &amp;lt;问题&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;快速旁提问——不记入对话历史，不消耗上下文，无工具调用&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/recap&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;按需生成一行会话摘要&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/context&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;以彩色网格可视化当前上下文占用，附优化建议&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/add-dir &amp;lt;路径&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;动态添加会话可访问的工作目录&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/rewind&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;回退对话和/或代码到之前的检查点&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/checkpoint&lt;/code&gt;、&lt;code&gt;/undo&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;会话选择器快捷键：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;快捷键&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+A&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;显示所有项目的会话&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+W&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;显示当前仓库所有 worktree 的会话&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+B&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;按当前 git 分支过滤&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+R&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;重命名高亮会话&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Space&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;预览会话内容&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/&lt;/code&gt; 或任意可打印字符&lt;/td&gt;
          &lt;td&gt;搜索/过滤会话&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;三权限模式&#34;&gt;三、权限模式&lt;/h2&gt;
&lt;h3 id=&#34;31-六种模式&#34;&gt;3.1 六种模式&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模式&lt;/th&gt;
          &lt;th&gt;自动批准范围&lt;/th&gt;
          &lt;th&gt;适用场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;default&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;仅读取&lt;/td&gt;
          &lt;td&gt;入门、敏感项目&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;acceptEdits&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;读取 + 文件编辑 + 常见文件系统操作&lt;/td&gt;
          &lt;td&gt;快速迭代同时保持审查&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;plan&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;仅读取&lt;/td&gt;
          &lt;td&gt;先探索再编码&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;auto&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;全部（分类器安全检查）&lt;/td&gt;
          &lt;td&gt;长任务、减少授权疲劳&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;dontAsk&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;仅预批准工具&lt;/td&gt;
          &lt;td&gt;CI/自动化环境&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;bypassPermissions&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;除受保护路径外全部&lt;/td&gt;
          &lt;td&gt;隔离容器/VM&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;32-切换方式&#34;&gt;3.2 切换方式&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Shift+Tab&lt;/code&gt; — 终端内循环切换模式&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/plan [描述]&lt;/code&gt; — 从提示符进入计划模式&lt;/li&gt;
&lt;li&gt;&lt;code&gt;claude --permission-mode plan&lt;/code&gt; — 启动时指定模式&lt;/li&gt;
&lt;li&gt;settings.json: &lt;code&gt;&amp;quot;permissions&amp;quot;: { &amp;quot;defaultMode&amp;quot;: &amp;quot;plan&amp;quot; }&lt;/code&gt; — 设为默认&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;四模式切换命令&#34;&gt;四、模式切换命令&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/plan [描述]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;进入计划模式（仅研究不编辑）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/model [模型]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;选择或切换模型，支持调整 effort 级别&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/effort [low|medium|high|xhigh|max|auto]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;设置模型推理力度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/fast [on|off]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;快速模式开关（仅 Opus 4.6 可用）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/color [颜色|default]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;设置提示栏颜色：red/blue/green/yellow/purple/orange/pink/cyan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/focus&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;专注视图——仅显示上次提示、工具调用摘要和最终回复（全屏模式）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/tui [default|fullscreen]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;切换终端 UI 渲染模式&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/voice [hold|tap|off]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;语音输入模式&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/sandbox&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;沙盒模式开关&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;五代码与审查&#34;&gt;五、代码与审查&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/review [PR]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;拉取并审查当前分支或指定 PR&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/security-review&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;安全审查当前分支的所有待变更文件&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/diff&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;打开交互式 diff 查看器，含未提交变更和逐轮 diff&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/init&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;为当前项目自动生成 CLAUDE.md&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/simplify [关注点]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;并发启动 3 个审查子代理审查代码质量，汇总后自动修复&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/autofix-pr [提示]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;远程守护——监控 PR，CI 失败或有评论时自动推送修复&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/install-github-app&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;为仓库安装 Claude GitHub Actions 应用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/pr-comments&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;查看 PR 评论&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/ultrareview [PR]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;云端多代理深度审查（Pro/Max 免费 3 次）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/ultraplan &amp;lt;提示&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;云端起草计划，浏览器审查后执行或返回终端&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;六权限与配置&#34;&gt;六、权限与配置&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
          &lt;th&gt;别名&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/permissions&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;管理工具的 allow/ask/deny 规则（交互对话框）&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/allowed-tools&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/config&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;打开设置界面：主题、模型、输出风格、偏好&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/settings&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/hooks&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;查看所有钩子配置（按事件分类的只读浏览器）&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/memory&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;编辑 CLAUDE.md 记忆文件，开关自动记忆&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/keybindings&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;打开或创建快捷键配置文件&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/skills&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;列出所有可用技能（按 &lt;code&gt;t&lt;/code&gt; 按 token 数排序）&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/mcp&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;管理 MCP 服务器连接与 OAuth 认证&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/plugin&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;管理插件&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/reload-plugins&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;热重载所有插件&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/ide&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;管理 IDE 集成状态&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/chrome&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;配置 Chrome 浏览器集成&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/remote-env&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;配置 &lt;code&gt;--remote&lt;/code&gt; 启动时的默认远程环境&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/terminal-setup&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;配置 Shift+Enter 键位（VS Code、Cursor、Windsurf 等）&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/doctor&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;诊断安装和环境问题&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/status&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;系统状态：版本、模型、账户、连接&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/login&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;登录 Anthropic 账户&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/logout&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;退出 Anthropic 账户&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/privacy-settings&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;隐私设置（Pro/Max）&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;七任务与调度&#34;&gt;七、任务与调度&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
          &lt;th&gt;别名&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/tasks&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;查看和管理后台任务&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/bashes&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/agents&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;管理子代理配置&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/loop [间隔] [命令]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;按间隔重复执行，如 &lt;code&gt;/loop 5m check deploy&lt;/code&gt;；裸 &lt;code&gt;/loop&lt;/code&gt; 进入自主维护&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/schedule [描述]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;创建/更新/列表/运行云端定时代理（routines）&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/routines&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/usage&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;会话费用、用量限制、活动统计&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/cost&lt;/code&gt;、&lt;code&gt;/stats&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/extra-usage&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;配置超额用量（达速率上限时启用）&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;71-任务task系统&#34;&gt;7.1 任务（Task）系统&lt;/h3&gt;
&lt;p&gt;Claude Code 对复杂多步任务自动创建任务列表，有四个状态：&lt;code&gt;pending&lt;/code&gt; → &lt;code&gt;in_progress&lt;/code&gt; → &lt;code&gt;completed&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl+T&lt;/code&gt; — 在状态栏切换显示任务列表（最多 5 条）&lt;/li&gt;
&lt;li&gt;桌面通知告知 —— &amp;ldquo;给我列一下所有任务&amp;rdquo;&lt;/li&gt;
&lt;li&gt;任务在上下文压缩后依然保留&lt;/li&gt;
&lt;li&gt;跨会话共享任务列表：&lt;code&gt;CLAUDE_CODE_TASK_LIST_ID=my-project claude&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;72-定时调度细节&#34;&gt;7.2 定时调度细节&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/loop 5m check deploy        &lt;span class=&#34;c1&#34;&gt;# 每 5 分钟检查一次&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/loop                         &lt;span class=&#34;c1&#34;&gt;# 自主维护循环（适合 CI 监控等场景）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/loop check the PR            &lt;span class=&#34;c1&#34;&gt;# Claude 自我调节节奏&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/loop&lt;/code&gt; 只在当前会话存活期间有效，退出即终止&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/schedule&lt;/code&gt; 创建的 routine 是云端持久化的，与当前会话生命周期无关&lt;/li&gt;
&lt;li&gt;创建 &lt;code&gt;.claude/loop.md&lt;/code&gt; 可以自定义默认维护任务的提示词&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;八skills技能系统&#34;&gt;八、Skills（技能）系统&lt;/h2&gt;
&lt;p&gt;技能是扩展 Claude 能力的机制。核心优势：指令按需加载，不用的技能零成本。&lt;/p&gt;
&lt;h3 id=&#34;81-技能-vs-claudemd&#34;&gt;8.1 技能 vs CLAUDE.md&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;特性&lt;/th&gt;
          &lt;th&gt;CLAUDE.md&lt;/th&gt;
          &lt;th&gt;Skill&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;加载时机&lt;/td&gt;
          &lt;td&gt;每次对话自动全量加载&lt;/td&gt;
          &lt;td&gt;仅在调用时加载&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;适合内容&lt;/td&gt;
          &lt;td&gt;项目架构、常用命令、关键约束&lt;/td&gt;
          &lt;td&gt;专项流程、参考手册、长文档&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;调用方式&lt;/td&gt;
          &lt;td&gt;自动&lt;/td&gt;
          &lt;td&gt;用户 &lt;code&gt;/技能名&lt;/code&gt; 或 Claude 自动匹配&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;经验法则&lt;/strong&gt;：长参考文档、专项操作流程放 Skill；项目基础信息、核心约束放 CLAUDE.md。&lt;/p&gt;
&lt;h3 id=&#34;82-内置技能&#34;&gt;8.2 内置技能&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/batch &amp;lt;指令&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;大规模并行修改：分解 5-30 个任务，在隔离 worktree 中并发执行，每个开 PR&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/claude-api&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;加载 Claude API 参考（Python/TS/Java/Go/Ruby/C#/PHP/curl）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/debug [描述]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;开启调试日志并辅助排查问题&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/fewer-permission-prompts&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;扫描历史记录，为常用只读命令生成项目 allowlist 减少授权弹窗&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/insights&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;分析使用数据生成 Claude Code 会话报告&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/simplify [关注点]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;并发启动 3 个审查子代理审查代码质量，汇总后自动修复&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/statusline&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;配置终端状态栏&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/team-onboarding&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;根据你过去 30 天的使用历史生成团队入职指南&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/loop&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;循环执行命令&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/schedule&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;云端定时任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/init&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;初始化 CLAUDE.md&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;PR 审查&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/security-review&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;安全审查&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;83-创建自定义-skill&#34;&gt;8.3 创建自定义 Skill&lt;/h3&gt;
&lt;p&gt;在以下路径创建 &lt;code&gt;SKILL.md&lt;/code&gt; 文件：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;~/.claude/skills/&amp;lt;名称&amp;gt;/SKILL.md    # 个人（所有项目可用）
.claude/skills/&amp;lt;名称&amp;gt;/SKILL.md      # 项目级（可提交到仓库）
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;文件格式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;my-skill&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;这个技能做什么，何时使用&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;when_to_use&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;额外的触发短语&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;disable-model-invocation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 设为 true 则只能手动调用&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;user-invocable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 设为 true 则只能 Claude 自动调用&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;allowed-tools&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;Bash(git *)      &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 技能激活期间预批准的工具&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;sonnet                   &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 覆盖模型&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;effort&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;high                    &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 覆盖努力级别&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;fork                   &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 在隔离子代理中运行&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;agent: Explore                   # 配合 context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;fork 指定子代理类型&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;*.py&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                    &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 限制触发路径&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;技能指令内容...&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;84-技能调用与生命周期&#34;&gt;8.4 技能调用与生命周期&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;手动调用&lt;/strong&gt;：&lt;code&gt;/技能名 参数1 参数2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动调用&lt;/strong&gt;：Claude 根据 &lt;code&gt;description&lt;/code&gt; 字段自动匹配&lt;/li&gt;
&lt;li&gt;一旦调用，技能内容作为消息进入对话，保留整个会话&lt;/li&gt;
&lt;li&gt;上下文压缩时会保留最近一次调用（前 5000 token）&lt;/li&gt;
&lt;li&gt;技能目录被监视，编辑后即时生效无需重启&lt;/li&gt;
&lt;li&gt;支持 &lt;code&gt;!命令&lt;/code&gt; 语法在 prompt 到达 Claude 前做 shell 预处理&lt;/li&gt;
&lt;li&gt;变量替换：&lt;code&gt;$ARGUMENTS&lt;/code&gt;、&lt;code&gt;$0&lt;/code&gt;、&lt;code&gt;$1&lt;/code&gt;、&lt;code&gt;${CLAUDE_SESSION_ID}&lt;/code&gt;、&lt;code&gt;${CLAUDE_SKILL_DIR}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;九hooks钩子系统&#34;&gt;九、Hooks（钩子）系统&lt;/h2&gt;
&lt;p&gt;钩子是用户定义的脚本/HTTP 端点/提示词/代理子进程，在特定生命周期事件时自动执行。&lt;/p&gt;
&lt;h3 id=&#34;91-所有事件一览&#34;&gt;9.1 所有事件一览&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;事件&lt;/th&gt;
          &lt;th&gt;触发时机&lt;/th&gt;
          &lt;th&gt;可阻断&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;SessionStart&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;会话开始或恢复&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;SessionEnd&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;会话终止&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UserPromptSubmit&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;用户提交提示&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UserPromptExpansion&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;斜杠命令展开为提示&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;工具调用执行前&lt;/td&gt;
          &lt;td&gt;是（allow/deny/defer）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;工具调用成功执行后&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;PostToolUseFailure&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;工具调用执行失败后&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;PostToolBatch&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;所有并行工具调用完成后&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;PermissionRequest&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;权限对话框弹出时&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;PermissionDenied&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;auto 模式分类器拒绝工具时&lt;/td&gt;
          &lt;td&gt;否（可设重试）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Notification&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Claude 发送通知时&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;SubagentStart&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;子代理启动时&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;SubagentStop&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;子代理完成时&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;TaskCreated&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;任务创建时&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;TaskCompleted&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;任务标记完成时&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Stop&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Claude 完成回复时&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;StopFailure&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;因 API 错误结束轮次时&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;TeammateIdle&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;队友即将空闲时&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;InstructionsLoaded&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;CLAUDE.md 或规则文件加载时&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ConfigChange&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;会话中配置文件变更时&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;CwdChanged&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;工作目录变更时&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FileChanged&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;被监视的文件在磁盘上变更时&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;WorktreeCreate&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Worktree 被创建时&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;WorktreeRemove&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Worktree 被删除时&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;PreCompact&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;上下文压缩前&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;PostCompact&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;上下文压缩后&lt;/td&gt;
          &lt;td&gt;否&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Elicitation&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;MCP 服务器请求用户输入时&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ElicitationResult&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;用户响应 elicitation 后&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;92-钩子类型&#34;&gt;9.2 钩子类型&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;机制&lt;/th&gt;
          &lt;th&gt;适用场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;command&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Shell 命令，通过退出码和 stdout JSON 通信&lt;/td&gt;
          &lt;td&gt;本地检查、格式验证&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;http&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;POST JSON 到 HTTP 端点&lt;/td&gt;
          &lt;td&gt;外部服务集成&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;mcp_tool&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;调用已连接 MCP 服务器的工具&lt;/td&gt;
          &lt;td&gt;复用 MCP 能力&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;prompt&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;单轮 Claude 评估（yes/no 决策）&lt;/td&gt;
          &lt;td&gt;内容审查、是否放行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;agent&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;启动子代理（有 Read/Grep/Glob 工具）&lt;/td&gt;
          &lt;td&gt;复杂前置检查（实验性）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;93-退出码规则&#34;&gt;9.3 退出码规则&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;退出码&lt;/th&gt;
          &lt;th&gt;含义&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;成功。stdout 解析为 JSON 决策&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;阻断性错误。操作被阻止，stderr 展示给 Claude&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;其他&lt;/td&gt;
          &lt;td&gt;非阻断性错误。继续执行&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;94-配置位置&#34;&gt;9.4 配置位置&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.claude/settings.json&lt;/code&gt; — 用户级&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.claude/settings.json&lt;/code&gt; — 项目级（可提交）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.claude/settings.local.json&lt;/code&gt; — 本地级（gitignore）&lt;/li&gt;
&lt;li&gt;插件 &lt;code&gt;hooks/hooks.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;企业托管策略设置&lt;/li&gt;
&lt;li&gt;Skill/Agent YAML 头信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;查看所有钩子：&lt;code&gt;/hooks&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;95-典型用法&#34;&gt;9.5 典型用法&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;桌面通知钩子&lt;/strong&gt;（&lt;code&gt;~/.claude/settings.json&lt;/code&gt;）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;hooks&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;Notification&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;matcher&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;hooks&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;osascript -e &amp;#39;display notification \&amp;#34;Claude Code 需要注意\&amp;#34; with title \&amp;#34;Claude Code\&amp;#34;&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;matcher 可设：&lt;code&gt;permission_prompt&lt;/code&gt;、&lt;code&gt;idle_prompt&lt;/code&gt;、&lt;code&gt;auth_success&lt;/code&gt;、&lt;code&gt;elicitation_dialog&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;十快捷键&#34;&gt;十、快捷键&lt;/h2&gt;
&lt;h3 id=&#34;101-输入编辑&#34;&gt;10.1 输入编辑&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;快捷键&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Enter&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;提交消息（换行用 &lt;code&gt;Shift+Enter&lt;/code&gt; 或 &lt;code&gt;Alt+Enter&lt;/code&gt;）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+O&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;切换详细查看器（显示思考过程）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+J&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;在消息中插入换行（备选）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+I&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;在消息末尾插入文件内容&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+K&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;将选中文字转为代码块&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+L&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;清空当前输入并重绘屏幕&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+G&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;在外部文本编辑器打开当前提示&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+R&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;反向搜索命令历史&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+C&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;取消当前输入/生成&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+D&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中断正在执行的工具调用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Esc&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;取消当前输入&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Esc + Esc&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;打开 rewind/checkpoint 菜单&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;102-模式与界面&#34;&gt;10.2 模式与界面&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;快捷键&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Shift+Tab&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;循环切换权限模式&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+E&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;打开/关闭思考模式&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+V&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;打开/关闭详细模式&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+B&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;后台运行任务（tmux 下按两次）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+T&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;切换任务列表显示&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+S&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;保存当前对话到文件&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Ctrl+W&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;查看当前 worktree 信息&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Option+P&lt;/code&gt; / &lt;code&gt;Alt+P&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;切换模型&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Option+T&lt;/code&gt; / &lt;code&gt;Alt+T&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;切换扩展思考&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;103-输入技巧&#34;&gt;10.3 输入技巧&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;快捷键/字符&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;! 命令&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;直接运行 shell 命令，输出加入上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;@ 文件路径&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;文件路径自动补全&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;输入 &lt;code&gt;/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;列出所有可用斜杠命令&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;十一上下文管理&#34;&gt;十一、上下文管理&lt;/h2&gt;
&lt;h3 id=&#34;111-核心概念&#34;&gt;11.1 核心概念&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;每次对话有上下文窗口限制，超出后最早的消息会被截断&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/context&lt;/code&gt; 以彩色网格直观显示当前使用情况&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/compact&lt;/code&gt; 在会话中释放上下文（可附带保留重点的指令）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/clear&lt;/code&gt; 完全重置上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;112-省上下文技巧&#34;&gt;11.2 省上下文技巧&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;长参考文档放入 Skill&lt;/strong&gt; 而非 CLAUDE.md：Skill 只在调用时加载&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用 &lt;code&gt;/btw&lt;/code&gt; 处理临时疑问&lt;/strong&gt;：不记入对话历史&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用子代理处理大量查询&lt;/strong&gt;：返回摘要而非全量结果&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定期 &lt;code&gt;/compact&lt;/code&gt;&lt;/strong&gt;：压缩已完成部分的细节，保留决策和结论&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;十二worktree工作树&#34;&gt;十二、Worktree（工作树）&lt;/h2&gt;
&lt;p&gt;在隔离的 git worktree 中工作，实验性修改不影响主工作区。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --worktree feature-auth   &lt;span class=&#34;c1&#34;&gt;# 在新分支上创建隔离 worktree&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --worktree bugfix-123     &lt;span class=&#34;c1&#34;&gt;# 另一个平行会话&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude -w                         &lt;span class=&#34;c1&#34;&gt;# 自动生成名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Worktree 创建在 &lt;code&gt;.claude/worktrees/&amp;lt;名称&amp;gt;/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;子代理也可使用 worktree 隔离（agent frontmatter 中 &lt;code&gt;isolation: worktree&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;退出后根据选择保留或删除&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;十三非交互headless模式&#34;&gt;十三、非交互（Headless）模式&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 单次问答&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;解释这个函数&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 管道输入&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat errors.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; claude -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;找出错误原因&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 结构化输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude -p --output-format json &lt;span class=&#34;s2&#34;&gt;&amp;#34;分析 code.py 的结构&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; jq &lt;span class=&#34;s1&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 流式 JSON 输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude -p --output-format stream-json &lt;span class=&#34;s2&#34;&gt;&amp;#34;查询&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 约束 JSON Schema&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude -p --json-schema &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;type&amp;#34;:&amp;#34;object&amp;#34;,...}&amp;#39;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;分析并结构化返回&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 恢复上下文后单次执行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --continue -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;检查类型错误&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 无配置文件快速启动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --bare -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;查询&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;十四checkpoint-与-rewind&#34;&gt;十四、Checkpoint 与 Rewind&lt;/h2&gt;
&lt;p&gt;Claude Code 自动为每一次文件编辑创建检查点。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/rewind&lt;/code&gt; 或 &lt;code&gt;Esc Esc&lt;/code&gt; — 回退对话和/或代码到之前某个检查点&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/diff&lt;/code&gt; — 查看逐轮 diff，对比每次变更&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/branch&lt;/code&gt; — 在当前点创建对话分支，保留原会话继续探索&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;十五agent-teams代理团队&#34;&gt;十五、Agent Teams（代理团队）&lt;/h2&gt;
&lt;p&gt;通过 &lt;code&gt;/config&lt;/code&gt; 启用。Claude 可并行启动多个队友（teammate）同时处理任务。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最适合：并行代码审查、多假设验证、独立工作的并行展开&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--teammate-mode&lt;/code&gt; 控制显示方式：&lt;code&gt;in-process&lt;/code&gt;、&lt;code&gt;tmux&lt;/code&gt;、&lt;code&gt;auto&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;十六ide-与编辑器集成&#34;&gt;十六、IDE 与编辑器集成&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;VS Code / JetBrains 插件&lt;/strong&gt;：直接在 IDE 内使用全部功能，自动识别项目结构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Ctrl+G&lt;/code&gt;&lt;/strong&gt;：在 &lt;code&gt;$EDITOR&lt;/code&gt;/&lt;code&gt;$VISUAL&lt;/code&gt; 中打开当前提示&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vim 模式&lt;/strong&gt;：&lt;code&gt;/config&lt;/code&gt; → 编辑器模式 → Vim（完整 vim 键位）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;macOS Option 键&lt;/strong&gt;：终端设置中启用 &amp;ldquo;将 Option 作为 Meta&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PR 状态底部栏&lt;/strong&gt;：需要 &lt;code&gt;gh&lt;/code&gt; CLI，审查状态以彩色下划线显示&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;十七状态栏&#34;&gt;十七、状态栏&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;/statusline&lt;/code&gt; 配置终端状态栏，显示：上下文窗口使用率、git 状态、当前模型、费用等。支持自定义模板。&lt;/p&gt;
&lt;h2 id=&#34;十八账号与费用&#34;&gt;十八、账号与费用&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/usage&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;会话费用、用量限制、活动统计&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/extra-usage&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;达速率上限时启用超额用量&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/login&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;登录 Anthropic 账户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/logout&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;退出账户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/upgrade&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;升级到更高计划套餐&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;十九常用工作流实例&#34;&gt;十九、常用工作流实例&lt;/h2&gt;
&lt;h3 id=&#34;代码审查&#34;&gt;代码审查&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --resume       &lt;span class=&#34;c1&#34;&gt;# 恢复当前分支的会话&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/review               &lt;span class=&#34;c1&#34;&gt;# 审查变更&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/security-review      &lt;span class=&#34;c1&#34;&gt;# 安全审查&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;持续监控&#34;&gt;持续监控&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/loop 3m &lt;span class=&#34;s2&#34;&gt;&amp;#34;检查 CI 状态并报告结果&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 或创建云端持久化的 routine&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/schedule &lt;span class=&#34;s2&#34;&gt;&amp;#34;每天 9:00 检查 main 分支构建状态&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;大规模重构&#34;&gt;大规模重构&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/batch &lt;span class=&#34;s2&#34;&gt;&amp;#34;把所有 React class 组件改成函数组件&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;计划优先&#34;&gt;计划优先&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plan &lt;span class=&#34;s2&#34;&gt;&amp;#34;重构认证模块，支持 OAuth2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Claude 会先研究代码库，产出方案供你审查&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 满意后在计划模式下退出，进入编辑模式执行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;跨会话工作&#34;&gt;跨会话工作&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 上午的工作&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude -n auth-refactor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ... 工作 ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/exit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 下午继续&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --continue      &lt;span class=&#34;c1&#34;&gt;# 或 claude --resume auth-refactor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;安全审查&#34;&gt;安全审查&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/security-review
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 审查所有未提交变更的安全问题&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 产生 OWASP Top 10 维度的报告&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;]]></content:encoded></item><item><title>Git 最佳实践</title><link>https://blog.rootfly.xyz/post/git-best-practices/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://blog.rootfly.xyz/post/git-best-practices/</guid><description>面向个人项目的 Git 工作流最佳实践，涵盖 .gitignore、分支策略、标签管理、回滚方式和日常操作速查。</description><content:encoded><![CDATA[&lt;h2 id=&#34;1-git-要解决什么问题&#34;&gt;1. Git 要解决什么问题&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;版本可追溯&lt;/strong&gt;：你能知道每次改了什么。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可回滚&lt;/strong&gt;：系统改坏了能立即回到稳定节点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分支隔离&lt;/strong&gt;：功能迭代不污染主线（main）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只提交代码&lt;/strong&gt;：不把运行缓存、数据库、视频、截图、依赖目录提交进仓库（靠 &lt;code&gt;.gitignore&lt;/code&gt;）。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-初始状态检查&#34;&gt;2. 初始状态检查&lt;/h2&gt;
&lt;p&gt;刚开始时你可能处于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;main&lt;/code&gt; 分支&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;没有 commit&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;文件为 &lt;code&gt;Untracked&lt;/code&gt;（未纳入版本管理）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下一步要做的是：
&lt;strong&gt;&lt;code&gt;.gitignore&lt;/code&gt; → &lt;code&gt;git add .&lt;/code&gt; → &lt;code&gt;git commit&lt;/code&gt; → &lt;code&gt;git tag&lt;/code&gt; → &lt;code&gt;git checkout -b&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-必备gitignore&#34;&gt;3. 必备：.gitignore&lt;/h2&gt;
&lt;p&gt;目的：避免提交运行产生的垃圾文件（例如构建产物、&lt;code&gt;node_modules&lt;/code&gt;、SQLite、上传视频、截图等）。&lt;/p&gt;
&lt;h3 id=&#34;31-检查-gitignore-是否生效&#34;&gt;3.1 检查 &lt;code&gt;.gitignore&lt;/code&gt; 是否生效&lt;/h3&gt;
&lt;p&gt;在项目根目录执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;你不应该看到这些被 Git 追踪：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;node_modules/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.next/&lt;/code&gt; 或其他构建产物目录&lt;/li&gt;
&lt;li&gt;数据库/上传/截图等运行时数据目录&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;32-如果发现上述目录出现在-status-里被追踪了&#34;&gt;3.2 如果发现上述目录出现在 status 里（被追踪了）&lt;/h3&gt;
&lt;p&gt;说明这些文件可能在 &lt;code&gt;.gitignore&lt;/code&gt; 生效之前已经被 Git 记录过。用下面命令&amp;quot;从 Git 里移除追踪，但保留本地文件&amp;quot;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git rm -r --cached node_modules .next data &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;chore: stop tracking generated/runtime files&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;4-建立第一个稳定节点baseline-checkpoint&#34;&gt;4. 建立第一个&amp;quot;稳定节点&amp;quot;（baseline checkpoint）&lt;/h2&gt;
&lt;h3 id=&#34;41-初始化仓库若还没执行过&#34;&gt;4.1 初始化仓库（若还没执行过）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;42-将当前版本加入暂存区&#34;&gt;4.2 将当前版本加入暂存区&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;43-检查将提交内容推荐必做&#34;&gt;4.3 检查将提交内容（推荐必做）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;44-创建第一次提交基线&#34;&gt;4.4 创建第一次提交（基线）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;checkpoint: runnable baseline&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;5-打标签做回滚锚点&#34;&gt;5. 打标签：做&amp;quot;回滚锚点&amp;quot;&lt;/h2&gt;
&lt;p&gt;标签（tag）= 你的&amp;quot;存档点&amp;quot;，以后随时可回到这个版本。&lt;/p&gt;
&lt;h3 id=&#34;51-给当前提交打标签&#34;&gt;5.1 给当前提交打标签&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag v0.1-checkpoint
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;52-查看标签是否存在&#34;&gt;5.2 查看标签是否存在&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;53-查看最近提交带标签信息&#34;&gt;5.3 查看最近提交（带标签信息）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git log --oneline --decorate -10
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;6-分支策略&#34;&gt;6. 分支策略&lt;/h2&gt;
&lt;h3 id=&#34;规则&#34;&gt;规则&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;main&lt;/code&gt;：保持稳定、可演示的版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feature/*&lt;/code&gt;：所有新功能/大改动在功能分支做&lt;/li&gt;
&lt;li&gt;需要里程碑就打 tag（例如 v0.2 / v0.3）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;61-创建并切换到功能分支&#34;&gt;6.1 创建并切换到功能分支&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout -b feature/ui-upgrades
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;62-查看当前分支&#34;&gt;6.2 查看当前分支&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;7-日常工作流&#34;&gt;7. 日常工作流&lt;/h2&gt;
&lt;h3 id=&#34;71-每次开始一个新功能&#34;&gt;7.1 每次开始一个新功能&lt;/h3&gt;
&lt;p&gt;从 main 拉一个新分支：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout -b feature/&amp;lt;task-name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout -b feature/alert-snapshots
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;72-开发过程中查看改动&#34;&gt;7.2 开发过程中查看改动&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git diff
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;73-分阶段提交&#34;&gt;7.3 分阶段提交&lt;/h3&gt;
&lt;p&gt;不要憋成一次超大提交：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;feat: improve analysis UI&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;74-完成一个里程碑打标签可选&#34;&gt;7.4 完成一个里程碑，打标签（可选）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag v0.2-ui-polish
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;8-回滚方式&#34;&gt;8. 回滚方式&lt;/h2&gt;
&lt;h3 id=&#34;81-推荐回滚从某个-tag-开新分支继续开发最安全&#34;&gt;8.1 推荐回滚：从某个 tag 开新分支继续开发（最安全）&lt;/h3&gt;
&lt;p&gt;不会破坏现有分支，也不会丢历史：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout -b rollback-from-v0.1 v0.1-checkpoint
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;82-只查看某个-tag-的版本不建议长期停留&#34;&gt;8.2 只&amp;quot;查看&amp;quot;某个 tag 的版本（不建议长期停留）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout v0.1-checkpoint
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意：这会进入 &amp;ldquo;detached HEAD&amp;rdquo; 状态。若要继续开发，请开分支：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout -b hotfix/from-v0.1 v0.1-checkpoint
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;83-强制把当前分支回到某个-tag慎用会丢未提交内容&#34;&gt;8.3 强制把当前分支回到某个 tag（慎用：会丢未提交内容）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git reset --hard v0.1-checkpoint
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;若有未提交改动又不想丢，先 stash：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git stash -u
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git reset --hard v0.1-checkpoint
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git stash pop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;9-推荐-tag-命名&#34;&gt;9. 推荐 tag 命名&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;v0.1-checkpoint&lt;/code&gt;：系统跑通&lt;/li&gt;
&lt;li&gt;&lt;code&gt;v0.2-alert-snapshots&lt;/code&gt;：告警证据截图可用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;v0.3-ui-pro&lt;/code&gt;：UI 升级到高级控制台&lt;/li&gt;
&lt;li&gt;&lt;code&gt;v1.0-demo-ready&lt;/code&gt;：最终可演示/可答辩版本&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-可选接入远端仓库&#34;&gt;10. 可选：接入远端仓库&lt;/h2&gt;
&lt;p&gt;如果后面想同步到 GitHub/Gitee：&lt;/p&gt;
&lt;h3 id=&#34;101-添加远端&#34;&gt;10.1 添加远端&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git remote add origin &amp;lt;your-repo-url&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;102-推送-main-和-tags&#34;&gt;10.2 推送 main 和 tags&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push -u origin main
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push --tags
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;11-最常用命令速查&#34;&gt;11. 最常用命令速查&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git diff
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout -b feature/xxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git log --oneline --decorate -10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag v0.x-xxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout -b rollback-from-tag &amp;lt;tagname&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;]]></content:encoded></item><item><title>Mac 命令行环境配置备忘</title><link>https://blog.rootfly.xyz/post/mac-cli-setup/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://blog.rootfly.xyz/post/mac-cli-setup/</guid><description>Mac 终端环境的工具来源排查与 PATH 优先级备忘，涵盖 Git、Python/Conda、Homebrew、OrbStack 等关键组件。</description><content:encoded><![CDATA[&lt;blockquote&gt;
&lt;p&gt;目的：把 Mac 上&amp;quot;终端里能用的工具从哪来、优先级如何、怎么自查&amp;quot;整理成一份备忘。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-git&#34;&gt;1. Git&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;当前 Git&lt;/strong&gt;：&lt;code&gt;git version 2.50.1 (Apple Git-155)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可执行位置&lt;/strong&gt;：&lt;code&gt;/usr/bin/git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;来源&lt;/strong&gt;：Apple / Xcode Command Line Tools（CLT）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLT 路径&lt;/strong&gt;：&lt;code&gt;/Library/Developer/CommandLineTools&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;结论：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这是&lt;strong&gt;命令行工具&lt;/strong&gt;，不是 GUI 应用，所以不会出现在「启动台」。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更新方式&lt;/strong&gt;：随 &lt;strong&gt;macOS / Xcode / Command Line Tools 更新&lt;/strong&gt;而更新（不是像 brew 那样单独升级）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自查命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;xcode-select -p
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;2-python--conda&#34;&gt;2. Python / Conda&lt;/h2&gt;
&lt;p&gt;终端提示符有 &lt;code&gt;(base)&lt;/code&gt;，conda 环境只有一个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Conda 发行版&lt;/strong&gt;：Miniforge（以 Cask 安装）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;base 环境路径&lt;/strong&gt;：&lt;code&gt;/opt/homebrew/Caskroom/miniforge/base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;当前默认 python/pip&lt;/strong&gt;（因 PATH 优先级）：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;python&lt;/code&gt; → &lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/bin/python&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;python3&lt;/code&gt; → &lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/bin/python3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip&lt;/code&gt; → &lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/bin/pip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip3&lt;/code&gt; → &lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/bin/pip3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统也有&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;python3&lt;/code&gt; → &lt;code&gt;/usr/bin/python3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip3&lt;/code&gt; → &lt;code&gt;/usr/bin/pip3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;但由于 conda 路径在 PATH 更前面，日常默认使用 conda 的 python/pip。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;conda&lt;/code&gt; 的状态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;conda&lt;/code&gt; 在 shell 中既是一个函数（来自 &lt;code&gt;~/.zshrc&lt;/code&gt;），也有多个可执行文件路径。&lt;/li&gt;
&lt;li&gt;这是 conda 初始化脚本的常见表现。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自查命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda env list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a python python3 pip pip3 conda
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;3-homebrew命令行包管理器&#34;&gt;3. Homebrew（命令行包管理器）&lt;/h2&gt;
&lt;h3 id=&#34;31-手动安装的顶层包&#34;&gt;3.1 手动安装的顶层包&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;brew leaves&lt;/code&gt; 输出只有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;node&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tree&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这通常意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;真正&amp;quot;自己装来用&amp;quot;的命令行主工具基本就是 Node.js 和 tree&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brew list&lt;/code&gt; 里看到的一大堆（&lt;code&gt;cairo/pango/libpng/...&lt;/code&gt; 等）多为依赖库/被间接安装的组件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自查命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew leaves
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew list --cask
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew uses --installed &amp;lt;包名&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;32-homebrew-是否只在-base-环境里可用&#34;&gt;3.2 Homebrew 是否&amp;quot;只在 base 环境里可用&amp;quot;？&lt;/h3&gt;
&lt;p&gt;不是。Homebrew 是系统级安装在 &lt;code&gt;/opt/homebrew&lt;/code&gt;（Apple Silicon 常见路径）。在 base 环境也能用 &lt;code&gt;brew/tree&lt;/code&gt; 的原因是：&lt;strong&gt;PATH 里包含 &lt;code&gt;/opt/homebrew/bin&lt;/code&gt;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;验证命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a brew tree
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which brew
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which tree
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda deactivate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a brew tree
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;4-orbstackdocker--kubernetes-命令来源&#34;&gt;4. OrbStack（Docker / Kubernetes 命令来源）&lt;/h2&gt;
&lt;p&gt;PATH 里有 &lt;code&gt;/Users/xiang/.orbstack/bin&lt;/code&gt;，该目录中包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docker&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker-compose&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker-credential-osxkeychain&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;orb&lt;/code&gt;、&lt;code&gt;orbctl&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;结论：当前的 &lt;code&gt;docker&lt;/code&gt; / &lt;code&gt;kubectl&lt;/code&gt; 很可能优先来自 OrbStack（取决于 PATH 排序）。&lt;/p&gt;
&lt;p&gt;自查命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which docker
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which docker-compose
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which kubectl
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a docker kubectl
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;5-path-优先级&#34;&gt;5. PATH 优先级&lt;/h2&gt;
&lt;p&gt;当前 PATH（按优先级从高到低）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/bin&lt;/code&gt; ← conda base 的命令（python/pip 等）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/opt/homebrew/Caskroom/miniforge/base/condabin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/opt/homebrew/bin&lt;/code&gt; ← Homebrew 命令（brew、tree、node 等）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/opt/homebrew/sbin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/usr/local/bin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/System/Cryptexes/App/usr/bin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/usr/bin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/bin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/usr/sbin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/sbin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/opt/pmk/env/global/bin&lt;/code&gt; ← 非典型来源，可能是某个环境/工具链的全局 bin&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/Library/TeX/texbin&lt;/code&gt; ← TeX/LaTeX 工具链（装了 &lt;code&gt;mactex-no-gui&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/Users/xiang/.orbstack/bin&lt;/code&gt; ← OrbStack 的 docker/kubectl 等&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重点记住：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;谁在 PATH 前面，谁就&amp;quot;覆盖/优先&amp;quot;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;目前：&lt;strong&gt;conda base 覆盖系统 python&lt;/strong&gt;，brew 在其后；OrbStack 在较后但仍可用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;快速查看某个命令到底来自哪里：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a &amp;lt;命令&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;which &amp;lt;命令&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;6-与命令行相关的-gui-应用homebrew-cask&#34;&gt;6. 与命令行相关的 GUI 应用（Homebrew Cask）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;miniforge&lt;/code&gt;（决定 conda / base）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;orbstack&lt;/code&gt;（提供 docker/kubectl 等）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mactex-no-gui&lt;/code&gt;（带来 &lt;code&gt;/Library/TeX/texbin&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;visual-studio-code&lt;/code&gt;（开发编辑器）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;查看完整列表：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew list --cask
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;7-忘了装了啥时的推荐排查顺序&#34;&gt;7. &amp;ldquo;忘了装了啥&amp;quot;时的推荐排查顺序&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;先看 Homebrew 的&amp;quot;顶层包&amp;rdquo;：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew leaves
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;再看 conda base 里装了什么（通常 python 相关在这里）：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;conda list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m pip list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;再看关键目录里有哪些可执行文件：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -1 /opt/homebrew/bin &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -n &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -1 /opt/pmk/env/global/bin 2&amp;gt;/dev/null &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -n &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -1 ~/.orbstack/bin 2&amp;gt;/dev/null &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -n &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;定位具体某个命令：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; -a &amp;lt;命令&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;8-关键结论一句话版&#34;&gt;8. 关键结论一句话版&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Git&lt;/strong&gt;：Apple Git（CLT 提供，随系统/CLT 更新）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;：主要来自 &lt;strong&gt;Miniforge conda base&lt;/strong&gt;（覆盖系统 python3）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brew 顶层工具&lt;/strong&gt;：只剩 &lt;code&gt;node&lt;/code&gt;、&lt;code&gt;tree&lt;/code&gt;（其余多为依赖）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker/kubectl&lt;/strong&gt;：很可能来自 &lt;strong&gt;OrbStack&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content:encoded></item><item><title>终端网络代理配置手册</title><link>https://blog.rootfly.xyz/post/terminal-proxy-setup/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://blog.rootfly.xyz/post/terminal-proxy-setup/</guid><description>macOS 终端默认不走系统代理，导致 Homebrew、Git 等工具连接 GitHub 极慢。本文通过三个 Zsh 别名实现一键切换终端代理状态。</description><content:encoded><![CDATA[&lt;h2 id=&#34;问题背景&#34;&gt;问题背景&lt;/h2&gt;
&lt;p&gt;macOS 的终端（Terminal / iTerm2）默认不走系统代理设置，导致 &lt;code&gt;brew install&lt;/code&gt;、&lt;code&gt;git clone&lt;/code&gt;、&lt;code&gt;curl&lt;/code&gt; 等命令行工具无法连接 GitHub 或速度极慢。&lt;/p&gt;
&lt;p&gt;解决方案很简单：在 Zsh 配置中注入几个别名，手动控制终端的代理开关。&lt;/p&gt;
&lt;h2 id=&#34;配置代码&#34;&gt;配置代码&lt;/h2&gt;
&lt;p&gt;将以下代码块添加到 &lt;code&gt;~/.zshrc&lt;/code&gt; 的&lt;strong&gt;最底部&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# =================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 终端代理控制 (Proxy Control)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Target: Clash Verge (Localhost: 7897)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# =================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 开启代理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;proxy&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897; echo &amp;#34;\n✅ 终端代理已开启 (Port: 7897)&amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 关闭代理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;unproxy&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;unset https_proxy http_proxy all_proxy; echo &amp;#34;\n🚫 终端代理已关闭&amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 检查当前 IP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;myip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;curl -s ipinfo.io/json | grep -E &amp;#34;ip|country&amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;生效步骤&#34;&gt;生效步骤&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;打开配置文件：&lt;code&gt;nano ~/.zshrc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;将上述代码粘贴到文件末尾&lt;/li&gt;
&lt;li&gt;保存退出（&lt;code&gt;Ctrl+O&lt;/code&gt; → &lt;code&gt;Enter&lt;/code&gt; → &lt;code&gt;Ctrl+X&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;立即生效：&lt;code&gt;source ~/.zshrc&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;命令速查&#34;&gt;命令速查&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
          &lt;th&gt;预期反馈&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;proxy&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;开启代理，在 &lt;code&gt;brew install&lt;/code&gt; 或 &lt;code&gt;git clone&lt;/code&gt; 前使用&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;✅ 终端代理已开启...&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;unproxy&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;关闭代理，恢复国内直连&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;🚫 终端代理已关闭...&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;myip&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;验证当前出口 IP 及国家&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;{ &amp;quot;ip&amp;quot;: &amp;quot;x.x.x.x&amp;quot;, &amp;quot;country&amp;quot;: &amp;quot;US&amp;quot; }&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题&lt;/h2&gt;
&lt;h3 id=&#34;端口变更&#34;&gt;端口变更&lt;/h3&gt;
&lt;p&gt;不同代理软件默认端口不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ClashX Pro：&lt;code&gt;7890&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Surge：&lt;code&gt;6152&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Clash Verge：&lt;code&gt;7897&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;修改方法：打开 &lt;code&gt;~/.zshrc&lt;/code&gt;，将 &lt;code&gt;alias proxy=&#39;...&#39;&lt;/code&gt; 行中所有端口号替换为你的代理端口，然后 &lt;code&gt;source ~/.zshrc&lt;/code&gt; 生效。&lt;/p&gt;
&lt;h3 id=&#34;代理开启后依然超时&#34;&gt;代理开启后依然超时&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;确认代理软件正在运行，且&amp;quot;系统代理&amp;quot;开关已打开&lt;/li&gt;
&lt;li&gt;检查代理软件设置中的&amp;quot;混合端口 (Mixed Port)&amp;ldquo;是否与配置一致&lt;/li&gt;
&lt;li&gt;执行 &lt;code&gt;myip&lt;/code&gt; 确认出口 IP 是否已变化&lt;/li&gt;
&lt;/ol&gt;
]]></content:encoded></item><item><title>Mac 深度残留清理指南</title><link>https://blog.rootfly.xyz/post/deep-cleanup-guide/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://blog.rootfly.xyz/post/deep-cleanup-guide/</guid><description>卸载 Mac 软件后常有残留文件藏在 Library 深处。本文提供一套系统化的扫描与清理流程，覆盖用户级、系统级和 Homebrew 缓存。</description><content:encoded><![CDATA[&lt;h2 id=&#34;目标&#34;&gt;目标&lt;/h2&gt;
&lt;p&gt;清理已卸载软件的残留文件——GUI 中不明显、但仍占空间或有持久化痕迹的垃圾，同时不影响正在使用的软件。&lt;/p&gt;
&lt;h2 id=&#34;约束&#34;&gt;约束&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;不动 &lt;code&gt;Downloads&lt;/code&gt;、&lt;code&gt;Desktop&lt;/code&gt;、&lt;code&gt;Documents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不删除正在使用的软件主数据；优先清理残留、缓存、日志、安装包工件、失效启动项&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;先出审批表，确认后再执行删除&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;扫描范围&#34;&gt;扫描范围&lt;/h2&gt;
&lt;h3 id=&#34;用户级&#34;&gt;用户级&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;~/Library/Containers&lt;/code&gt;、&lt;code&gt;Group Containers&lt;/code&gt;、&lt;code&gt;Application Scripts&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;App 沙盒数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;~/Library/Application Support&lt;/code&gt;、&lt;code&gt;Preferences&lt;/code&gt;、&lt;code&gt;Caches&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;App 配置与缓存&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;~/Library/WebKit&lt;/code&gt;、&lt;code&gt;HTTPStorages&lt;/code&gt;、&lt;code&gt;Saved Application State&lt;/code&gt;、&lt;code&gt;Biome&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;系统级 App 痕迹&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;~/.cache/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;重点：大型工具运行时/编译缓存&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;~/.config/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;重点：XDG 规范工具配置，卸载后常残留&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;~/.local/share/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;重点：XDG 数据目录&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;~/&lt;/code&gt;（根目录隐藏 dotfiles）&lt;/td&gt;
          &lt;td&gt;重点：&lt;code&gt;.android&lt;/code&gt;、&lt;code&gt;.putty&lt;/code&gt; 等工具遗留&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;系统级&#34;&gt;系统级&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/Library/LaunchAgents&lt;/code&gt;、&lt;code&gt;LaunchDaemons&lt;/code&gt;、&lt;code&gt;PrivilegedHelperTools&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;后台服务与开机启动项&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/Library/Extensions&lt;/code&gt;、&lt;code&gt;SystemExtensions&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;内核扩展&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/Library/Application Support&lt;/code&gt;、&lt;code&gt;Preferences&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;系统级 App 配置&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;homebrew&#34;&gt;Homebrew&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;/opt/homebrew/Caskroom/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;检查多版本遗留及孤儿条目&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;~/Library/Caches/Homebrew/downloads/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;安装包缓存&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;交叉验证逻辑&#34;&gt;交叉验证逻辑&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;用 &lt;code&gt;ls /Applications ~/Applications&lt;/code&gt; + &lt;code&gt;brew list --cask&lt;/code&gt; 建立已安装 App 清单&lt;/li&gt;
&lt;li&gt;扫描上述路径时，对每条记录比对清单：找不到对应 App 的即为候选残留&lt;/li&gt;
&lt;li&gt;对模糊项（系统框架插件、SDK 组件）用 &lt;code&gt;mdfind&lt;/code&gt; / &lt;code&gt;kextstat&lt;/code&gt; 确认后再归类&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;审批表格式&#34;&gt;审批表格式&lt;/h2&gt;
&lt;h3 id=&#34;a-类已卸载应用真实残留&#34;&gt;A 类——已卸载应用真实残留&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;编号&lt;/th&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;大小&lt;/th&gt;
          &lt;th&gt;来源 App&lt;/th&gt;
          &lt;th&gt;风险&lt;/th&gt;
          &lt;th&gt;是否影响在用软件&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;b-类可再生大型缓存&#34;&gt;B 类——可再生大型缓存&lt;/h3&gt;
&lt;p&gt;在用 App 产生、删后可自动重建。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;编号&lt;/th&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;大小&lt;/th&gt;
          &lt;th&gt;用途&lt;/th&gt;
          &lt;th&gt;清理方式&lt;/th&gt;
          &lt;th&gt;风险&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;c-类后台持久化审查&#34;&gt;C 类——后台持久化审查&lt;/h3&gt;
&lt;p&gt;LaunchAgent / Daemon / PrivilegedHelper。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;编号&lt;/th&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;对应 App&lt;/th&gt;
          &lt;th&gt;KeepAlive&lt;/th&gt;
          &lt;th&gt;RunAtLoad&lt;/th&gt;
          &lt;th&gt;建议&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;执行要求&#34;&gt;执行要求&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;非 sudo 项&lt;/strong&gt;：确认后直接执行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;需要 sudo 的项&lt;/strong&gt;：以 &lt;code&gt;! sudo &amp;lt;命令&amp;gt;&lt;/code&gt; 格式提供，在对话框内粘贴执行&lt;/li&gt;
&lt;li&gt;删除完成后给出&amp;quot;清理前 → 清理后&amp;quot;磁盘可用空间对比及各类合计释放量&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;实用命令速查&#34;&gt;实用命令速查&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看已安装的 Cask&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew list --cask
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查找某个 App 的所有残留文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mdfind &lt;span class=&#34;s2&#34;&gt;&amp;#34;kMDItemDisplayName == &amp;#39;AppName&amp;#39;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i appname
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看磁盘可用空间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;df -h /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看 LaunchDaemons 中的第三方项&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls /Library/LaunchDaemons/ &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -v com.apple
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看 LaunchAgents 中的第三方项&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls /Library/LaunchAgents/ &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -v com.apple
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 查看 Homebrew 下载缓存大小&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;du -sh ~/Library/Caches/Homebrew/downloads/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;]]></content:encoded></item><item><title>用了三个月 Obsidian，我有话说</title><link>https://blog.rootfly.xyz/post/obsidian-review/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.rootfly.xyz/post/obsidian-review/</guid><description>使用 Obsidian 三个月后的真实体验，从本地存储、双向链接到插件生态。</description><content:encoded><![CDATA[&lt;p&gt;三个月前，我把笔记软件从 Notion 换成了 Obsidian。现在回头看，这是今年做得最对的几件事之一。&lt;/p&gt;
&lt;h2 id=&#34;最喜欢的地方&#34;&gt;最喜欢的地方&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;本地存储&lt;/strong&gt;让我彻底告别了万一服务器挂了怎么办的焦虑。所有笔记都是纯 Markdown 文件，用任何编辑器都能打开。&lt;/p&gt;
&lt;p&gt;这一点在实际使用中比想象中更重要。Notion 的数据导出虽然支持 Markdown，但格式经常出问题——嵌套的数据库、内嵌的图片、复杂的表格，导出来基本没法直接用。而 Obsidian 的笔记从第一天起就是标准 Markdown，不管你以后换什么工具，这些笔记都能无缝迁移。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;双向链接&lt;/strong&gt;一开始觉得是噱头，用了一段时间后发现它真的改变了我的思维方式——记录一个想法时，自然会去想它和哪些旧知识有关联。&lt;/p&gt;
&lt;p&gt;举个例子：我在写一篇关于 Docker 的笔记时，提到了网络配置。在 Notion 里我可能就写一句&amp;quot;详见网络配置文档&amp;quot;然后放个链接。但在 Obsidian 里，我直接写 &lt;code&gt;[[Docker 网络配置]]&lt;/code&gt;，这会自动建立双向关联——以后打开&amp;quot;Docker 网络配置&amp;quot;那篇笔记时，我能直接看到谁引用了它。&lt;/p&gt;
&lt;p&gt;时间长了，这些关联形成了一张知识网络。用 Obsidian 自带的 Graph View 看，你能直观地看到哪些概念联系紧密、哪些领域你还涉足不深。这种可视化的知识地图是传统文件夹结构做不到的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;插件生态&lt;/strong&gt;非常丰富。从日历视图、Kanban 看板到 LaTeX 公式渲染，几乎你能想到的需求都有插件覆盖。&lt;/p&gt;
&lt;p&gt;我目前在用的插件清单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Calendar&lt;/strong&gt;：日历视图，快速定位到某一天的日记&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dataview&lt;/strong&gt;：把笔记当数据库查询，比如&amp;quot;列出所有未完成的任务&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Templater&lt;/strong&gt;：高级模板引擎，新建笔记自动填充日期、标题等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tasks&lt;/strong&gt;：跨笔记的任务管理，支持到期日、重复任务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Excalidraw&lt;/strong&gt;：在笔记里嵌入手绘图，适合画架构图和流程图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kanban&lt;/strong&gt;：看板视图，适合项目管理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git&lt;/strong&gt;：自动同步笔记到 Git 仓库，相当于免费的版本控制和备份&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;不太满意的地方&#34;&gt;不太满意的地方&lt;/h2&gt;
&lt;p&gt;移动端体验比桌面端差一截，同步需要额外付费或自己折腾 iCloud / Syncthing。对于重度手机用户来说，这是一个实际的障碍。&lt;/p&gt;
&lt;p&gt;具体来说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;同步方案&lt;/strong&gt;：官方的 Obsidian Sync 要 8 美元一个月，对个人用户来说不算便宜。免费方案是 iCloud（仅限苹果设备）或 Syncthing（需要一定技术能力）。我目前用的是 iCloud，偶尔会遇到同步冲突&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移动端性能&lt;/strong&gt;：打开大型 Vault 时明显比桌面端慢，插件加载也需要等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;编辑体验&lt;/strong&gt;：手机上编辑 Markdown 不如在电脑上顺畅，尤其是长文档&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;学习曲线也比 Notion 陡一些——刚上手时面对空白的 Vault 可能会有点迷茫，不知道从哪里开始组织。&lt;/p&gt;
&lt;p&gt;Notion 的开箱即用体验确实更好：数据库、看板、日历都是内置的，不需要装插件就能用。而 Obsidian 的很多核心功能需要通过插件实现，新手面对上百个插件可能会选择困难。&lt;/p&gt;
&lt;p&gt;我的建议是：不要一开始就装太多插件。先用原生功能写两周笔记，等你真正感到&amp;quot;要是有个 XX 功能就好了&amp;quot;的时候，再去搜插件。这样你装的每一个插件都是真正需要的，不会被花哨的功能分散注意力。&lt;/p&gt;
&lt;h2 id=&#34;和-notion-的对比&#34;&gt;和 Notion 的对比&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;Obsidian&lt;/th&gt;
          &lt;th&gt;Notion&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;数据存储&lt;/td&gt;
          &lt;td&gt;本地 Markdown 文件&lt;/td&gt;
          &lt;td&gt;云端专有格式&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;离线使用&lt;/td&gt;
          &lt;td&gt;完全支持&lt;/td&gt;
          &lt;td&gt;部分支持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;双向链接&lt;/td&gt;
          &lt;td&gt;原生支持，体验好&lt;/td&gt;
          &lt;td&gt;支持但不够自然&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;插件生态&lt;/td&gt;
          &lt;td&gt;极其丰富&lt;/td&gt;
          &lt;td&gt;有限的集成&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;协作&lt;/td&gt;
          &lt;td&gt;弱（需要额外工具）&lt;/td&gt;
          &lt;td&gt;强（原生支持）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;数据库&lt;/td&gt;
          &lt;td&gt;通过 Dataview 插件&lt;/td&gt;
          &lt;td&gt;原生支持，体验好&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;学习曲线&lt;/td&gt;
          &lt;td&gt;较陡&lt;/td&gt;
          &lt;td&gt;平缓&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;价格&lt;/td&gt;
          &lt;td&gt;免费（同步另算）&lt;/td&gt;
          &lt;td&gt;免费版有限制&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;数据导出&lt;/td&gt;
          &lt;td&gt;天然 Markdown&lt;/td&gt;
          &lt;td&gt;导出格式有限&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;简单来说：Obsidian 适合个人深度使用，Notion 适合团队协作。如果你的笔记主要是给自己看的，Obsidian 更好；如果需要频繁和别人共享、协作编辑，Notion 更方便。&lt;/p&gt;
&lt;h2 id=&#34;我的使用场景&#34;&gt;我的使用场景&lt;/h2&gt;
&lt;p&gt;经过三个月的摸索，我目前的 Obsidian 主要用于三个场景：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;技术笔记&lt;/strong&gt;：学习新技术时记录要点、代码示例、踩坑记录。用标签分类（&lt;code&gt;#docker&lt;/code&gt;、&lt;code&gt;#python&lt;/code&gt;、&lt;code&gt;#前端&lt;/code&gt;），用双向链接把相关概念串起来。这是我用得最多的部分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;日记&lt;/strong&gt;：用 Templater 插件自动创建每日日记模板，记录当天做了什么、遇到什么问题、有什么想法。不用写很多，几句话就行。回头看的时候能清楚地看到自己这段时间在忙什么。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;项目管理&lt;/strong&gt;：用 Kanban 插件管理待办事项。每个项目一个看板，分&amp;quot;待办&amp;quot;、&amp;ldquo;进行中&amp;rdquo;、&amp;ldquo;已完成&amp;quot;三列。比单纯的待办清单更直观，也比 Notion 的数据库更轻量。&lt;/p&gt;
&lt;h2 id=&#34;适合谁用&#34;&gt;适合谁用&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;愿意花时间配置，且主要在电脑上工作的人 → &lt;strong&gt;强烈推荐&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;需要开箱即用、多端无缝同步 → Notion 可能更适合&lt;/li&gt;
&lt;li&gt;学术党、需要大量引用和 LaTeX → &lt;strong&gt;非常适合&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;程序员、技术人员 → &lt;strong&gt;强烈推荐&lt;/strong&gt;（Markdown 是你们的母语）&lt;/li&gt;
&lt;li&gt;写作者、需要长期积累知识体系的人 → &lt;strong&gt;非常推荐&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;需要团队协作、多人编辑 → &lt;strong&gt;不推荐&lt;/strong&gt;，用 Notion 或飞书&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;一些实用建议&#34;&gt;一些实用建议&lt;/h2&gt;
&lt;p&gt;如果你决定尝试 Obsidian，以下是我踩过坑后总结的建议：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;先用起来再优化&lt;/strong&gt;：不要花一周时间研究插件和主题，先写笔记。等你对工具足够熟悉后，再根据需求调整&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文件夹结构保持简单&lt;/strong&gt;：三层以内就够了。我见过有人建了七八层目录，最后自己都找不到笔记在哪&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;善用标签&lt;/strong&gt;：标签比文件夹灵活，一个笔记可以有多个标签。我的习惯是用标签做主题分类，文件夹只按时间或项目分&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定期回顾&lt;/strong&gt;：每周花 10 分钟翻翻最近的笔记，看看有没有可以合并或整理的。笔记不回顾等于没记&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;备份一定要有&lt;/strong&gt;：虽然本地存储很安全，但硬盘坏了就是没了。用 Git 或者云盘同步至少一份副本&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;常见问题&#34;&gt;常见问题&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Q：Obsidian 免费吗？&lt;/strong&gt;
A：软件本身完全免费，包括所有核心功能。收费的只有两个可选服务：Obsidian Sync（云同步，8 美元/月）和 Obsidian Publish（发布笔记为网站，16 美元/月）。对于大多数用户，免费功能完全够用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：从 Notion 迁移过来麻烦吗？&lt;/strong&gt;
A：Notion 支持批量导出为 Markdown，导出后丢进 Obsidian 的 Vault 文件夹就行。图片链接需要手动修复（Notion 导出的图片路径格式不同），但文本内容基本没问题。我迁移了大约 200 篇笔记，花了一个下午。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：数据安全吗？&lt;/strong&gt;
A：本地存储意味着你的数据完全在你手里，不受任何服务商的影响。但反过来，你也需要自己负责备份。我的方案是 Git 仓库 + iCloud 双重备份，基本不用担心数据丢失。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：插件会不会导致笔记数据被读取？&lt;/strong&gt;
A：Obsidian 插件是运行在本地的 JavaScript 代码，理论上可以访问你的文件。但 Obsidian 的插件审核比较严格，而且代码都是开源的。如果你特别在意隐私，可以只安装你信任的插件，或者自己审查代码。&lt;/p&gt;
&lt;h2 id=&#34;最终评价&#34;&gt;最终评价&lt;/h2&gt;
&lt;p&gt;三个月用下来，Obsidian 给我最大的感受是：它尊重你的数据。&lt;/p&gt;
&lt;p&gt;不像 Notion 把你的笔记锁在云端、用专有格式存储，Obsidian 把一切交给你。你的笔记就是普通的 Markdown 文件，存在你的硬盘上，你想怎么备份就怎么备份，想用什么工具打开就用什么工具打开。&lt;/p&gt;
&lt;p&gt;这种开放性是有代价的——你需要自己处理同步、自己选择插件、自己组织结构。但换来的是完全的控制权和自由度。&lt;/p&gt;
&lt;p&gt;对于我这种主要在电脑上工作、喜欢折腾、重视数据所有权的人来说，这个交换非常值得。&lt;/p&gt;
]]></content:encoded></item></channel></rss>