AI 产品经理 · 项目叙事

拾遗 Gleaner

懂规矩、会干活的数字稽查员——持续地把「应该是什么」和「实际是什么」对上,并且对差异负责到底。

材料来源:当前 main 全部文档与代码(181 commits / 60+ PR)、独立研发分支(Typed Artifact Gateway 五步演进)、可读取的 Claude Code 与 Codex 开发会话(2026-07-27 → 08-24)。全文把证据区分为「真实数据已验证 / 工程链路已完成 / 正式质量待验收」,不把研发分支写成主线交付。
fail · 可举证的违规 suspect · 举证不全只能存疑 pass · 有依据才许通过
工程主线 · v1.0 核心工程完成 真实流程 · B1 20/20 终态写回 Provider 选型 · T5 / sealed T6 已完成 Typed Gateway · 独立分支待并入 main
29 天0 → 核心工程与真实流程验收
181main commits · 60+ PR
+9.0 万行main 快照 · 测试约 40%
壹 · 电梯陈述

一句话讲清这个项目

一句话版

从 0 到 1 独立设计企业财务 AI 稽查产品「拾遗 Gleaner」,完成 v1.0 核心工程与真实流程验收:单 Agent + 通用工具架构覆盖发票入库、重复报销检测、制度合规审查三大场景;29 天内 main 形成 181 commits / 60+ PR,建立 sealed 数据集与「判据先于测量」的评测体系;v0.2 回归 #3 在原 sealed 30 张上的关键三字段达到 30/30(正式 ≥100 张 phase-2 尚未完成),AI 调用成本对账误差小于 0.01 分。

一分钟版

拾遗 Gleaner 是一个装在财务同事自己电脑上的「AI 数字稽查员」。财务日常有大量系统覆盖不到的活儿——发票登记成台账、查有没有重复报销、对照公司费用制度审查合规性——现在只能靠人眼抽查 10%,而且口径因人而异、结论说不清依据。

这个产品被设计为逐票处理,替代人工约 10% 的抽样覆盖;这是“进入处理链的覆盖率目标”,不是“判断准确率 100%”,正式质量门槛仍按 sealed 评测单独裁决。输入是发票原件(PDF/OFD/图片)、报销台账 Excel 和公司费用制度文档;输出是结构化台账、一份不超过 20 张的复核清单,以及每张票的判定结论。产品的核心规则是强制举证:每个结论必须能落到「制度第几条、凭证第几张」,举证不出来就只能出「存疑」,绝不允许出「通过」——这是它和「给财务开个 ChatGPT 账号」的根本区别。

业务是什么企业财务报销稽查:发票信息提取入台账、重复报销检测、依据费用制度审查发票合规性
AI 输入发票原件(PDF/OFD/图片)+ 报销台账 Excel + 企业费用制度文档 + 一句自然语言任务
AI 输出结构化发票台账 · ≤20 张/批的复核清单 · 带完整举证链的判定(fail / suspect / pass,每条附制度条款引用+凭证定位)
解决什么问题人工复核是抽样的(约 10%)、滞后的(月末才对账)、口径不一的、说不清依据的。产品目标是让进入批次的单据逐票处理、条条可追溯,同时用红线守住「只发现、不问责」;处理覆盖与判断准确率分开测量

定位背后的三层逻辑

  1. 缝隙理论。公司不缺系统(ERP、费控、OA 都有),缺的是系统与系统之间的「缝隙」——发票从邮箱到费控之间、导出表和导出表之间、制度文档和具体单据之间。缝隙的三个性质:无系统覆盖、无 API、不可外包(通用大模型不懂公司口径,RPA 处理不了非结构化和判断)。所以「没有 API 权限」这个现实约束与产品定位是自洽的,缝隙正是主场。
  2. 命名即产品判断。中文取自唐代谏官「左拾遗」——只发现、不问责;英文 Gleaner 是米勒油画里的拾穗者。「只发现不问责」是「别做成监视器」这个最大政治风险的天然解药。
  3. 护城河不是发布日建成的,是运行出来的。垂直度不来自 prompt 里写「你是财务助手」,而来自积累的公司知识——制度库、判例库、数据配方、被人纠正过的判例。自检标准:「换个公司能否直接搬走?期望答案:不能。」
贰 · 全貌与角色

项目全貌与我的角色

工程规模(29 天,2026-07-27 → 08-24):

我的角色:产品经理 + 技术负责人一人双岗。以 Claude Code、Codex 两条 AI 编程代理为「开发团队」并行开发;所有产品决策——红线、判定语义、验收判据、否决清单、每一次拍板——由我做出并登记为编号决议;AI 产出代码,我负责需求定义、验收口径、真源管理和交付。

双重实践:这个项目既是「做一个 AI 产品」(定义 AI 的判定边界、评测体系、治理层),也是「用 AI 做产品」(管理 AI 开发者的完整工程流程:判据先于测量、回滚点、跨 AI 交接、真源纪律)。两条线的经验都可以独立展开。

三条产品红线(贯穿一切设计,且全部机器执法)

  1. 每条结论必须能举证到「制度第几条+凭证第几张」;举证不全降级为「存疑」,不许「通过」。
  2. Agent 不访问使用者本人访问不到的数据——没有超级账号,所有数据由人用自己的账号导出后交给它。
  3. 不做监视器——只发现、不问责,不做人员排名,不与绩效挂钩。判例库只存纠错类型、不存「谁错了」,并且由 CI 断言执法:判定契约里不得出现人员身份字段。
叁 · 技术架构

技术架构(main 基线):单 Agent + 通用工具,智能留在模型里

架构第一原理只有一句话:「智能必须留在模型里,不能被搬进代码里。」所以不做拖拽式工作流编排、不为任何场景写专用工具——垂直度不来自 prompt 里写「你是财务助手」,而来自运行环境:业财工作区、制度库、影子库、判例库。这个思路直接对标 Claude Code:它没有「修 bug 工作流」,只有 Read/Write/Bash 等通用原语,垂直度来自代码仓库这个环境。

交互层

CLI(init / run / doctor / replay / audit / budget / chat / view)· 本机 Web Chat(只绑 127.0.0.1)· Electron 桌面薄壳(双击启动、托盘、系统通知——业务逻辑一律不进壳)· 分发形态:657MB 自包含 portable ZIP(捆绑 Node + Python + OCR 权重,解压即用)

Agent 内核

Claude Agent SDK;全产品唯一的 query() 入口(「出现第二处调用,治理层就会被绕过——那不是重构问题,是安全问题」);多 Provider profile(Kimi / 百炼 Qwen 等国产模型,切换 = 改一个环境变量);主上下文工具数 ≤25(国产模型端点会每轮全量重发工具 schema,槽位是成本刚需)

治理层 · 7 个 Hook(提示词管偏好,代码管不变量)

