context-infra 检查与复盘infra.guiming.net · 全内容自包含呈现 · 生成于 2026-07-21 16:28 UTC

工具调用 receipt 纪律:何时记、怎么填、调用率算不算达标(术·语义层,draft)

Z3 全文↑ Z2 条目

术-语义层 · 术层 skill 全文

← 返回术层 skill 索引 · 返回方法论区

本页是 <code>rules/skills/drafts/workflow_tool_receipt_discipline.md</code> 的逐字投影(仅隐私清洗,零改写)。

时点提示:本页是仓内文件 rules/skills/drafts/workflow_tool_receipt_discipline.md 的逐字投影(仅做隐私清洗:仓库根绝对路径→相对路径、家目录→~/;除此零改写)。若源文件后续有修订,以仓内真源为准。

工具调用 receipt 纪律:何时记、怎么填、调用率算不算达标(术·语义层,draft)

元数据

目标(一句话)

tool_receipts 能写一条 receipt,check.py 能数出某工具被调用了几次。但一条 receipt 可以是空壳:task_id 空、artifact_paths 空、或者开发期自测刷出来的。它照样让计数加一,却不代表工具真被用于一件真实工作。光有工具没有协议,结果就是 receipt 写了、却记不算数,「调用率」这个本该回答「工具被稳定真实用起来没」的信号被仪式性 receipt 刷虚。这个协议补的就是这一层:哪些工具该记 receipt、四个字段怎么填才算数、多少调用率算达标,以及用什么机械判据确认一条 receipt 记到位了。

边界(不做什么)

何时记 receipt

不是每次工具调用都值得记。触发条件(任一成立就该记):

反过来,ls / cat 这种琐碎读取、一条命令就能复验的调用不必记,记了是台账噪声。判据是一句话:这次调用是不是某个「用了没 / 产出在哪」问题的答案。

记的时机固定在进程结束:成功记 exit 0、失败记真实非零退出码,两种都记,一条失败 receipt 同样是信息。接入用 best-effort,try/except 包住 record(),记 receipt 失败绝不改工具主功能的退出码(工具的活不能因为记台账崩掉)。

怎么填(四个字段,填实才算数)

record(tool, args, exit_code, meta) 落进台账的核心字段是 task_id / caller / artifact_paths / exit_code。每一格填实的样子:

调用率达标判据(E-01「稳定被调用」的信号)

「调用率达标」不是「占所有工具调用的百分之多少」。它是一句更具体的话:这个工具在该用到它的真实任务里,留下了真实 receipt。

两个失败模式正对着它:一是工具建好、注册了,但台账里 receipt 为零,这是孤儿(built-but-not-used),正是 landing_gate 盯的消费链病在 receipt 层的样子;二是 receipt 不为零,但全是开发期自测刷的(计数有、真实任务使用为零)。达标的样子是台账里有来自真实任务的 receipt(非空 task_id 配真实 artifact),不止是自测 receipt。

这一判据故意不写成一个魔法数字。绝对调用次数没有跨工具可比的含义,承重的是「有没有真实任务覆盖」,由下面 D4 的第二方判。

完成判据(可机械查,是这个协议的硬核)

判一个工具的 receipt 纪律落实了没,过下面四条,缺一不算落实。前三条确定性可查(检测器的壳承载),第四条要第二方判(检测器的 regulator 承载):

tool_receiptscheck_discipline 检测器:D1-D3 出确定性 verdict(零调用 / 空字段 / 缺失 artifact → FLAG,给 event_id),D4 由 regulator 喂台账判仪式性。完成判断不让记 receipt 的 agent 自己勾,过检测器或第二方。

方法论建议(可按情况调整)

已知陷阱(来自真实案例)

输出规格

跨域根与联系


← 返回术层 skill 索引 · 返回方法论区