dsh-plan-preset: 将 DSH Read-Only 映射为 Plan 模式

前言

DeepSeek Harness (DSH) 的核心设计理念是“一切皆插件”。在构建智能体工作流时,经常会遇到“调研阶段”与“执行阶段”权限需求不同的情况。DSH 原生的 Read-Only 预设虽然提供了基础的安全保障,但在语义上不够直观,且无法强制阻断权限升级申请。

这个插件旨在通过配置层的映射,将 DSH Web UI 中的 read-only 权限预设改造为符合 OpenCode 风格的 Plan 模式。它不改变底层逻辑,而是通过 Cordis Patch 机制,统一了工作流的权限表现与审批策略。

这是什么

这是一个名为 dsh-plan-preset 的 DSH 插件。

  • 核心功能:把 DSH Web UI 的 read-only 权限预设映射为 opencode 风格的 Plan 模式。
  • 维护者:23aisfvb
  • 分类:admin-security
  • 许可证:MIT

它解决的问题是:如何在保持 DSH 原有架构不变的前提下,通过简单的配置变更,实现“只读调研”与“计划模式”的语义隔离,并杜绝无授权的权限越级。

核心功能

插件生效后,权限预设将发生以下变化:

  1. 显示名称:Web UI 的访问模式控件将显示为 “Plan”(图标保持盾牌样式,原名称 “Read Only” 被覆盖)。
  2. 文件操作:只读。允许读取文件,但拒绝写入、删除或修改文件。
  3. 网络搜索:可用。文件沙箱限制与网络搜索功能解耦,即便处于只读模式,Agent 依然可以使用网络搜索能力。
  4. 权限申请:禁止。审批策略被设置为 never。这意味着任何权限升级请求都会被自动拒绝,且拒绝即最终结果。

安装与启用

安装过程涉及本地依赖配置与依赖安装,请按顺序执行。

  1. 修改 profiles/web/package.json:

    • 在 dependencies 字段中添加:"dsh-plan-preset": "file:E:/agent/deepseek_harness/Plugins/dsh-plan-preset"
    • 在 dsh.profile.bundles 字段中添加:"dsh-plan-preset"
  2. 进入插件目录并安装依赖:

    cd profiles/web && pnpm install
  1. 重启 DSH Web 服务:
    dsh web

典型用法

安装并重启服务后,可以通过以下方式验证配置或使用该模式。

验证配置:
运行以下命令查看配置输出,确认 permission 行已被覆盖:

dsh --profile web --dump-config

在输出中,应能看到 permission 行包含 read-only.name=Plan 以及 approval=never。

工作流实践:
1. 启动 Agent,默认处于 Plan 模式。
2. Agent 进行问答与文件调研,利用网络搜索辅助分析,但无法修改任何文件。
3. 当 Agent 产出最终计划或调研结论后,用户手动切换权限模式(例如切换至 Full Access)。
4. Agent 获得完整权限,开始执行具体的写文件操作。

适用场景与注意

  • 实现原理:这是一个纯组合补丁,不包含任何运行时代码。它通过 cordis.patch.yml 覆盖了 dsh-base 中的 permission 行配置,其余预设(如 workspace-write)不受影响。
  • 升级兼容性:Cordis 的 Patch 机制采用整行覆盖。如果 DSH 主程序升级,导致默认的 permission 行预设发生变化(例如新增了其他预设或调整了字段),本插件的配置可能会被新的默认配置遮蔽。建议在 DSH 升级后,务必运行 dsh --profile web --dump-config 进行核对。

总结

dsh-plan-preset 是一个轻量级的配置补丁插件。它不依赖复杂的运行时代码,仅通过修改配置映射,即可帮助团队在 DSH 中建立更清晰的工作流权限体系。对于需要严格区分“调研/计划”与“执行”阶段的智能体开发场景,该插件提供了一个标准化的解决方案。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