DeepSeek Harness Plugin

Hua1Q1nG/dsh-prompt-self

Stars ★ 0 Category Memory Added 2026-08-17

Rewrites each request against a learned prompt profile and automatically updates habits, anti-hallucination rules, and learning records.

Install

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:Hua1Q1nG/dsh-prompt-self

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time. Only install sources you trust, and pin a commit (github:owner/repo#sha).

README

个人 Prompt 画像引擎 —— 为 DeepSeek Harness(DSH) 打造的双面客户端插件:在消息级自动改写你的 prompt、自动学习你的书写习惯,并提供可视化的开关与画像查看界面。

起因:希望 AI 能记住「我喜欢怎样的表达、经常省略哪些约束、哪些说法容易让它误解」,并在每次对话前自动补齐 —— 而不是早期那样,每次满意后还得自己敲一句 -fin 手动让 AI 记录(-fin 的来龙去脉见下文「关于 -fin」)。

✨ 特性

  • 消息级自动改写:每次发出新请求,引擎先用 LLM 按你的个人画像改写(消除歧义、补齐习惯性省略的约束、应用防幻觉规则),再把优化版注入给模型执行 —— 模型看到的、执行的始终是优化后的意图。
  • 自动学习画像:每次回合结束后,自动分析「原始请求 + 最终回答」,提炼你的书写习惯、防幻觉规则与优化经验,持续沉淀到画像文件 —— 不再需要 -fin(仍保留 -fin 作为"立即学习并确认"的兼容触发)。
  • 可视化控制(设置 →「Prompt 画像」):
    • 「自动改写优化」「自动学习画像」两个开关,即点即存、实时生效;
    • 画像三栏视图:习惯清单 / 防幻觉规则 / 学习记录(含计数、更新时间、折叠);
    • 中英双语,跟随应用语言。
  • 对话区快捷入口:输入框上方常驻「● Prompt 画像 · 已开启」状态胶囊,点击弹出浮动面板,无需进设置即可查看/切换。
  • 零侵入:不改动 DSH 应用代码,全部通过官方扩展点安装(web profile 补丁 + 用户预设 + skill 文件 + AGENTS.md)。

关于 -fin(旧的手动反馈指令)

-fin 是本插件前身(prompt-self-optimizer 技能)时代留下的手动反馈指令:那时还没有自动学习,用户对某次回答满意,就要自己敲一句 -fin(可理解为「finish —— 这次不错,记下来」),AI 才会把刚才这组「请求 + 回答」学进画像。

它的痛点是:每次都靠人记得敲,漏一次就少学一次,还得多打一句话。于是本插件把这一步自动化——每次回合结束(turn/end)自动分析并学习,日常不再需要 -fin

不过 -fin 仍被保留,作为**「立即学习 + 确认」的兼容触发**:哪怕把「自动学习画像」开关关掉了,敲一句 -fin 也能强制学习最近一次交互,并得到简短确认,老用户沿用旧习惯也不会失效。

🏗 工作原理

你发出 prompt
   │
   ▼
┌──────────────────────────────┐
│ 宿主引擎(Agent 层预设)      │
│  agent/pre-step 钩子          │
│  1. 读画像 profile.md          │
│  2. 读运行时开关 config.json   │
│  3. LLM 按画像改写 prompt      │
│  4. 注入「优化后的请求」消息   │
└──────────────────────────────┘
   │
   ▼
模型以优化版为准执行 ──→ 回合结束(turn/end)
                             │
                             ▼
                  ┌──────────────────────────┐
                  │ 自动学习:LLM 分析         │
                  │ (请求, 输出) → 合并画像    │
                  │ 习惯清单 / 防幻觉规则 / 学习记录 │
                  └──────────────────────────┘

浏览器半边(dsh.client)
  ├─ 设置页「Prompt 画像」:开关 + 画像查看
  └─ 对话输入坞:状态胶囊 + 弹出面板
        ↕ 通过宿主侧 Web 路由读写
  GET  /prompt-self/profile   画像 + 开关状态
  GET/POST /prompt-self/config  开关读写

📁 目录结构

.
├── package.json                     # 插件清单(dsh.bundle + dsh.client 声明与导出)
├── cordis.patch.yml                 # bundle 补丁(安装入口,加载宿主半边)
├── lib/
│   ├── index.js                     # 宿主引擎(改写/学习/路由/开关)
│   └── client.js                    # 浏览器半边(设置页 + 输入坞 UI)
├── install/                         # 安装材料
│   ├── code-prompt-self/            # 用户预设(code 预设副本 + 引擎行)
│   │   ├── agent.cordis.yml
│   │   └── prompt-self/             # 引擎内嵌副本(预设按相对路径加载)
│   ├── web-profile.cordis.patch.yml # 追加到 web profile 补丁层
│   ├── skills/prompt-self-optimizer/SKILL.md   # 画像查看/解释 skill
│   ├── AGENTS.md                    # 用户全局指令(注入每个会话)
│   └── settings.yaml.example        # 默认预设切换示例
└── tests/
    └── engine.test.mjs              # 引擎自测套件(6 组用例,mock LLM)

📦 安装(DSH Desktop,Windows)

约定:<DSH_HOME> 为 DSH 家目录。DSH Desktop 默认为 C:\Users\<你>\AppData\Roaming\dsh-desktop\harness;其余部署通常为 ~/.dsh

0. 插件市场一键安装(推荐)

插件已声明 dsh.bundledsh.client,可直接从 GitHub 源码安装:

dsh plugin --profile web add github:Hua1Q1nG/dsh-prompt-self

这一步装好「宿主层 Web 路由 + 设置页 Prompt 画像 + 对话输入坞」。要启用消息级改写与自动学习引擎, 还需安装用户预设(下面第 3 步)——引擎运行在 Agent 层,与 web profile 半边是双面结构。

1. 复制插件包到 web profile

package.jsoncordis.patch.ymllib/ 复制到 <DSH_HOME>\profiles\node_modules\dsh-prompt-self-client\

这一步让 web profile 的插件行可以通过裸包名 dsh-prompt-self-client 解析到插件,并由模块系统把浏览器半边提供给 Web GUI。

2. 在 web profile 补丁层注册插件行

install/web-profile.cordis.patch.yml 的内容追加到 <DSH_HOME>\profiles\web\cordis.patch.yml

3. 安装用户预设并切换默认

robocopy "install\code-prompt-self" "<DSH_HOME>\.agent-presets\code-prompt-self" /E

再编辑 <DSH_HOME>\settings.yaml,把默认预设切换为 code-prompt-self(见 install/settings.yaml.example)。

引擎行的 name: './prompt-self/lib/index.js' 按预设目录内的内嵌副本相对解析,开箱即用; 若你希望与第 1 步的公共副本共用一份(避免两处维护),可改为 name: '../../profiles/node_modules/dsh-prompt-self-client/lib/index.js', 或直接写绝对路径。

4. 安装 skill 与全局指令(可选但推荐)

robocopy "install\skills\prompt-self-optimizer" "<DSH_HOME>\skills\prompt-self-optimizer" /E
copy install\AGENTS.md "<DSH_HOME>\AGENTS.md"
  • SKILL.md:让模型在用户要求查看/解释画像时知道去哪读、怎么讲;
  • AGENTS.md:用户全局指令,确保模型以插件注入的优化版为准、不自行重复优化、不篡改画像文件。

5. 重启并验证

完全退出并重启 DSH Desktop,然后:

  1. 打开设置 →「Prompt 画像」,确认开关与画像三栏正常显示;
  2. 输入框上方出现「● Prompt 画像 · 已开启」胶囊;
  3. 随便发一条消息,观察回答是否符合画像习惯;回合结束后刷新画像页,「学习记录」应自动新增条目。

🎛 使用

入口 位置 能力
状态胶囊 对话输入框上方 一眼看清引擎状态(绿=全开/黄=部分/灰=暂停),点击弹出面板快速切换
设置页 设置 →「Prompt 画像」 开关 + 画像完整视图 + 刷新
语言 -fin(可选) 立即学习最近一次交互并简短确认(自动学习已覆盖日常场景)
查看画像 对话里说「看看我的画像」 模型经 skill 读取并展示画像

⚙️ 配置

预设引擎行(Agent 层)

- id: prompt-self-client
  name: './prompt-self/lib/index.js'
  config:
    enabled: true            # 主开关(组合级)
    provider: deepseek-official
    model: deepseek-v4-flash # 辅助调用模型(改写/学习,建议用快模型)

完整配置项(均有默认值,均可省略):

默认 说明
enabled true 组合级主开关
forceEngine false 单组合(无预设作用域)profile 下强制启用引擎(测试用)
profilePath <DSH_HOME>/skills/prompt-self-optimizer/profile.md 画像文件路径
recordsPath <DSH_HOME>/skills/prompt-self-optimizer/profile.records.md 学习记录档案路径(默认自动推导,0.2.0)
statePath profilePath + ".state.json" 已学习配对去重状态
configPath profilePath + ".config.json" 运行时开关文件
provider / model deepseek-official / deepseek-v4-flash 辅助 LLM 路由
optimizeMaxTokens 1200 改写输出上限(推理型辅助模型需留出推理余量)
learnMaxTokens 3200 学习输出上限
optimizeTimeoutMs / learnTimeoutMs 30000 / 120000 调用超时
maxPromptChars / maxOutputChars 6000 / 10000 学习样本截断
maxHabits / maxRules / maxRecords 40 / 40 / 30(预设行已设 20 / 18 / 10 画像容量上限
maxProfileChars 6000 改写调用注入画像的总长截断(字符,0.2.0)

运行时开关(可视化 UI 写入)

profile.md.config.json(由开关 UI 自动维护):

{ "optimizeEnabled": true, "learnEnabled": true, "model": "deepseek-v4-flash" }

引擎按 mtime 缓存读取,改动即时生效,无需重启-fin 显式学习不受 learnEnabled 限制。

Web 路由(宿主层)

路由 方法 说明
/prompt-self/profile GET 画像三栏 + 开关状态 + 更新时间
/prompt-self/config GET / POST 运行时开关读取 / 写入(POST body:{optimizeEnabled?, learnEnabled?, model?}

🧪 测试

tests/engine.test.mjs 使用真实 cordis 作用域与调度语义 + mock LLM,覆盖:注入与缓存复用、跨会话作用域隔离、turn/end 自动学习、-fin 强制学习、运行时开关、Web 路由处理器。

运行前提:@deepseek-ai/* 依赖可从测试文件的 node_modules 祖先目录解析(把仓库放进任意 DSH profile 目录,或已安装 DSH 依赖的环境):

cd <DSH_HOME>\profiles
node --test <仓库路径>\tests\engine.test.mjs

❓ FAQ

优化后的 prompt 我看不到? 注入发生在模型侧(消息级改写),原始消息仍按你的原话展示;会话日志中留有 session/prompt-self-optimized 事件可查。若希望模型说明依据,可在画像中追加相关习惯。

为什么某次回答没有按画像优化? 检查:主开关 enabled(预设行)与「自动改写优化」开关;画像为空(无任何习惯/规则/记录)时会跳过改写;辅助模型调用失败时引擎会静默放行原始请求(不阻塞对话)。

想暂停一切? 设置页关掉两个开关,或把预设行的 enabled 改为 false 后重启。

画像文件在哪? <DSH_HOME>/skills/prompt-self-optimizer/profile.md(核心画像:习惯清单 + 防幻觉规则,可手动编辑;学习记录由插件自动维护在同目录 profile.records.md)。

换机器 / 升级 DSH 后? 重新执行安装步骤;若 DSH 自带的 code 预设更新,建议以新版为基准重做 install/code-prompt-self/agent.cordis.yml(只多了末尾的引擎行)。

注意:若在插件管理里执行 pnpm 安装操作,未登记依赖的 dsh-prompt-self-client 目录可能被清理,重新执行第 1 步即可。

📄 许可

MIT

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →