Bundle
dsh-user-prompt
DeepSeek Harness 插件:把一段自定义 Markdown 提示词注入每次模型请求(独立上下文注入行),可在设置页编辑,并支持从 Claude Code / Codex 一键导入规则。
- Source
- Sxuan-Coder
- License
- MIT
- Updated
- Updated 19 hours ago
Readme
# dsh-user-prompt
[](https://www.npmjs.com/package/dsh-user-prompt)
[](https://www.npmjs.com/package/dsh-user-prompt)
[](https://github.com/Sxuan-Coder/dsh-user-prompt/blob/main/LICENSE)
[](https://github.com/deepseek-ai/deepseek-harness)
> ✍️ 给 DeepSeek Harness 加一段**你自己的提示词**:每次对话自动带上,设置页里能改,还能一键导入 Claude Code / Codex 的全局规则。
>
> 🧩 纯增量插件,不替换、不禁用任何官方插件。
## ✨ 是什么
- 📌 **一段常驻提示词** —— 写一次,之后每个会话、每次请求都自动带上,不用重复交代背景和规矩。
- 🖱️ **设置页里直接编辑** —— 注入 DSH 设置 →「插件 → 插件配置」,一张卡片里开关、写 Markdown、保存,**下一次提问就生效**,不用重启。
- 📥 **一键导入** —— 把 `~/.claude/CLAUDE.md`(Claude Code)或 `~/.codex/AGENTS.md`(Codex)读进来,三个工具共用一套规则;导入块有边界标记,重复导入只替换自己那一块,不会越堆越长。
- 👀 **独立一行显示** —— 注入走 DSH 的**上下文通道**,在对话流里单独一行「上下文注入」,可展开查看,能一眼确认规则注没注进去。
- 💾 **导出成文件** —— 一键写到 `~/.dsh/user-prompt.md`,随你用任何编辑器改,再读回来。
- 🌍 **不挑平台** —— Windows / macOS / Linux 同一份代码。
## 🚀 快速安装
```sh
dsh plugin --profile desktop add dsh-user-prompt
```
把 `desktop` 换成你实际在用的 profile 名(`~/.dsh/profiles/` 下有哪个目录就是哪个)。装完**重启 DSH**、刷新界面生效。
<details>
<summary>🌐 从 GitHub 装 / 改源码用</summary>
```sh
# 直接装仓库
dsh plugin --profile desktop add github:Sxuan-Coder/dsh-user-prompt
# 克隆后本地注册(改代码不用重装)
git clone https://github.com/Sxuan-Coder/dsh-user-prompt
dsh plugin --profile desktop add "link:<克隆路径>/dsh-user-prompt"
```
</details>
## 🎯 怎么用
1. 打开 **设置 → 插件 → 插件配置 → 自定义提示词**;
2. 勾上「启用注入」,把规则写进文本框(或点「📥 导入 Claude Code」/「导入 Codex」);
3. 点 **保存** —— 下一次提问即生效。
导入内容会先落到草稿,**确认后点保存才写进设置**;「合并方式」可选「保留手工内容」(默认)或「整段替换」。
💬 斜杠命令:`/user-prompt` 看状态,`/user-prompt path` 看导出文件路径。
## 💡 亮点
| 亮点 | 说明 |
| --- | --- |
| 🧭 与系统提示词分离 | 走上下文通道,注入内容在对话流里单列一行、可展开,与系统提示词互不混淆 |
| ⚡ 保存即生效 | 注入内容是每次组装时求值的,保存后下一次请求就是新内容,不需要重启 |
| 🔁 导入幂等 | 导入块被 `<!-- dsh-user-prompt:sync begin/end -->` 包住,你手写的内容不会被覆盖 |
| 🛡️ 坏内容进不去 | 提示词里的完整 `{{…}}` 会被 DSH 当模板变量导致请求失败,插件在保存时就拒绝 |
| 🪂 失败可降级 | 设置服务、连接服务缺失时自动退回组合配置或只读,不会卡在 pending,也不连累提示词注入 |
| 🎨 与官方界面同族 | 卡片复用官方 `PluginCard` 的语义 token 与骨架,深浅色主题一致 |
## 📦 生效范围
- `standard`(标准模式)、`ptc`、`cordis` 三种 agent preset 以及 plan mode 都会注入;
- `minimal` 模式用的是 `complete: true` 的固定极简提示词,它只覆盖"提示词段落"、不影响上下文通道,因此本插件**同样注入**(该模式本身没有 skill 目录,属它自身设计);
- 提示词作为会话历史保留,中途修改只影响之后的请求。
## ⚙️ 配置项
一般不用手改,设置页里都能调;想写进 profile 配置:
| 字段 | 默认值 | 说明 |
| --- | --- | --- |
| `enabled` | `true` | 总开关,关掉就不注入 |
| `prompt` | `''` | 提示词正文(Markdown) |
| `syncSources` | `[]` | 上次导入选的来源(仅记录) |
| `lastSync` | `''` | 上次导入时间(仅显示) |
| `maxSyncChars` | `200000` | 单次导入的字符上限,超出会截断 |
## 🧑💻 开发
```sh
node test/smoke.test.mjs # 🧪 纯逻辑测试,10 项,不需要安装
node test/client-render.test.mjs # 🖼️ 设置卡片渲染契约
node test/host-integration.mjs # 🔌 用桩 ctx 跑真实 apply() + RPC(需已装进 profile)
```
代码结构:
```
lib/index.js Host 半区:设置注册、上下文注入、RPC、斜杠命令
lib/prompt.js 纯逻辑:路径解析、文件扫描、导入块合并、模板校验
lib/client.js 浏览器半区:设置卡片(预构建 JS,无需构建步骤)
cordis.patch.yml 插件注册补丁
```
## 🙋 排障
**设置里看不到「自定义提示词」卡片** → 确认已**重启 DSH**(不是只刷新页面);再看 Host 日志 `%APPDATA%\DSH Desktop\logs\host\dsh-<日期>.log` 是否有这两行:
```
[I] [dsh-user-prompt] settings namespace "user-prompt" registered
[I] [dsh-user-prompt] RPC route /api/dsh-user-prompt registered
```
**规则没生效** → 卡片里「启用注入」是否勾上、有没有点保存(标题会标「未保存」);对话里展开「上下文注入」看规则在不在;老会话可能保留历史快照,开个**新会话**确认。
**导入按钮找不到文件** → 先确认 `~/.claude/CLAUDE.md` / `~/.codex/AGENTS.md` 存在,点「重新扫描」。
## 📄 License
MIT
Install
dsh plugin --profile web add github:Sxuan-Coder/dsh-user-prompt
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-user-prompt from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.