DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
C

dsh-conversation-digest

Conversation Digest

Review your past conversations to identify issues in your questions and provide directly pasteable rewrites. Generate concise, standard, or rigorous versions with one click, then automatically archive adopted prompts as templates and recommend them by task type.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:LIN-F1SH/dsh-conversation-digest#6074443678b2f000fcd86860a6c9fc4b8cebbeb5
READMECompatibilityVersions
预览示意图

Compatibility and provenance

Conversation Digest is published as dsh-conversation-digest and currently resolves to version 0.1.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/25/2026

Versions

0.1.1stable
10/25/2026

Related plugins

Loading related plugins…

Latest
0.1.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
Weekly downloads
0
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in memory-context.

Experimental Session Search@deepseek-ai/dsh-experimental-session-searchGive Agents tools to search and read earlier sessions from the current workspace.Hindsight Coding Agents@vectorize-io/hindsight-coding-agentsReflect-only Hindsight long-term memory for coding agents (harness-pluggable: opencode, …), with automatic background ingestion (no setup CLI).Contextdsh-contextA DeepSeek Harness plugin for context insight and management, with context dashboard and context command, for understanding how the context is made of, and how it evolves.Memory Plugin@openviking/dsh-memory-pluginOpenViking memory and context bundle for DeepSeek Harness

README

dsh-conversation-digest · 个人提示词效能工作台

预览

预览示意图

示意图,非实拍:实际界面跟随宿主主题,按钮位于输入框右侧。

把「每次都要自己想起来」变成「存在档案里、下次自动补上」。

DeepSeek Harness(DSH)插件:读你的历史对话,指出你提问上的问题,并在你下次发言前把这些毛病补上。

它做什么

你大概遇到过这些:指令没说清楚,来回返工三轮;输出格式交代过一次,下次又忘了交代;工具调用失败,其实是因为你没说前置条件。

复盘历史提问 —— 扫本机会话记录(只取你自己打的字,系统注入的不算),找出指令模糊、反复交代的约束、漏说的前置条件;每条给出出现次数、证据(哪个会话第几条)和一段可直接粘贴的改写草稿。

改写正在写的草稿 —— 输入框右侧 ✨ 优化,按上面找到的问题改写草稿,一次给 简洁 / 标准 / 严谨 三档,可以只复制,也可以直接替换输入框。

把好用的问法存下来 —— 采纳的改写自动归档、按任务类型打标签;下次输入相似内容时,输入框上方提示「你上次补上这条约束后效果更好,要不要带上」。

能力怎么用你得到什么
复盘历史提问设置页「开始复盘」一份改进清单,每条带可直接粘贴的改写草稿
改写当前草稿输入框右侧 ✨ 优化简洁 / 标准 / 严谨 三档,任选一档替换或复制
好问法归档采纳时自动按任务类型打标签的模板,输入时主动推荐

安装

桌面客户端(Electron)

桌面端读的是 desktop profile,dsh plugin 命令行按设计拒绝碰它。让宿主自己装:

请使用内置的 plugin_manager 安装 github:LIN-F1SH/dsh-conversation-digest。

或本地开发:

请用内置 plugin_manager 安装 link:<本目录绝对路径>。

Web(dsh web)

# 跟随 main(会拿到最新提交)
dsh plugin --profile web add github:LIN-F1SH/dsh-conversation-digest

# 钉住某个版本(推荐用于生产)
dsh plugin --profile web add github:LIN-F1SH/dsh-conversation-digest#v0.1.1

