← 返回列表
✓ 可直接安装
DSHDeepSeek HarnessWeb GUI…
自动检查通过:npm 包已发布且 engines 声明满足基线;该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/11 · 已提供中文文档
综合分
32.9
GitHub 分
32.9
用户评分
—
★ Stars
5
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-plugin-edit-messagenpm 包 dsh-plugin-edit-message 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-plugin-edit-message @ 0.1.5
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 18:56:39
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-api-workspace-controller@deepseek-ai/dsh-attachment@deepseek-ai/dsh-brand@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-chat@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-session用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-plugin-edit-message
English · 中文
DSH(DeepSeek Harness)Web GUI 插件:智能体回复被中断后,一键把最后一条用户消息文本载回输入框,改完直接发送——不用再重新打一遍。
为什么做这个
发出一条消息、停止回复、想稍微改一下再重新问,目前只能把整段提示词重新打一遍。本插件在输入框工具行加了一个「编辑上一条消息」按钮:点击后把最后一条用户消息的文本原样载入输入框并聚焦,直接修改、发送即可。
它是纯客户端插件——会话日志保持只追加(append-only)。发送编辑后的文本会作为新的一轮追加(原消息和被中断的回复仍保留在记录里)。它完全不触碰 host、会话日志或 agent 循环。
安装
插件以 dsh.bundle + dsh.client 包形式发布,适用于任何能加载第三方 bundle 的 DSH 环境(源码 dsh web、DSH Desktop、自定义 profile)。
从 npm 安装(已发布,推荐)
dsh plugin --profile web add dsh-plugin-edit-message
装完后完全退出并重新打开 GUI——客户端插件 bundle 在启动时注册。
DSH Desktop 用户:Desktop 的 DSH_HOME 位于 %APPDATA%\dsh-desktop\harness,需显式指定:
DSH_HOME="${APPDATA}/dsh-desktop/harness" \
dsh plugin --profile web add dsh-plugin-edit-message
然后退出重开 DSH Desktop。
从 GitHub 或本地源码安装(未发布版本)
GitHub 仓库
dsh plugin --profile web add git+https://github.com/WyxBUPT-22/dsh-plugin-edit-message.git
本地 checkout(先 pnpm install && pnpm run build)
dsh plugin --profile web add /path/to/dsh-plugin-edit-message
从源码构建安装
仓库完全自包含:devDependencies 从 npm 解析官方 harness 客户端包,不需要任何 deepseek-harness checkout。
pnpm install # 从 npm 拉取官方客户端包
pnpm run build # 产出 lib/index.js + lib/client.js + lib/types
dsh plugin --profile add /path/to/dsh-plugin-edit-message
dsh --profile
卸载:dsh plugin --profile remove dsh-plugin-edit-message。dsh plugin 的完整用法参见官方 checkout 的 docs/user/develop/basic/publish.md。
工作原理
- 注册一个客户端插件(dsh.client manifest,platform: web),向官方 conversation.input.left(输入框工具行左侧,一个文档化的多插件 list 插槽)贡献一个条目——官方代码零改动。
- 按钮仅在以下条件同时成立时显示:会话空闲、存在最后一条用户/steering 消息、且该消息为纯文本(草稿图片是浏览器 File 引用,无法从持久化日志中复活,因此含图片的消息保持仅复制)。
- 点击行为:inputActions.setDraft(text) 恢复文本并聚焦输入框。当部署的运行时暴露 inputActions.focus 时优先使用它,否则聚焦可编辑表面——harness 0.1.2+ 上是 [data-composer-input](Lexical 驱动的 contenteditable),旧版 composer 作为最后回退。
- 卸载插件(dsh plugin remove dsh-plugin-edit-message)后,功能完全消失,工具行恢复官方原样。
兼容性
本插件跟随 harness 客户端契约,而该契约在 0.1.2 这条线上被改了两次:
1. 0.1.2-alpha 把单体包 @deepseek-ai/dsh-client-runtime 拆成
dsh-client-store 加 dsh-client-ui-* 一族,同时会话记录从
SessionSnapshot(其 chat 字段已不存在)搬到了按 Conversation binding
发布的 Chat target 上,需经 useChat 标准 hook 读取。
2. 0.1.2-rc.1 不再给输入框工具行传 InputZone owner props:宿主现在调用的是
renderSlot("conversation.input.left", {})。因此会话生命周期改从 useSession
标准 hook 读取 —— 该 hook 由 ui-session 提供,0.1.2 全系每个 session 作用域
插槽都有。
| 插件版本 | Harness / DSH Desktop | 读取方式 |
|---|---|---|
| 0.1.5+ | 0.1.2-alpha.1 … 0.1.2-rc.1(Desktop 0.7.x / 0.8.x) | useChat + useSession,不依赖任何 owner props |
| 0.1.4 | 0.1.2-alpha.1 … 0.1.2-alpha.5(Desktop 0.7.x) | useChat + InputZone owner prop |
| ≤ 0.1.3 | 0.1.0-rc.x(Desktop ≤ 0.5.0) | session.chat |
两次破坏对旧版本都是静默失败 —— 按钮直接不出现,控制台里是这样:
slot entry crashed in 'conversation.input.left':
TypeError: Cannot read properties of undefined (reading 'order') // ≤ 0.1.3 跑在 0.1.2-alpha
TypeError: Cannot read properties of undefined (reading 'running') // 0.1.4 跑在 0.1.2-rc.1
与"原处替换编辑"(Codex 风格)的差异
在原处替换并截断日志尾部属于更大的设计(日志截断语义、压缩检查点、会话日志格式、双 SDK 投影),有意不在此范围。本插件提供交互价值——编辑文本、重新发送——且零副作用。
开发
pnpm run typecheck # tsc --noEmit(strict)
pnpm run test # vitest(逻辑矩阵 + 组件行为)
pnpm run build # tsdown → lib/client.js + 类型声明
pnpm publish 会先自动执行 prepublishOnly(typecheck + test + build)。
License
MIT
友情链接
https://linux.do扫码进群