DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
H

dsh-history-edit

History Edit

DeepSeek Harness 的对话历史编辑:编辑并重新运行你的一条消息、撤回消息、返回较早的回复,或在对话副本中编辑 AI 回复。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:MathieuPortmann/dsh-history-edit#bb8657e29848b43c7f2a678a033a0ee0fbb1e31b
README兼容性版本

兼容性与来源证明

History Edit 以 dsh-history-edit 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/25

版本

0.1.0stable
2026/10/25

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/25
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 memory-context 分类下经过校验的插件。

Experimental Session Search@deepseek-ai/dsh-experimental-session-search为 Agents 提供搜索和读取当前工作区早期会话的工具。Hindsight Coding Agents@vectorize-io/hindsight-coding-agents面向编程代理的仅反思式 Hindsight 长期记忆(可插拔支持多种运行框架:opencode、……),自动在后台导入(无需设置 CLI)。Contextdsh-context用于上下文洞察和管理的 DeepSeek Harness 插件,提供上下文仪表板和上下文命令,帮助了解上下文的构成及其演变过程。Memory Plugin@openviking/dsh-memory-plugin适用于 DeepSeek Harness 的 OpenViking 记忆与上下文套件

README

dsh-history-edit

Conversation history edits for DeepSeek Harness (DSH): change what you said, go back to an earlier point, or fix an AI reply, without losing anything.

Maintenance: best-effort. Issues may go unanswered; forks are welcome.

What it adds to the chat

  • Recall (under each of your messages). Goes back to just before that message and puts its text back in the message box, to resend as is, changed, or with files. Nothing is deleted: when you send the next message, the recalled message and everything after it are set aside.
  • Edit again (on a message that was edited through the rewrite method of the channel below). Opens an edit window; the edited message replaces the old one and the AI answers again. If later messages of yours exist, a copy of the conversation is created instead, so nothing is lost, and the page opens it.
  • Go back here (under an AI reply that has later turns). The next message you send restarts from that reply and the later turns are set aside. A banner says so and has a Cancel button.
  • Edit reply (under an AI reply). Creates a copy of the conversation up to that turn with the reply text changed; the original stays as it was, and the page opens the copy.

"Set aside" means hidden from the AI and from the chat page. The events stay in the session log.

The interface is in English, and in French when the page language is French. To add a language, add a table to STRINGS at the top of client.js (missing keys fall back to English).

Install

dsh plugin --profile web add github:MathieuPortmann/dsh-history-edit

Restart the profile afterwards. Requires Node ^22.19.0 || >=24 and DSH >=0.2.0-rc.2 <0.3.0 (see Compatibility). Once the package is on npm, dsh plugin --profile web add dsh-history-edit works too.

The plugin has no configuration.

How it works

  • The DSH session log is append-only. A message can carry surfaceOp: replace {startSeq, endSeq}: it takes the place of that range of events in what the model sees (the "surface"). Editing and going back both write one such message; nothing is ever removed from the log.
  • lib/history.js holds the reasoning over the log as pure functions (which turn a message is in, which range an edit or a go-back replaces, whether a reply can be edited, how an edited reply event looks). It has no dependency and is covered by tests/.
  • index.js (host side) reads the session through DSH, calls lib/history.js, and writes the result. It serves a small JSON channel at /dsh-history/<method> (list, rewrite, rewind, cancelRewind, editReply, canEdit), protected by DSH's own connection check (Host/Origin fence and browser token).
  • client.js (page side) draws the buttons, the edit window and the banner, and hides the turns that were set aside. It finds the chat rows through the data-chat-flow-kind, data-chat-anchor-key and data-chat-turn attributes of DSH's chat page.

Compatibility

ComponentSupported
Node.js^22.19.0 || >=24.0.0 (engines.node)
DSH>=0.2.0-rc.2 <0.3.0; declared as optional peerDependencies on @deepseek-ai/dsh-llm and @deepseek-ai/schemastery, the only DSH packages the host side imports
PlatformLinux (tested); pure JavaScript, no native addon
Pagethe chat page of DSH's web UI; the buttons depend on its row attributes and may need an update when the page changes

Tested with DSH 0.2.0-rc.2 on Node 22.23 (see Verification).

Permissions and external services

Everything the plugin can touch, and what happens when it fails:

CapabilityWhereUsed forIf it fails
Filesindex.js (realpathSync)resolves the path of the running dsh binary, to find DSH's own packages; the plugin reads and writes no other file itselfthe plugin fails to load
Session logindex.js (through ctx.agents, ctx.sessionController)reads the events of a conversation; appends the edited message, and creates a copy of the conversation (new session) for an edit in a copy or an edited reply. This is the plugin's purposethe operation returns an error code and the page shows a message; the original conversation is not touched
Networknonenothing leaves the computern/a
Commandsnoneno child process, no shelln/a
HTTP routeindex.js (ctx.webServer.register)POST /dsh-history/<method> for the page, behind ctx.connection.admit() (DSH's Host/Origin fence and token); bodies are limited to 1 MiB and must be JSONnon-admitted requests get 401/403; other errors are returned as JSON
Dynamic module loadingindex.js (importFromDsh)loads @deepseek-ai/dsh-llm (to build a user message) and @deepseek-ai/schemastery (the empty config schema) from the DSH installation that runs the plugin (a synchronous require of an ES module fails on Node 22). Nothing is downloaded and no code is evaluated from text (eval / new Function are not used)the plugin fails to load
Hook on the agent loopindex.js (agent/pre-step)when you confirm an edit or a go-back, the next user message is written as a replacement. For that, the plugin wraps session.append of that one conversation until the message is written, then removes the wrapper (also on abort or if the session is closed)the edit is not applied and the error is reported; a go-back that cannot be computed is dropped and the message is sent normally

The plugin adds no tool for the model and no setting.

Verification

Checked on a disposable profile (DSH_HOME pointing at a temporary folder, profile cloned with dsh <name> --from-default-profile web, so the real profile is never touched):

npm pack
dsh plugin --profile t add file:$PWD/dsh-history-edit-0.1.0.tgz   # install
dsh --profile t --no-open --port 3095                              # start: plugin loads, no error
dsh plugin --profile t remove dsh-history-edit                      # uninstall

npm test runs 24 standalone tests of lib/history.js (turn outline, edit plans, go-back ranges, reply cuts, edited replies, contiguity errors) with no DSH installation needed. The module is a JavaScript port of the logic that first ran in a native addon; the port was compared with that addon on about 2.2 million generated and real-log cases with identical results.

Develop

npm test

License

MIT