dsh-plugin-codex-annotate:在 DSH Web UI 里做 Codex 风格的划词引用回复

前言

在 DeepSeek Harness(DSH)里和助手长对话时,常见做法是复制助手某句话、贴回输入框再追问。模型往往不知道你指的是哪一条消息、哪一段正文,上下文也容易变长。Codex 类产品里有一种更直接的路径:在助手回复里选中文字,右键追问,并把出处和原文一并带进下一条用户消息。

下面介绍社区客户端插件 dsh-plugin-codex-annotate(维护者 mar1259)。它给 DSH Web UI(及桌面版所用的同一套客户端)增加「划词引用回复」:可连续暂存多条注释,最后合成一条消息发出;引用部分在气泡里折叠显示。插件归类为客户端,面向 DSH 0.2.1-rc.2 构建,依赖若干尚未承诺稳定的 DOM / React 内部细节。

这是什么

一句话:给 DeepSeek Harness 的 Web UI 提供 Codex 风格的选中文字引用与追问(README 英文描述为 Codex-style selection quote annotations for the DeepSeek Harness Web UI)。

仓库是纯 JS,无构建步骤;client.js 由浏览器直接加载。插件不做网络请求与遥测,引用内容就是普通用户消息文本,fork、回放、搜索、上下文压缩等行为与手动发送一致。

核心功能

以下能力均来自仓库 README,安装前可与源码对照。

  1. 划词右键即用:在助手回复中选中文字后右键,菜单新增「在此回答」(与「复制」并列);未选中文字时不拦截系统菜单。
  2. 精确定位:记录消息 id、轮次、段号、小节标题、字符区间;代码块另记语言与行号。
  3. 先确认、后统一发送:每次确认只暂存一条注释;输入框工具行左侧显示 📎 N 条注释 胶囊,可逐条删除或清空,最后一次性发送。
  4. 气泡内折叠:发出的消息将引用收成 📎 N 条注释 ▾,点击可展开原文,展开后仍可划选复制。
  5. 纯本地:无额外网络请求;发送走宿主输入管线(insertText / setDraft 后 submit()),排队、steer、附件等与手动发送一致。

已知限制(升级 DSH 后可能需要适配):目前仅支持助手回复正文;跨消息选择、工具调用卡片、流式输出中的消息不会出现菜单项;待发送注释仅存内存,刷新页面会清空;助手选区上的右键菜单被替换为「复制」与「在此回答」;长引用会截断(正文 300 字、代码 12 行);确认到发送之间若输入框草稿被改动,发送会中止并提示重试。

安装与启用

要求本机已安装 DSH,且 dsh 在 PATH 中。desktop 是桌面版 profile 名;若你用 Web 版启动,通常将 desktop 换成实际 profile(例如 web)。

从 GitHub 安装:

dsh plugin --profile desktop add github:mar1259/dsh-plugin-codex-annotate

固定到某个 commit,避免仓库后续改动影响现有环境:

dsh plugin --profile desktop add github:mar1259/dsh-plugin-codex-annotate#<commit-sha>

卸载:

dsh plugin --profile desktop remove dsh-plugin-codex-annotate

安装或更新客户端 bundle 后,需要刷新页面(或重启 DSH)才会加载新的 JS。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。客户端插件以当前 dsh 进程权限在本地运行,安装前建议阅读仓库源码与 LICENSE,自行判断是否纳入工作流。

典型用法

  1. 在助手回复中选中一段文字 → 右键 → ❝ 在此回答。
  2. 在弹出输入框写下追问或补充 → 点 确认(或按 Enter)。
  3. 可继续划词、继续确认;工具行左侧出现 📎 N 条注释。
  4. 点胶囊,在浮层中逐条删除、清空,或直接 发送。
  5. 发送后,所有注释与你的回复合成一条用户消息;气泡内以 📎 N 条注释 ▾ 折叠展示。

段落选区发出后的消息形态示例(摘自 README):

> **回复引用** · 助手消息 #4f2a1c · 第 3 轮 · 第 2 段「方案 A」· 字符 12–58
> 「建议把鉴权放到网关层,避免每个服务重复实现。」

那网关自己挂了怎么办?

代码选区示例:

> **回复引用** · 助手消息 #4f2a1c · 第 3 轮 · 代码块 ts · 第 12–18 行
> ```
> for (const x of xs) { ... }
> ```

多条注释按顺序拼接在同一消息里,每条一个引用块加一段回复。

实现要点(便于排障)

插件通过 DSH 客户端扩展点挂载,主要部件如下(摘自 README 表格):

部件 挂载点 作用
右键菜单 + 引用编辑器 + 注释列表 shell.overlay 拦截助手选区上的 contextmenu
待发送胶囊 conversation.input.left 显示 📎 N 条注释
发送桥 conversation.input.overlay 写入输入框并提交
气泡折叠 注入 CSS + DOM 标记 将用户气泡内引用 <blockquote> 折叠为附件条

消息身份从选区节点沿 React fiber 链读取 sessionId / messageId / 轮次,读不到时退回 data-chat-flow-kind 属性。引用内容始终是消息正文的一部分,折叠仅为视觉呈现。

结尾

若你希望在 DSH 里用「选中即引用、多条暂存、一次发送」的方式追问助手,而不是反复复制粘贴,dsh-plugin-codex-annotate 把这条路径做成了客户端插件:出处写进消息、气泡里可折叠查看原文,且不改变 DSH 原有的发送与上下文语义。

  • 目录页:https://www.skillhub.cn/plugins/mar1259/dsh-plugin-codex-annotate
  • GitHub:https://github.com/mar1259/dsh-plugin-codex-annotate
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye