AI 工程评测 / 开发者工具

Coding Agent 交付评测工具链

用固定任务、可见测试、评分器保留断言、路径边界、证据重放和历史仓库 Runner 校准 Coding Agent 补丁是否达到可合并交付标准。

2026-07 - 持续迭代当前代码
  • Node.js
  • Node Test Runner
  • Git
  • TAP
  • Codex CLI
  • Ollama
  • Shell

Reuse contract

复用合同

已独立复现JSON 清单
最近核验
2026/07/18
固定版本
83952b3bae58
代码入口
project-kits/coding-agent-delivery-toolkit/README.md公开副本固定源码

输入

  • 任务规格、允许路径、受保护路径、fixture tree SHA-256 和公开测试
  • 候选 patch、候选报告的测试证据与候选不可见的 scorer 断言
  • 历史 base/reference commit、run contract、工具链 identity 和隔离 profile

输出

  • accepted 决定及 visible、hidden、scope、apply、evidence 各门的独立结果
  • 规范化 patch、TAP、失败样本、输入 identity、scorer hash 与清理证明
  • 历史 Runner 的 authority 分类、停止阶段、模型尝试次数和最终结果

可执行命令

delivery-test测试
npm run lab:coding-agent:test
平台
macOS、Linux 或 Windows;离线 Node.js
权威输出
TAP stdout;3 个任务 x 4 组候选的 visible、hidden、scope、apply 与 evidence 门
副作用
会修改运行环境
前置条件
  • Node.js >=22.12.0
  • Git 与仓库内固定任务/候选 fixture
delivery-capture采集
npm run lab:coding-agent:capture -- --out /tmp/younis-ai-lab-coding-agent.json
平台
macOS 或 Linux;离线 Node.js
权威输出
/tmp/younis-ai-lab-coding-agent.json
副作用
会修改运行环境
前置条件
  • Node.js >=22.12.0
  • Git 与 POSIX /tmp 可写
historical-prepare准备
npm run lab:coding-agent:historical:prepare -- --out /tmp/younis-ai-cache-policy-fixture
平台
macOS 或 Linux;离线准备固定历史 Git fixture
权威输出
/tmp/younis-ai-cache-policy-fixture 中的无 remote 单提交仓库与 fixture manifest
副作用
会修改运行环境
前置条件
  • Node.js >=22.12.0、Git 与 bsdtar
  • 输出目录尚不存在
historical-test测试
npm run lab:coding-agent:historical:test
平台
macOS 或 Linux;部分权限 profile 测试仅 macOS
权威输出
TAP stdout;scorer、fixture、权限 profile、信号和清理合同
副作用
会修改运行环境
前置条件
  • Node.js >=22.12.0、Git、bsdtar 与 POSIX shell
  • 仓库根目录已安装锁定依赖
historical-capture采集
npm run lab:coding-agent:historical:capture -- --out /tmp/younis-ai-cache-policy-calibration.json
平台
macOS 或 Linux;离线 scorer 校准
权威输出
/tmp/younis-ai-cache-policy-calibration.json
副作用
会修改运行环境
前置条件
  • Node.js >=22.12.0、Git 与 bsdtar
  • POSIX /tmp 可写
historical-profile-matrix运行
npm run lab:coding-agent:historical:matrix -- --out /Users/Shared/younis-ai-lab/runs/profile-matrix-83952b3
平台
macOS;不启动模型的权限矩阵
权威输出
/Users/Shared/younis-ai-lab/runs/profile-matrix-83952b3 中的 profile-matrix.json、stdout/stderr 与 SHA-256 校验文件
副作用
会修改运行环境
前置条件
  • macOS Seatbelt 权限 profile 与固定系统工具
  • /Users/Shared/younis-ai-lab/runs/profile-matrix-83952b3 尚不存在
historical-non-model-smoke运行
npm run lab:coding-agent:historical:smoke -- --out /Users/Shared/younis-ai-lab/runs/non-model-smoke-83952b3
平台
macOS;注入 reference stub,不启动模型
权威输出
/Users/Shared/younis-ai-lab/runs/non-model-smoke-83952b3 中的 non-model-smoke.json、result.json、运行日志与哈希
副作用
会修改运行环境
前置条件
  • macOS Seatbelt、Git、bsdtar 与离线 Node 依赖
  • /Users/Shared/younis-ai-lab/runs/non-model-smoke-83952b3 尚不存在
historical-run-help准备
npm run lab:coding-agent:historical:run -- --help
平台
macOS;只打印当前 Runner 参数合同,不启动模型
权威输出
stdout 中的 Runner usage、输出目录与前置条件
副作用
不修改状态
前置条件
  • macOS 与固定 Codex/Ollama/Node/Git/bsdtar identity
  • 权威零重试调用不得复用旧输出目录或重复历史已消费尝试

可直接复用

  • 先用正负夹具校准 Coding Agent 评分器,再接入真实模型或人工基线
  • 为补丁流水线增加 allowed-path、独立测试和候选证据重放门禁
  • 在固定历史 commit 上比较多个 Agent,同时保留可复查输入与运行身份

