Claude Code Harness Night Watch 组件解析: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
Claude Code Harness是围绕 Claude Code 构建的自主开发框架,通过 Plan → Work → Review 循环提升交付质量。它的Night Watch(夜间巡检)组件则扮演"守夜人"角色:在你下线后自动巡视项目,找出滞留任务、未决决策和悬空的事件循环,第二天上班时给你一份结构化的巡检报告。本文带你看懂它的实现思路与接入方式。
为什么 AI 开发流程需要"夜间巡检"?
Harness 的开发循环虽然强调"每一步都有证据",但长任务、决策项、跨会话事件都可能悬在半空:
- 📋
Plans.md里的任务三天没人碰,状态还是 WIP; - ⚖️ 决策文档里一条
Status: open挂了一个星期; - 📨 Bridge 事件邮箱里发出去的
advisor-request始终没有对应的advisor-response。
这些问题靠人肉记忆很容易漏掉。Night Watch 的思路是:让巡检这件事定时化、规则化、可验证化——每天凌晨跑一次,输出一份符合 JSON Schema 的报告,把"忘了什么"变成"看见了什么"。
巡检三件事:Night Watch 的核心逻辑
Night Watch 的巡检逻辑集中在 go/internal/nightwatch/ 目录,三个核心函数对应三类检查项(见 stale.go):
| 巡检项 | 检查对象 | 默认阈值 | 说明 |
|---|---|---|---|
| 🔁 悬空循环 | Bridge 事件邮箱(SQLite) | 1 小时 | 有请求事件但没有配对的响应事件,说明某个 Agent 协作链路断了 |
| ⏳ 滞留任务 | 项目根目录的Plans.md | 72 小时 | 文件超过阈值没更新,且其中仍存在 WIP / TODO / Blocked 任务 |
| ❓ 未决决策 | .claude/memory/decisions.md | 168 小时 | 标记为 open / pending / 未决 等状态的决策项(支持中日文状态词) |
几个值得学习的设计细节:
- 事件配对用 key 而不是 ID:
loopKey用task_id + trigger_hash作为循环标识,请求(*-request、worker-report)与响应(*-response、*-result、review-result)按 key 配对,配对不上的才计入悬空循环(stale.go)。 - 健康检查先行:每次巡检先跑
Check()(health.go),输出三态结果——not-configured(未启用)、daemon-unreachable(Bridge socket 连不上)、corrupted(配置/邮箱损坏),让报告本身也能"自证"数据可信。 - 阈值可配置:
stale_task_hours与open_decision_hours读取自 templates/night-watch-config.yaml,文件不存在时回落到代码默认值,配置出错不会导致巡检崩溃。
报告格式:Schema 校验保证输出可信
巡检结果被组装成night-watch-report.v1结构(schema.go),包含schema_version、generated_at、health、unresolved_loops、stale_tasks、open_decisions六个字段。
关键在于:报告生成后会先通过 JSON Schema 自校验再输出,Schema 定义在 templates/schemas/night-watch-report.v1.json。对下游消费(告警、汇总、归档)来说,格式永远稳定——这是"让 AI 产出可信"的典型做法。
如何接入:默认关闭,显式开启
Night Watch 遵循 Harness 一贯的opt-in(显式开启)原则,默认关闭,接入分三步:
- 开启开关:设置环境变量
NIGHT_WATCH_ENABLED=true。官方还提供了安装脚本 scripts/night-watch-install.sh,它会安全地写入 settings 文件(并拒绝误改真实的~/.claude/settings.json)。 - 手动试跑:CLI 入口在 go/cmd/harness/night_watch.go,支持
harness night-watch report --dry-run干跑模式,只输出报告、不产生任何副作用——适合第一次接入时验证。 - 挂上 cron:按 templates/night-watch-cron.template 中的模板,在确认开启后再取消注释,例如每天凌晨 2 点执行巡检脚本并追加日志。
对应的自动化测试见 tests/test-night-watch-install.sh 与 tests/test-night-watch-report.sh,可参考它们理解各状态的断言方式。
小结
Night Watch 展示了 AI 开发框架中"守夜人"模式的完整思路:把记忆负担从人转移到规则——
- 用三态健康检查判断数据源是否可信;
- 用阈值 + 关键词规则识别滞留任务与未决决策;
- 用事件 key 配对发现断掉的协作循环;
- 用JSON Schema 自校验保证报告格式稳定。
如果你也在为 Claude Code 搭建长时运行能力,这套"轻量巡检 + 结构化报告"的方案是很好的起点。更多组件设计可参考 docs/ARCHITECTURE.md。
【免费下载链接】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),仅供参考