# 验证记录 ## 0.3.2 · DSH 0.2.1-rc.3 兼容更新 日期:2026-10-27(Asia/Shanghai)。环境:Windows、DSH 0.2.1-rc.3 随附的 Electron 44.7.0 / Node 24.21.0。 - 原因:`@deepseek-ai/dsh-tools` 的 peerDependency 固定为 `0.2.1-rc.2`,宿主在加载前判定不兼容。新增真实宿主兼容检查先复现 rc.3 被拒绝,再在修改后通过。 - 兼容声明仅增加已验证的 `0.2.1-rc.3`,保留 rc.2;不使用版本豁免,也不自动接受 rc.4 或 0.3.0。`/guard` 版本显示同步更新为 0.3.2;保护逻辑、记忆目录和存储格式没有改变。 - 65 项测试通过,0 失败、0 跳过:63 项既有回归和 2 项真实宿主版本判定检查。JavaScript 语法检查、`git diff --check` 通过。 - 更新后的源码在 rc.3 真实 Cordis、ToolRuntime、ApprovalService 上执行 34 项集成检查,全部通过:完全权限 8 项、协作模式 13 项、日常模式 13 项。模拟工具没有真实命令、网络或删除效果;测试只使用隔离临时数据,不读取用户的真实记忆。 - 宿主 reviewer、权限选择和问题回答由测试替身提供;这些结果不代表验证了模型判断准确率或完整桌面操作。rc.2 的真实运行库结果见历史记录,本次没有重新运行旧版宿主。 宿主版本回归检查需要安装的 DSH 公共运行库。普通 `npm test` 在未设置 `DSH_HOST_ROOT` 时跳过这两项专用检查;本次使用以下方式运行,65 项全部执行: ```powershell $env:ELECTRON_RUN_AS_NODE = '1' $env:DSH_HOST_ROOT = "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\app.asar\dsh" & "$env:LOCALAPPDATA\Programs\DeepSeek Harness\DeepSeek Harness.exe" --expose-internals --test 'test/*.test.mjs' ``` 以下为历史验证记录。 日期:2026-10-21(Asia/Shanghai)。插件版本:0.3.1。 ## 0.3.1 完全权限兼容修复 - 复现原因:0.3.0 只识别 Auto,完全权限下的联网等未知工具被转交 `ask`,宿主的 `never` 策略直接拒绝。 - 协作模式识别宿主明确选择的 `danger-full-access`,不再追加登记或审批,保留已有敏感内容与自身保护。最终 guard 仍绑定参数、目录、取消、重载和当前权限选择,不从 `never` 单独推断授权。 - 中文规范按会话实时生成,完全权限下不继续注入“缺 Auto 就送审”的过期要求;状态命令明确显示当前分支。记忆格式和目录不变,没有新增依赖。 - 63 项测试通过,0 失败、0 跳过;JavaScript 语法检查通过。新增完全权限联网、专家、命令、项目外编辑、run_code 调用策略、权限退出、宿主拒绝、Auto child 的 never 策略、敏感保护与动态规范回归。 - 使用真实 Cordis、ToolRuntime、ApprovalService(`policy: never`)的 8 项集成检查通过:四个模拟调用执行成功,插件问题 0 次、审批请求 0 次;保留敏感路径自检和其他宿主拒绝。没有执行真实删除、项目外写入或网络请求。 - 既有协作模式 13 项宿主集成检查通过。本次两套检查共 21 项通过,宿主 reviewer 仍使用测试替身,不代表已验证模型分类准确率。 - 本机安装并正常重开后,实际 `/guard` 显示 0.3.1 与“已尊重 DSH 完全权限”。在同一完全权限会话中读取公开 GitHub 插件页面,执行记录显示“已访问网页”、HTTP 200,未出现插件确认弹窗。该检查只验证公开网页读取,不代表所有联网工具或其他操作均已完成桌面验证。 - 以下 0.3.0 与更早记录属于历史验证。 ## 0.3.0 协作模式 - 默认 `adaptive`,普通检查、搜索、专家及未知工具在活跃 Auto 会话交给宿主 reviewer。取消强制登记和英文 description 拒绝;旧 `balanced`、`strict` 保留。 - 已识别的风险走 tools `ask`,合并宿主审批;不额外调用 `userQuestions.ask`。最终 guard 要求观察到当前 agent、callId、工具和信号对应的 `allowed-once`,仍核对参数、目录、取消、重载与 Auto 是否退出。 - `/guard-check` 改为注册不访问文件的模拟工具,传入模拟敏感路径,核对实际硬拒绝;不再把“未知工具必定拒绝”当作新版预期。自检不验证模型分类准确率。 - 56 项测试通过,0 失败、0 跳过;JavaScript 语法检查通过。保留旧模式回归,新增自动审查委托、单次审批合并、未知工具回退、拒绝/取消/不可用/异常、子代理后续操作、参数变更、Auto 生命周期、审批证明及敏感目录边界检查。 - 用 DSH 0.2.1-rc.2 真实 Cordis、ToolRuntime、ApprovalService 跑通 13 项集成检查:常规模拟工具无插件问题,危险调用通过真实 approval seam 一次询问;`never` 策略、拒绝、取消、跳过检查或伪造 allow 均不执行。宿主 reviewer 的决定使用测试替身,未调用真实模型;不能据此宣称已验证模型判断准确率或操作系统隔离。 - 显式使用 `balanced` 再运行既有 13 项真实运行库集成检查,全部通过,包括旧版确认卡片、一次授权和 bundle parser。两套集成检查共 26 项通过。 - 记忆格式、默认存储目录和追加历史保持不变;没有新增运行依赖。 - 以下 0.2.1 和 0.2.0 记录属于历史验证,不代表 0.3.0 已完成桌面现场验证。 ## 0.2.1 确认卡片调整 - 主卡片保留操作、模型说明的影响、一句风险提醒和按需详情入口。参数提供的位置最多展示 3 个,其余数量会提示查看详情;没有推断脚本内部的完整目标。 - 原因、当前目录、操作类型、完整风险和全部参数位置移到 `/guard-detail`,完整工具名、参数和指纹继续保留在内存中。 - 选项说明缩短,选项标签、真人答案校验、一次授权、最终 guard、自动执行范围和记忆格式保持原样。没有新增依赖。 - 41 项既有测试和 JavaScript 语法检查通过,`git diff --check` 通过。既有确认流程测试随展示文案更新,未增加纯文案测试。 - 使用 DSH 0.2.1-rc.2 的真实 Cordis、ToolRuntime 和 bundle parser,重新运行 13 项宿主 API 集成检查,全部通过;模拟确认请求已生成简洁卡片数据,没有执行真实系统命令。 - 本机 CLI 安装 0.2.1 成功,锁文件供应链策略检查通过;安装器仍报告既有 peerDependencies 提示。安装后的三个运行文件与源码哈希一致。 - 经用户同意正常退出并重开 DSH,实际 `/guard` 显示 0.2.1,`/guard-check` 自检通过,模拟工具执行体运行 0 次。 - 另用普通 `ask_user_question` 尝试无操作权限的展示预览,该工具没有展示请求的 detail 正文,不能据此宣称新确认卡片已完成桌面视觉验证。插件直接调用 `userQuestions.ask` 生成的完整卡片数据已由上述宿主 API 集成检查核对;后续实际操作确认仍需观察最终布局。 - 以下 0.2.0 桌面现场记录属于历史验证。 ## 0.2.x 历史源码检查 需要 Node.js 22 或更新版本,无须安装第三方依赖: ```powershell node scripts/check.mjs node --test test/guard.test.mjs ``` - JavaScript 语法检查通过。 - 41 项测试通过,0 失败,0 跳过。31 项原有回归测试继续在严格模式下运行;新增 10 项日常模式测试覆盖普通读写、项目边界、目录链接、命令语法、真实沙箱能力条件、安全搜索和执行前撤销。 - 使用 DeepSeek Harness 0.2.1-rc.2 随附的 Cordis、`defineTool`、ToolRuntime 和 bundle parser,在独立进程中验证: - 插件通过真实 Cordis 的 plugin mount、inject 和异步启动生命周期;四个模型工具和六个人类命令可以登记。 - `cordis.patch.yml` 能由官方 parser 解析并插入正确插件条目。 - 缺少中文操作登记时,模拟命令不会执行。 - 完整参数对应的中文真人确认完成后,模拟工具只执行一次。 - 相同参数重放会被拒绝。 - 一个更早返回 `allow`、跳过整个普通检查链的 hook,仍不能绕过最终 guard。 - `/guard-check` 使用无副作用工具验证普通执行拦截和最终 guard,均明确确认执行体运行 0 次。 - 日常模式中,模拟项目内编辑与受限常规任务无需额外问题;安全搜索可返回隔离测试文件;项目外修改仍被拦截;跳过普通 hook 也无法放行自动编辑。 单元测试还覆盖:参数修改、目录改变、跨会话使用、拒绝、提问界面不可用、答案不匹配、取消、重载、授权过期、敏感路径和本地目录链接、记忆作用域、停用后历史保留、凭据格式拒绝、记忆并发预算及授权日志不含完整命令。 ## 宿主验证环境与范围 环境:Windows、DeepSeek Harness 0.2.1-rc.2、Cordis 4.0.5。宿主专用测试脚本与本机数据不包含在本仓库内。 自动化安全测试中的执行体均为模拟工具。未执行真实删除命令,没有读取真实凭据或修改系统安全设置。测试生成的隔离临时数据不会自动清理。 0.2.0 的真实运行库集成检查共 13 项通过。它使用测试用的确认回答器和沙箱能力服务,验证插件的分支和执行流程;没有执行真实 shell 或模拟实际操作系统隔离,不代表已经检查真实 GUI 的布局。它没有连接正在使用的会话。 历史验证:实际 DSH 桌面应用中已确认 0.1.2 插件运行、`/guard` 可用、专用 `read` 能读取隔离测试文件,以及中文记忆确认界面可用。记忆保存后已通过独立进程读取和应用重启验证;停用后不再加载,原始历史仍保留。0.2.0 沿用相同存储格式,记忆功能的自动回归测试继续通过;不能把旧版现场结果当作新版完整现场验证。 `/guard-check` 在实际应用中自检通过,模拟工具执行体运行 0 次,未运行系统命令,也未读写或删除文件。0.1.2 的 `remember` 和 `forget` 原生参数输入已在图形界面验证。 ## 0.2.0 桌面现场验证 重开 DSH 后,在隔离测试聊天中确认: - `/guard` 显示版本 0.2.0、日常模式。 - 普通消息成功发送并收到回复。 - 模型新建一个专用测试文本文件,使用 `guard_search` 在该文件内搜索,再使用 `read` 读回;操作连续完成,没有额外确认,也没有保护拒绝。独立读取该测试文件,内容与预期一致。 - 实际执行 `/guard-check`,界面显示自检通过,模拟执行体运行 0 次。 现场没有执行删除或清理操作。常规 shell 命令自动放行的分支已由上述单元和宿主 API 集成检查覆盖,未通过现场运行项目脚本验证操作系统沙箱隔离。 未在其他 DSH 版本、其他操作系统或纯 PTC 模式验证兼容性。 没有项目既有的 lint 或 typecheck 配置;本插件为无 build 步骤的 JavaScript ESM,已执行语法检查、针对性测试和上述宿主 API 集成检查。 ## 安装后的人工检查 1. 在隔离测试聊天中输入 `/guard`,确认显示“记忆与操作保护正在运行”。 2. 输入 `/guard-check`,确认自检通过且执行体运行 0 次。 3. 通过指令菜单选择 `/remember`,输入一条不含隐私的测试记忆,再重新打开同项目聊天,用 `/guard` 检查。 4. 在日常模式下,对专门创建的项目内测试文件使用普通编辑工具,应自动继续;宿主要求先读后改时仍应遵守。删除等危险操作仍需确认,不必实际执行删除来验证。 5. 通过指令菜单选择 `/forget` 并输入记忆 ID,确认它不再出现在有效记忆中。 命令不存在或扩展加载报错时,保护没有生效。保护范围与已知限制见 [README.md](README.md#边界和已知限制)。