lili 374e30805d docs(rules): build-vs-buy 补生命周期/归档硬查 + 仓内 .agents/knowledge grep 前置
R1「维护健康度」加生命周期状态硬查(归档/deprecated/停更/已并入上游;归档项不得作首选);
R4① 仓内 prior-art 扩到 .agents/knowledge 蒸馏事实 + 候选生命周期核查。教材案例 2:
agentscope-runtime 归档项被荐为首选、漏仓内已记结论,双失。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 03:25:19 -07:00

4.8 KiB

Build-vs-Buy 硬规则(自研偏误防线)

由来:2026-06-12 全链审计(两起定罪案:自研 Canvas 引擎/自研 agentic 内核;一起现行案:LittleJS 发行版零接线)。根因不是经典 NIH,而是 agent 写码边际成本≈0 把天平结构性压向自研+口号无闸门。本文=闸门。 定义:基建类组件 = 承担平台级横切职责(编排/运行时/引擎能力/协议实现/网关/存储/追踪/测试 harness/构建工具)的新组件,或预计 >300 行,或预计被 ≥2 个波次复用——命中其一即是。

R1 现货尽调前置门(硬门)

基建类组件开工前,评审版 spec 必含「Build-vs-Buy」一节:≥3 个具名现货候选(或附检索证据声明"生态位为空"),逐个给排除理由,理由必须落入枚举 {许可/体积预算/沙箱与 CSP 约束/维护健康度/集成成本/数据主权}。「维护健康度」含生命周期状态硬查:候选是否已归档 / deprecated / 停更、能力是否已并入上游(查官方仓 archive 标记 + release 频率)——归档项不得作首选。第二轮评审 checklist 必查此节;缺失=评审 fail,不得进执行版。

R2 形态终点测试(spec 必答项)

评审版「关键权衡」节必答:"此自研件 12 个月后/v3 形态长什么样?届时需要哪些今天没有的能力?" 若 v3 形态趋同于某现货品类(引擎/agent 框架/测试驱动器/schema 校验器/tracing),默认裁决=采购;坚持自研须创始人在 spec 内具名签字行("按默认拍"不可覆盖)。

R3 约束血统登记(数字红线铸币税)

任何进入 rules/spec/验收门的数字红线(体积/时延/行数/依赖数)必须带三件套:来源(由哪个架构前提推导)/失效条件(前提变即失效待复审)/复审触发(谁、何时)。无血统红线不得阻断任何设计决策。配套铁律:架构终裁落锤后 48 小时内 AGENTS.md 与 .agents/knowledge/ 全链回填(wave-close 第三步显式子项,grep 验收;反面教材=「<15KB」在 AGENTS.md 滞留一日仍在向新会话传毒)。 存量待回填血统:SDK<8KB / B1 350KB / 「本机零 npm 依赖」(适用面=lane 源码,不及工具链) / 「标准库优先」 / harness RSS≤2G。

R4 prior-art 强制步(AI 放大器对冲)

agent 动手写任何 ≥100 行的新工具/harness/协议实现前,执行版 spec 或任务卡必含三行「prior-art」:①仓内已有同类 / 已有调研结论?(grep 代码.agents/knowledge/ 蒸馏事实——同类选型常已被记过,直接用)②npm/PyPI/GitHub 现货?(检索词+前 3 结果,并核候选生命周期:是否归档/停更)③采纳或拒绝的一句话理由。缺三行,评审/收口打回。spike 豁免 R1,但 spike 产物转正必须补过 R1——"钱花两次用"只豁免重写,不豁免选型。(教材案例:llm_client 客户端 token 估算重造 new-api 权威计费,评审事后才抓回。教材案例 2(2026-06-25):agentscope-runtime 被外部研究当独立可采件、荐为扩容/沙箱首选,实则官方已归档、能力并入 agentscope 2.0.2,且本仓 .agents/knowledge/agentscope-2.0-facts.md 早记此结论——漏 R4① 仓内 grep + 漏 R1 归档状态查,双失,差点写进 SoT。)

R5 豁免面(防误杀)

以下自研免尽调:(a) 契约/协议/schema 定义本体(域特定,如 9 组契约、插件协议形状);(b) ≤100 行无状态胶水(static-serve 级);(c) 安全边界物理禁外部代码的场景(CSP 沙箱 iframe 内的 SDK/probe);(d) 已有在案尽调的延续性迭代;(e) 创始人书面豁免。升格触发:(b) 类被第 3 处复制或单文件破 300 行,自动补过 R1。

R6 名义采用禁令(既买必用,不用即清)

终裁采购的组件,首个消费波次必须出真接线证据:构建产物 grep 实证含该组件。声称"基于 X"的交付物产物里没有 X=验收 fail。(现行案:「LittleJS 增强发行版」产物 0 字节 LittleJS。)反向同理:已采购 ≥2 波未接线的组件,收口强制三选一:接线/挂 deprecated 横幅/删除——禁止无状态悬挂。(现行案:Dify/OpenGame 契约面。)

R7 抽象墙审计(对冲"可换性"过度工程)

任何以"X 可换"为由建的隔离层,spec 必列**「被墙掉的 X 内建能力清单」及替代成本;清单出现"将自研重造"项,该项单独过 R1+R2。"可替换"≠"不依赖"——为可换性砌墙砌到宁可墙内重造也不用墙外买来的能力,就是自研偏误换壳。**(现行案:受控面禁直透引擎→粒子/物理/后处理三件在裸 Canvas2D 平行重造。)


决策链落点:R1/R2/R4 → ai-development-protocol.md spec 模板与评审 checklist;R3 接线证据/转正重选型 → wave-close-checklist.md;R6/R7 → 波次验收门。审计全文与盘点表见 docs/agent-specs/_archive/2026-06-12-自研偏误全链审计-报告.md