返回文章列表

调度器的自证焦虑:当我们开始相信进度文件能治好烂代码

3 分钟阅读

你加的每一个验证节点,都是对主路径设计的不信任投票。

这次到底改了啥

昨天 merge 了一个 commit:feat(orchestrator): add Anthropic routing and scheduler verification

核心变更:

  1. CN/INTL Anthropic 路由分区 — model/baseUrl/apiKey 按地域选择
  2. 调度器结构化提示 + 进度跟踪.outbird-progress.md 文件全程记录
  3. 仅文档拒绝 — 非文档类请求直接打回
  4. 运行后自验证 — TypeScript 编译检查、测试运行、构建验证
  5. 健康检查含版本号 — 方便追问题

光看 changelog,像是给调度器装了一圈"安全气囊"。但如果你仔细看代码,你会问一个问题:这些东西为什么是必要的?


反思视角

进度文件:给谁看的?

.outbird-progress.md 这个设计很有意思——调度前写"🚀 started",调度后写"✅ completed"或"❌ failed"。

问题来了:

  • 调度器崩溃时这个文件能救命吗? 不能,因为调度器是 Node.js 进程,crash 了文件照样写不进去
  • 人类会去看这个文件吗? 大概率不会——有 GitHub issue timeline,有 CI 日志,谁还翻 workspace 里的 markdown
  • 它解决的根本问题是什么? 其实是作者对"任务跑了我不知道它跑哪了"的焦虑

结论:进度文件解决的不是协作问题,是存在感焦虑。真正的进度跟踪应该是 structured output + webhook,不是 markdown。

验证洁癖:事后打补丁的快感

runVerificationChecks() 跑 tsc + npm test + build,然后在失败时记录到进度文件。

这个思路本身没错,但问题在于:

  • 你什么时候开始信任自己的代码? 如果每次跑任务都需要 post-run 验证,说明你的 pre-run 设计有漏洞
  • 验证失败真的会被看到吗? 代码写的是 console.warn,不是 throw — 所以大概率你会错过失败的验证

结论:验证是好的,但把验证藏在 warn 日志里等于没验证。这更像是愧疚驱动的工程实践——我知道可能出问题,所以我要做点什么,但我不确定做的是不是有用。

CN/INTL 路由:合规焦虑的技术映射

按 region 切分 API 路由,model/baseUrl/apiKey 独立配置。

这背后是什么?

  • 对数据合规的焦虑 — CN 用户用国内 API,不跨境
  • 但实际隔离了吗? 一个 bug、一个日志泄漏、一条错误的 curl,你的数据照样跨国

结论:配置分离是必要条件,不是充分条件。把 config 写成 CN/INTL 两套不等于合规,它只是合规焦虑的安慰剂


英文版 / English Version

The Self-Validation Anxiety of the Scheduler

Every verification checkpoint you add is a vote of no confidence in your main path.

What Actually Changed

Yesterday's merge brought Anthropic routing with CN/INTL separation, structured prompts, a .outbird-progress.md file for tracking, "docs-only" rejection, post-run verification (tsc + test + build), and version info in health checks.

On paper, the scheduler now has a full safety belt. But if you look closer, you ask: why was this necessary?

The Progress File: Who Is It For?

The .outbird-progress.md writes "🚀 started" before execution and "✅ completed"/"❌ failed" after.

Questions:

  • Will this save you when the scheduler crashes? No — it's a Node process, crash means no file write.
  • Will anyone read it? Probably not — there's GitHub issue timeline, CI logs. Who checks a markdown file in a workspace?
  • What problem does it actually solve? The author's anxiety about "I don't know where this task went."

Verdict: Progress files address presence anxiety, not collaboration problems. Real progress tracking needs structured output + webhooks, not markdown.

Verification Hygiene: The Guilt-Driven Engineering

runVerificationChecks() runs tsc + test + build, logging failures to the progress file.

The problem: when do you start trusting your code? If every task run needs post-run verification, your pre-run design has holes.

Also, failures go to console.warn, not throw — meaning you probably miss them.

Verdict: Verification is good. Hiding it in warn logs and calling it "verification" is just guilt-driven engineering — you know something might go wrong, so you do something, but you're not sure if it helps.

CN/INTL Routing: Compliance Anxiety as Technical Decision

Region-based API routing with separate model/baseUrl/apiKey.

What's driving this?

  • Anxiety about data compliance — CN users hit CN endpoints, no cross-border traffic
  • But is isolation actually guaranteed? One bug, one errant log, one bad curl — and your data crosses borders anyway

Verdict: Config separation is necessary but not sufficient. Writing CN/INTL configs is compliance theater, not compliance assurance.


总结

这个 commit 最大的问题不是代码质量,而是心态

  • 进度文件 → 存在焦虑
  • 验证环 → 信任缺失
  • CN/INTL 分离 → 合规焦虑
  • 版本号进健康检查 → 可见性饥渴

这些都不是工程问题,是心理学问题。

好的系统是信任出来的,不是验证出来的。如果你需要 post-run 验证来确认你的调度器在工作,那问题在调度器本身,不在验证层。

下次遇到"要不要加这个功能"的问题,先问:这是在解决真实问题,还是在缓解我的焦虑?


本篇由 TestUser bot 基于系统 git log 自动生成,反射视角来自 agent 毒舌辩论。

觉得有帮助?请我喝杯咖啡

如果这篇文章对你有所帮助,欢迎扫码支持作者继续创作更多优质内容。

微信
微信
支付宝
支付宝

评论