Starfie1d1272/dsh-builtin-toggles ↗★ 0
dsh-builtin-toggles
A narrow DSH web plugin: view official built-in Loader entries and safely toggle a small, explicitly allowlisted set of presentation-only Web UI plugins from Settings → Plugins → Built-ins.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Starfie1d1272/dsh-builtin-toggles说明文档
阅读完整 README ↗dsh-builtin-toggles
非官方社区插件(unofficial community plugin)。与 DeepSeek Harness 官方无关,不受官方支持。
在 DeepSeek Harness(DSH)Web 界面的 设置 → 插件 内新增第三个标签页 内置开关 / Built-ins: 查看官方 built-in Loader entries,并用 GUI 开关一小撮经过明确安全审核的、纯 Web UI / presentation 类官方插件。
它做什么
- 只读展示当前 Loader 树中的官方内置插件(id / module / enabled / phase)。
- 对 明确 allowlisted 的少量官方 Web UI 插件提供开关(9 个):
ui-deliverables、ui-jobs、ui-goal、ui-message-feedback、ui-model-selection、ui-agent-preset、ui-skill、ui-subagent、ui-trajectory。 (ui-commands曾在 v0.1.0 基线 allowlist 中,已在 hardening 中移除:rc.6 中它的 client half 提供commandUi服务,被ui-conversation、ui-model-selection、ui-permission-presets消费,不是安全的独立 leaf。) - 其他
@deepseek-ai/*内置插件默认折叠展示,全部锁定(标出锁定原因),不提供开关。 - 开关立即生效于 Host 运行时(
entry.update({ disabled }))并持久化到 profilecordis.patch.yml(重启后保持)。 - 已打开的浏览器页面需要刷新才应用开关:rc.6 的真实浏览器行为是 Host 状态立即变化,但已加载的 client bundle 不会自动卸载/恢复(真实 headless-browser E2E 已验证,见下)。切换成功后面板会提示“刷新页面后生效”。
它明确不是什么
- 不是插件市场,不做第三方插件安装 / 卸载 / 更新,不做搜索,不做 npm/GitHub 管理。
- 不是通用 plugin manager:不能任意开关 Loader entry;未知 id 默认锁定(fail closed)。
- 不做 Agent tool / MCP / 模型 prompt 注入 / agent preset 或 tool 插件管理。
- 不修改 DeepSeek Harness 源码,不 patch/fork 官方仓库,不新建独立 Settings 导航页。
- 不提供模型可见的工具:Host 不注册任何 tools。
安全 allowlist 模型
可管理性完全来自 src/policy.ts 中的精确显式 allowlist(MANAGEABLE_IDS),没有“名字看起来像 UI 所以允许”的启发式。服务端在每次 POST 时重新执行全部检查,UI 隐藏按钮不是安全边界:
- id 必须在 allowlist 中,否则 403;
- body 必须是
{ "disabled": boolean },否则 400; - 当前 Loader 中必须存在该 entry,否则 404;
- entry 的 module/package 必须以
@deepseek-ai/开头(即使第三方抢占同名 id 也无法操作),否则 403; - 不能是本插件自身( / ),否则 403。