明确边界

  • 3x4 结果来自合成单文件任务和人工构造候选,不是任何模型成功率。
  • 历史 JSON 校准的是 scorer;唯一权威 Runner 调用在模型启动前 fail closed,因此没有模型结果。
  • 公开后的保留测试不再是未来模型实验的真正 holdout,生产比较必须冻结新任务和私有 scorer。

固定结果工件

  • 3x4 交付评分器校准结果delivery-calibration-result
    仓库路径
    labs/coding-agent-delivery-eval/results/2026-07-14-results.json
    SHA-256
    23a04de541ed94c264ff758e0d41c4031161ade4da5dd0522699598ef010f7e1
    生成/验证命令
    delivery-capture
  • 历史回放 scorer 校准结果historical-calibration-result
    仓库路径
    labs/coding-agent-historical-replay/results/2026-07-14-results.json
    SHA-256
    cc9db03c17ad0d5be23711a9460636c8a0edcde56d781dc8a08a1a1ffc0d61d4
    生成/验证命令
    historical-capture

验收对象

Coding Agent 是否“写出了代码”不是可合并标准。真正需要验收的是:补丁是否非空、是否只修改允许路径、是否能应用到固定 base、公开测试和独立 scorer 是否通过、候选报告的证据是否与权威重放一致。

本项目将评分器校准与模型评测分开。先用可解释的正负候选证明每道门真的生效,再把同一合同用于真实历史任务;没有通过第一步的评分器不能给模型排名。

交付评分器校准

labs/coding-agent-delivery-eval/ 固定三个微任务:slug normalizer、retry delay 与 tenant cache key。每个 fixture 包含自然语言规格、允许路径、公开测试和评分器保留测试,基础树由完整 SHA-256 固定。

四组候选分别为最小正确实现、只覆盖公开样例的 visible-only、功能正确但修改受保护文件的 scope-creep,以及实现错误并伪报测试成功的 fabricated-evidence。12 次组合评测中,最小正确补丁 3/3 accepted;visible-only 虽然公开测试 3/3,却隐藏测试 0/3;scope-creep 的功能测试通过但 0/3 accepted;伪造证据由独立重放识别。

冻结结果还保留九个失败样本,不把隐藏断言失败、路径越界和证据不一致压成一个总分。后续模型实验因此能区分规格泛化、权限边界和证据链问题。

历史仓库回放 Runner

labs/coding-agent-historical-replay/ 固定一个 cache policy 历史任务的 base commit、reference commit、唯一允许路径 server/app.ts 和独立 scorer。fixture 准备脚本生成无 remote 的确定性工作树;scorer 在候选工作区之外注入并校验固定 TAP。

Runner 进一步校验 Node、npm、Git、bsdtar、Codex、Ollama、模型文件和输入哈希,执行路径逃逸、外部读取、网络与 mutation sentinel 等 containment probes。候选执行与最终验证使用不同权限 profile,原始 patch、JSONL、stdout/stderr 和清理状态进入运行目录。

仓库内 2026-07-14-results.json 是四组 profile 的 scorer 校准,不是模型表现。唯一一次权威 direct invocation 因父进程命令 identity 与合同不一致,在 fixture、Agent 和 scorer 之前以 runtime-identity-mismatch 停止;模型尝试次数为 0。这个 fail-closed 结果记录在 lab README 和 results README 中,不能改写为“模型运行失败”或“模型已完成评测”。

运行顺序

先运行不调用模型的评分器与 Runner 回归:

npm run lab:coding-agent:test
npm run lab:coding-agent:historical:test
npm run lab:coding-agent:historical:smoke

只有当本机工具链、Ollama 服务、qwen3:8b digest、Codex binary 和 run contract 全部匹配时,才执行 lab:coding-agent:historical:run。Runner 不会安装、启动、拉取或自动重试模型。输出必须写入仓库外运行目录,避免把候选轨迹和冻结校准工件混在一起。

扩展到真实评测

新增任务时,先冻结任务说明、base commit、允许路径、公开测试和 scorer hash;模型只能看到允许输入。补丁生成后再运行私有 scorer,并保存模型 identity、工具权限、原始轨迹、patch、独立 CI、人工审查分钟和失败类型。

同一任务比较多个 Agent 时必须保持输入、命令预算、超时、网络、模型参数和验收版本一致。更新 scorer 或运行环境需要新协议版本,不能用新门禁重解释旧结果。

当前边界

现有正负样本是公开、合成、单文件任务,只证明评分器能识别预设失败类别。历史 Runner 虽然有更强隔离和身份检查,但尚未产出一次通过 preflight 后的真实模型 patch。项目当前证据等级为 reproduced,不支持模型采购、招聘或生产自动合并结论。

Research links

关联文章

这些文章分别提供问题背景、设计依据、实验验证或运行证据。

  1. 本文把 Coding Agent 的交付物定义为可审查 diff、日志和测试证据,而不是一段代码,为评分合同提供产品背景。

  2. 本文强调仓库上下文、权限、独立测试和人工合并边界,对应本项目的路径控制与 scorer 隔离设计。

  3. 本文公开 3x4 评分器校准,并记录历史回放 Runner 唯一一次权威调用在模型启动前因 runtime identity 不匹配而关闭。