预算熔断(月度上限,代码断言非监控告警)· 模型出网审计(只记指纹与形状,不记内容)· payloadGuard 大负载拦截(超预算无损落盘给路径,「大表不进上下文」成为结构性不可能)· Bash 命令分级(白名单 + 剥夺凭证,不解析命令)· 文件写入门禁 · Bash 遥测埋点 · 查验窄门(域名锁死 + 脱敏审计)

工具层

主 Agent 保留 Bash / Read / Write / Glob 等通用原语,不因“看起来危险”就一刀切禁用;否则会砍掉「模型写代码、代码跑数据」这个最高杠杆。高风险能力会话则按任务级 Profile 做最小权限收窄。当前 main 另有自研 5 个 stdio MCP server 共 17 个只读或无副作用工具(Python)+ 4 个 Skill。

数据与契约层

9 份 JSON Schema 契约(唯一真源,TS 与 Python 双语言消费,任何写入前必过 assertValid;契约与算法版本在 schema 里互钉,防静默错配)· DuckDB 影子库 11 张表 · xlsx 台账(一票一行主 sheet + 明细 sheet)· 本地 PaddleOCR(发票图片不出本机)

旁路 · 宿主确定性后置写入(不在模型工具列表里)

当前 main 的台账落库、判例落库、制度入库由 CLI 直调 Python 确定性执行;这些无需模型参与的高风险数据库写入不暴露为 Agent 能力。独立 Typed Gateway 分支只新增“提交语义 draft”的通用入口;模型仍拿不到数据库写权限,契约校验、系统字段、幂等与正式发布全部由宿主完成(案例八)。

三条架构纪律

  1. 新增能力的优先级:能用 Skill 文字解决 → 写 Skill(零代码);需要确定性计算 → 写 MCP 工具;需要跨会话治理 → 写 Hook;需要工作流编排 → ❌ 停下,说明前三条没想清楚。
  2. 工具少而通用,知识多而垂直:工具名里出现业务名词(如 merge_invoice_excel)就是写错了;反过来 Skill 名里应该出现业务名词(如 expense-compliance-sop)——Skill 是知识,不是工具。CI 用 grep 执法:代码里出现场景专用工具直接拦下。
  3. 主 Agent 的安全靠分层,高风险会话靠最小权限:主会话使用分平台沙箱(macOS/Linux 强隔离;Windows 弱隔离并如实披露)+ 权限规则 + Hook;验证码等高风险能力再用任务级 Profile 收窄工具。密钥对沙箱内脚本不可见——「让它拿不到钥匙,比检查它想不想开门可靠得多」。

要点提炼:这套架构的验收关卡是可执行的——replay 夹具断言「增值税专票换成火车票时,工具和 server 完全不变」,进了 CI。架构纪律不是文档口号,是会挡 PR 的东西。

肆 · MCP 清单

MCP 工具清单(main 基线):5 个 server · 17 个工具

以下 17 个是当前 main 的只读或无副作用工具。工具边界即安全边界:数据库确定性写入绝不出现在 tools/list。每个工具入列前都要过准入测试——「它是否提供了模型自己写代码做不到、或做不可靠的东西」;pandas 三行能搞定的一律不做工具。独立分支后来新增的 submit_typed_artifact 是跨场景产物网关,不是数据库写工具,也不计入这份 main 清单(案例八)。

gleaner-ocr(1 个)

gleaner-ledger(5 个 · 影子库只读)

gleaner-evidence(4 个 · v1.0 举证链)

gleaner-verify(4 个 · 自校验信号)

这组工具是 agentic 自主性的前提——「自主性的前提是造出 verify 信号,这比 prompt 怎么写重要一个量级」。没有它,plan → act → verify → fix 循环里的 verify 是空的,Agent 就是「自主地错」。

gleaner-capability(3 个 · 能力自描述)

伍 · Skill 清单

Skill 清单(main 基线):4 个领域 SOP,知识多而垂直

Skill 是注入给模型的领域知识,与工具正好互补:工具名禁止出现业务名词,Skill 名应该出现业务名词。新场景接入的理想形态是「补一个 Skill + 一份数据配方,零代码」。Typed Gateway 分支另把真实失败经验沉淀为短小、渐进披露的发票 Skill;它与任务级 Profile / Gateway 的硬约束分层,未混入这里的 main 数量。

Skill作用
expense-compliance-sop费用合规审查 SOP:提到报销审查、超标、制度比对时触发;输入是 inbox 发票或已入库的逐票 JSON,输出带举证的偏差清单与报告。v1.0 场景 2 的作业知识本体。
document-rasterizationPDF / OFD 取字符的两条路:优先用宿主已抽好的文字层;取不到才逐页转 PNG、调用唯一的 ocr_image。明文写着「不得新增或寻找发票专用工具」——纪律二写进了知识层。
data-recipe-guide缺数据怎么办:不绕过、不猜测,查配方库生成「缺数据待办」,把取数步骤原文交给人。红线「Agent 不越权取数」的操作化。
report-tone-guide报告语气规范:凡面向人的输出先过逐条自检(提醒 + 建议动作;禁用词有 CI 断言兜底)。「决定产品形象的不是名字,是第一份报告怎么说话。」
陆 · 时间线

这一个月做了什么、为什么这样做、带来了什么价值

2026-07-27 · 第 0 天

契约先行

做了什么
第一个 commit 先写 2,117 行核心文档——PRD 880 行 + 技术架构 1,237 行;该 commit 总计 2,135 行新增,另含 18 行仓库配置。产品判断先冻结:三条红线、场景准入三关(标准可明文化 / 事实可稳定获取 / 偏差有人负责)、「明确不做的九件事」清单。
为什么
单人项目最贵的成本是返工。数据契约是全部模块的共同依赖,不先冻结必然返工;「不做什么」不先写死,后面每个诱人的方案都会重启一次争论。
价值
之后四周所有方向争议都能回到文档裁决。否决清单挡掉了自动查验、自动打码、集中式后台、多用户权限管理(本质是超级账号)等至少六次方向漂移。
07-27 ~ 08-02 · 第 1 周

v0.0 / v0.1 / v0.2:用最便宜的场景验证架构

做了什么
治理层(预算熔断 / 出网审计 / 命令分级 Hook)、CLI、Excel 合并拆分两个场景的真实模型验收、发票入库管线(通用 OCR + PDF/OFD 预处理 + 双 sheet 台账)。
为什么
Excel 合并拆分本身价值不高,但验证成本为零,而它是「单 Agent + 通用工具、不为单个场景写专用工具」这条核心架构纪律的试金石——架构如果错了,第一周暴露,而不是第四个月。
价值
36,000 笔 / ¥14,736,038.18 在 macOS 与 WSL2 双平台一字不差,全程零专用工具(只用 Bash + Write);36,006 行源数据进入模型上下文的只有 8,062 字节——「数据量大 ≠ 上下文大」拿到量化证据,后来成为对 IT 谈数据安全的第一份材料。
08-05 ~ 08-10 · 第 2 周

评测体系与查重引擎

