Claude Code Harness 进阶配置:HARNESS_AUTO_APPROVE 与编排账本的终极手册
【免费下载链接】claude-code-harnessClaude Code Dedicated Development Harness - Achieving High-Quality Development Through an Autonomous Plan→Work→Review Cycle项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-harness
Claude Code Harness是一个为 Claude Code 打造的专业开发工具链(Harness),通过自主的「计划→执行→审查」闭环实现高质量开发。本文将带你配置两个进阶能力:HARNESS_AUTO_APPROVE 自动审批与编排账本(Orchestration Ledger)——让 AI 在安全边界内放心放手,同时留下完整的工作痕迹。
🔐 先搞懂:自动审批为什么默认关闭?
Claude Code Harness 的自动审批采用故障安全(fail-safe)设计:默认关闭,且任何一个前置条件不满足都会自动回退到人工审批。源码逻辑在 go/internal/autoapprove/autoapprove.go 中定义,AutoApproveEnabled函数要求四个条件同时成立:
| # | 条件 | 说明 |
|---|---|---|
| 1 | 环境变量HARNESS_AUTO_APPROVE=on | 严格匹配,只接受小写on |
| 2 | 前置阶段92.1.1已完成 | 在Plans.md或阶段门文件中确认 |
| 3 | 前置阶段92.2.3已完成 | 同上 |
| 4 | 前置阶段96.1.2已完成 | 同上 |
这意味着:光设环境变量是不够的。阶段完成状态由 go/internal/plans/ 解析Plans.md,或检查.claude/state/phase-gates/<phase>.done门文件(见defaultPrereqChecker函数)。
💡 新手建议:先完成上述三个阶段门,再开启自动审批——这是项目团队刻意设计的"渐进信任"路径。
🛡️ Worktree 作用域:审批边界的"隐形护栏"
即使自动审批已启用,它也只对worktree 内部的路径生效。AppliesTo函数会把目标路径解析为绝对路径并判断是否位于 worktree 根目录下:
- ✅ worktree 内的路径 → 自动审批生效
- ❌ 越界路径 → 升级为人工审批(配合
runtimefloor/wtfingerprint做硬停止)
相关护栏实现位于 go/internal/guardrail/ 与 go/internal/scopeleash/,你可以在 go/internal/autoapprove/autoapprove_test.go 中查看边界测试用例。
📒 编排账本:这次活儿到底是谁干的?
当你把任务委派给 Codex / Cursor 等外部后端时,编排账本回答一个关键问题:"这个会话中,实际干活的到底是哪个后端?"(见spec.md中的 "Orchestration Visibility Contract")。
账本核心实现在 scripts/lib/orchestration-ledger.sh,由codex-companion.sh和cursor-companion.sh每次委派时调用orch_emit_ledger写入一条记录。
八条字段,一次说清
每条账本记录只包含固定标量字段,绝不记录提示词、文件内容或密钥:
| 字段 | 含义 |
|---|---|
ts | 时间戳 |
backend | 实际执行的后端 |
subcommand | 子命令类型 |
write | 是否发生写入 |
exit_code | 退出码(可为 null) |
duration_ms | 耗时(毫秒,可为 null) |
session_id | 会话 ID |
counts | 是否为真实委派(task/review/adversarial-review为 true) |
两个值得注意的设计:
- 防刷分机制:
status、setup等轮询类命令记录为counts=false,避免虚增分数(orch_counts_for函数)。 - Fail-open 原则:账本写入失败绝不影响委派本身的退出码,调用方必须用
orch_emit_ledger ... || true形式调用。
📊 查看账本:路径、汇总与记分卡
- 账本文件:默认写入项目根目录
.claude/state/orchestration-ledger.jsonl(可用环境变量HARNESS_ORCHESTRATION_LEDGER覆盖) - 累计统计:
.claude/state/orchestration-totals.json(可用HARNESS_ORCHESTRATION_TOTALS覆盖) - 汇总脚本:scripts/orchestration-rollup.sh
- 记分卡脚本:scripts/orchestration-scorecard.sh
- Go 实现:go/internal/orchestrationledger/
⚙️ 配套配置:把安全开关调到合适档位
自动审批不是孤立的开关,它与 claude-code-harness.config.example.json 中的多组配置协同工作:
safety.mode:dry-run等安全模式git.allow_auto_commit/allow_auto_push:Git 自动操作开关paths.allowed_modify/paths.protected:可修改路径白名单与保护路径
字段语义详见 claude-code-harness.config.schema.json。建议新手先保持allow_auto_commit: false,跑通整个流程后再逐项放开。
❓ 常见问题
Q1:设置了HARNESS_AUTO_APPROVE=on但审批没生效?检查三个前置阶段是否完成。任一缺失,系统会返回auto-approve:disabled (prereq-missing:...)并写入账本,方便你排查。
Q2:账本会泄露敏感信息吗?不会。orch_emit_ledger在接口设计上就没有 prompt 参数,只记录八个标量字段,这是硬性契约。
Q3:账本写入失败会中断任务吗?不会。Fail-open 设计确保账本是"观察层",永不改变业务行为。
✅ 写在最后
Claude Code Harness 的进阶哲学可以概括为一句话:信任是挣来的,痕迹是省掉的。HARNESS_AUTO_APPROVE 用阶段门把"自动"关进笼子,编排账本则让每一次委派都有据可查。从 docs/CLAUDE.md 了解整体约定,再配合本文的两个进阶能力,你就可以把 AI 开发闭环真正跑起来了。
【免费下载链接】claude-code-harnessClaude Code Dedicated Development Harness - Achieving High-Quality Development Through an Autonomous Plan→Work→Review Cycle项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-harness
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考