AI 工程评测 / 开发者工具
Coding Agent 交付评测工具链
用固定任务、可见测试、评分器保留断言、路径边界、证据重放和历史仓库 Runner 校准 Coding Agent 补丁是否达到可合并交付标准。
Reuse contract
复用合同
- 最近核验
- 2026/07/18
- 固定版本
83952b3bae58
输入
- 任务规格、允许路径、受保护路径、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
关联文章
这些文章分别提供问题背景、设计依据、实验验证或运行证据。
- 发布 2025/05/19
本文把 Coding Agent 的交付物定义为可审查 diff、日志和测试证据,而不是一段代码,为评分合同提供产品背景。
- 发布 2025/05/25
本文强调仓库上下文、权限、独立测试和人工合并边界,对应本项目的路径控制与 scorer 隔离设计。
- 发布 2026/07/14
本文公开 3x4 评分器校准,并记录历史回放 Runner 唯一一次权威调用在模型启动前因 runtime identity 不匹配而关闭。