做了什么
CI 历史首绿(此前从第一个 commit 起从未绿过,且无人发现);30 张真实发票 sealed 数据集三轮回归;查重比对引擎(三级指纹 → 分级判定 → 20 张复核清单)。
为什么
AI 产品没有可信评测,一切「准确率」都是自欺。查重是全路线图 ROI 最高的一版——不依赖制度文档、不依赖任何人改变习惯,直接产出「人工原本会漏掉的问题数」这个唯一硬通货,是个人项目获得组织身份的最短路径。
价值
在 v0.2 回归 #3、原 sealed 30 张上,环境缺陷导致整票无结果的样本从 4 张降到 0;关键三字段(发票号码 / 开票日期 / 价税合计)30/30 = 100%;数电票下载次数字段从无到 94.1%。这与后来 Typed Gateway 新冻结点的 Provider T6 不是同一轮测量。更重要的是建立了「判据先于测量、seal 防篡改、诚实归因」的评测文化(详见案例一)。
什么是 sealed 数据集

sealed = 封存后的评测集:标注答案一旦冻结,事后任何改动都会让已产出的评测数字自动作废。机制四层:① 先标注,后封存——30 张真实发票逐张人工标注 ground truth(发票号码、日期、金额等字段的正确答案),严格校验通过后执行 seal 封存;② 哈希链互锁——seal 记录标注文件的 SHA-256,评测开始时冻进预测产物表头,每次运行的 marker 再抄一份,打分前先验哈希,标注被改过直接拒绝,连「删掉重新封存」也绕不过去,净效果是改一个字的标注 = 已跑完的全部预测作废、30 张真金白银重跑;③ 答案隔离——评测运行期间 Agent 被 denyRead 挡住,物理上读不到标注文件,模型不可能「偷看答案」;④ errata 勘误——标注真错了,原文件一字不改,勘误单独披露且必须写明「怎么发现的」,若是看了 OCR 输出才发现标注错,该字段从此失去「标注先于测量」的验收资格(真实用过一次:3 张数电票标错票种,拍板不改分、勘误并列披露)。

它堵死评测数字的三种典型自欺:跑完悄悄改标注让数字变好看(哈希链堵死)、模型在评测时接触到答案(denyRead 堵死)、标注出错后无痕迹修正(errata 强制留痕)。与 ML 常规 held-out test set 的区别:held-out 防的是模型过拟合,seal 防的是——防开发者自己事后调答案、调阈值;对 AI 产品来说后者才是更常见的失真来源。

08-11 ~ 08-17 · 第 3 周

半自动查验、桌面分发、去 WSL

做了什么
税局查验「窄门」(AI 在受限浏览器里预填表单、人只敲验证码,20/20 真实写回);Electron 桌面壳 + 托盘 + 系统通知;对 4 台真实财务机做预检(只有 1 台能装)→ 一个通宵拍板并执行「去 WSL」架构大改版,删除 3,200 行装机链,交付 657MB 解压即用的 portable ZIP。
为什么
目标用户是财务,机器全是 Windows、AD 域纳管、常态无管理员权限。WSL 形态 1/4 的可装率意味着产品根本到不了用户手上——「可分发」不新增任何场景,但决定产品存亡。
价值
装机从「启用 WSL2 + 重启 + 导入 1GB 镜像」变成「解压即用」;同周完成 AI 调用成本的真实付费对账(误差 ¥0.0000128),核销了商业化前的成本可信性闸门。
08-18 ~ 08-24 · 第 4 周

v1.0 合规审查:产品定位第一次完整成立

做了什么
双层制度库(企业层 81 条 + 国家层 6 条,逐条过契约);A/B/C/D 四层判定口径;20 张注入集亲手标注并封存;首次端到端真实付费运行。期间 48 小时内连出 6 个判定口径决议(D60–D65)。
为什么
「懂规矩、会干活的数字稽查员」这句产品定位,直到 AI 能对照制度审发票才第一次完整成立——所以这一版叫 v1.0。范围刻意裁剪为一个制度族(差旅+招待),砍的是覆盖面,不是判据
价值
判定口径冻结进 PRD;首次真跑与随后收口审计用真实损耗换出一组静默失败并逐项修复(详见案例三);举证、判例落库、自动打分器全链路走通。这里的 20/20 是结构与契约链,不是业务判断质量;合规 recall 的正式门槛仍未通过。
随后演进
8/21–8/24 在独立分支完成五步 Harness 演进:Typed Gateway、任务级 Profile、契约编译工具、durable receipt 与按需语义披露;T5 18/20、同期 sealed T6 为 DeepSeek 29/30 / Qwen 28/30,并在知悉 3.3pp 差异后选择 Qwen。分支已验证并推送,尚未并入当前 main(详见案例八)。
柒 · 落地案例

九个落地案例:从找对问题,到让 Agent 可验证地自主

每个案例都按「我为什么做 → 我遇到了什么挑战 → 我做了什么关键判断 → 我如何解决 → 结果与证据 → 尚未验证什么」展开。案例四、七、八分别承载业务判断、Agent Harness 与结构化约束三条核心叙事,其余案例补足评测、治理、交付、成本与研发协作。

我对 agentic 的可测试定义:Agentic 不是步骤更少,也不是“全自动”;而是模型能在明确边界内自己决定下一步,并用外部信号证明自己做对了。固定安全不变量是治理,固定业务步骤才是编排。
案例 一核心 · 评测

评测体系:把「准确率」从一句宣传变成一条证据链

真实 sealed 数据已验证评测机制已入 CI
我为什么做

AI 产品最容易自欺的地方是评测——事后调阈值、悄悄改标注、把别人的功劳归给自己的改动,每一种都能让数字变好看。我要的是能拿去和财务、IT 谈的数字,所以规则必须在测量之前写死:验收判据先冻结进 PRD,30 张真实发票人工标注后 seal 封存(哈希链五环互锁,改一个字标注 = 全部已跑预测作废)。

我遇到了什么挑战

判据被自己红队掉了:「低置信度捕获率 ≥90%」这个指标只有召回侧——把全部 13 个字段都标成低置信度就能刷到 100%(实测这种捷径的精确率只有约 13%)。

回归 #2 的「假大捷」:捕获率 11.5%→48.3%、精确率 50%→82.4%,看起来大涨;但逐票来源归因发现,新增的 21 个低置信标记全部来自模型的自发行为,我这批宿主代码的边际贡献是 0——「删掉这批代码,这次照样绿」。

标注本身出错:3 张数电票被标错票种,而 seal 机制没有留任何补救后门。

我做了什么关键判断

我拒绝把回归 #2 宣布为成功,即使数字已经足够漂亮。评测的职责不是替产品“证明模型很好”,而是排除反事实:如果删掉这批改动,结果是否仍然成立?如果答案是“仍然成立”,这次上涨就不能算我的产品成效。

我如何解决

① 在阶段二开跑前的唯一合法窗口补上「低置信度精确率 ≥30%」封死刷分捷径,并刻意不设高线(当时真实值 67.4%)——避免「首次引入判据就设高线、之后为过线再调判据」的二次污染。

