DeepSeek Harness plugin

dsh-inline-comments

Select text in a finished assistant reply to add numbered comments beside the quote; collect drafts and submit the batch through the official composer as one user message.

Jump to install

Source facts

Repository
ruisenbai/dsh-inline-comments
Latest update
Aug 19, 2026
Category
UI Enhancements
GitHub stars
1

Install

Start with a prompt that asks an agent to read the source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to read the page and repository first.

Do not install anything yet. Read this DeepSeek Harness plugin and explain what it does, which files, networks, or credentials it can access, and how to install and remove it.

Plugin page: https://deepseekplugins.org/plugins/ruisenbai/dsh-inline-comments
GitHub: https://github.com/ruisenbai/dsh-inline-comments
Plugin: dsh-inline-comments
Author: ruisenbai
Install command: dsh plugin --profile web add "https://github.com/ruisenbai/dsh-inline-comments/releases/download/v0.1.1/dsh-inline-comments-0.1.1.tgz"

Do not run the install command until I confirm.

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

DSH Inline Comments

包名:dsh-inline-comments

[English](README.en.md)

![CI](https://github.com/ruisenbai/dsh-inline-comments/actions/workflows/ci.yml) ![GitHub Release](https://github.com/ruisenbai/dsh-inline-comments/releases) ![License: MIT](LICENSE) ![Node.js](package.json)

审阅一段很长的 AI 回复时,最麻烦的往往不是提出意见,而是反复复制原文、解释“我说的是哪一句”。DSH Inline Comments 让每条意见直接留在对应句子旁边:选中原文、就地写下注释、攒齐多条意见,再通过 DSH 官方输入框一次发送。

> 交互来源说明:本插件独立、非官方地复刻了 ChatGPT 的正文注释功能,并将这套体验带到 DeepSeek Harness。复制的是使用流程,不是 OpenAI 的源码、素材、API 或品牌;本项目与 OpenAI 无隶属或官方合作关系。

> 兼容性提示:项目要求 DeepSeek Harness 0.1.0-rc.7 或更高的 0.1.x 预发布版本。DSH 仍处于预发布阶段。由于当前没有助手正文内部 Slot,本插件必须覆盖三个内置会话渲染器。升级 DSH 前请阅读[兼容性说明](docs/compatibility.md)。

界面预览

整个流程都留在对话里:选中原文、添加一条或多条编号注释、检查草稿,再从熟悉的 DSH 输入框发送。

![DSH Inline Comments 的编号注释、就地编辑器和输入框草稿列表总览](docs/assets/inline-comments-overview.png)

选中真正想讨论的文字,浏览器原生选区仍然保留,随时可以复制。

![选中的助手回复原文及添加注释、复制操作](docs/assets/inline-comments-selection.png)

趁上下文还在眼前,直接在原文旁写下意见。

![助手回复旁的正文注释编辑器](docs/assets/inline-comments-editor.png)

发送前可以集中检查和调整所有本地草稿。

![带原文引用的正文注释草稿列表](docs/assets/inline-comments-drafts.png)

暂时不想使用注释时,可在通用设置中关闭功能,已有草稿不会丢失。

![已启用的 DSH Inline Comments 设置项](docs/assets/inline-comments-settings.png)

功能

  • 在一条已完成的助手回复内选中文字后,弹出带“添加注释”和“复制”两个按钮的小浮条。蓝色选区保持不消失,随时可以按 Ctrl+C 复制;点击其它地方或按 Esc 浮条消失。
  • 在选区旁直接显示紧凑输入框,右侧只有取消和保存图标。空内容点击外部会关闭;有内容点击外部会保持打开、显示红边并震动,直到选择一个图标操作。
  • 输入停止 400ms 后自动保存编辑中内容并显示本地保存状态;刷新后可恢复,但不会因此变成已提交注释。
  • 将两行注释记录分成“待附加”“确认结果/待重试”“权威队列”“已发送”四类,并复用 DSH 官方按钮、状态点、图标、Tooltip 和 Toast。
  • 点击注释标题栏中的回形针切换附加状态,不展开也不立即发送;已附加时,未发送集合会随编辑、删除和新增实时变化。
  • 官方输入框是唯一任务输入和发送入口。官方文本加注释,或只有注释,都会形成一条任务和一次模型执行。
  • 对齐官方 Web 的助手正文流、思考过程折叠行、停止标记、输入区 Dock、图标按钮尺寸、表单字号、语义颜色、浮层表面和用户消息气泡,同时为“定位原文”保留最初的地图定位图标。
  • 支持撤销最近一次草稿删除、导出当前 Session 恢复 JSON、清空未提交草稿,并显示本地存储占用。
  • 保存完整原文、前后文选择器、助手消息 ID、事件序号、注释 ID 与提交 ID。
  • 对代码记录语言与起止行;对表格记录起止行列。
  • 选区重叠时合并到原有草稿,避免高亮堆叠歧义。
  • 沿用官方输入框的提交策略;注释命令通过一条可幂等重试的排队用户消息入队。
  • 使用不同的 DSH Toast 提示权威队列、持久发送和可重试失败;只有批次仍在已观测队列中时才显示撤回操作。
  • 编号位于选区结束位置所在完整正文行之后;预留防溢出区域并保持升序,同时合并思考过程展开、视口、字体和缩放触发的布局测量。
  • 点击数字编号后,编辑器出现在编号右侧而不是右上角;编辑已有草稿时提供可撤销的删除操作。
  • 点击定位后,将数字编号所在的正文行垂直居中到真实会话或窗口滚动区域,并校正 CSS 缩放。
  • 使用 localStorage 恢复未发送草稿、编辑中内容和不可变重试记录。
  • 用由提交 ID 派生的稳定消息 ID 去重网络中断后的重试。
  • 只有模型明确返回对应注释 ID,状态才从“已发送”变为“已处理”。
  • 浏览器不支持 CSS Custom Highlight API 时,仍保留编号标记和定位能力。

快速开始

从源码构建

git clone https://github.com/ruisenbai/dsh-inline-comments.git
cd dsh-inline-comments
corepack enable
pnpm install
pnpm verify

把构建后的目录安装到 Web Profile:

dsh plugin --profile web add .
dsh web --profile web

打开 DSH Web 页面,在一条已完成回复中选中文字,会出现带“添加注释”和“复制”的小浮条;选区保持可选,Ctrl+C 也能复制。点击“添加注释”打开紧凑输入框,填写意见后点击对号创建草稿,或点击叉号取消。草稿会出现在官方输入框上方;点击注释标题栏中的回形针,在官方输入框中填写可选任务文本,再使用官方 Enter 或发送按钮。官方文本为空时,也可以只发送已附加注释。

安装 GitHub Release

每个 v*.*.* 标签都会构建可安装 Tarball 并附加到 GitHub Release。下载后可以直接安装预构建包,无需执行仓库构建脚本:

gh release download v0.1.0 --repo ruisenbai/dsh-inline-comments --pattern '*.tgz'
dsh plugin --profile web add ./dsh-inline-comments-0.1.0.tgz

如果 Profile 明确允许这个可信包执行 prepare 构建,也可以安装固定标签的 Git 依赖:

dsh plugin --profile web add git+https://github.com/ruisenbai/dsh-inline-comments.git#v0.1.0

设置

通用设置中提供 DSH Inline Comments 开关。开关默认开启,并对当前浏览器 Profile 中的所有 Session 生效。关闭后恢复官方助手与用户消息渲染器,移除选区操作条、数字标记、注释列表、注释操作、隐藏传输视图和输入框附加状态,同时保留输入框中的可见文本。草稿、编辑中内容、Outbox 状态和已提交历史都不会删除;重新开启后会恢复。

开关值保存在当前 Origin 的 localStoragedsh.inline-comments.enabled 中。

任务状态与发送方式

回形针有两种状态。未附加时,注释保持在浏览器本地并继续可编辑;已附加时,未发送集合会实时跟随编辑、删除和新增,直到官方输入框提交。提交事务会冻结一份不可变提交内容,只有在命令成功后才清空官方输入框,之后新增的注释归属于下一次任务。再次点击回形针会取消附加,不改动文本、光标或列表展开状态。

插件不会把传输已接受直接显示成已排队。只有 ConversationSnapshot.queue 包含稳定消息 ID 后才显示“已排队”Toast 和撤回操作;持久化 user/message 出现后改为“已发送”并移除撤回。失败的事务会保留官方输入框内容、附加状态、不可变提交内容和提交 ID,供稍后安全重试。

移除的插件内“整体要求”已有内容,会在第一次成功附加时一次性迁移进官方输入框;只有官方输入框接受附加后,插件存储中的旧值才会被清除。

当前 DSH 命令提交接口不透出官方输入框的图片 ID,因此输入框存在图片时无法附加注释;附加后再添加图片时,混合提交会被拒绝,且不会丢弃图片或注释草稿。

状态定义

  • 草稿:仅在浏览器中,可编辑。
  • 已排队:已进入 DSH Inbox,尚未写入模型历史。
  • 已发送:由持久化的注释 user/message 事件重建。
  • 已处理:模型回复明确携带提交 ID 和注释 ID 后才设置。

插件不会根据等待时长、轮次结束或界面时序推测“已处理”。

配置

Bundle 会插入一个 dsh-inline-comments 行。可在当前 Profile Composition 中覆盖:

配置项默认值作用
commandNameinline_comments_submit浏览器到 Host 的内部传输命令名
maxPayloadBytes524288解码后 JSON 批次上限;超限拒绝,绝不截断
maxAnnotationsPerSubmission100单批注释数上限
warnSelectionChars12000长选区需要额外确认的阈值
locateHistoryPages20定位原文时最多加载的历史页数

Host 与 Client 共享同一个 Cordis 行配置,因此修改 commandName 时两端会保持一致。

隐私与持久化

未发送原文、评论、编辑中内容和重试记录保存在 dsh-inline-comments:v1:<session-id> 对应的 localStorage 中。当前键不存在时,会把 dsh-inline-annotations:v1:<session-id> 下的有效数据复制到当前键并删除旧键。可见存储键继续使用 v1,其中经过校验的数据值采用 storageVersion: 2,旧版值会在读取时迁移。用户通过官方输入框提交前不会发送到 Host 或模型。提交后,原文和评论会进入当前 Session 日志和模型上下文。插件不包含分析、遥测或外部网络客户端。详见[隐私说明](docs/privacy.md)。

模型体验

  • 提交前:不产生 Prompt、Token 或 KV Cache 影响。
  • 提交时:写入一条标准用户消息,包含官方输入框文本、完整批次、稳定 ID、原文、评论和结构坐标。
  • 处理确认:消息要求模型在确实处理后返回一个列出注释 ID 的机器标记。Client 渲染前隐藏标记,但原始模型文本仍可重放。
  • Token:成本随完整选区和评论增长;插件不做静默截断。超出字节限制会在入队前拒绝。
  • KV Cache:Steer 或 Follow-up 与普通用户消息一样改变后续模型上下文。

开发

pnpm typecheck
pnpm lint
pnpm test
pnpm exec playwright install chromium
pnpm test:browser
pnpm test:coverage
pnpm build
pnpm verify:bundle
pnpm publint
pnpm pack

CI 会在 Node 22.19 与 24 上执行类型检查、Lint、单元测试、生产构建、Bundle 验证和 publint。Node 24 任务还会运行真实 Chromium 回归测试并创建包产物。更多信息见[开发指南](docs/development.md)、[架构](docs/architecture.md)和[数据模型](docs/data-model.md)。

已知限制

  • DSH 暂无助手 Markdown 内部 Slot。本插件以优先级 -100 覆盖 assistant-stepusersteering 渲染单元;上游渲染器变化需要重新兼容验证。
  • 未发送草稿只存在当前浏览器,不会跨设备同步;已发送批次可从 Session 日志恢复。
  • 模型确认属于协作协议。模型遗漏或破坏标记时,状态保持“已发送”,不会猜测为“已处理”。
  • 归档任务没有活跃输入框,无法附加注释;请在可编辑任务中创建注释。
  • DSH 命令 Claim 不携带输入框图片 ID,因此图片与正文注释暂不能合并在一次提交中。
  • CSS Custom Highlight 取决于浏览器支持;不支持时仍可使用编号标记和时间线定位。
  • 一次选区必须位于同一条助手回复内,跨消息选区会被拒绝。
  • DSH 暂无私有命令注册标记,因此经过严格校验的内部传输命令可能出现在斜杠命令目录中。

社区

  • [贡献指南](CONTRIBUTING.md)
  • [行为准则](CODE_OF_CONDUCT.md)
  • [安全策略](SECURITY.md)
  • [支持渠道](SUPPORT.md)
  • [发布指南](RELEASING.md)
  • [更新日志](CHANGELOG.md)

项目采用 [MIT License](LICENSE)。