Claude Code 高效工作流与常见坑
Posted on Wed 30 September 2026 in AI 编程 • Sucre Liu
会话是有生命周期的
Claude Code 把每次对话存成本地文件(~/.claude/projects/ 下的 JSONL),这带来几个能力,很多人没用到:
- 继续 / 恢复:
claude --continue接着上次,claude --resume打开选择器挑一个;交互里用/resume。 - 分叉:
--fork-session或/branch把历史复制到新会话 ID,原会话保持不变。想"换个方向试试又不毁掉原路",用这个。 - 回退:
/rewind可以把代码和对话一起退到某个检查点,或者让某段对话被总结压缩。 - 重开:
/clear开新任务但保留项目记忆(CLAUDE.md那套还在)。
一个实用习惯:任务切换就 /clear。把不相关的任务留在同一个上下文里,只会让它更贵、更糊涂。需要留下结论的,先让它写进 CLAUDE.md 或一段笔记,再清。
上下文满了会发生什么
会话接近上限时,Claude Code 自动压缩:先清掉较早的工具输出,必要时总结整段对话。你的请求和关键代码片段会保留,但早期的详细指令可能丢失。
这解释了一个常见困惑:"开头明明说好了,怎么后面又乱了?"——不是它反悔,是那段上下文被压掉了。
对策有三条:
- 常驻规则放
CLAUDE.md,别指望它在对话里记住; - 压缩时想保住什么,就在
CLAUDE.md里加一段 "Compact Instructions",或用带焦点的压缩:/compact focus on the API changes; - 主动看占用:
/context会告诉你是什么在吃上下文。
还有一种恶性情况:某个文件或工具输出特别大,每次总结完立刻又被填满,它会重试几次后停止自动压缩并报错(thrashing)。遇到它,别硬扛——把那个大文件排除出上下文,或换个更聚焦的任务。
技能、子代理、MCP 都能帮你控上下文:技能和 MCP 工具默认只加载"索引",用到才展开;子代理干脆在独立窗口跑。上下文不是越大越好,噪声会让它变笨。
收尾前先自检
在说"改完了"之前,用内置命令过一遍,比你自己肉眼翻强:
/diff # 看这一轮到底改了什么
/code-review # 审查当前 diff 的正确性与清理项,可加 --fix
/security-review # 检查 diff 里的安全问题
/doctor # 安装与配置体检
/code-review 可以传 PR 号审查某个 pull request,也有更重的多代理审查模式。我的经验是:自动化审查当第一道筛子,不能当合并的免检章。 它擅长抓低级错误和明显遗漏,不擅长判断"这个改动符不符合你的业务意图"。
成本从哪里漏掉
成本 = 上下文长度 × 请求次数。所以省钱的杠杆就两个:
- 别把无用的东西留在上下文里:大段日志、整份生成物、跑完就不看的工具输出,都是纯消费。用子代理把这类任务的中间过程挡在主上下文外。
- 选对模型:日常编码用中档模型,架构级决策、复杂重构再上更强的。不要所有请求都用最贵的。
还有一个隐蔽浪费:反复从零开始。同一个项目约定你每次会话都重讲一遍——这是该写进 CLAUDE.md 的信号。一次投入,长期省。
十个真实的坑
1. 用 bypassPermissions 图省事。 它只该出现在隔离容器里,不该出现在你的日常仓库。用 allowlist 替代重复点击。
2. 在 CLAUDE.md 里写"绝对不要做 X"。 那是请求,不是保证。必须挡住就用 PreToolUse 钩子。
3. 让 CLAUDE.md 无限膨胀。 超过 200 行,遵守率下降、成本上升。拆到 .claude/rules/ 或 skill 里。
4. 以为它能记住上次会话。 每次会话上下文是新的;跨会话靠 CLAUDE.md 和自动记忆,不靠"我们上次说过"。
5. 一次描述一个巨型需求。 越大越要先 /plan,让方案可审查,再动手。
6. 不看 diff 就合并。 它写得快不等于写得对。检查点能救文件,救不了已经推到远端的操作。
7. 把并行会话都开在同一个工作目录。 两个会话改同一堆文件,冲突比手写还难修。并行就用 worktree。
8. 在 CI 里用交互式权限。 无人值守环境该用 -p + dontAsk + 精确 allowedTools;该被拒绝的动作就该被拒绝。
9. 忘记 .worktreeinclude。 新 worktree 里没有 .env,服务起不来,然后花半小时找原因。
10. 把自动审查当免检。 工具是筛子不是法官。业务正确性还得你自己兜。
一套可以照抄的日常
把它压成几条肌肉记忆:
- 开工先
/clear,一个任务一个上下文。 - 先
/plan再动手,方案不对就改方案,别改代码。 - 规则沉淀进
CLAUDE.md,重复流程沉淀成 skill,必须发生的写成 hook。 - 并行开 worktree,侧任务丢 subagent。
- 收尾跑
/diff+/code-review,再决定合不合。 - 成本异常就看
/context,先减噪声,再谈换模型。
系列收束
这个系列从"它到底在循环什么"讲到并行与自动化。如果只记一句:Claude Code 的能力上限,不取决于模型多强,而取决于你给它的上下文和约束是否干净。 CLAUDE.md 管常驻知识,skill 管按需能力,hook 管确定性,worktree 管并行隔离——把这四件事做对,剩下的它自己会跑。
下一步,如果你想横向对比另一类选择(开源、可自托管、模型自由),可以接着看《OpenCode 高效实战》系列。