② 回归 #2 定性为「测量完成、验收失败」,不把模型带来的增量冒充自己改动的成效;回归 #3 修真正的根因(文字层缺该字段时定向 OCR 回退),下载次数字段从 null 升到 94.1%——但另一项相关能力仍只按「接线完成」收口,不宣称捕获增量。

③ 标注错误走 errata 勘误机制:原文件一字不改,勘误单独披露(含「怎么发现的」——如果是看了 OCR 输出才发现的,该字段从此失去「标注先于测量」的验收资格),不事后改分。

结果与证据

在 v0.2 回归 #3、原 sealed 30 张上:判死 4→0、关键三字段 30/30 = 100%、下载次数 16/17 = 94.1%。比数字更重要的是,「sealed 数据集 + 判据先于测量 + 反事实归因 + errata 披露」成了之后每个版本的标准动作;「保留红项与披露、不重跑同一版本赌绿」写进了工程文化。

证据边界:这些数字来自 n=30 的冻结发票集,证明该版本、该样本和该判据下的结果;不外推为所有票种、所有公司或所有模型的永久准确率。

要点提炼:AI 产品的评测体系是 PM 的核心交付物。指标会被刷分、增量会被错误归因、标注会出错——三种失真我都真实遇到,并各建立了一道机制。

案例 二核心 · 自动化边界

三次对「自动化」说不:查验方案的取舍链

20/20 真实终态写回统一 GUI 与长期用户采用待验证
我为什么做

查重出来的候选票需要官方查验记录佐证。「让 AI 自动上税局网站查验」是所有人的第一反应,也最能显得「智能」。

我遇到了什么挑战

AI 自动查验:查验次数是税局全局共享、不可回滚的计数器,AI 每查一次永久 +1——会污染财务现行的「查验次数 ≤2 属正常」这条生产规则。这不是加一层保护,是隐蔽地拆掉现有的那层。

电子税务局批量接口:500 条/次、无验证码,极其诱人;但要实名账号且账号不普及——「要求特定某人在场」的路径是单点依赖,不是备选。彻底否决、不留备选。

自动求解验证码:技术上完全可行。但我把人工流程拆开算了账:转录字段约 60 秒、敲验证码约 10 秒、读记结果约 20 秒——验证码只占约 11%,贵的是转录,而转录可以合法地交给 AI。而且打码服务一旦中断,查验次数落 0 会被读成「没人查过 = 正常」,产生最危险的静默假阴性。

我做了什么关键判断

我把目标从“消灭人工”改成“消灭不值得人做的工作”:机器承担可逆、耗时、可核验的字段转录与清单生成;人只留在验证码、批次确认这类不可逆或需承担责任的节点。人工闸门不是 Agent 的失败,而是产品有意设计的控制面。

我如何解决

拆成 A/B 两段,且 A 先 B 后是硬顺序。A 段 = 无人值守主链路(入库 → 指纹 → 比对 → 排出 20 张带可粘贴字段的复核清单),这是产品本体——「提完需求就走开、回来看结果」的体验在清单产出时就兑现了,查验本来就是人要过目的复核动作。B 段 = 复核半自动:AI 在域名锁死的受限浏览器里预填表单、人只处理验证码,配「每批显式人工确认 + 全程出网审计」,形状必须是「例外」而不是「降级」。

结果与证据

B 段真实走通——20/20 授权来源终态写回、19 项与官方结果完全一致;其余 1 项是业务结果不一致,未被藏进平均数。用户口述单批人工时间从约 30 分钟降到 3–4 分钟;全程零专属账号依赖,一个人能独立跑完闭环。

证据边界:这证明的是核心能力与真实查验闭环,不等于统一桌面 GUI 已接通,也不等于已有长期财务用户采用。系统计时曾把等待人工输入的空闲时间算进去,因此“3–4 分钟”保留为用户实测口述,不冒充系统 SLA。

要点提炼:AI PM 的核心技能之一,是识别「哪一段自动化创造价值、哪一段自动化摧毁信任」。三次否决每一次都有量化依据,而不是保守直觉。

案例 三核心 · 治理

红线不靠自觉:提示词管偏好,代码管不变量

真实付费运行暴露问题代码不变量与反事实测试已完成
我为什么做

「举证不全只能出存疑」写在 PRD 里、写在提示词里——但提示词的遵守率是概率性的,失败还是静默的。财务产品的安全承诺必须机器可执法。

我遇到了什么挑战

30 条测试全绿的模块不在真实路径上:判例落库模块自己的单元测试全部通过,但审计发现它不在工具列表里、真实链路零调用——「不能举证只能出存疑」这条红线在活路径上无人执法,报告在照抄模型自己给的结论。

首次真实付费运行暴露 Windows 写门禁失效:判定链路一路走到举证装配,但 3 次 Write 调用全部被拒——这是同一个根因的 3 次表现,不是 3 个缺陷。Windows 配置缺了 filesystem.allowWrite,白名单为空导致永不放行;模型于是绕道重试 29 次,缓存重读 126 万 token,直接撞上当日限流。

继续收口时又找到两个静默状态:判例落库因无候选而跳过时,CLI 不打印任何状态,用户无法区分“确实没有”与“这一步没跑”;制度导入只拿到国家层、企业条款为 0 时仍可报成功,看起来像制度库已经可用。加上 Windows 写门禁,这才是 D67 记录的三个静默失败。

我做了什么关键判断

只要一条承诺的失败会带来静默风险,它就不能只活在 prompt 或模块单测里;守卫必须接在真实生产路径上,并通过“故意破坏它会不会红”的反事实测试。提示词负责偏好,代码负责不变量。

我如何解决

把每条红线降到代码层,并给每个守卫配红队测试。判例落库改成宿主后置的确定性 CLI——这类无需模型参与的高风险数据库写入不暴露为 Agent 能力;无候选也必须打印 skipped;企业制度条款为 0 时 CLI 默认拒绝,只有显式 flag 才允许国家层单独测试;两平台写白名单逐字对齐。「存疑必须指名缺哪个字段」从提示词升级为契约必填字段;CI 继续执法人员字段、场景专用工具和真实票据泄漏。每个守卫都做反事实验证——「只会输出通过的打分器,比没有打分器更坏」

结果与证据

四个无冲突决议(D63/D64/D65/D67)落为代码不变量;“真实路径未接线”单独修复,D67 的三项静默失败——Windows 写门禁、判例跳过无输出、仅国家层制度仍报成功——逐项修复,并新增 8 条 TS + 2 条 Python 定向断言。

证据边界:代码不变量、真实路径接线与定向回归已经完成;它证明机制能拦截已知失败形态,不代表长期生产中不会出现新的旁路。

要点提炼:治理层设计——什么交给模型、什么必须锁进代码——是产品职责,不是工程细节。

案例 四核心 · 业务语义

判定口径的 48 小时连环纠错:跟真实制度死磕出四层判定空间

