# 验收记录 当前源码验收版本:**DSH SuperAdvisor `0.1.11`**,尚未创建此版本的 Release;GitHub 已发布版本仍为 `0.1.7`。下文记录兼容性、更名升级、设置界面及历史模型与浏览器验收;历史结果不代表本次重新调用了云模型。原始会话、请求、凭证和人工验收截图保存在维护者本地,不随源码或安装包分发。 后续配置变更:用户手工测试时要求放开回答长度,`0.1.2` 已支持 Flash/Pro 配置 384,000 tokens、Pro 正文接收 16 MiB。34 项本地回归及安装包加载验证覆盖长回答保存、重入恢复和 UTF-8 边界;没有为验证上限而生成 384,000 tokens 的真实云回答。下文保留 `0.1.1` 原始云端验收记录。 ## 0.1.11:全部自动批准 2026-09-11。按用户要求新增独立的 always 模式“全部自动批准(无额外调用)”。true、false、缺失标签和本地敏感提示都不触发人工审批或独立模型审核;已有脱敏继续执行。保存的顾问地址变化时直接跳过,重新保存后新调用才可使用新地址。默认与已有模式不变。 - 96 项自动化测试、类型检查、客户端语法、构建及真实 Loader 通过。新增 13 项覆盖三个标签值、单次 prepare/stream、无人工问题或审核请求、缓存/快照、敏感提示与脱敏、地址变更及重新保存、切回人工、缺失审批模型、宿主 never/无运行轮次、发送标记阶段取消/撤销/策略往返与审计失败。真实 Loader 同时覆盖 manual/auto/self/always 四种方式。 - 真实 DSH 0.1.3-alpha.2 + Chromium 验证新安装默认 manual、always 无需审核模型即可保存、刷新和重启恢复、两页草稿冲突及切回 manual,页面错误为 0。测试阻止外部网络;首次本地监听被沙箱拒绝,获得本地进程权限后通过。隔离服务和浏览器已关闭;原手工服务未运行,本轮没有启动或重启它。 - 5 个已支持 DSH 版本 × 4 个 Node 版本的 20 个组合全部重新通过类型检查、构建、96 项测试及四种模式的真实 Loader 验证。本轮浏览器验证仅为上述单一环境,未重做 20 组完整安装/浏览器验收。 - 本轮模型响应全部来自受控 adapter,没有调用真实云模型或新增 API 费用。私有验证脚本和记录位于 `.acceptance/v0111/`,不随源码或包分发。 ## 0.1.10:同次求助标签,不调用独立审核模型 2026-09-11。用户要求主模型在提出求助时同时判断是否需要人工审批,省去独立审核请求。新增显式选项“主模型标注(无额外调用)”,设置值 self;旧 auto 保持独立审核语义并在界面标明额外调用。升级不自动更换已保存模式。 - `ask_advisor` 新增可选布尔字段 `requires_human_approval`。self 模式下 false 经本地检查后自动发送,true/缺失按 ask/skip 回退,非布尔类型拒绝。标签绑定请求快照及调用去重,不传入顾问正文;不覆盖每次询问、敏感提示、接收地址、宿主 never 或取消。 - 83 项测试通过,其中新增 11 项覆盖标签、仅一次 advisor prepare/stream、没有 review-send 记录、缓存和标签冲突、true/缺失/错误类型、手动模式不能绕过、本地风险/地址校验、无审核模型配置及撤销授权。5 个 DSH × 4 个 Node 的 20 个组合重新通过类型检查、构建、83 项测试与真实 Loader;Loader 同时覆盖 manual/auto/self,self 新增请求仅为顾问一次。 - 真实 DSH 0.1.3-alpha.2 + Chromium 验证 self 无需配置审核模型即可保存、刷新和重启保留,ask/skip 与并行编辑冲突正常,切回 manual 正常;没有浏览器脚本错误,浏览器阶段禁用外部网络。 - 真实 DeepSeek API 普通路径:将实际 ask_advisor schema 和主模型指引发送给 Flash,Flash 在同一次真正的工具调用中生成 `requires_human_approval: false`。把原始参数解析后交给真实 DSH 工具,直接调用 Pro,新增请求恰好 1 条且没有审核发送记录;相同调用再次执行复用结果。不是由测试脚本手工替模型补标签。 - 首次 API 脚本误把 DSH 工具参数的 JSON 字符串当对象读取,断言失败,没有调用 Pro;修正脚本后普通路径通过。同组风险样本没有发出工具调用,原先“必须产生一次工具调用”的断言失败;保留该观察,不当作 true 标签的实测结果。风险 true 的人工分支已由受控 DSH 测试验证。主模型仍可选择不求助,不能保证每个风险任务必定发出工具调用。 - 后续仅补充一次 Flash 风险观察,完整回答正常结束,并在文字 JSON 草稿中填写 true,但没有真实工具调用、没有调用 Pro。该结果记录为 no_tool_call,不宣称风险样本触发了插件审批。本轮共 5 个 HTTP 200 推理请求(4 Flash、1 Pro),含首轮脚本取值失败;全部使用合成内容。 私有证据在 `.acceptance/v0110/`,包括模型生成的实际工具参数、API 请求和失败记录、浏览器记录、20 组合日志。只使用合成内容,凭证没有写进源码或输出。未修改原手工服务、未推送 GitHub 或发布 Release/npm。 ## 0.1.9:AI 自动审批与真实 API 验证 2026-09-11。用户授权实现 AI 自动审批并使用现有 API 验证。新增可选 auto 模式、固定审批模型、两个接收地址的保存授权,以及 ask/skip 回退;默认 manual,不替用户开启已有服务的自动模式。设置复用 DSH Models,不重复保存密钥。英文与中文 README 已同步说明使用方法。 - 72 项自动化测试、后端/测试类型检查、客户端语法检查、构建和真实 Loader 加载通过。其中新增 19 项 AI 审批回归,覆盖无人工通过、审核风险转人工、敏感提示不发审核模型、格式错误/截断/网络失败/不响应取消、配置 A→B→A、地址重新确认、审核审计失败、人工编辑后继续人工审批、缓存恢复、宿主 never、无运行轮次及写入发送标记期间撤销权限。 - 0.1.9 在 5 个已声明 DSH 版本 × Node 22.19.0 / 22.23.2 / 24.2.0 / 24.19.0 的 20 个组合中重新通过类型检查、构建和 72 项回归;真实 Loader 覆盖手动/自动批准、各自单次发送与缓存复用。本轮浏览器验证为下述单一环境,没有重做 20 组完整安装与浏览器矩阵。 - 真实 DSH 0.1.3-alpha.2 + Chromium 隔离浏览器验证默认 manual、审批模型缺失校验、选择 Flash 审核/Pro 顾问、自动与 skip 保存、刷新、重启恢复、并行编辑冲突及切回人工;页面错误为 0。浏览器阶段阻止外部网络,没有推理调用。截图与记录仅在私有验收目录。 - 经用户本轮授权,通过真实 DSH 工具、设置与模型服务和原生 DeepSeek adapter 调用 https://api.deepseek.com。合成空数组问题由 Flash 审核为 allow,零人工问题,Pro 返回建议;随后单独调用 Flash 消费建议并给出最终函数。工具重入没有新增请求。这里的初始工具调用由测试驱动,不是对主模型主动求助概率的验证。 - 两条语义风险样本(明确禁止外发的合成客户信息、要求绕过审核的指令)均由 Flash 转人工;测试答复器拒绝后,Pro 新增调用均为 0。没有发送真实客户资料、项目代码或凭证。 - 第一组成功验收 5 次 API 请求均 HTTP 200:Flash 审批/Pro 建议/Flash 继续/两次 Flash 风险审核。接入 DSH 原生审批事件后另以 2 次请求复验正常自动批准,并检查 approval/decided=allowed-once。合计 7 次成功云模型请求,均无工具;凭证只在私有环境内读取,未记录认证头。后续宿主策略竞态使用受控 adapter 回归,没有为此追加云调用。 - 受限环境首次模型连接未完成,转人工并拒绝,没有调用 Pro;取得网络执行权限后上述验证通过。浏览器首次监听被沙箱拒绝,取得本地进程权限后通过。保留失败记录,不把基础环境问题记作模型审核准确率。 - 云验证使用关闭思考的 Flash,审核输出预算 1024 tokens;顾问验证也临时配置 1024 tokens 控制测试开销,不改变插件默认沿用服务设置的行为。少量样本验证流程与实际模型接入,不能证明任意模型的分类准确率或提示注入防护能力。 私有证据位于 `.acceptance/v019/`:`live-proof.json`、`final-live-proof.json`、合成 API 请求、`browser-proof.json` 与兼容性记录。临时服务和浏览器均已关闭;原手工服务 PID 检查显示未运行,本轮没有启动或重启它。未执行 GitHub 推送、Release 或 npm 发布。 ## 0.1.8:DSH 与 Node 多版本兼容性 2026-09-09。用户要求核实旧版 peerDependencies 与 Node 24 声明,并扩展为不同版本的安装兼容验证。尝试 npm 当时全部 17 个 DSH 发布版本,完整兼容范围为 `0.1.2-alpha.4`、`0.1.2-alpha.5`、`0.1.2-rc.1`、`0.1.3-alpha.2`、`0.1.5-alpha.1`。其他版本有历史依赖解析失败或缺少所需接口,不能声明全部 DSH 版本通用。 - 上述 5 个版本分别搭配 Node `22.19.0`、`22.23.2`、`24.2.0`、`24.19.0`,20 个组合均通过 53 项回归、类型检查、构建和真实 Loader 验证。运行时 peers 逐项检查与目标宿主一致;开发依赖保留原固定版本。 - 复现并修复新版 Code Mode 子工具结果事件更名导致的 `evidence_unavailable`。新增两个回归通过真实 `run_code` 生成结果、只选指定行、分别批准与拒绝,并验证重入不产生重复审批或发送。修复前在 DSH 0.1.5 中两个用例都失败。 - 使用 5 个真实 DSH 安装器安装构建包,未使用跳过 peer 校验的参数。所有 20 个组合均以实际安装的模块通过 Chromium 验证设置卡、服务和模型选择、保存、刷新、默认输出设置、启停、两页编辑冲突与重启恢复;页面脚本错误为 0。 - Node 22.12 缺少 `stripTypeScriptTypes`;22.13 可通过核心回归,但部分完整 Web profile 缺少 Zstd API;22.15 下较新 DSH CLI 因没有 `import.meta.main` 而静默退出。进一步检查模型适配器非可选依赖要求,最终声明为 `^22.19.0 || >=24.2.0`,默认推荐 `.nvmrc` 中的 Node 24。具体边界和可选依赖限制见 [COMPATIBILITY.md](docs/COMPATIBILITY.md)。 - 切换 Node 大版本时复现 `fs-ext` 二进制 ABI 不匹配;在单独的 Node 22 运行时重新安装 DSH 后通过,没有重建或修改用户手工服务的 Node 24 依赖。DSH 0.1.3 保存的顾问结果在 0.1.5 恢复时新增审批、模型发送均为 0。 - 新增 `npm run check:dsh -- <版本>`,固定完整宿主依赖并拒绝混用 DSH 版本,检查 CLI 确实输出版本、完整 Web profile 就绪且登录后可访问页面。GitHub Actions 定义相同版本矩阵;本轮仅在本地执行,未触发远端 CI。 - 浏览器与 Web smoke 均使用私有临时环境,禁止外部 fetch,没有真实云模型调用。Chromium 首次因测试临时 socket 路径过长启动失败,缩短路径后复验通过;Web smoke 首次未保留登录 Cookie 得到 401,修正测试客户端后通过。原始失败与成功证据均保留在忽略目录 `.acceptance/compatibility/`。 ## 0.1.7:DSH SuperAdvisor 更名与升级 2026-09-09。项目名称改为 DSH SuperAdvisor,仓库与安装包名称改为 `dsh-super-advisor`。工具名 `ask_advisor`、设置命名空间与 patch 行 ID `advisor`、默认审计目录 `advisor-audit` 及可选初始环境变量 `DSH_ADVISOR_*` 保持兼容。 - 51 项自动化测试、源码与测试类型检查、客户端语法检查、构建和真实 DSH Loader 验证通过。 - 使用真实 DSH `0.1.3-alpha.2` 的 `plugin --profile web add/remove`,分别验证全新安装,以及安装原版 0.1.6、保存旧设置、移除旧包并安装新包的升级流程。新 profile 只注册 `dsh-super-advisor`;原设置文件保留。 - 用原版 0.1.6 模块通过真实 Loader、原生审批与受控 adapter 完成一次请求,随后用实际安装的新模块恢复同一任务与调用。恢复结果与旧结果一致,新增审批和模型发送均为 0。 - Chromium 验证升级后保留原服务、模型及自定义输出上限;改为沿用模型服务和不设接收上限后,保存与刷新正常。全新安装显示唯一的 DSH SuperAdvisor 设置卡和默认输出选项,页面脚本错误为 0。 - 产品截图为真实隔离 DSH 页面,使用本地测试地址;未包含 API 密钥、真实任务或私人文件。浏览器测试不创建模型任务,测试服务禁止外部 fetch;没有新增真实云模型调用。 - 原 0.1.6 的版本附件保持原字节;新版本同时提供新名称附件,以及保留原版内容的旧固定文件名兼容附件。升级必须替换旧包注册并保留原设置与审计目录,具体命令见 README。 ## 0.1.6:关闭插件输出限制 2026-09-09。两项输出设置默认均为 0:token 预算沿用 DSH 模型服务,接收文本不设插件大小上限。已有的非零设置保留,界面可勾选“沿用模型服务设置”和“接收文本不设上限”后保存为 0。没有改变模型服务能力、主模型选择或默认 120 秒请求超时。 - 51 项自动化测试、类型检查、客户端语法检查及构建通过;真实 Loader 验证空配置安装、保存选择、默认预算省略、逐次批准发送一次和结果复用。 - 真实 DSH 服务与受控 adapter 验证模型默认预算的继承、adapter 未提供预算时省略参数、界面设置覆盖旧安装上限、token/字节限制改变后重新审批及原有自定义字节限制。 - 合成正文超过原 16 MiB 上限,JSON 文件超过原结果恢复上限,完整接收并从新的 AuditStore 实例恢复,无第二次发送。未生成同等长度的真实云模型回答。 - 真实 DSH `0.1.3-alpha.2` 与 Chromium 验证旧 token 设置和旧字节 patch 的兼容、关闭两项上限、磁盘持久化、页面刷新及进程重启恢复、可选自定义值校验与并行编辑冲突。页面无脚本错误。 - 浏览器验收不创建模型任务,隔离进程禁止外部 fetch;没有调用真实云模型。临时环境与证据保存在被忽略的私有验收目录。 ## 0.1.5:保存配置的明确反馈 2026-09-09。在独立 DSH `0.1.3-alpha.2` 与 Chromium 中复现:DeepSeek 服务未显式设置 `baseURL` 时,仍能选中服务与 Pro 模型,但 `0.1.4` 的保存按钮被校验禁用,外观却保持不透明和手形光标。Models 的地址输入框显示默认地址占位文字,容易被误认为已经保存。这是已验证的触发条件,不能仅凭用户截图断定其环境必然相同。 新版保持显式地址及审批要求;缺少地址、地址格式错误、未选择模型、输出预算无效或模型目录不可用时展示具体原因。无效草稿可点击保存并聚焦提示,校验通过前不会写入设置。未改动、只读、保存中和并行编辑冲突仍禁止提交,按钮外观明确区分。 浏览器已验证:缺少地址、地址含查询参数和输出预算不足时不写入顾问设置;通过 Models 的 Edit → Customized settings 填写地址并 Apply 后,顾问选择可以保存到磁盘,页面重新加载和 DSH 进程重启后保留;无改动提示、禁用外观、两页编辑冲突与重新载入、启停保存正常。44 项自动化测试、类型检查和构建通过。该轮不创建模型任务,隔离进程禁止外部 fetch,未调用真实云模型。可按 README 的排查步骤复现,私有测试脚本和截图不随包分发。 ## 0.1.4:从界面配置顾问与跨服务切换 2026-09-09。使用真实 DSH `0.1.3-alpha.2`、其原生 Pi-ai adapter 和 Playwright 操作 Chromium。此轮模型请求全部发往独立的本地模拟端点;GLM/Qwen 名称用于测试路由,**没有验证 GLM 或 Qwen 真实云端认证、模型能力或计费**,也未增加真实 DeepSeek 推理调用。 新增“设置 → 插件 → 顾问模型”卡片。服务地址、协议、密钥和模型登记使用 DSH 已有的“设置 → 模型”,插件只持久化服务/模型选择、启停和输出预算。未绑定厂商,也未增加独立的 OpenAI 协议客户端;实际兼容范围由所选 DSH adapter 决定。 | 检查 | 结果 | | --- | --- | | 空配置安装 | Advisor 配置为 `{}` 时正常加载并显示设置,缺少目标时不发送 | | 全界面接入 | 从 Models 添加两个自定义服务、访问地址、测试密钥和模型,再从顾问卡片选择、保存;无手工修改模型配置文件 | | 配置不调用推理 | 添加、选择、保存和刷新阶段模型请求为 0;后续启停测试亦无新增请求 | | 配置持久化 | 选择与手动 ID 在刷新及 DSH 进程重启后保留;启停状态可保存并恢复 | | 两页同时编辑 | 旧页面保留草稿但禁止保存,显示冲突;主动重新载入后取得另一页的新设置 | | 未登记模型 | Pi-ai 在准备阶段拒绝未登记的 ID,返回 `model_unavailable`,引导去 Models 添加;没有外发 | | 审批期间切换 | Qwen 预览待审批时从设置改为 GLM;提交旧批准后模型零新增,出现 GLM 新预览;新批准仅发送 GLM 一次 | | 两条成功路由 | GLM 和 Qwen 已登记模型各收到一次获批请求,均经 Pi-ai adapter 返回 `ok`,主任务继续完成 | | 外发内容 | 两条请求均只含 system/user,无 tools,正文与对应获批快照逐字相等,输出预算均为 4096 | | 本地回归与安装包 | 44 项测试、类型检查、客户端语法检查通过;构建模块和解包模块均经真实 Loader 验证空目标加载、保存配置、单次审批发送及缓存复用 | 本轮发现并修复:未登记模型最初只显示通用“暂不可用”;增加可操作的设置提示。真实宿主与插件可能各自加载一份 `dsh-llm`,因此错误识别使用稳定的 `UNKNOWN_MODEL` 错误码,不依赖跨模块的 `instanceof`;两种错误来源均有回归测试,真实浏览器复验通过。手动填写模型 ID 是否能直接调用取决于 adapter,当前 Pi-ai 须先在 Models 中登记。 维护者的私有验收记录保留早期失败测试及两个成功请求的正文、授权和发送标记。测试端点、隔离 DSH 和专用浏览器验收后停止;凭证及原始请求不进入仓库或安装包。 ## 0.1.3:可读展示与主动求助核验 2026-09-08 后续验收:已检查更新前的真实任务日志。`ask_advisor` 原本就在 Flash 收到的 27 项工具中;此前没有独立的顾问系统提示段落,只有工具描述。用户明确补充使用 advisor 后,旧版已有一次成功的 Pro 调用。因此,不能将未主动调用归因于工具完全未注入。 新版按问题、目标、约束、尝试和证据排版审批正文;完整配置移到“查看调用详情”步骤。Web companion 通过 DSH 原生插件加载,已有和新顾问结果均支持首段预览、展开完整建议和核对原文。模型侧增加独立求助指引,强调复杂正确性复核、先形成候选结论、纯分析也可求助,以及先本地审批再外发。 使用真实 Flash、关闭 thinking、Standard mode,执行了 3 个未点名 advisor/Pro 的合成协议审查任务:前两轮直接作答,没有调用;明确纯分析复核指引后,第三轮去掉用户问题中的 800 字及文件/命令操作限制,Flash 主动调用了 `ask_advisor`。第三轮在主模型分析后才出现审批,最初 45 秒的浏览器等待超时,随后确认调用与审批均正常;没有因此重复发送任务。这个小样本证明主动路径可工作,**不代表稳定触发率,也不能证明单独某句提示改动导致了调用**。模型仍可能跳过建议的复核,插件没有程序化强制调度或自动云调用。 本轮完整浏览器验收由 Codex 使用 Playwright 操作 Chromium: | 检查 | 结果 | | --- | --- | | 实际请求上下文 | 三个任务的 `request/header` 均包含工具定义与顾问系统指引 | | 查看详情、返回审批 | Pro 零新增;返回相同快照,未取得发送授权 | | 选中批准但未提交 | Pro 零新增 | | 明确提交 | 恰好 1 次真实 Pro 请求,返回 `ok`,3,098 字符,无截断 | | 出站正文 | 捕获真实 Pro 请求;system/user 与已批准快照逐字一致,无额外历史或工具 | | 新旧结果展示 | 已有的 5,564 字符建议与新的 3,098 字符建议均可展开、分段阅读 | | 原文核对 | 浏览器原文与持久化结果全文相等;展开与收起不修改结果 | | 继续执行 | Flash 接收顾问结果并完成当前任务 | | 本地回归 | 36 项测试、源码/测试类型检查、浏览器脚本语法检查及真实 Loader 加载通过 | 维护者保留对应的私有请求捕获、会话和审计记录。请求捕获不记录认证 headers;测试结束后移除了捕获入口。 以下为 `0.1.1` 的原始记录。 ## 结论与环境 经用户明确授权,完成真实 Flash 主模型 → `ask_advisor` → 人工审批界面 → Pro 顾问 → Flash 继续处理的闭环。浏览器由 Codex 通过 Playwright 操作真实 Chromium,执行选择、提交、编辑、删除、拒绝、关闭、刷新和设置修改,并查看截图;不是用户本人逐项点击签收。 | 项目 | 实测配置 | | --- | --- | | 系统与运行时 | Linux、Node 24.19.0、DSH `0.1.3-alpha.2` | | 主模型 | `deepseek-official / deepseek-v4-flash` | | 顾问 | `deepseek-official / deepseek-v4-pro` | | 接收地址 | `https://api.deepseek.com` | | 推理模式 | `thinking: disabled`,界面显示 Off | | 顾问输出限制 | 2048 tokens | | 自动重试 | adapter `maxRetries: 0`;插件一次调用只执行一次 stream | | 浏览器 | Playwright 1.55.0 下载的 Chromium,1440 × 1080,Standard mode | | 正常超时 | 120 秒;故障注入阶段临时改为 5 秒,结束后恢复 | 模型列表接口认证成功,返回上述两个模型 ID。完成 **5 次 Pro、16 次 Flash 的 chat/completions 请求**;Flash 统计含主任务继续处理和自动标题。5 次 Pro 均收到 HTTP 200 响应头,其中 1 次正常完成、4 次用于故障测试(包含一次测试层清理错误后的复验)。这是实测请求数,不是供应商账单或金额核对。 ## 浏览器与请求核验 | 场景 | 操作与结果 | | --- | --- | | 未批准 | 显示接收地址、模型、输出限制、完整系统指令和求助正文;Pro 请求数保持为零 | | 明确拒绝 | 选择“拒绝”并提交,Flash 收到 `denied`,Pro 零新增 | | 按行选择证据 | 只选文件第 2、3、4 行;没有把第 1、5 行带入顾问正文 | | 脱敏 | 文件和编辑文本里的人工构造假密钥被替换,预览给出提示;测试未把真实凭证用作证据 | | 编辑与删除 | 在界面替换问题,保留中文换行;删除 E2,保留 E1/E3;新的完整预览采用新摘要 | | 文件变化 | 首次预览后修改源文件;最终发送保留已审核的旧证据,没有偷偷重新读取 | | 单选不等于批准 | 只选中“批准并发送”、未提交时,Pro 零新增 | | 审批期间刷新 | 浏览器刷新后保留相同最终摘要与正文,没有自动提交;随后明确选择并提交 | | 真实成功调用 | Pro 返回真实建议,Flash 收到 `ok` 并报告建议;恰好新增一次 Pro 请求 | | 预览与外发一致 | 在 HTTP 发送层捕获正文,与最终预览逐字断言相等;仅一条 system、一条 user,无 tools 或额外历史 | | 关闭审批卡 | 点击关闭按钮;修复后返回 `cancelled`,Pro 零新增 | | 配置变化 | 通过浏览器把基址改为同一服务的 `/v1`;提交旧批准后出现新地址、新摘要的预览,Pro 零新增;拒绝后从界面恢复原地址 | | 长文本 | 160 行中文、5759 个字符完整出现在预览数据中;滚动容器可到末尾,批准控件可操作 | | 超时 | 真实 Pro HTTP 200 后人为延迟响应;5 秒后返回 `unknown`,Flash 继续处理,没有自动重试 | | 发送后停止 | 真实 Pro HTTP 200 后点击 Stop generating;插件审计保存 `unknown`,DSH 显示 tool call aborted;刷新没有重发 | | 进程崩溃恢复 | 真实 Pro HTTP 200 后终止专用测试进程,确认已有 send 标记且没有 result;新进程重入同一调用返回 `unknown`,浏览器重开显示中断,没有重发 | 成功请求最终摘要: ```text b3d3b9f8cce20f4f0a6fa4e17f496b4bc132695300940091b241669ba88e8db8 ``` ## 发现并修复的问题 **插件问题:关闭审批卡被记为 unavailable。** 原生 DSH 问题服务以 `UserQuestionError(ASK_CANCELLED)` 传递关闭操作,此时工具的 AbortSignal 不一定已取消。原实现只检查 signal,因而误分类。`0.1.1` 同时识别 `ASK_CANCELLED` / `ASK_ABORTED`,返回 `cancelled`。增加了状态、审批事件和无外发的回归测试,且真实浏览器复验通过。修复前也没有发送 Pro 请求。 **验收工具问题:首次延迟响应的清理出现未处理异常。** 自建 HTTP 延迟器取消响应流时没有处理清理 Promise 的拒绝,导致该次 DSH 测试进程退出。插件已持久化 `unknown`。修正仅位于私有验收脚本,未修改 DSH 上游或生产模型 adapter;重新启动没有重发,新的超时用例正常返回到 Flash。该次故障和复验都计入上面的 5 次 Pro 请求,未从统计中删去。 ## 本地回归与安装包 - 源码和测试类型检查通过,30 项自动化测试通过。 - 构建模块通过真实 DSH Loader/Include、`cordis.yml`、一次审批发送及缓存复用验证。 - `dsh-tool-advisor-0.1.1.tgz` 解包后运行同样的 Loader 验证。 - 包含 Flash/Pro 的无密钥配置示例;不打包 `.acceptance/`、凭证、HTTP 原始请求、临时测试工作区或浏览器依赖。 ## 复现与证据范围 公开配置示例为 [examples/deepseek-flash-pro.cordis.patch.yml](examples/deepseek-flash-pro.cordis.patch.yml)。插件仍通过 DSH adapter 接入,不管理模型部署。 本地回归使用真实 DSH 服务和受控模型 adapter,不需要云模型凭证: ```sh npm ci npm run check npm pack ``` 私有验收环境、带认证的地址、原始请求和截图不分发。本文记录维护者的人工验收结果;仓库中的自动化测试不覆盖全部历史浏览器与云端操作。真实模型验收需要另行配置服务凭证,安装和开发配置见 [README](README.md)。 ## 实测边界 这次验证的是接入、上下文选择、逐次授权和失败恢复。没有评测开启推理后的 Pro 质量、复杂编程任务效果、其他 provider、移动端或其他浏览器。Code Mode、权限拒绝、并发与损坏审计恢复由现有真实 DSH 服务集成测试覆盖,本次浏览器使用 Standard mode。 超时和崩溃是收到真实远端响应头后的受控故障注入,不能推断真实云端自然故障频率或供应商计费结果。已发送的请求无法撤回;`unknown` 表示本地没有可靠完成结果。DSH 在强制停止或崩溃时可能显示其通用 aborted/interrupted 文案,插件审计和重入结果保留不重发语义。