在对话里划选任意一段文字即可就地批注:原文高亮并带编号角标,发送时把原文、出处(谁说的、第几轮)和你的批注一起折进消息,模型能对上每一句指代。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:HansHuang2683/dsh-quote-annotate
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness Web 插件:划选 → 悬浮批注 → 原文高亮 + 编号角标 → 输入框上方一条「N 条批注」, 发送时把每条批注(原文 + 你的话)自动折叠进消息。手感对齐 Codex / GitHub PR review。
怎么用
在任意消息里划选一段文字 → 选区上方浮出 「批注」 按钮(拖动过程中不出现,松手才出现)
点**「批注」** → 选区旁弹出悬浮批注框(原文预览 + 输入框 + Cancel / Save;
⌘/Ctrl+Enter保存,Esc取消)点 Save 后:
- 原文出现浅蓝高亮,行尾出现编号角标 ①(点角标可再次编辑)
- 输入框正上方出现与输入框等宽的一条 「1 条批注 · 发送时会自动附在消息里」,点开可看列表:编辑 ✎ / 定位原文 ↗ / 删除 × / 清空
重复第 1 步,可以有第 2、3… 条批注,编号各自独立
发送时(Enter 或点发送按钮)自动把批注折叠成正文,例如:
我的问题…… 【我的批注】 批注 1|AI 回复 · 第 3 轮 原文: XX 参数目前写的是 0.5 批注:这个应该是 0.7,因为……输入框里始终只放你自己写的字,预览干净;发出去的消息里批注逐条带出处(谁说的 + 第几轮), 模型能准确对上是哪一句话。
兜底:批注条右侧的「插入正文」永远可用 —— 把批注块直接写进输入框,再正常发送,不会丢。
实现要点
- 只用官方 seam:
shell.overlay(工具条 / 批注框 / 角标 / 批注条)、conversation.input.overlay(一个渲染 null 的「输入桥」,只把inputActions与当前草稿暴露给共享 bridge)、标准 propsuseInput/inputActions(setDraft/submit)。 - 颜色只用主题 token,但填充色刻意用
--dsw-static-deepseek-500:--dsw-alias-brand-primary在深色主题里是「白色」,拿它当填充色会出现「白底白字」。 - 浅色 / 深色两套调色板:优先读宿主
theme服务的getTheme().active.colorScheme, 并在theme/change时重绘;服务不可用时退化为「读 body 上--dsw-alias-bg-base的亮度」,最后才是prefers-color-scheme。 所有自带控件(工具条 / 批注框 / 角标 / 批注条)都用插件自己的--dqa-*变量,两套主题各一份值。 - 原文高亮用 CSS Custom Highlight API(
CSS.highlights),不包裹、不修改别人的 DOM; 角标是悬浮层里的绝对定位元素,靠Range.getClientRects()定位,滚动 / 缩放 / 流式渲染时自动重算。 - 批注条不再依赖
conversation.input.dock:该槽位在热更新后出现过「注册还在但active: false」的失效挂载, 导致悬浮层有批注、输入框那半边却是空的。现在批注条渲染在根级shell.overlay里,用[data-composer-card]的位置把自己贴在输入框正上方并按输入框宽度对齐;发送拦截在apply()时做模块级安装(document 捕获监听), 不依赖任何组件是否挂载。 - 共享状态(批注列表 / bridge / 折叠锁)挂在
window.__DSH_QUOTE_ANNOTATE_SHARED__,避免 HMR 换包后 两半来自不同模块世代时各持一份,互相看不见。 - 定位原文优先用「行内文本偏移」(创建时算好),失效时回退到首行文本搜索。
- 发送折叠:捕获阶段监听 Enter(排除 Shift / IME / 组合键)与「输入框卡片里最右侧的启用按钮」,
先
setDraft(正文 + 批注块),轮询确认草稿已发布,再调用inputActions.submit()提交 —— 不赌原生发送的时序。 - 草稿为空但有批注时,写入一个零宽占位符让原生发送按钮可用(发送时剔除)。
目录
| 文件 | 作用 |
|---|---|
client.js |
全部前端逻辑 |
index.js |
Host 半边,故意留空,只负责让宿主挂载 dsh.client 入口 |
cordis.patch.yml |
bundle patch,插入 quote-annotate 一行 |
locale/{zh,en}.json |
插件管理页显示的名称与描述 |
icon.svg |
插件图标 |
安装
需要 DeepSeek Harness 0.2.1-rc.3 或更新(Web / 桌面端 Web UI)。
用 plugin_manager 工具(或插件页 →「添加插件」):
action: install_bundle
target: https://github.com/HansHuang2683/dsh-quote-annotate
也可以指向本地目录,或指向打包好的 tarball:
pnpm pack --pack-destination dist
# 然后 install_bundle, target: <绝对路径>/dist/dsh-quote-annotate-1.0.0.tgz
安装后刷新页面(桌面端 Ctrl+R,或彻底退出重开)。插件管理页里会显示「划选引用与批注」。
安装/更新时如果用的是本地目录软链,注意:Windows 上目录 junction 跨盘/含中文路径时 pnpm 可能报
UNKNOWN: unknown error,此时改用 tarball 方式安装即可。
- 卸载:
plugin_manager→remove_bundle→dsh-quote-annotate - 禁用:
plugin_manager→set_bundle→enabled: false
已知限制
- 不给输入框自动聚焦:宿主没有公开的「聚焦并保留光标」seam,保存批注后需要自己点一下输入框再打字。
- 角标 / 高亮依赖 Transcript 的
data-chat-flow-key/data-chat-turn属性;将来宿主改 DOM 约定时, 高亮会退化为「只在批注条里可见」,但发送折叠不受影响(它只用文本)。 - 超长引用:发送时每条原文截断到 1200 字;批注列表里保留全文。
- 发送折叠靠捕获阶段的 Enter / 按钮识别;如果将来宿主改了按钮结构,Enter 路径仍然有效, 另外批注条上的「插入正文」是永远可用的手动兜底。
- 仅 Web / 桌面端 Web UI,不支持 TUI。
- 插件更新后如果批注条消失或发送没带批注:彻底退出并重开一次(宿主热更新偶尔会留下半挂载的 bundle)。
许可证
MIT © 2026 HansHuang2683
- 仅 Web / 桌面端 Web UI,不支持 TUI。
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-task-board★ 9925
侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
zhu1090093659/dsh-web#packages/dsh-web-all★ 9925
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 6712
右下角常驻的小鲸鱼挂件:余额、今日已用与每轮对话消耗(含峰谷价),余额预警与今日预算的泡泡内容都可编辑;泡泡点击序列模块化自定义,支持并列加权 A/B、随机台词与随机图片;内置 30+ 厂商模板(OpenAI / OpenRouter / Kimi / 硅基流动 / 方舟 / 智谱 / MiniMax 等),按模型查余额与订阅额度;另有任务结束音效、导入音频、自定义角色与资源管理。数据全在本机,无遥测。
ccch1mneyyy/dsh-TUI★ 6538
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/DSH-better-sidebar★ 4808
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
Devin-AXIS/deepseek-design#deepseek-idesign★ 1672
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。