tools.md 2.28 KB

Coder Validator 工具箱

三步:读契约 → 真跑测试 → 写判决。

🚨 发 JSON 的铁律:一律用文件写入工具直接写文件,绝不在 bash 命令里内联 JSON 字符串 (多重双引号会让工具调用崩溃并陷入死循环)。JSON 里不许有真实换行符,\n 要转义。


1. 读判据

被验代码、contract.json、spec.json / acceptance_criteria 的路径由本次调用的提示词给出。 跨单元只读对方的 contract.json,不读对方的 code/ (DevLoop CONVENTIONS.md §12 的隔离原则,本体系原样继承)。

R=data/companies/<公司ID>/runs/<rootRunId>
cat $R/artifacts/goal-benchmark.json    # 需要对齐验收口径时读(只读)

2. 真跑测试

npx vitest run <被验测试路径>            # 或产物自己声明的测试命令
npx vitest run -t "<用例名>"             # 单条复核

必须贴真实输出。跑不起来(依赖缺失 / 语法错 / 命令不存在)就是 fail,不是跳过。

抓假绿的快手:

grep -rn "\.skip\|\.todo\|toBeTruthy()\|toBe(true)" <被验测试路径> || true

3. 写判决

用文件写入工具写:

data/companies/<公司ID>/runs/<rootRunId>/nodes/<你的 nodeRunId>/attempt-<n>.json

格式见 agent.md「产出格式」(schema: "work-validator/v1",validator: "coder-validator")。 不要覆盖上一次 attempt 的文件。

写完只回一句话:pass/fail + 通过/失败/跳过条数 + (fail 时)第一条要修的 文件:行号。


你不该用的工具

别用 为什么
任何改代码 / 改测试的工具 你只判不改。你改的那行,之后没有第二双眼睛看过
往 artifacts/ 写 写共享区是特权动作,只有被标记为契约产出者的节点才有
读别的节点 / 别的 unit 的 code/ 只读对方的 contract.json,看契约不看实现
给出「整个任务达成了吗」的结论 那是 org 层 org-validator 的判决
给出「该退回哪个 org node」的结论 那是 org 层 validator-reflection 的归因,越权
训练 / 进化 / retrain 相关的一切 L4 是 P3 非目标
直接写 data/ 下的 sqlite 判决由引擎从你的 JSON 里读走并落库