⚠️ 宿主代码改动后必须重启应用。插件以 link: 安装时,改 lib/* 不会热重载(ESM 模块缓存);禁用再启用也只会重跑 apply(),不会重载代码。客户端 client/client.js 的改动刷新页面(Ctrl+F5)即可。

⚠️ 不要在 link: 安装之上再试 file: 安装。 link: 在 node_modules/<包名> 建的是指向源码目录的 junction;pnpm 装 file: 时会先"移除旧包目录",它会顺着 junction 把你源码目录里的文件删掉(实测把 .git 元数据掏空了)。要换安装方式请先卸载并手工删掉那个 junction。

怎么用

  1. 先复盘:设置 → 「提示词工作台」→「开始复盘」。它读最近 reviewWindowDays 天内的会话(默认 14 天、最多 8 个),只分析你自己打的字,调一次模型产出改进项。
  2. 再优化:回到对话,在输入框打一句话,点 ✨ 优化。它拿你档案里 active 的改进项来改写,并列出「这次补了哪几条」。
  3. 点「替换输入框」:改写稿写回草稿,同时这条被采纳的提示词自动归档进资产库。
  4. 之后输入时,输入框上方会出现提示:「你上次做类似任务时补上这条约束后效果更好,要不要带上?」

设置

设置 →「提示词工作台」→ 设置 页。改完点「保存」;非法值会被自动收敛(档位过滤、数值夹到区间),不会写坏档案。

项作用范围
启用插件关掉后不再自动推荐,手动优化仍可用开关
生成哪几档优化时生成哪些版本,档位越少越快越省简洁 / 标准 / 严谨,至少留一档
默认版本排在最前并标「推荐」的那一档必须在已选档位内
输入时自动推荐边打字边匹配历史模板与待补约束开关
推荐灵敏度越小越容易触发0–20
复盘回看天数只看最近这么多天的会话1–365
单次复盘会话数越多越慢、越费 token1–20
优化时参考哪些改进项只带任务类型匹配的,或全部生效中matched-only / ll-active
清空档案删除全部改进项与资产(二次确认)—

设置就存在同一份档案的 settings 字段里,接口:POST /pwb/profile {"action":"update-settings","settings":{…}}。

数据与隐私

项说明
档案位置$DSH_HOME/prompt-workbench/profile.json(默认 ~/.dsh)
读取什么本机 ~/.dsh/sessions/**/session.v4.jsonl.zstd,只读
过滤规则只取 user/message 且 source.kind === 'user' —— 系统注入的运行时上下文、审批通知、技能目录一律排除,否则分析结论全是噪声
运行要求Node ≥ 22.15(会话日志是 zstd 压缩的,老版本 Node 没有 zstd API)
联网只有调模型时;读会话与分析不访问任何第三方接口
凭据不存任何 key。模型调用走宿主 llm 服务,用你当前选择的默认模型
诊断文件模型输出解析失败时,原文会落到 $DSH_HOME/prompt-workbench/last-*.txt,仅本机
写接口只接受本机回环来源(127.0.0.1 / localhost / ::1),局域网写入一律 403

HTTP 接口

前缀 /pwb。读接口不限来源,写接口仅本机。

方法路径作用
GET/pwb/ping自检
GET/pwb/health环境体检:llm / 默认模型 / 档案 / 可复盘会话,ready 一句话回答"现在能不能跑复盘"
GET/pwb/profile读档案(改进项 / 资产 / 复盘记录 / 设置)
POST/pwb/profile改设置、改改进项状态、删条目(用 action 区分)
GET/pwb/sessions列出可复盘的时间窗口
POST/pwb/review启动复盘,返回 reviewId(异步,避免 HTTP 超时)
GET/pwb/review?id=轮询复盘进度与结果
POST/pwb/optimize按档案改写草稿,返回 3 个版本(options[],另带兼容字段 rewritten)
POST/pwb/recommend按草稿推荐资产/改进项(纯本地匹配,不调模型)
POST/pwb/assets把一条提示词沉淀进资产库

目录结构