20/20 指结构与契约链路模型判定质量未达正式门槛
我为什么做

合规审查的核心是判定口径——AI 拿制度判发票,什么情况出 fail、什么情况出 pass?这不是技术问题,是产品对财务的承诺。

我遇到了什么挑战

读完公司真实制度后发现三个反直觉事实:① 费用标准几乎全部按职级分档,而职级不在发票上——照直做,输出几乎全是「存疑」,对财务毫无信息量。② 制度里没有任何无条件的单张上限(比如停车费上限其实是「每天」且限定职级与出差性质)——「单张不超上限」推不出合规,pass 一度被判定为不可达。③ 业务形态比制度更复杂:财务会把多个员工的发票混在一批上传(A 在广州出差、B 在杭州),跨票一致性判定的误报接近 100%;招待费也开餐饮发票,拿差旅标准判招待费是纯误报。

我做了什么关键判断

我没有先调模型,而是先定义“AI 在什么信息条件下有资格下结论”:确定违规、确定合规、缺字段存疑、结构性未审必须是四个互斥状态。费用归属由使用者声明,不让模型从发票猜;这不是减少智能,而是阻止系统把业务前提伪装成模型推理。

我如何解决

逐条构建四层可判空间——A 层:制度明文禁报品目,零上下文可判 fail;B 层:「取最宽松档做上限」——金额超过全公司最宽松的那一档,不需要知道职级也一定超标;C 层:缺字段只能出存疑,且必须指名缺哪个字段(落库统计「哪些字段最常缺」,这是决定下一版要不要接报销单的唯一数据依据);D 类:「本版未审」——结构性不可判的(如自驾油费)不出结论、不进判例库,但必须显式列出张数与金额合计,因为「财务会把没报出来读成没问题,这是本产品最贵的失败形态」。

次日我逐行审注入集,又抓到一个镜像缺陷:一张恰好等于全公司最严格档的住宿票——金额不超过最严格档,就不需要职级也一定合规,「取下界」可以判 pass。前一天的决议少了一整个方向:取上界写进去了,取下界压根没想到,而两者是同一个机制。另外,费用归属(差旅/招待)由使用者按批声明、不由 AI 从发票猜——未声明就整批不判,这是代码不变量。

结果与证据

判定口径冻结进 PRD §11.3.3:20 张注入集含 5 张阴性对照和「上限+1」「恰好等于」边界样本(没有阴性对照,「召回 100%」可以靠把所有票都判 fail 达成);出题与定答案分离——生成器造题、我逐行确认后封存,「代理既出题又定答案会让判据形同虚设」。首次端到端真跑:20 条判例全部带举证落库、自动打分器 20/20 对上——机制全部工作;判定质量的召回判据未达标,按既定流程换正式模型重测,不改判据凑数。

证据边界:20/20 指产物契约、举证、落库与自动打分结构全部贯通;它不等于模型业务判断 20/20。该轮召回门槛未过,所以正式质量状态仍是失败,而不是“基本通过”。

要点提炼:六个决议每一个都是用财务的真实业务常识打掉技术上自洽的方案——「员工报油费 100% 得到存疑,这个存疑对财务没意义」这种问题,只有从用户视角才问得出来。

案例 五补充 · 交付

去 WSL:用户画像驱动的架构减法

portable 与断网验收已完成原 4 台财务机尚未全量复装验证
我为什么做

对 4 台真实财务机做预检,只有 1 台能装 WSL2 形态(一台 Win7、一台内存 3.9GB、一台系统版本差一步),且全部 AD 域纳管、常态无管理员权限。产品主要给 Windows 财务用户,为开发者理想环境搭的 WSL 全套(2,669 行装机链 + 每机重启 + 1GB 镜像)成了交付的最大障碍。我的原始判断只有一句话:「现有兼容 WSL 的架构太重了,导致项目交付极其慢。」

我遇到了什么挑战

WSL 里的 Linux 沙箱是对 IT 承诺的安全边界本体,而 Windows 原生沙箱实测「连启动都过不去」(官方文档写 not supported、功能开关默认关闭)。砍 WSL 等于动安全叙事——这是一次架构级大手术。

我做了什么关键判断

安装率不是工程尾项,而是产品能力。与此同时,“先去 WSL”与“Windows 何时获得同等级 OS 沙箱”是两个决策,不能因为第二个暂时无解就把第一个绑死;正确做法是先解除交付门槛,再把安全能力差异如实分层披露。

我如何解决

变更管理三件套:先打回滚 tag(总 tag + 每阶段独立 tag,避免 all-or-nothing);执行计划写成文档并冻结,「等我确定后再开工」;计划文档本身经 4 个独立 AI 代理逐条对照代码核实,修正了 4 处「把假设写成事实」。问题解耦:把「能不能去 WSL」和「沙箱怎么办」拆成两个独立问题分别拍板——实测证明关掉沙箱后原生 Windows 一切正常,工程可以先行。事实前提核实到 100% 才拍板:官方文档当日二次抓取 + npm 包版本复查 + 本机强开实测,三层独立证据。安全叙事宁可分层也不掺水:Windows 选「弱隔离先行 + 官方 GA 后升级」,对 IT 如实改口「Windows 无 OS 级沙箱」;不为口径一致而降级 macOS/Linux 的全沙箱;对应验收判据显式悬空、不得伪装为通过。

结果与证据

一个通宵加一个上午打穿五个阶段(一天连发 8 个 PR),删除 3,200 行装机链;产出自包含 portable ZIP(657MB,捆绑 Node + Python + OCR 权重,解压即用);当次 6 项发布验收全部通过,含断网路径。放弃了什么也写得清清楚楚:评测桥保留在 POSIX 平台,代价是「回归基线数字不在用户平台上产生」——明示代价进了决议登记表。

证据边界:portable 构建、断网安装路径与 CI 已验证;原先那 4 台财务机尚未逐台复装,所以我只说“移除了 WSL 前置门槛”,不说“4/4 已安装成功”。Windows 无 OS 级沙箱仍是公开限制。

要点提炼:架构决策的输入是用户画像和交付现实,不是技术审美;大改版的安全感来自变更管理,不来自勇气。

案例 六补充 · 单位经济学

成本可信化:从虚高 111 倍到对账误差 ¥0.0000128

真实付费账单已对账单价仅代表当时模型与样本
我为什么做

个人预算项目,成本是刚性约束(月度上限 ¥50,写进配置并有代码级熔断);而且要给财务报价,成本数字必须可信。

我遇到了什么挑战

① 本地成本记账曾虚高 111 倍(记账 ¥380.88 vs 真实约 ¥3.43),且无法逐条判定——如果先改公式,就永远查不清原始差异了。② 计价挂错层级(价目挂在服务商而不是具体模型上),某档记高 3.27 倍——「记错等于熔断阈值被悄悄挪动」。③ 预算熔断曾经从未真正生效——生产路径上没有任何代码往用量字段写数,「一条已宣称建成的安全边界实际不存在」。

