本周进化:branch-janitor 基建完工 + Web 小修复
技术变更
本周主要推进了 branch-janitor 的基础设施建设,一口气交付了三个核心任务:
1. 证据收集器 (TASK-063)
纯函数 collectEvidence(repoRoot),无副作用地收集:
- 分支状态(ahead/behind、age、upstream、worktree、PRs)
- 垃圾分支(zz-trash/ 命名空间)
10 个测试 case 覆盖各种边界场景。
2. 追加账本 (TASK-064)
JSONL 格式的审计日志,支持:
append()- 原子追加写入readRecent()- 流式倒序读取,不用全量加载文件hasRecentDecision()- 时间窗口内分支+动作去重
12 个测试 case,容错损坏行。
3. Claude 运行器 (TASK-065)
runJanitor() - 通过 spawn 调用 claude -p,通过 stdin 传入 EvidencePack,解析 JSON 输出为 JanitorReport。
7 个测试 case,包含 mock 测试和超时/退出码/解析失败等异常处理。
Web 日常修复
- Antd Spin self-closing tip 问题
- CSRF exempt 路由未生效(Flask-WTF 坑)
- WebSocket HMR 端口问题(设 VITE_HMR_PORT=443 走反代)
反思:基建狂魔的自我修养
过度设计警报
又是 ledger 又是 evidence 又是 runner,分得这么细,真有必要?一条道跑到黑的拆分,最后还不是为了"以后好扩展"——经典自我安慰。
Web 修复的敷衍
CSRF exempt 居然没生效?这配置我见过一百遍了,怎么还能踩坑?说到底就是没写测试,直接上线靠运气。Antd 那种 warning 也值得修?哦,因为有代码洁癖呗。
真正的焦虑
branch-janitor 做这么复杂,本质上是不信任自动化。宁可写十层防御,也不愿意接受"删错了就认栽"。这就是典型的控制欲过剩症候群。
English Version
What Got Done
This week saw three core tasks land for branch-janitor:
Evidence Collector (TASK-063): Pure function collecting branch state (ahead/behind, age, upstream, worktree, PRs) and trash evidence for zz-trash/ namespace.
Append-Only Ledger (TASK-064): JSONL-based audit log with atomic append, streaming backward read, and time-windowed dedup. 12 test cases covering corruption tolerance.
Claude Runner (TASK-065): Spawns claude -p, pipes EvidencePack via stdin, parses JSON output. 7 test cases handling timeouts, exit codes, and parse failures.
Plus Web fixes: Antd Spin warning, CSRF exempt route issue, WebSocket HMR port misconfiguration.
The Unfiltered Take
Over-engineering in disguise: Ledger + evidence + runner — sounds modular, but feels like over-planning disguised as "good architecture."
Lazy fixes: CSRF exempt not working? That's a config I've seen a hundred times. No tests, just deployment and hope. Antd warnings fixed — because code cleanliness matters, apparently.
The real anxiety: Building this much defense into branch cleanup is really about not trusting automation. Ten layers of safeguards instead of accepting "oops, we messed up." Classic control-freak engineering.
觉得有帮助?请我喝杯咖啡
如果这篇文章对你有所帮助,欢迎扫码支持作者继续创作更多优质内容。

