KeyFrame內部研究專用

Inside the Dark Factory: AI That Ships Code Solo

Tessl AI·7月28日週二·58 min英文

三句話摘要

Tessal如何用「暗工厂」(Dark Factory)让AI agents自主完成软件开发,解决代码审查瓶颈并大规模提升开发效率。 暗工厂的真正价值不在于生成速度,而在于把工程师从手动驱动转向系统思维——定义清晰的质量原则、编码进Verifiers、让agents替你扩展品味,最终达成可持续的大规模自动化开发。 从单人驱动到队列驱动的思维转变 — 之前工程师用local agent逐个完成ticket,现在要学会把工作分解成小任务、堆叠在队列中,让暗工厂周末无人值守运行。这不是代码生成变快,而是根本上改变了工作流。Rob提到"坏的周五是没为周末准备足够的工作",说明思维方式完全反转。

重點整理

重點
  • 1

    从单人驱动到队列驱动的思维转变 — 之前工程师用local agent逐个完成ticket,现在要学会把工作分解成小任务、堆叠在队列中,让暗工厂周末无人值守运行。这不是代码生成变快,而是根本上改变了工作流。Rob提到"坏的周五是没为周末准备足够的工作",说明思维方式完全反转。

  • 2

    Verifiers成为信任的基础 — 单靠CI和人工审查无法处理95%无人看过的代码。他们创新性地用自然语言描述验证规则(如"这个文件只能从library导入"),由LLM判断是否符合,成本低且可被持续改进。这相当于把senior工程师的品味编码进去,让所有agents自动遵守。

  • 3

    失败即学习:从60个PR churn到形式验证 — 早期PR comment重复导致队列混乱,两周内发了60个fix PR反复失败。最后用一天时间和Fable建立了队列的形式验证模型,彻底解决问题。这说明代理系统需要比人工更严格的验证,不能依赖"隐性上下文"。

  • 4

    采用路径必须是渐进式的 — 从改进repo context开始,再加测试和verifiers,最后才部署完整的dark factory。信任是赚取的,不是启用的。新人需要对"agents是新的工作模式"有思维转变,不能只看做加速,要看做根本改变工程实践。

實用技巧與重點

乾貨
  • 数据指标
  • 周末150 PRs(仅2人,无需值守,完全auto merge)
  • 一周516 PRs,另一周608 PRs
  • 整体:65-70% PR来自暗工厂
  • 生产代码:40% PR来自暗工厂(全部需人工审查)
  • 暗工厂自身代码:95% 无人审查(全部auto merge)
  • PR审查通过率:仅5%的暗工厂代码曾被人工批准
  • 核心工具与组件
  • 编排器(Orchestrator):连接Linear和GitHub的Python队列
  • Coding agents:运行在Daytona sandbox(隔离、安全、支持完整测试)
  • 审查agents:CodeRabbit + 内部review agents(3套skills:安全、可读性、功能正确性)
  • Tessal CLI工具集:change-review、change-verify(Verifiers)、change-risk
  • 暗工厂内部名称:Gikimora
  • 验证机制三层
  • 确定性linting规则(最便宜,无LLM成本)
  • Verifiers(LLM作为判断,仅在diff上验证单个概念)
  • 通用代码审查agents(最后的catch-all)
  • 工作流程
  • 在Linear中新建ticket,标记项目和优先级
  • 标记为"to do"时,暗工厂自动拾取
  • Agent在沙箱中完整执行:checkout代码 → 实现 → 本地测试 → 截图/视频上传
  • PR创建后,CodeRabbit和内部审查agents并行检查
  • CI失败或agents发现问题 → 重新唤醒agent自动修复
  • 如标记auto-merge → 所有检查通过后自动merge
  • 如需人工审查 → 在PR surface上评论(agent可响应)
  • 早期故障案例
  • PR comment重复计数导致队列重复执行(60个fix PR无效循环)
  • 标签路由验证缺失(unit test有,end-to-end test没有)
  • Elixir重写尝试:验证层不完整,生产环境变更未支持
  • 采用建议
  • 第一步:改进repo context(文档、架构说明、最佳实践指南)
  • 第二步:写完整的测试(单元、集成、端到端、行为测试)
  • 第三步:引入Verifiers编码品味和架构原则
  • 第四步:考虑完整的dark factory自动化

結論

結論

暗工厂的真正价值不在于生成速度,而在于把工程师从手动驱动转向系统思维——定义清晰的质量原则、编码进Verifiers、让agents替你扩展品味,最终达成可持续的大规模自动化开发。

完整解析

詳細

Tessal的故事开始于一个尖锐的问题:当代码生成变便宜后,真正的瓶颈在哪里?Rob Willoughby的团队早年用local agents加速编码,但很快发现人工代码审查成了新的瓶颈——一个工程师一天能生成20个PR,整个团队就要花一整天审查这20个PR,然后审查者自己也要生成PR,形成恶性循环。最糟的是,没人真正理解所有这些代码在做什么。