我做了什么关键判断

先冻结原始账,再修公式;先找服务商账单这个外部真源,再谈本地估算。商业判断必须同时回答“花多少钱”和“要多久”,因为低单价完全可能掩盖不可接受的吞吐。

我如何解决

外部判据裁决——「一次运行的账不可能大于全部运行的账」,以服务商控制台账单为准排除本地口径;修复后做真实付费对账闭环:两笔请求的 input / output / cache token 与服务商明细逐项核对,按官方价目手算 ¥0.0236328 vs 实扣 ¥0.02362,误差 ¥0.0000128。报价方法论也由此建立:实测 ¥0.21/张、13.4 分钟/张,外推 3,000 张 = ¥634 但需要 28 天——「¥634 谁都签得下来,28 天没人接受。报价必须同时给钱和时间,只报钱是把最大的风险藏起来。」

结果与证据

成本账本可信之后,才有资格谈规模化。之后每次真实运行都带成本实数(v1.0 首跑 ¥2.54 / 100 轮 / 50 分钟;30 张评测总成本约 ¥6)。

证据边界:¥0.21/张来自当时模型、版本、样本与价目;3,000 张的 ¥634 / 28 天是线性外推,不是生产账单。模型、缓存、并发和供应商价格变化后必须重测。

要点提炼:AI 产品的单位经济学要靠对账建立,不靠估算。

案例 七核心 · 产品 Harness

我把 Claude Code / Codex 的 Harness 翻译成了财务 Agent,而不是复制一个聊天框

真实模型通用工具任务已验证Harness 机制已进 main长期跨场景采用待验证

我的目标不是让模型“更自由”,而是让它在可观察、可恢复、可验证、会停下的环境里自主完成未知任务。模型负责计划与判断;宿主负责边界、副作用和事实裁决。

我为什么做

拾遗的产品承诺是「给一句目标和一组材料,用户可以离开,回来拿结果」。如果我为合并表格、拆分工作簿、发票入库、查重、合规审查各画一条 DAG、各造一组场景工具,模型就只是流程路由器;新票种、新制度、新表结构仍要等产品发版,无法兑现“处理未知缝隙任务”。

我需要一个已经证明“少量通用原语 + 丰富环境上下文”能够工作的参照系。Claude Code 给了工具、Skill、Hook、权限与会话恢复的工程样本;Codex 的开源 Harness 进一步把 thread、turn、event、approval 以及“宿主拥有界面、上下文、工具和操作边界”讲清楚。我要翻译的是这套执行结构,不是界面皮肤。

我遇到了什么挑战

代码领域有天然环境,财务领域没有。Claude Code 的垂直度来自仓库、Git、编译器和测试,不只来自一句“你是工程师”。业财领域的等价物必须由产品定义出来。

自主性与财务控制天然紧张。保留 Bash / Read / Write 才能让模型现写代码处理未知数据,但财务又要求预算、出网、写入、举证、审计和不可逆动作可控。

业务世界缺少编译器。模型可以自称“已经核对”,但没有外部 verify 信号,plan → act → verify → fix 里的 verify 是空的,Agent 只会“自主地错”。

治理很容易滑成工作流。验证码处必须暂停、人确认后恢复;文件发布必须过契约。它们是安全不变量还是固定业务步骤,边界如果说不清,“不做编排”就只是一句口号。

我做了什么关键判断

我把“更 agentic”定义成七个可验收问题,而不是形容词:

  1. 能否自主拆解目标?
  2. 能否组合通用原语完成未预编排任务?
  3. 换票种时是否无需新增业务工具?
  4. 能否调用外部 verify 发现并修复错误?
  5. 中断后能否恢复,而不是整批重来?
  6. 到不可逆动作时是否停下交人确认?
  7. 越界时是否被机制阻断,而不是靠模型自觉?

七项的当前成熟度:真实模型已经证明“自主拆解 + 通用原语组合”可完成两个未预编排 Excel 任务,B1 也真实证明了人工暂停与同会话继续;Replay / 代码与定向回归证明换票种无需新增流程工具、恢复与越界阻断机制存在。仍缺同等级真实轨迹的是“Agent 主动调用 verify 后自行修复”以及更大范围的新票种泛化,因此不把七项都标成已通过。

固定安全不变量是治理;固定业务步骤才是编排。允许固定域名、预算、写入范围、审批点、恢复点与证据契约;不允许按票种复制工作流、可配置 DAG 或要求模型逐节点执行的业务状态机。

我如何解决

我没有重写 Agent loop,而是在成熟内核外围包一层业财 Harness。全产品只允许一个 SDK query() 入口,CLI、Chat、后续能力会话都必须经过同一装配;保留 Claude Code preset 与通用内置工具,把差异化放进环境、知识、治理、验证和恢复。

Claude Code / Codex 的结构我提炼的本质Gleaner 的等价物
代码仓库 / project context垂直度来自可操作的环境本地业务工作区、制度库、影子库、判例库、数据配方
Read / Write / Bash少量通用原语支撑未知任务通用文件与 Shell 原语 + OCR、只读账本、举证、验证等 17 个非流程工具
CLAUDE.md / Skills知识与工具解耦、按需加载合规 SOP、文档栅格化、数据配方、报告语气 4 个 Skill
Hooks / sandbox / approval自主性外面必须有硬边界单一 query 入口、7 个治理 Hook、分平台沙箱、宿主后置确定性写入
compiler / tests外部正确性信号驱动自修复sealed 评测、4 个 verify 工具、JSON Schema、Replay 与契约断言
resume / history / progress长任务必须可观察、可恢复真实 SDK session id、历史任务、实时事件流、人工暂停后同会话恢复
worktree / ownership并行代理需要隔离与交接同一基线 SHA、独立 worktree、文件所有权、强制完成报告(见案例九)

安全策略也按这个判断分层:模型保留计划与工具选择自由;Hook 管预算、出网、浏览器、payload 和写路径;确定性入库由宿主执行;高风险 B1 能力用受限会话,只给浏览器工具,在验证码处暂停,由人输入后沿同一会话继续。

结果与证据

通用原语完成未预编排任务拿到了真实模型证据:五店共 36,000 行、金额 ¥14,736,038.18 在 macOS 与 WSL2 两次运行一字不差;模型只组合 Bash × 5 + Write × 1,7 轮、198 秒;36,006 行源数据只形成 8,062 字节上下文出入量。另一个拆分任务自行产出 9 个文件,行数 12,000 / 11,000 / 13,000 准确对应,6 轮。

治理与恢复也有真实链路证据:B1 在没有工作流引擎的前提下完成 20/20 来源终态写回,验证码从未进入模型;主线 #61/#62 增加真实 session resume、历史任务、实时过程与“启动期失败也可见”。Replay 另行断言换票种时工具和 server 不变,但我只把它当 Harness 机制证据,不拿它冒充模型会自主选对步骤。

