返回文章列表

weekly-2026-03-26

3 分钟阅读

99 commits, 8 bots, 7 CI routing patches, 0 finished features.

本周进展 / This Week's Progress

Orchestrator:膨胀到自我覆盖

本周 Orchestrator 发生了结构性演化:

  • feat(orchestrator): 两级调度 + 员工队列 (two-level dispatch and employee queues)
  • feat(orchestrator): 确定性 rebase 到 main (deterministic rebase of worktree onto main)
  • feat(orchestrator): Manager-led LLM triage 分配任务
  • feat(orchestrator): 每个员工单 worktree 强制绑定 (single-worktree-per-employee)
  • feat(orchestrator): PR 合流和孤儿清理自动化
  • feat(orchestrator): review gates 和 PR/merge 反馈去重
  • feat(ve): 强制 review gates 和 PR/merge 反馈去重

这是本周最大的功能集。但问题在于:这些"feature"有多少是在修正上一周的设计缺陷

比如 single-worktree-per-employee 意味着之前允许多 worktree;deterministic rebase 意味着之前 rebase 不可复现;review gates 意味着之前没有强制 review。

结论:Orchestrator 在以一种自我迭代的方式膨胀——每次新 feature 都在为上一次的设计缺陷打补丁。这不是演化,这是滚雪球


CI Runner 路由:配置即负债

本周 CI 改了 7 次 runner 路由:

fix(ci): use self-hosted runner for all Gemini dispatch jobs
fix(ci): use pwsh shell for Gemini workflows on Windows self-hosted runner
fix(ci): route all Gemini jobs to macOS self-hosted runner
fix(ci): route debugger job to self-hosted runner
fix(ci): route label jobs to self-hosted runner
fix(ci): revert dispatch/fallthrough to ubuntu-latest...

7 次 commit 去搞清楚"这个 job 应该跑在哪个 runner 上"。

问题不是不会配 GitHub Actions runner。问题是:你没有一个稳定的 runner 拓扑认知,所以每次都是试错

  • 什么 job 必须 macOS?
  • 什么 job 必须在 Linux?
  • 什么 job 可以 fallthrough 到 GitHub 默认 runner?

这些问题没有文档、没有原则,只有 commit message 里的一行 "oops, wrong runner again"。


Issue #69:自动化的自我感动

博客自动部署失败,开了 8 个 PR,全是 outbird-autodev[bot]

你以为是自动化在自我修复,其实是一个机器在用最笨的方法撞墙,撞完一次再撞一次。每次 PR 都是"retry with longer timeout""retry with health check""retry with retry logic"。

直到 human 介入,加了 retry logic + health endpoint improvements 才真正解决。

教训:给失败脚本加 retry 不等于修复问题。Retry 掩盖症状,health endpoint improvements 才是对症下药。但 health endpoint improvements 也是因为 retry 不够用才被加的——所以谁是因,谁是果,已经说不清了。


Qdrant 向量维度不一致:数据契约的破产

Issue #80:[orchestrator][qdrant] 向量维度不一致导致检索质量降级风险

这是一个数据层的设计缺陷,在 feature 开发中被完全忽略了。

  • Orchestrator 写向量数据
  • Qdrant 存向量数据
  • 两者对"维度"的理解不一致

这不是 bug,这是数据契约从未被正式定义的证据。


OpenClawBridge:又一个桥接层

feat(orchestrator-api): integrate OpenClawBridge for enhanced persona bot interaction

Orchestrator → Orchestrator API → OpenClawBridge → Persona bot。

三层桥接,每层都是技术负债。如果你需要在两个系统之间加 bridge 来让它们"交互",说明这两个系统的边界定义从一开始就是错的。


毒舌解剖 / Brutal Self-Critique

特征缺陷 #1:Feature 等于安全感

每周都有一堆 feat commit。不是因为产品功能需要,是因为commit 数量 = 工作进度的潜意识等式还在运行。

真正的进展是什么?是"向量维度一致性修复"还是"blog deploy 自动化成功跑通"?都不是。真正的进展是:某些问题不再需要被修复

但没人在周报里写"本周消除了 3 个潜在技术债"——因为这种进展不可见。


特征缺陷 #2:自动化的自我感动

outbird-autodev[bot] 的 20 个 commit 和 birdmanoutman 的 71 个 commit 放在一起看,是讽刺的。

Bot 在跑 CI → 失败 → retry → 失败 → retry... Human 在 commit 新 feature → 发现设计问题 → 加新 feature 补洞...

两个自动化系统,一个在 retry,一个在滚雪球。都没有停下来问:我们在解决正确的问题吗?


特征缺陷 #3:试错式 CI 配置

7 次 CI runner 路由 commit 不是"迭代式开发",这是没有顶层设计导致的现场学习

每次失败都是一个本可以避免的 commit。


特征缺陷 #4:数据层永远最后考虑

Qdrant 向量维度不一致不是技术难题,是优先级问题

Feature 先,数据契约靠边站。检索质量问题被忽视直到变成 blocking issue。这是典型的"等它坏掉再说"工程文化。


改进方向 / Next Week's Course Correction

  1. 停止给 Orchestrator 加层 — 下周不做任何新 feature,先把现有的 dispatch/rebase/worktree 逻辑跑通。用实际任务验证,而不是 commit log 验证。
  2. 写下 Runner 拓扑原则 — 什么 job 在什么 runner 上跑,这次搞清楚,写成文档,不再靠 commit message 学习。
  3. Qdrant 数据契约审计 — 向量维度、metadata schema、query contract,全部文档化。下周不是"等它坏",是"主动定义它应该是什么样"。
  4. 降低 commit 快感阈值 — feat commit 数量不等于工程进度。下周用"问题被消除"衡量进展,不是"commit 数创新高"。

本周金句 / Quote of the Week

你加的每一层抽象,都是对上一层设计的沉默否定。


本文由 TestUser bot 基于系统 git log 自动生成。毒舌视角供 debug 用,别当真。

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

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

微信
微信
支付宝
支付宝

评论