公开记录
工具输出准入:真实 profile 报告
以下为仓库 Markdown 原文字句,原文中的链接请到仓库页面使用。
打开仓库原文 ↗## 直接答案 工具输出准入在真实 DeepSeek Harness profile 中减少了普通构建进度,同时保留了不确定的测试输出。最终验收使用真实主模型通过原生 `bash` 运行一个可执行的小型项目,并由真实 Jev 判断。构建结果实际交给 Agent 的文本从 8510 缩至 2072 字符,净省 6438 字符(75.7%),最终产物哈希仍在。另一轮真实的 180 项测试也进入了 Jev 判断,但省略概率只有 0.66–0.71,低于默认 0.8,因此 20543 字符原文保留。失败测试保留了失败证据;完整日志请求由宿主原生 spill 保存,并在同一 Session 中实际读回。 这些结论来自层级不同的连续实验。早期 Hook 轮次使用真实 Jev,但主模型是脚本、shell 是确定性夹具;直接 API 实验仅发送判断请求,没有主模型或工具执行。最后的 profile 验收使用真实主模型和真实进程。公开的[实现](../../packages/jev/src/output-admission.ts)与[确定性集成测试](../../packages/jev/tests/output-admission-integration.test.ts)覆盖 Hook 和 Session 路径。真实会话原文、本机 profile、凭据和依赖本机的实验脚本没有纳入仓库。 ## 实验历程 | 阶段 | 调用链和固定设置 | 实际观察 | | --- | --- | --- | | 初版准入 | JevService → DSH LlmAdapter → Hook → Agent/Session;真实 Jev、脚本主模型和 shell 夹具;省略门槛 0.9、等待 4 秒 | A–D 四案各请求一次,均在 4 秒内返回可用答案,但没有候选达到 0.9。每案最终 Agent 请求与 Session 结果及原文相同,净节省为零。另一个明确要求完整日志的控制场景为零次 Jev 调用。 | | 上下文与问题实验 | 直接 API 四次调用;候选原文、ID、顺序、任务与工具意图不变;同时增加逐字保留内容并改写问题;离线门槛 0.9 | B 为 0.96–0.98,C 为 0.90;A 为 0.80–0.83,D 为 0.70–0.75。这只是离线采用计算,不是 Hook 或 Agent 的实际交付。 | | 修复后 Hook 验收 | 真实 JevService → adapter → Hook → Agent/Session;主模型及 shell/spill 仍是确定性夹具;用户选定门槛 0.8,等待仍为 4 秒 | A、B、C 实际交付的 Agent/Session 内容缩短且必需事实保留。D 在 0.50–0.57 下逐字保留。要求三个最短用例的负例保留名称和时间;完整日志与证据不足控制均为零次调用。 | | 隔离真实 profile | 官方 DSH 0.1.7-rc.2 profile;真实 `deepseek-official/deepseek-flash` 主模型、原生 `bash`、本地构建和 Vitest 进程、真实 `jev-latest`;默认 0.8 与 4 秒 | 五个新 Session 加一次续接,共 12 个主模型步骤和两次 Jev 判断。构建进度确实减少;普通通过日志被判断但保守保留;失败证据及原生 spill 恢复可用。 | 最终 profile 安装包的 SHA-256 为 `83aaae34148a1b7f5a0e5642c32b2f198b1b2551e11c39730739cc1450a1740d`;安装后的包内容与该归档逐字节一致。此哈希只标识本次验收所用包,不代表之后每次构建都相同。 ## 真实 profile 之前的 Jev 结果 初版 A–D Hook 轮次四次 Jev 调用共记录输入 22191、输出 1196 tokens。逐案 Jev 延迟为 462、682、281、302ms(相加 1727ms,并非端到端墙钟耗时)。省略概率范围依次为 A 0.42–0.48、B 0.62–0.67、C 0.71–0.75、D 0.43–0.47。均未达到 0.9,因此原文全部交付。候选划分保护了唯一构建结果、测试摘要、失败名称、点名的登录结果及 425ms 慢项。初版 B 自动评估所报“PTC program value changed”是把原文与 JSON 转义后的文本直接比较所致;那轮没有保存结构化程序值,不能据此说真实 PTC 值已核实。 随后,直接 API 实验加入带原始行号的逐字保留证据,并改问候选是否提供这些证据以外的任务必需信息;候选内容和顺序不变。按当时 0.9 门槛,B 的 10/10 个候选为 0.96–0.98,C 的 4/4 个为恰好 0.90;A 的 8 个候选为 0.80–0.83、D 的 10 个为 0.70–0.75,均为 0 个过线。四次记录输入 24326、输出 1196 tokens,延迟为 569、280、248、317ms(相加 1414ms)。离线模拟选中的 B 10760、C 4620 候选字符**不是 Agent 实际净节省**:省略标记、恢复提示和后续宿主处理未计入。保留证据与问题措辞同时变化,不能分离各自作用;C 单次恰好 0.90 也不能证明稳定性。 修复后 Hook 轮次中,A–D 和负例 N 各向真实 Jev 请求一次,结果如下: | 场景 | 省略概率;达到 0.8 的候选 | Agent 实际净节省 | Jev 延迟 | 输入/输出 tokens | | --- | --- | --- | --- | --- | | A:500 行构建进度 | 0.86–0.89;8/8 | 7604/8507 字符(89.4%) | 604ms | 7277/299 | | B:180 条通过项,PTC 外层日志 | 0.79–0.83;7/10 | 7443/10837 字符(68.7%) | 337ms | 7572/373 | | C:失败及精确重复详情 | 0.79–0.82;3/4 | 3257/5843 字符(55.7%) | 294ms | 3890/151 | | D:点名登录结果和慢测试 | 0.50–0.57;0/10 | 0/10542 字符 | 316ms | 7349/373 | | N:要求三个最短用例 | 0.06–0.08;0/10 | 0;保留所需的 1、2、3ms 用例 | 313ms | 7587/373 | 五次合计记录输入 33675、输出 1569 tokens。相加的 Jev 延迟为 1864ms,不代表整轮墙钟耗时或费用。A–C 在发布省略结果前保存了完整原文;最终 Agent 输入与持久 Session 结果逐字相同。B 保存的结构化 PTC `stdout.text` 与原程序值相同,缩短的只有外层日志。C 保留不同失败、摘要、退出标记,以及对精确重复内容的来源行引用。明确要求完整日志和证据不足的控制场景均为零次 Jev 调用并交付原文。 该轮原自动验收命令退出码为 1,因为当时要求 D 也至少节省 300 字符和 10%。用户随后接受 D 的保守行为:所有省略概率低于 0.8 时,逐字交付原文即符合要求。对**已保存的同一轮结果进行离线复核**,未重新请求 Jev、未重跑真实测试:A–C 均超过 300 字符和 10%,D 原文相同,N 的三个耗时保留,两个控制场景仍为零调用。原退出码 1 仍是历史事实;更新后的验收不等于把旧命令重新跑成绿色。D 概率低于前次直接 API 实验,不能归因于单一因素:正式 Hook 请求还携带来源理由、未展示候选范围、宿主 spill/压缩提示,且问题措辞不同。 ## 真实 profile 与宿主输出处理 最终 profile 的构建命令对 100 个生成的 TypeScript 模块实际执行解析、转译、产出、哈希和运行,输出 500 条带计数的进度。Jev 在 726ms 内对 7 个候选给出 0.93–0.94 的省略概率(输入 7173/输出 262 tokens)。8510 字符的原始输出完整归档;交付的 2072 字符持久工具结果含省略标记和恢复提示。主模型最终报告的产物 SHA-256 与实际构建结果一致。 首个 180 项测试任务的文字意外匹配了测试文件名的 stem,因此没有 Jev 判断,持久结果为完整的 20543 字符。另用一次中性任务描述才实际进入测试日志分支。Jev 在 568ms 内判断 18 个候选,概率为 0.66–0.71(输入 10935/输出 677 tokens),无一达到默认 0.8;Session 保留完整 20543 字符和 `180 passed` 摘要。这证明真实分支触发与保守交付,不证明该 profile 中的测试日志已获得净节省。另一轮真实失败 Vitest 运行是 73 通过、1 失败;其 10052 字符的 Session 结果保留断言、堆栈、`[exit code: 1]` 和具名 351ms 慢项,未调用 Jev。 在明确要求完整输出时,真实文件清单命令输出 59890 字节、涵盖 201 个文件。Jev 为零次调用。宿主原生 spill 在持久工具结果中留下 49931 字符、完整原文定位及“省略 10202 字节”的提示;spill 原文与独立保存的命令输出逐字节相同。同一 Session 的续接中,真实主模型只运行一次原生 `bash` 读取该 spill 文件末行,得到的文件数和两个哈希都与独立预检一致。清单初次调用及恢复续接各使用两个主模型步骤;续接没有再调用 Jev。这验证了宿主原生 spill 与恢复;构建案例另行验证了 Jev 省略。本轮没有一条工具结果同时触发两种缩短。 headless JSON 事件流对长 `tool_result` 的展示在约 8 KiB 处截断。上述交付长度、摘要、退出标记与省略标记均从持久 Session 的 `tool/result` 核对,而非仅凭事件预览或主模型最终叙述。 ## 边界与验证 公开的 [Hook 实现](../../packages/jev/src/output-admission.ts)、[规则](../../packages/jev/src/output-admission-rules.ts)、[保留证据组装](../../packages/jev/src/output-admission-evidence.ts)和[集成测试](../../packages/jev/tests/output-admission-integration.test.ts)可供独立查阅。修复后 Hook 轮次曾记录 16/16 项聚焦集成测试通过及离线预检通过;这些是先前执行的结果,并非本报告入库时重新跑出的通过记录。普通测试命令默认跳过需要付费的真实 Jev 案例。最终 profile 使用的是有真实编译、测试进程和模型调用的隔离小型合成项目,并非大型用户仓库构建或 Web UI 人工验收。 付费实验限定了请求次数,外部凭据保存在 Git 之外。本机原始请求、答案、Session 抓取、shell 输出、profile 和依赖本机环境的脚本均未公开。此报告只包含汇总观察和安装包哈希,不足以逐字复现模型回答;模型概率在重复调用时可能变化。这两份报告不含凭据值、HTTP 授权头、本机 profile 位置或真实 Session 标识。