证据边界:当前没有“主 Agent 自动派发自定义多 Agent”的产品能力;Windows 仍是弱隔离,Bash 默认以分类与审计为主;Payload Guard 默认配置仍可处于 dry-run。真实模型任务证明了通用工具组合,不等于所有新财务任务都已泛化,也不等于已有长期用户采用。

要点提炼:Harness 的价值不是给模型更多工具,而是给它环境、边界、反馈和恢复能力。智能留在模型里,不变量锁进代码里,验证信号造出来。

案例 八核心 · Harness 演进

Agent 说“完成”不等于产物已交付:我用类型化网关重做了最后一公里

真实付费 smoke 与 sealed A/B 已完成独立分支已实现、测试并推送尚未并入当前 main

旧方案要求模型先读一份协议文件、再凭记忆拼合法 JSON;失败后我没有继续加提示词,而是重画 Harness 的合法动作空间:语义留给模型,协议、宿主字段、副作用终态和幂等交给代码。

我为什么做

在把国产 Qwen 接进发票链路时,我发现“模型能理解发票”与“系统拿到一个可消费的正式产物”是两件事。旧路径让模型自由写 JSON,再由下游验证;它可以在自然语言里说成功,也可以让 SDK 返回 success,但只要文件形状非法、宿主字段被猜错或最终消息丢失,业务上就是没有交付。

我遇到了什么挑战

协议学习成本被重复收取。模型明明读过 invoice 业务契约,却跳过 typed submission schema;MCP 的 tools/list 又把 evidence 暴露成无结构字典。一次真实 smoke 的两次提交分别因 evidence 键集合非法、擅自提交宿主管理的 source SHA 被拒;第三次意图被提交次数上限挡住,9 轮、288 秒、¥1.147148 后仍是 0 artifact / 0 receipt。

副作用成功与会话成功不是同一件事。后续 smoke 首次提交已经发布合法 artifact + receipt,但易失的 PostToolUse tracker 漏掉回执,CLI 仍报失败;反过来,SDK result success 也不能证明磁盘上有可信产物。

很容易误修成工作流。最直接的方案是写一个“读取 → OCR → 组装 → 提交”的发票专用状态机,或为每个票种新增工具;这会修好一张票,却破坏“通用 Agent + 通用产物边界”的架构。

最终还要做真实产品取舍。“Qwen 更便宜”不是充分理由;必须同时比较完成稳定性、工具参数合法性、上下文边界、sealed 质量和权威成本。

我做了什么关键判断

如果一个动作的合法语法可以由代码表达,就不该让模型靠读文档猜。好的 Harness 不是替模型决定业务步骤,而是让非法动作在生成参数时就不可表达。模型拥有“读什么、是否 OCR、怎样判断、如何修业务字段”的自由;宿主拥有契约版本、来源身份、系统字段、算术、指纹、幂等与正式发布。

同样,副作用完成必须由持久回执证明,不能由模型总结或易失事件证明。这像数据库提交,不像聊天回答。

我如何解决

这条演进分五次收口:

  1. Typed Artifact Gateway:新增唯一通用边界 submit_typed_artifact(contract, version, draft, evidence)。模型只交语义 draft;宿主补系统字段并执行真实 schema、跨字段、算术、来源 SHA、指纹、幂等与原子发布。Write / Edit / Bash / 复制移动 / 软链接不能旁路正式产物目录。
  2. 任务级 Execution Profile:不另造“轻量发票 Agent”,仍复用同一 Harness;只在这一轮收窄输入、工具、轮次、提交次数与成本,并把“恰好一个可信 receipt”设为成功后置条件。
  3. 契约编译进工具:把 canonical JSON Schema 投影为本轮 submit_typed_artifact 的 input schema,让 evidence 的合法键、嵌套类型和宿主字段在工具边界可见;非法协议不再靠提示词提醒。
  4. durable receipt 恢复:PostToolUse 只提供候选;收口时从正式目录恢复当前 run 的 receipt,并复核 schema hash、artifact digest、来源绑定与唯一性。会话最后一条消息丢了,已提交副作用仍能被找回;半成品永远不算成功。
  5. 按需语义与权威计量:只按 1–8 个字段披露 canonical contract 语义,避免把整个契约目录塞进上下文;逐轮 usage 用于诊断,最终 result total 才用于计费,避免把累计快照重复相加。
结果与证据

接口重构后的方向性调试证据:旧路径 n=4 累计 173 轮、cache read 约 870.4 万、目录价约 ¥24.383,折合约 43.25 轮 / ¥6.096 每票;契约编译后的单张 smoke(n=1)在 8 轮内首次提交即发布 1 artifact + 1 receipt,目录价 ¥0.950093。两者不是同样本、同模型的受控 A/B,不能据此宣称确定降幅;它的价值是定位“协议学习”成本已被结构性移出模型轨迹。

然后按冻结判据做模型选择:qwen3.7-plus 的 T5 20 次稳定性测试完成 18/20,非法工具参数 0、上下文溢出 0,达到事前设定的 ≥18 门槛。两次失败也计入分母:一次跳过契约语义后在 Money 形状上耗尽两次提交,一次反复 Skill / OCR 路由直到 max-turns、尚未提交。随后在同一冻结提交、同一 sealed 30 张上同期 A/B:DeepSeek 关键三字段 29/30 = 96.7%,Qwen 28/30 = 93.3%;Qwen 低 3.3 个百分点,但目录价 ¥2.751136,仅约为 DeepSeek ¥20.180373 的 13.6%。我在知悉质量差异后明确选择 qwen3.7-plus,而不是把成本优势写成“质量等价”。

证据边界:旧 n=4 与新 n=1 只作方向性诊断,不是同口径性能实验。T5 测的是完成稳定性、工具参数和上下文,不评价字段语义;语义质量看同期 T6。两臂都只过 phase-1 的 80% 门,不等于 ≥100 张 phase-2 生产准确率。该能力已在 codex/typed-artifact-gateway 分支实现、真跑、sealed A/B 并推送,但审计时尚未并入当前 main,也没有长期财务用户生产数据。

要点提炼:当模型反复犯协议错误,我先问“合法动作空间是否设计错了”,而不是继续要求它更认真。结构化约束减少的是无价值自由,不是业务智能。

案例 九核心 · 研发 Harness

我没有让 Claude Code 与 Codex 自由发挥:我为两个 AI 开发者设计了研发 Harness

真实双代理协作会话可回溯基线、所有权、报告与暂停机制已文档化

我既在做 Agent 产品,也在管理 Agent 生产产品。产品 Harness 管模型怎样安全地做财务任务;研发 Harness 管 AI 开发者怎样在同一个高耦合仓库里并行,而不把速度换成不可审计的返工。

我为什么做

项目由我一人负责产品与技术,但范围同时覆盖 Agent Core、MCP、评测、浏览器、桌面、Windows 分发与文档。Claude Code 与 Codex 能显著放大执行力;如果只对两个会话说“你做 A、你做 B”,它们会修改共享契约、基于不同基线推理、重复造轮子,最后由我承担合并和事实核对成本。