dsh-conversation-digest/
├── package.json          # dsh.bundle.patch + dsh.client(platform: web)
├── cordis.patch.yml      # 挂载声明
├── lib/
│   ├── index.js          # 宿主入口:装配
│   ├── routes.mjs        # /pwb/* 路由与信任边界
│   ├── profile.mjs       # 档案层:原子写 / 损坏保护 / 合并去重
│   ├── sessions.mjs      # 读历史会话:多帧 zstd 解压 + 提问/失败提取
│   └── analyze.mjs       # 提示词工程 + 模型输出校验
├── client/client.js      # 客户端半区(手写、零构建)
├── scripts/              # 三套自检
└── docs/DESIGN.md        # 设计文档:为什么是这些字段

开发

npm run smoke          # 98 项:宿主 15 + 档案 28 + 分析 34 + 会话 9 + 客户端 12

客户端半区不需要浏览器也能验:scripts/smoke-client.mjs 桩掉 window.__ModuleLoader__、document 和 require('react'),直接跑 factory 与 apply(),断言 id 与包名一致、返回 cordis 插件、三个插槽名真实存在、组件可渲染、清理函数可用,并覆盖两种降级:语言包注册抛错时插槽仍注册、缺少 useInput/inputActions 时组件不抛。

重启宿主后,一条命令验证真机闭环:

node scripts/verify-live.mjs          # 默认 http://127.0.0.1:19387
node scripts/verify-live.mjs 3080     # 或指定 dsh web 的端口

它会依次打印环境体检、跑一次真实复盘、列出改进项与改写草稿、试跑一次优化、复核档案。

三个踩过的坑(写这类插件的人会再踩一遍)

  1. 会话文件是 session.v4.jsonl.zstd,而且是多帧拼接的。zlib.zstdDecompressSync 只解第一帧 → 你只会读到一行头部,看起来「这个会话是空的」。必须按魔数 28 B5 2F FD 逐帧解(见 lib/sessions.mjs)。
  2. user/message 里大部分不是你打的字。实测 300 条里只有 62 条 source.kind === 'user';其余是 ptc-mode、runtime-context、skill-catalog 等系统注入。不过滤就会把系统模板当成你的提问习惯来分析。
  3. tool/result 的 error 字段只覆盖约 1/3 的真实失败(32/1195)。真实的内层工具失败在 tool/ptc-dispatch,另外还要叠加文本启发式([exit code: N]、STDERR:、ToolCallError…)。

验证记录

在 9 个真实会话(约 9 天、8.4 MB 压缩日志)上的实测:

环节结果
复盘8 个会话 / 60 条真人提问 / 98 次工具失败 → 5 条改进项,每条带证据与改写草稿
重复复盘第二批结果 新增 0 / 合并 5,次数累加(8/8/6/6/6),标题更新为更具体的措辞 —— 不会越跑越脏
优化引用档案中全部 active 改进项改写草稿,列出本次补了哪几条,并给出任务分类与标签
资产采纳后归档、按任务类型打标签;相似草稿能命中推荐

这套数字来自 scripts/verify-live.mjs 的真实输出,脚本可随时重跑。

token 成本(实测,不是估算)

powershell node scripts/measure-tokens.mjs

它在你的真实会话上量四件事:复盘实际要发出去的材料、模型自报的历史 usage、重复提交的两种成因、以及单条提示词的增量。

本机 8 个会话 / 60 条真人提问的实测结果:

项数字含义
复盘实际发送7,982 字符 ≈ 5.0 千 tokens只取真人提问 + 失败聚合摘要
事件全文30.7 MB ≈ 2000 万 tokens若把整段对话直接塞给模型
压缩比≈ 4000 : 1这是插件最硬的省 token 点
历史总消耗input 2.30M + output 1.34M模型自报
缓存命中读取179.5M每次请求重读上下文前缀,按缓存价计费
失败后重发6 次上一轮 error/borted(网络/服务故障)
真·返工1 次 / 60 轮 ≈ 0.1% tokens上一轮正常完成却要重说

