前言¶
在 DSH(DeepSeek Harness)的开发中,系统提示词(system prompt)的顺序决定了指令的优先级。当前 DSH 0.2.1-rc.2 的内置顺序中,persona(order 0)之后是 plan/team 策略(order 500/600),再往后才是工具引导(order 1000+)。这意味着任何外部插件只要将 section 的 order 设在 0~1000 之间,就能在工具调用之前介入决策流程。
现有插件要么提供固定规则(如 openharness-core-rule 的五条铁律),要么只提供工具(如 dsh-find-plugin 的插件检索能力),没有插件将「先搜索、再决策、最后才造」的开源复用优先原则以可配置的方式注入到 system prompt 中。wjc300000000-beep/dsh-plugin-open-source-first 正是为填补这一空白而设计。
插件定位¶
这是一款工作流插件,通过在 DSH 系统提示词中插入一个高优先级 section(order 50),强制执行「搜索 → 三级评估 → 构造」的开源复用优先工序。插件本身是纯 host 插件,零运行时依赖,不引入任何 client 或 UI 代码。它只在真实 agent 装配时渲染,避免污染非 agent 的 assemble() 调用。
插件维护者为 wjc300000-beep。插件本身不直接实现搜索或构建功能,而是通过收紧条款引导 agent 优先使用 dsh-find-plugin 提供的 find_dsh_plugin 工具进行插件生态检索。
核心功能¶
1. 注入开源复用优先规则¶
插件通过 ctx.systemPrompt.section({ name, order: 50, text }) 注册一个全局唯一的 section,名称默认为 open-source-first:rule。规则正文定义了三步流程:先搜索现有开源方案,再进行三级评估,最后才决定是否从零构建。这条规则会出现在 persona 之后、plan/team 策略和工具引导之前,确保在工具调用前就先执行「搜索」这一前置工序。
2. 自动检测与收紧条款¶
插件会自动检测 dsh-find-plugin 提供的 find_dsh_plugin 工具。如果检测到该工具存在,就会追加一条收紧条款,要求「插件生态检索必须优先使用 find_dsh_plugin」。如果不希望追加此条款,可以在配置中设置 findPluginTool: false。
3. 可审计的注入¶
注入的规则正文存储在 lib/index.js 的 RULE_TEXT 常量中。DSH 会把渲染后的 system prompt 写进会话日志的 system/message 事件,可以通过日志确认规则是否被成功注入。插件也提供了集成测试脚本,可以挂载真实的 @deepseek-ai/dsh-system-prompt 服务进行自检。
安装与启用¶
安装命令(desktop profile)¶
桌面版使用应用自带的 CLI。普通 npm 安装的 dsh 命令会把 desktop 判为「由 Electron 应用独占管理」而拒绝,因此需要使用应用自带 CLI。
# 1. 在插件目录打包
cd dsh-plugin-open-source-first
npm pack # 产出 dsh-plugin-open-source-first-0.1.0.tgz
# 2. 用应用自带 CLI 安装;--profile desktop 即当前桌面配置
DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add ./dsh-plugin-open-source-first-0.1.0.tgz
也可以直接安装目录(pnpm 会建 link: 依赖):
"$DSH" plugin --profile desktop add /absolute/path/to/dsh-plugin-open-source-first
也可以直接从 GitHub 安装(仓库无构建步骤、无运行时依赖):
"$DSH" plugin --profile desktop add github:wjc300000000-beep/dsh-plugin-open-source-first
安装后需要彻底退出应用(⌘Q)再重开,让 host 模块重新加载。
卸载¶
"$DSH" plugin --profile desktop remove dsh-plugin-open-source-first
然后重启应用;必要时在 Plugins 页确认 bundle 已取消选择。
配置¶
bundle patch 里默认已写入 order: 50。要覆盖配置,在 ~/.dsh/profiles/desktop/cordis.patch.yml 追加一个按 id 定位的 patch 层:
- id: open-source-first
config:
enabled: true
order: 50
# sectionName: 'open-source-first:rule'
# findPluginTool: find_dsh_plugin # 强制指定;false 关闭收紧条款
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
设为 false 时不注册任何 section |
order |
50 |
必须为有限数字;改动后需重载 profile |
sectionName |
open-source-first:rule |
全局唯一;与其他插件撞名时改这里 |
findPluginTool |
自动检测 | 字符串:强制使用该工具名;false:不追加收紧条款;不填:检测 ctx.tools.get('find_dsh_plugin', agent) |
典型用法¶
验证注入是否生效¶
在对话框直接问:「系统提示里有没有『开源复用优先原则』这条?请复述三步流程。」模型能复述即注入成功(软约束:注入一定发生,是否严格遵守无法 100% 保证)。
查会话日志¶
DSH 会把渲染后的 system prompt 写进会话日志的 system/message 事件:
S=~/.dsh/sessions/--Users-ether-Documents-deepseek-harness-default-workspace--/<session-id>/session.v4.jsonl.zstd
zstdcat "$S" | grep -c "开源复用优先原则"
跑真实服务集成测试¶
不启动应用、不调用 LLM,直接挂载真实的 @deepseek-ai/dsh-system-prompt 服务做装配:
ELECTRON_RUN_AS_NODE=1 "/Applications/DeepSeek Harness.app/Contents/MacOS/DeepSeek Harness" \
--expose-internals scripts/verify-in-app.mjs
实测输出:
OK live assembly order: deployment:persona-prefix -> open-source-first:rule -> verify:plan-marker -> verify:tool-marker -> deployment:persona-suffix
OK rule length: 1401 chars
适用场景与注意¶
这款插件适合需要在 DSH 中强制执行「先搜索、再决策、最后才造」开发流程的开发者。它特别适合以下场景:
- 需要系统化地降低重复造轮子的团队
- 需要可审计的系统提示词变更流程
- 已经使用或计划使用
dsh-find-plugin进行插件生态检索的场景
插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。插件采用 MIT 许可证,挂载模式参考 MIT 许可的 openharness-core-rule;规则正文为本仓库原创。
生态背景¶
DSH 的理念是「一切皆插件」,社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。本插件与现有的 dsh-find-plugin 互补而非重复:前者提供 find_dsh_plugin 工具用于实时搜 GitHub dsh-plugin topic,后者通过收紧条款引导优先使用该工具。
如果不想装插件,还有两条替代方案:在 ~/.dsh/profiles/desktop/cordis.patch.yml 中覆盖 system-prompt 的 personaPrefix,或写进 $DSH_HOME/AGENTS.md 作为 user 角色的持久上下文。但这两条都不具备 context.agent gating 和可配置的 order,不适合需要硬约束的场景。
总结¶
dsh-plugin-open-source-first 通过在 DSH 系统提示词中插入一个高优先级的 section,将「先搜索、再决策、最后才造」的开源复用优先原则注入到开发流程中。它不提供搜索或构建能力,而是通过收紧条款引导 agent 优先使用 dsh-find-plugin 工具。插件采用纯 host 实现,零运行时依赖,安装后需重开应用才能生效。
插件目录:https://www.skillhub.cn/plugins/wjc300000000-beep/dsh-plugin-open-source-first
GitHub:https://github.com/wjc300000000-beep/dsh-plugin-open-source-first