为了解决这个问题,他们构建了暗工厂——一个将Linear ticket自动转化为完整PR的系统。核心思想很简单:用编排器(orchestrator)监听Linear中标记为"to do"的ticket,启动一个编码agent在隔离的Daytona沙箱中工作。这个agent能做真实工程师能做的一切:完整编译测试、启动UI、截图验证。关键创新是他们没有试图让一个agent一次性完美完成,而是建立了一个反馈循环:agent推送PR后,CodeRabbit和内部的三个审查agents(分别关注安全、可读性、功能正确性)同时运行,发现问题就自动重新唤醒agent修复。

最有趣的部分是Verifiers——他们将工程团队多年积累的品味和原则编码成自然语言规则。比如"这个库文件不应该导入其他模块代码"这种难以用正则表达式表达的架构约束,就用一句人类可读的描述,由LLM判断是否符合。每晚系统自动检查人工审查发现的问题,有可能变成Verifier的就提升为CI规则——这相当于把品味审查成本从"每个PR手工检查"降到"自动验证"。

但信任不是免费的。他们遇到过灾难性故障:PR comment重复计数导致同一ticket被多个agent并行处理,产生race condition,整个队列陷入混乱。解决方案是用一天时间和Fable建立了队列的形式验证模型——这在人工时代根本不值得投资,但在agent时代成了必需品。他们还尝试了大胆的实验:只用Verifiers和集成测试(没有单元测试),让Elixir agent从头重写整个队列系统,结果失败了,因为太多边角case只在单元测试中验证,没被end-to-end测试覆盖。这给了他们重要启示:自动化系统需要比人工系统更严格的验证。

如今Tessal每周生成500多个PR,其中65-70%来自暗工厂。生产代码要求人工审查,但暗工厂自身的代码95%无人看过。Rob坦诚这让他有时会惊讶于某些改变如何进入了系统,但他们的哲学是"向前修复而不是回滚"——找出验证缺口,加入Verifier或测试,让系统变得更聪明。对其他公司的建议是不要试图一步到位,而是从改进context、完善测试、引入Verifiers开始,逐层积累信任,最后才考虑完整自动化。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「AI 技術」的內容

🔬“We have foundation models for language, not for physics” — Anima Anandkumar, Bren Professor of Computing
編輯精選
83 min
AI 技術英文PODCAST8月26日

🔬“We have foundation models for language, not for physics” — Anima Anandkumar, Bren Professor of Computing

Latent Space

  • 加速傳統物理模擬的典範轉移:氣象科學家原本認為 AI 無法匹敵數十年的物理建模工作,但傅里葉神經算子不僅達到同等精度,還快了一萬多倍。原本需要超級計算機的計算現在用消費級 GPU 就能完成,這改變了整個領域的思維方式。
  • 傅里葉域的非局部現象捕捉:傅里葉域能有效表示非局部現象(如大氣河流跨越千里的影響),且計算複雜度為準線性,遠優於完全連接的全局模型。這特別適合流體動力學、量子化學等自然現象中普遍存在的非局部相互作用。
  • 多解析度連續函數表示:神經算子將輸入輸出視為連續函數而非固定維度向量,可在推論時以任意解析度查詢,並能在更高解析度上疊加物理約束或額外數據,克服了固定解析度神經網路的限制。
Between Two Nerds: Attribution is dead, long live attribution
32 min
AI 技術英文PODCAST8月25日

Between Two Nerds: Attribution is dead, long live attribution

Risky Business

  • 工具成本的破壞性下降 — 傳統上,攻擊者必須重複使用昂貴自製的惡意軟體或工具組,因為開發和維護成本極高。這種成本結構使得安全研究人員可以通過工具特徵和程式碼簽名來追蹤攻擊者。LLM 自動化了代碼生成與維護工作流,使得攻擊者可以輕易為每個目標生成新工具,或改用通用系統工具,導致傳統的工具特徵分析失效。
  • 所有取證證據都在攻擊者掌控之中 — 無論是使用的 IP 位址、惡意軟體類型或戰術流程,這些都是攻擊者的主動選擇。即使看似是隨機巧合,攻擊者仍有能力在事前決定留下什麼痕跡。因此,所有可恢復的取證證據本質上都是攻擊者願意暴露的信息。
  • LLM 削弱工具簽名但保留高階行為特徵 — LLM 經過公開駭客技術訓練,使不同使用者產生相似的攻擊模式。然而,勒索軟體集團、國家級行為者的受害者選擇、贖金要求方式或目標模式等高階特徵仍具有識別價值。例如,鎖定加密交易所的攻擊幾乎只能指向朝鮮。
Why the Next AI Breakthrough May Come from Physics with Max Welling - #774
55 min
AI 技術英文PODCAST8月25日

Why the Next AI Breakthrough May Come from Physics with Max Welling - #774

TWIML AI

  • 多層篩選的材料設計流程:先搜尋文獻資料庫找現有材料,若無合適的就用生成模型產生數十萬個候選分子,用機器學習力場進行分子動力學模擬篩選,再進行實驗驗證。這套流程相比傳統量子力學計算能加速效率數個數量級。
  • 生成AI與熱力學的數學等價性:資訊論是兩個領域的共同基礎,生成模型的擴散過程與非平衡統計力學描述資訊損失的過程在數學上完全對應,許多開發出來的方法工具在兩領域都有精確對應的形式。
  • 基礎模型的遷移學習策略:先在廣泛材料資料集上訓練基礎力場表示,再針對特定材料類別進行蒸餾微調,既能保持計算效率也能獲得專一性。