结论要老实说:

  • 省 token 的地方在复盘输入的压缩(4000:1),以及增量复盘:已经复盘过、文件之后没变的会话不再重发,重复点「开始复盘」几乎零成本(要强制重跑传 {"force":true})。
  • 复盘材料从早期的 16,209 字符压到 7,982 字符(-51%):失败记录从"逐条贴原文"改成按 工具+错误码 聚合(曾占材料的 71%),连续重复的提问折叠成「同一句 ×N」,只说过一两句的会话直接跳过。
  • 单条提示词会变长(加约束,通常 +30200 字 ≈ +20130 tokens),这是明面上的成本;而且它进入上下文后每一步都会被重读,所以有放大效应。
  • 「更好的提示词能否省 token」取决于返工是否减少。在你这批数据里,真·返工只占 0.1% —— 你 9 天里的重复提交,6 次是 provider 502/传输错误造成的,那类 token 靠改提示词省不掉。
  • 换句话说:这个插件的主要价值不是省 token,而是让问题有据可查、让约束不再漏。如果你的返工主要来自提问含糊,收益会明显;如果主要来自网络与模型能力,收益有限。

每次复盘/优化的响应里都带 okens 字段(模型自报的 input/output/cacheRead),可以在界面上核对真实开销。

DSH 升级与版本兼容

插件架在若干宿主契约上。下表是已知耦合点、升级后可能出现的症状、以及现在的兜底——不是保证永不坏,而是坏的时候你能一眼定位。

契约用在哪变了会怎样现在的兜底
会话日志 session[.vN].jsonl[.zstd]复盘读取新格式读不到 → 报「时间窗口内没有可复盘的会话」按版本发现:取最高版本、压缩与否看魔数而不信后缀、未压缩也能读
多帧 zstd 拼接同上只读到头部 → 会话看起来「是空的」按 28 B5 2F FD 逐帧解压
user/message.source.kind复盘过滤系统注入被当成提问 → 结论全是噪声只认 kind === 'user',未知 kind 一律排除
tool/ptc-dispatch、tool/result.error失败检测失败数被低估结构化字段 + 文本启发式双通道
llm.stream()、agentDefaultModel.currentSelection()复盘 / 优化调用抛错服务缺失时给明确提示,不崩;没选模型也提示
webServer.register()全部 API路由全 404注入失败只报错,不拖垮宿主
__ModuleLoader__.load、dsh.client界面三处插槽界面完全不出现bundle 内每步注册独立 try/catch,单点失败只少一块
插槽名 conversation.input.right 等界面位置按钮不出现注册失败降级,不影响另外两块
useInput / inputActions读写草稿按钮变灰 / 插入无效类型守卫;缺失时按钮禁用而不报错

升级后先看体检:

curl http://127.0.0.1:19387/pwb/health

它会报 sessions.formats(实际读到的格式,如 ["v4.zstd"])、compat.zstd、compat.services(llm / agentDefaultModel / webServer 是否在位)、profile.exists、ready。ready: false 就说明某条链路断了,再按上表定位。

已知限制

  • 复盘一次只发一个模型请求,材料已压缩(只取真人提问 + 失败摘要),但仍受窗口大小限制;输出被截断时插件会明确报 TRUNCATED 并重试一次,而不是静默失败。
  • 复盘的问题合并靠三条判据:模型复用 id(提示词里会要求)→ 标题归一化后完全相同 → 引用了同一条证据(同 session 同 seq)。纯字符串相似度阈值定得很高(0.85),因为「问题 1 / 问题 2」这种只差一个数字的标题会被误并。
  • 资产推荐用字符 bigram 相似度做本地匹配,不做语义检索——够用、零成本、可预测。
  • 会话压缩(compaction)后,被折叠的早期事件仍在日志里,本插件按时间顺序读取,不区分「模型当前可见」的 surface。
  • 只支持 session.v4(并按最高版本发现);将来格式升到 v5,解析层会忽略未知事件类型、不会崩,但新字段的语义需要人工适配。

许可

MIT © 2026 LIN-F1SH