# dsh-rsi 整体验收与实验环境 更新:2026-10-03。状态:同一任务补跑与两类真实资产消费均通过指定门槛;正式配对实验未启动。 容器工具隔离、模型网关、官方判分器控制已通过;qwen3.8-27b 最初两次 resolved=0/2;同一题补跑已获 resolved=true,真实 L1 与 Skill 正文交付已通过指定门槛。详见 [首轮报告](real-pilot-20261003.md)与[补跑报告](real-pilot-retry-20261003.md)。这不是正式效果结论。 ## 1. 验收问题 前序任务积累的 Chat Memory 和 Skill,能否改善 dsh 在后序任务上的整体表现? 评测对象是实际 dsh 上运行的完整 `dsh-rsi`。不要求 Chat Memory-only、Skill-only 消融。默认自动学习机制也不以每次运行 benchmark 为前提。 ## 2. 任务与对照 首版拟采用 SWE-bench Verified 的真实仓库修复任务,使用官方测试判分。优先选择同一仓库中存在经验复用机会的任务;题单需要在正式运行前固定,不能只按测出收益的结果筛选。 | 条件 | 原始 dsh | dsh + 完整 dsh-rsi | | --- | --- | --- | | 模型、非实验插件、任务执行预算 | 相同 | 相同 | | 任务代码与执行环境 | 相同初始状态 | 相同初始状态 | | 前序任务 | 执行,不携带跨会话学习资产 | 执行,自动积累并更新资产 | | 后序任务 | 新会话独立执行 | 新会话使用前序经验快照 | | 判分 | 官方测试 | 同一套官方测试 | 插件新增的记忆、技能检索等能力属于完整产品的一部分。两组不共享实验资产,原有非实验 Skill 和配置保持一致。实验库不能混入日常使用的个人资产。 ## 3. 执行流程 ### 正式实验前的成功门槛 必须先有至少一项真实模型修复获得官方 resolved=true,保留所有调试尝试;成功案例只证明基本解题与评分链路可行,不构成插件提升证据。不得把 oracle 控制、人工补丁或固定响应算作真实成功。 正式实验须同时满足三个条件:真实任务官方判分成功、Chat Memory 进入真实后续请求、Skill 正文进入真实后续请求。两类资产分别验收,不能用其中一类替代另一类。可消费资产允许来自失败经验;资产形成与成功修复可以来自不同试跑会话,无需强迫每道题生成全部资产。当前三个指定条件均通过。消费诊断明确要求加载技能,未证明自动选择质量或跨任务收益;生成正文仍有与实际补丁不符的描述。详情见补跑报告,正式实验未启动。 ### 两类资产进入上下文的验收 使用隔离实验库、真实 qwen3.8-27b 交互与后续独立会话。仅统计符合真实来源的资产,不手工写入记忆或技能,不用正确补丁、隐藏测试或人为拼接资产正文制造注入成功。 | 资产 | 必须核对的实际路径 | 通过证据 | | --- | --- | --- | | Chat Memory | 真实会话 → 原生提炼 → L1 记忆 → 当前工作区/通用召回 → 官方 agent/pre-step 注入 → 实际模型请求 | 保存原始事实/偏好与资产 ID、范围、内容哈希;会话出现 source.kind=dsh-rsi、form=memory 和相符的 refs;实际发往模型的 messages 包含召回正文,并能定位到正确资产 | | Skill | 真实任务轨迹 → 原生提炼 → 独立 rsi Skill provider → 官方 skill 工具加载 → 后续实际模型请求 | 保存 Skill ID、范围、版本及正文哈希;非错误的 tool/call 与 tool/result 可对应 rsi 名称,返回当前版本正文;工具结果正文出现在接下来的实际模型请求 | Chat Memory 验收至少包含一条有真实持久含义的 L1 记忆;L0 原始对话存在、检索函数返回非空或场景路径出现在列表中,不替代该验收。L2/L3 的形成与消费继续分层报告,不把 L1 通过外推为每一层在真实模型下均通过。不得为增加 L1 数量修改原生提炼规则;单轮一次性编码任务没有持久记忆时应采用真实连续交互验证。 Skill 候选名称和描述可能先进入发现目录;这不代表完整正文已经消费。必须观察实际官方工具加载以及加载后的下一次模型请求,不能只检查 provider.get、管理页或最终回复自称使用过技能。 两类资产还需共同核对: - 来源与内容一致:原始会话能支持已验证事实,未实现计划明确标注,不能将失败或截断轨迹包装成已完成经验。 - 范围和版本正确:只消费当前工作区及通用资产,匹配加载时的内容/版本;其他工作区、禁用资产和已失效派生画像不得混入。既有固定响应边界检查继续保留,真实加载另外存证。 - 请求可重建:保留完整源日志、注入事件、官方工具调用/结果、调用配置变更的 request/header、每次 assistant/message 或 assistant/attempt 及实际请求副本。针对包含记忆及包含 Skill 正文的两个请求,按对应日志前缀重建 messages 并比对,满足宿主的模型输入可重建要求。 - 可见内容完整:核对召回字符预算、上下文裁剪和工具输出限制,关键资产正文不能在 dispatch 前被截掉。正文被加载但随后请求失败、中断或根本没有发送,不能算消费成功。 - 成本有记录:保存两个消费请求及相关学习请求的 usage;按实际请求统计 token,注入正文不另重复计费。 资产到达实际请求只证明模型收到它,不代表改善了任务结果;收益仍由后续完整插件配对实验判断。这是两类资产的接入验收,不是 Memory-only/Skill-only 效果消融。 先修正完成协议与环境:任务由真实 turn/end 收尾,不伪造 completed;超时和输出截断明确记录。公开环境的 locale、Python 和测试入口与评分环境对齐,隐藏测试仍只留在评分侧。有效配置与学习预算在首次请求前校验。保持 qwen3.8-27b,不通过换模型或无限增加预算取得成功。 ### 满足门槛后的配对流程 1. 固定前序与后序题单,两者不重叠,按时间划分。接入调试用题与正式后序题分开。 2. 插件组从干净的资产库开始完成前序任务,允许从成功与失败的真实轨迹中学习。 3. 等待后台学习完成,检查任务记录、提炼和更新链路,保存经验快照。 4. 分别确认快照中的 Chat Memory 与 Skill 正文被实际后续请求消费,并完成对应日志重建比对。 5. 两组执行相同后序任务。每题恢复代码初始状态;插件组每题从同一前序经验快照启动。 6. 后序题产生的新资产可保存在该题独立副本中,不流入其他后序题。每题保留结果与轨迹。 7. 同一官方判分器评价两组输出,统计成功率、增益、退步和总成本。 这个快照设计用于测量前序经验的迁移价值。产品正常使用时仍持续学习;如将来增加连续在线学习实验,应作为另一个明确命名的协议,不混合统计。 ## 4. 实验隔离 沙箱内运行真实代码、命令和测试。采用本地 Docker 时,容器仍使用用户电脑的 CPU、内存和磁盘。 | 部分 | 计划安排 | | --- | --- | | dsh 和 dsh-rsi | 官方宿主与完整插件均在任务容器内;该边界已经验收 | | 任务文件操作、终端命令、构建与测试 | 独立实验容器内 | | 资产与日志 | 独立实验数据目录,两组隔离 | | 模型推理 | 使用 API 时由配置的服务商提供;使用本地模型时占用本地资源 | | 批量运行 | 接入验证后可迁移服务器,保持实际 dsh 与插件调用链 | 仅将判分器放入 Docker 不足以证明 Agent 的操作已经隔离。必须检查所有暴露给 Agent 的文件、终端、子进程及其他工具入口,确认其不能绕过实验边界操作用户项目。 模型服务调用与任务工具联网分别处理。模型可使用声明的 API;任务执行期间禁止通过网页、shell 或其他工具查找目标任务答案。依赖和容器镜像可以在准备阶段获取。 ## 5. 有效性要求 - 前序和后序不重叠;标准答案、gold patch、评测专用 test patch 和答案提示不进入学习或解题输入。 - 没有资产形成、没有实际加载,或发生组间污染时,先修接入和隔离,不能以该运行评价产品收益。 - 先验证判分器能接受已知正确修复、拒绝实际经过测试的错误修复。空补丁被提前拦截不足以验证测试判分。 - 主结果按预算截止时保存的补丁进行官方 resolved 判分。预算耗尽或输出截断单独标记;补丁已解决则保留官方成功,未解决则计失败,不能仅按 turn/end 覆盖判分。所有尝试保留在预定口径中。环境、网络和服务故障单列;补丁引起的测试错误属于任务失败,独立环境检查也失败而无法判分的基础设施故障按预定规则处理并报告。 - 重试和中断恢复规则在正式运行前确定;保留所有尝试,避免只记录成功重跑。 - 同一实验固定 dsh、插件和复用组件版本,以及模型配置、预算、题单、资产快照和判分器版本。 ## 6. 指标、token 与结论 成功率与开销同时报告,评价完整插件,不拆成单独 Memory/Skill 消融。 | 指标 | 口径 | | --- | --- | | 后序成功率 | 官方 resolved;固定题单、相同前台预算,预算内未解决也计失败 | | 配对新增解决 / 新增失败 | 同一题两组结果,不能只报净提升 | | 前台解题 token | 每题、每次请求的 input/output/total,包含重试、检索、工具反馈和资产注入后的实际输入 | | 后台学习 token | 前序及后序的提炼、更新、场景与画像调用单独汇总,失败调用也计入 | | 全链路 token | 前序执行 + 所有后台学习 + 后序执行;两组分别报告 | | 耗时与请求数 | 前台耗时、后台学习耗时、失败/截断/取消、模型请求数 | | 资产形成与实际消费 | 资产来源、版本、加载引用及实际请求证据,不作为效果主指标 | | 不确定性 | 配对差异区间、均值与中位数,重复策略在正式运行前固定 | ### token 增量与学习摊销 对同一后序题 i:`Δtask_i = 插件组前台token_i - 原始组前台token_i`。这个净差同时反映注入/检索增加的输入和可能减少的探索,不把后台成本隐藏在其中。 预先固定 N 道后序任务,定义 `Δtotal = 插件组全链路token - 原始组全链路token`;报告绝对值和相对原始组的比例。原始组也执行相同前序题,其执行成本单独可见。插件后台的学习开销按固定 N 摊销,报告每题的学习开销以及包含学习的平均总开销;不能事后扩大 N 稀释成本。 另报 `总token / 成功任务数`;成功数为 0 时写“不适用”,不能除以零或丢掉失败任务。这样既能看成功率是否提高,也能看得到一个成功结果要多付出多少 token。 输入累计包含跨请求重复上下文。模型报告的 reasoning/cache 细分有则记录,没有则记“未提供”;不要把缓存或推理重复加到已含这些部分的 total 中。缺失 usage 标为未知并说明覆盖率,不按 0 计。资产注入的字符量只作诊断,不能当成精确 token 数或重复累加到请求计费量。 当前同模型实验先比较 token;价格、缓存折扣或部署费用未明确时不推算金额。调试试跑、判分器 oracle 和正式两组实验分别记账,不混合效果样本。 ### 接入调试已有用量 前台 25 次、639065 token;后台 5 次、82347 token;合计 721412 token,后台占约 11.4%。没有原始组,因此此数不能回答自进化净增多少消耗,也不能证明节省。 同一题补跑和后续交付诊断另有已知 672231 token,包含失败学习、重提炼与两次消费者;首次恢复失败的 usage 未能导出,单列未知。全部调试已知累计 1393643 token,不能混入正式效果样本。 成功率稳定提高可以支持整体效果;成功率保持且包含学习的总成本稳定降低可以支持效率改善。最低收益、可接受退步及成本上限在正式评测前固定。少量成功案例仅满足接入门槛,不替代配对实验。 ## 7. 下一阶段与停止边界 1. 插件接入、独立 Skill 消费和日志重建已通过固定响应夹具检查;继续验证真实任务输入下的表现。 2. 验证任务工具的容器边界和官方判分。 3. 真实修复、真实 L1 与 Skill 正文交付的指定门槛已通过;保留资产质量问题与所有失败,不扩量进行正式实验。 4. 少量真实任务试跑结束后停止,提交完整轨迹、资产消费证据、官方判分和成本记录。正式题单、规模、预算、重复策略及判定标准另行确认;当前授权不包括正式配对实验。 ## 8. 参考资料 - [SWE-bench Verified](https://www.swebench.com/verified.html) - [SWE-bench 评测与 Docker 环境](https://www.swebench.com/SWE-bench/guides/quickstart/) - [dsh 架构与可替换执行能力](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/architecture.md) 已有实验记录用于排查接入和测量问题,不作为本项目的效果数据,也不直接复用原有 nanobot 执行链来代表 dsh。 ## 9. 当前执行条件 容器工具边界、真实 qwen 调用和官方正负判分控制已通过。最初两次失败保留;同一题补跑已获官方成功,真实 L1 与 Skill 正文交付和全部保留请求重建也已通过。三个指定门槛已满足,证据见 [补跑报告](real-pilot-retry-20261003.md)。当前仍没有启动正式配对实验的授权。 正式运行前还需完成: - **已通过固定响应检查**:统一运行入口、两组配置差异、原始组没有插件资产/服务、相同基础代码与同一前序资产快照。见 [运行器验收](runner-preflight-20261003.md)。 - **已通过断网强制中断检查**:日志、请求副本与补丁可导出,两次输入均可重建;最后一次 usage 未返回,保持未知。账本与官方判分分别保存。此项不外推为真实服务故障均已验收。 - 再做小范围端到端预演,覆盖修正后的默认自动捕获/学习和正常技能发现,不在提示中点名 Skill。默认 L2/L3 调度也要观察并记录实际触发、未触发或失败,不能用手动提炼诊断代替默认链路。预演不要求每道题都产生或调用全部资产,也不要求先看到效果增益。 - 预先固定前序/后序题单、样本量、模型与 thinking 配置、前台和后台预算、重复与重试规则,以及收益和成本判定标准;排除已经调试的后序题。 生成 Skill 已观察到一处事实不一致,需保持真实资产并记录其影响;正式资产从新的前序任务自然生成,不手工修成正确答案或筛选好资产。资产质量与自然使用率是正式实验要测量的产品表现,不要求先保证每个资产都正确。 ## 10. 容器接入方案与试跑模型 本轮优先采用整个官方 dsh 与插件运行在 Linux 容器中的方案。文件、Bash/PTY、子进程和 PTC 的宿主进程都留在容器内;当前不加载子 Agent,保留真实调用链;不改写记忆、技能算法,也不替换为其他 Agent 框架。官方 CLI 包固定为 `@deepseek-ai/dsh@0.2.0-rc.2`。 先使用固定模型响应执行真实工具,验证无宿主项目挂载、无 Docker socket、只读镜像、非 root 身份、资源限制和断网。通过后再接入真实模型;有模型访问需求时必须单独验证 egress,不能将断网夹具结论直接套到联网任务。容器内部任务可能接触同容器的资产,这是后续数据隔离审查项,不能以宿主文件隔离代替。 用户指定优先使用 dsh 中已配置的 `qwen / qwen3.8-27b`(显示名称 vllm)。模型目录与真实 write/read 已确认服务可达、工具调用可行、声明容量为 262144;两题失败不能外推为该模型整体能力结论。保持模型固定,先排查有限试跑的问题。服务地址与密钥不写入仓库,个人 DSH_HOME 和个人资产不挂载进实验。 少量试跑用于验证执行、学习、后续消费和判分链路,不给出整体收益结论。正式配对 benchmark 前必须停止。