一套用具体约束阻止 AI 常见失败模式的 Claude Code 配置。
不是 prompt 模板库,不是 framework,不是开箱即用的工作流。是一份能让 AI 在不确定时停下来问而不是自信地猜的规则集。
- 用 Claude Code 做严肃工程的人
- 被 AI 的自信糊弄过几次,开始想"怎么让它老实点"
- 愿意把规则写得具体,而不是堆 "best practices" 凑数
- 不替代你的判断——规则的目的是让 AI 不确定时停下,不是让 AI 自动做对所有事
- 不是即插即用——里面有针对作者工作风格的设计选择,clone 之后建议读一遍再用
- 不附带技术栈相关的代码生成模板("帮我写 React 组件"那种),这套是元层规则
大多数 AI 工作约束失败的原因不是 prompt 写得不够漂亮,而是太抽象。不要幻觉 是没用的,因为 AI 不知道自己在幻觉。所以这套规则的写法是把失败模式具体化到能触发停顿:
没打开过的文件不要猜它的内容
没跑过的命令不要猜它的输出
引用代码时先读文件确认,不要凭印象
具体到这个程度,AI 才知道何时该改变行为。整套配置围绕五个核心约束构建:
不是 "重要决策要确认" 这种空话,而是明确划线:
- L1 自主执行:文件组织、命名、局部重构、调试、信息检索
- L2 上报用户:技术选型、算法路线、架构变更、影响排名的决策
不确定时默认 L2。
不要用 AI 生成的测试去验证 AI 生成的代码——这是闭环,不是验证
验收标准必须由用户定义,AI 只负责翻译成代码。这一条是这套配置和大多数 "让 AI 写测试" 的工作流最大的区别。
强制 AI 在动手前走完:
- 理解任务(用一句话复述确认)
- 识别直觉解的陷阱(最直觉的解法是什么?为什么它不够?)
- 列方案,按维度比较
- 选定方案,给出具体理由
- 拆解执行,每块独立可验证
第二步是这套流程最值钱的部分——大多数工作流直接进入"列方案",跳过反问。
三条独立的约束,分别针对 AI 的三种典型失控:
- 反幻觉:不确定就说不确定,不编一个听起来合理的答案
- 禁止兜底:找根因修根因,不加 try-catch 吞异常,不加默认值掩盖输入缺失
- 不擅自扩展:只改被要求的部分,不创建多余抽象,不为假设的未来需求做设计
主会话只做决策和规划,脏活派给 subagent:
| Agent | 用途 |
|---|---|
runner |
跑测试/benchmark/profile,结果写入 .claude/results/ |
explorer |
扫代码结构,返回文件地图 |
deep-researcher |
高容错精读论文/规则文档,区分原文与推断 |
diverge |
没有沉没成本的批判性思考者,挑战当前方案 |
secretary |
维护分数迭代表、知识沉淀、盲区标注 |
每个 agent 都有明确触发条件、返回格式、完成条件。diverge 的"独立批判思考者"角色是其中最特别的一个——它的任务不是帮你完善方案,而是质疑前提假设。
.
├── CLAUDE.md # 顶层工作协议(身份、决策协议、subagent 使用约定)
├── rules/ # 7 条规则
├── agents/ # 5 个 subagent 定义
└── commands/ # slash command(目前只有 /diff)
| 文件 | 核心约束 |
|---|---|
think-first.md |
思考优先五步流程 |
verification-first.md |
锚点测试,禁止 AI 自验自 |
no-hallucination.md |
反幻觉,未确认的不要猜 |
no-fallback.md |
禁止兜底,找根因 |
no-time-excuse.md |
不要替用户做成本评估 |
minimal-engineering.md |
不擅自扩展,不创建多余抽象 |
file-placement.md |
文件命名、存放、污染防御 |
clone 到 ~/.claude/,让 rules / agents / commands 全局生效:
git clone https://github.com/Autumn1337/claude-workflow.git ~/.claude-workflow
cp -r ~/.claude-workflow/{rules,agents,commands} ~/.claude/
cp ~/.claude-workflow/CLAUDE.md ~/.claude/CLAUDE.md # 全局指令或者只取你想要的部分(推荐先只加 rules 试用):
mkdir -p ~/.claude/rules
cp ~/.claude-workflow/rules/*.md ~/.claude/rules/然后在你的全局 CLAUDE.md 里 @-import:
@~/.claude/rules/think-first.md
@~/.claude/rules/verification-first.md
...规则和 agent 描述里会反复看到 "Autumn"——这是作者本人的名字。
这是有意的:给 AI 一个具体的对话方名字,比写 "用户" 更能让它把对话当真人交流,触发更克制的行为(会反问、会承认不确定、不会随便给假设)。这是个 prompt engineering 上的小技巧,效果比想象中明显。
直接 clone 用也行,AI 不会因为名字是别人的就变蠢。更推荐替换成你自己的名字:
grep -rl "Autumn" ~/.claude/CLAUDE.md ~/.claude/rules/ ~/.claude/agents/ ~/.claude/commands/ \
| xargs sed -i 's/Autumn/<YourName>/g'CLAUDE.md顶部的@docs/handoff/HANDOFF.md引用了 handoff plugin,没装的话把这行删掉,不会影响其他规则agents/secretary.md含一个 Stop hook 会自动git commit,开源版已默认注释掉,需要再启用,或保持手动 commit- 规则之间有交叉引用:
think-first提到的 "锚点" 概念在verification-first定义。建议两份一起用 - 这套配置最初是在 Kaggle 竞赛和算法工程任务上打磨出来的,对结果导向、有明确验收标准的任务最契合;探索性研究任务可能需要放松一些规则
MIT