我遇到了什么挑战

并行的前提不是任务名字不同,而是依赖真的可拆。Core、CLI、Python 契约互相钉版本,一边改 schema,另一边很可能在旧形状上继续开发。

AI 很容易把“代码写了”写成“产品完成”。单元测试全绿、真实路径未接线的事故已经发生过;交接报告如果只列文件和测试,会继续放大这种错觉。

有些问题不能由执行代理顺手拍板。PRD、决议登记、真实用户写入、验证码、共享契约冲突、基线失败都可能改变产品承诺或产生不可逆后果。

上下文会丢、分支会漂、编号会撞。长任务跨会话、跨工具后,如果没有基线与真源纪律,后来的代理无法区分事实、推断和过期状态。

我做了什么关键判断

我把 AI 代理当成“有执行力、会推理、但没有最终产品授权的团队成员”。模型可以自主读代码、设计方案、实现和验证;我保留产品语义、证据口径、共享接口和不可逆动作的拍板权。多代理不是越多越快,只有能给出独立所有权和验收信号的切片才并行。

我如何解决

我把协作机制写成可执行约束,而不是口头提醒:

  • 同一冻结基线:开工报告必须写 role、worktree、branch、baseline SHA、目标、允许修改文件、冲突点与前置条件;所有代理从同一提交分叉。
  • 独立 worktree + 文件所有权:Codex 负责 B0/B1 与付费对账等切片,Claude Code 负责桌面分发等切片;共享契约不允许两边默默各改一版,跨界先停。
  • 契约先于实现:跨 TS / Python / GUI 的接口先冻结 schema 与退出语义,再让不同代理各自消费;集成人按固定节奏合并,不让某个代理“顺便统一全仓”。
  • 完成报告不只报代码:强制回答“产品推进到哪、跑了什么真实路径、哪些失败仍在、引入了什么耦合、改了什么接口、下一个需要谁拍板”,并给 commit 与证据位置。
  • 十类停止条件:改 PRD / 决议、引入场景专用工具、税局登录或验证码、页面与记录不一致、Electron 放业务逻辑、目标机环境异常、带真实用户写入、共享契约冲突、基线失败、可能影响真实数据时,一律暂停交我。
  • 独立审计代理:大改前先让多个 AI 只读核对计划与代码。去 WSL 计划因此在开工前修正了 4 处“把假设写成事实”;先打总回滚 tag 与阶段 tag,再并行执行。
结果与证据

协作 Harness 先以 PR #5 固化;随后 8/10–8/15 交错合并 PR #6–#37,一条完成 B1 受限浏览器与 20/20 真实写回,一条完成 v0.4 桌面与分发。项目 main 在 29 天形成 181 commits / 60+ PR;随后 Typed Gateway 继续在独立 Codex worktree 演进,历史、分支、证据和尚未并入 main 的状态仍能被清楚区分。

它也暴露而不是掩盖冲突:并行历史里出现过决议编号被不同分支消费的碰撞,架构文档明确登记为待发起人裁定,而不是让任一代理自动重编号并改写历史。这正是研发 Harness 的价值——让冲突显性、可停、可裁决。

证据边界:29 天 / 181 commits 是交付背景,不是“因为双代理所以提升 X%”的对照实验;我没有单代理基线,不能宣称量化提效。这里的“多代理”是我人工编排 Claude Code 与 Codex 的研发协作,不是 Gleaner 产品内已实现自动派发子 Agent。

要点提炼:管理 AI 开发者和设计 AI 产品是同一个问题:给目标与自主空间,同时把基线、所有权、验收信号、交接格式和停止条件做成 Harness。

捌 · 速查

量化速查表

维度数字与口径
工程规模29 天 · 181 commits · 60+ PR · 净 +90,453 行 · 测试占比约 40%
main 架构单 Agent + 通用工具,主上下文工具数 ≤25;5 个 MCP server 17 个非流程工具 + 4 个 Skill + 7 个治理 Hook;9 份契约 + 11 张表
v0.2 同集回归关键三字段 30/30 = 100% · 判死 4→0 · 下载次数 null→94.1%;不是 ≥100 张 phase-2 泛化验收
Provider sealed T6同一冻结点、同一 30 张:DeepSeek 29/30 = 96.7% · Qwen 28/30 = 93.3%;Qwen 低 3.3pp,目录成本约为 13.6%
制度库企业 81 条 + 国家 6 条 = 87 条,0 条未映射;国家层只入库已核实条款
查验(B1)20/20 真实写回 · 19 match / 1 mismatch / 0 not_found;3–4 分钟为用户实测口述,系统 SLA 尚未证明
数据安全36,006 行源数据 → 进模型上下文仅 8,062 字节;出网审计只记指纹不记内容
Typed Gateway方向性调试证据:旧路径 n=4,平均 43.25 轮 / ¥6.096 每票;契约编译后单张 smoke n=1,8 轮 · 1 submit · ¥0.950093;T5 18/20、非法工具参数 0、上下文溢出 0(独立分支;非受控 A/B)
成本旧 OCR 链路 7 张样本约 ¥0.21/张 · v1.0 首跑 ¥2.54 · 付费对账误差 ¥0.0000128;均是当时模型与价目快照
交付portable ZIP 657MB,构建与断网路径已验;财务机预检 4 台仅 1 台可装 WSL,改版移除了 WSL 前置门槛,但原 4 台尚未逐台复装
玖 · 方法论

我的 AI 产品方法论:从真实失败里长出来的判断

这些不是开工前写下的漂亮原则,而是一次次 false-green、真实付费失败、模型协议错误、分发受阻和评测争议之后,才沉淀成的工作方式。

01 · 评测

  • 判据先于测量,答案先于预测封存。
  • 没有反刷分判据的指标,只是一个可优化的数字。
  • 没有反事实归因,就不能把上涨写成产品成效。
  • 评测既要防模型偷看答案,也要防团队事后改答案。

02 · Harness

  • Agentic = 模型在合法边界内决定下一步,并用外部信号证明做对。
  • Harness 给的不是更多工具,而是环境、边界、反馈和恢复。
  • 硬动作语法 eager,领域经验 progressive。
  • 类型系统让非法动作不可表达,事务回执证明副作用真的完成。

03 · 治理

  • 提示词管偏好,代码管不变量。
  • 固定安全边界是治理;固定业务步骤是编排。
  • 模型产候选,宿主验证、确认并确定性写入。
  • 不可逆动作由 Agent 提议,宿主或人审批后确定性执行;无需模型参与的高风险写入,才不暴露为 Agent 能力。

04 · 落地

  • 自动化不是消灭人,而是把人的注意力留给只有人能承担的判断。
  • 可安装性是产品能力;到不了用户手上的价值等于零。
  • 报价必须同时给钱和时间,且外推必须与实测分开展示。
  • 结果要标成熟度:真实已验证、工程已完成、正式待验收。

方法论表达