为完整人格预设注入自定义提示文本变量
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/10 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MacilyDots/dsh-prompt-inject该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · skill
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 22 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 注册可配置提示词变量
- 向完整人格预设注入文本块
DSH 插件:注册可配置的提示词变量,让使用 complete:true 人设的智能体预设也能收到注入的文本块。
README
由 DeepSeek 最新模型翻译生成dsh-prompt-inject
给「用了 complete: true 的 DSH agent 预设」注入一段附加提示文本。
为什么需要它
DSH 的系统提示(system prompt)由若干 section 拼装而成,注册入口是 @deepseek-ai/dsh-system-prompt 的 ctx.systemPrompt.section()。
但 assemble() 里有一条硬规则:
sections: completeSection === void 0 ? transformed.sections : [completeSection]
只要有任何一个 section 带 complete: true(典型用法是 persona 独占整个人格,例如 @deepseek-ai/dsh-persona 配 complete: true),最终只剩它一个 section —— 往注册表里再 section() 加多少段,都会被整段丢掉。
还能进得去的入口只剩一个:prompt 变量插值。complete 段虽然不是拼接对象,但它照样过 renderPrompt() 的 interpolate(),所以只要在它的文本里写
{{变量名}},就会被展开成变量 provider 的返回值。
这个插件把「一段文本」注册成一个 prompt 变量,供预设前缀引用。
展开完整文档(README 剩余 1 节)
dsh-prompt-inject
给「用了 complete: true 的 DSH agent 预设」注入一段附加提示文本。
为什么需要它
DSH 的系统提示(system prompt)由若干 section 拼装而成,注册入口是 @deepseek-ai/dsh-system-prompt 的 ctx.systemPrompt.section()。
但 assemble() 里有一条硬规则:
sections: completeSection === void 0 ? transformed.sections : [completeSection]
只要有任何一个 section 带 complete: true(典型用法是 persona 独占整个人格,例如 @deepseek-ai/dsh-persona 配 complete: true),最终只剩它一个 section —— 往注册表里再 section() 加多少段,都会被整段丢掉。
还能进得去的入口只剩一个:prompt 变量插值。complete 段虽然不是拼接对象,但它照样过 renderPrompt() 的 interpolate(),所以只要在它的文本里写
{{变量名}},就会被展开成变量 provider 的返回值。
这个插件把「一段文本」注册成一个 prompt 变量,供预设前缀引用。
插件本身不含任何内容,文本由使用者通过配置提供。
⚠️ 一条必须先知道的规则
interpolate() 对未注册的变量是抛错,不是忽略:
unknown prompt variable "{{x}}" in section "..."
这个错误发生在渲染系统提示的时候 —— 那个预设的整条会话链路都会失败 (对话、回信、任何模型调用都发不出去)。
所以:
- 前缀里写了 {{x}},就必须保证注册 x 的插件处于加载状态;
- 卸载插件之前,先用 tools/disable.mjs 摘掉引用;
- tools/check.mjs 检查这个配对,tools/uninstall.mjs 在还有引用时会拒绝执行。
安装
下文用 %DSH_HOME% 指 DSH 主目录(Windows 默认 %USERPROFILE%\.dsh,其它平台 ~/.dsh),profile 名默认 desktop。
1. 把本仓库放进 profile 的 node_modules:
robocopy "<本仓库路径>" "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-prompt-inject" /E /XD .git
2. 挂进 bundle 列表:
node tools/install.mjs
DSH 的 profile 加载顺序是 package.json 的 dsh.profile.bundles → cordis.patch.yml → --patch overlays(见 profile 目录里 cordis.yml 的注释)。
所以「插件有没有被加载」由 bundles 决定,而不是 cordis.patch.yml。
这一点很关键:cordis.patch.yml 会被 GUI 重写,bundles 列表不会。
3. 给目标预设挂上变量引用:
node tools/enable.mjs --preset preset-<你的预设 id>
4. 复查配对:
node tools/check.mjs
5. 重启 DSH。
配置
在 profile 的 cordis.patch.yml 里覆盖插件配置:
- id: prompt-inject
config:
variable: inject
textFile: '<文本文件的绝对路径>'
| 字段 | 默认 | 说明 |
| variable | inject | 注册的变量名;预设前缀里写 {{<这个名字>}}。必须匹配 [a-z][a-z0-9_]* |
| textFile | '' | 文本文件路径(UTF-8)。改动后按 mtime 自动重载,不必重启 DSH |
| text | '' | 内联文本。textFile 优先;两者都空则不注入任何内容 |
| presets | [] | agent 预设 id 白名单(对应会话创建记录里的 agentPreset)。空 = 不限制 |
| sessions | [] | 会话 id 白名单。空 = 不限制 |
| cwds | [] | 工作目录白名单(会话 header.cwd)。空 = 不限制 |
| enabled | true | 总开关 |
| stateFile | '' | 外部开关文件(JSON)。用于跟随别的插件的开关状态 |
| stateKey | enabled | 在上面那个 JSON 里读哪个键;该键必须严格等于 true 才注入 |
| debug | false | 往 %DSH_HOME%/prompt-inject.log 记每次求值的结果 |
variable 和 presets 是两道独立的闸门:引用决定「谁能拿到」(没写引用的预设根本不会展开这个变量),provider 决定「什么时候返回空」(白名单、开关、外部状态)。
工具
| 脚本 | 作用 |
| tools/check.mjs | 检查配对状态,并列出 profile 里全部变量引用。退出码 1 = 危险 |
| tools/enable.mjs --preset <id> | 往该预设 persona 的 prefix 末尾追加 {{variable}}(幂等) |
| tools/disable.mjs --preset <id> | 摘掉引用(幂等) |
| tools/install.mjs | 挂进 dsh.profile.bundles |
| tools/uninstall.mjs | 从 bundles 移除;还有引用时拒绝执行 |
所有写操作都会先在同目录留一份 .bak-prompt-inject-<时间戳>。加 --dry 可以只看改动不落盘。
卸载
node tools/disable.mjs --preset <preset-id>
node tools/uninstall.mjs
重启 DSH,然后自行删除 node_modules 里的插件目录
已知边界
- 一个 complete 段:assemble() 检测到多个 complete: true 会直接抛 multiple complete prompt sections are active。本插件不注册 section,不参与这个约束。
- 变量名不能撞车:同名变量重复注册会抛 prompt variable "x" is already registered。
和别的插件撞名时换一个 variable 值即可。
- provider 永不抛错:assemble() 同步调用每个 provider,provider 一抛会话就废。
所以插件内部所有读文件、读状态的动作都被 try/catch 兜住,最坏情况返回空串(等于不注入)。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
MacilyDots/dsh-prompt-inject
为完整人格预设注入自定义提示文本变量
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份系统提示词,喂给多个 coding…
★ 931已汉化DSH
73.8
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
两阶段工具锚定预设xiaobright/dsh-anchored-standard
实验性 DeepSeek Harness agent preset…
★ 3,742已汉化DSH
70.1
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7