在原生方案文档上逐段添加评论并一键提交反馈
29.2/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yaodongH/dsh-doc-review该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 37 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/4) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 5 处,展示前 5 条)
- 读取本地文件demo-zh.mjs:11
const BASE = `http://127.0.0.1:3080/?token=${/token=([A-Za-z0-9_-]+)/.exec(readFileSync('/home/huangyaodong/.dsh/dsh-web.log', 'utf8'))?.[1] ?? ''}` - 写入本地文件demo-zh.mjs:19
mkdirSync(SHOT_DIR, { recursive: true }) - 读取本地文件e2e-comments.mjs:24
const BASE = `http://127.0.0.1:3080/?token=${/token=([A-Za-z0-9_-]+)/.exec(readFileSync(LOG, 'utf8'))?.[1] ?? ''}` - 读取本地文件e2e-plan.mjs:16
?? `http://127.0.0.1:3080/?token=${/token=([A-Za-z0-9_-]+)/.exec(readFileSync('/home/huangyaodong/.dsh/dsh-web.log', 'utf8'))?.[1] ?? ''}` - 读取本地文件smoke.mjs:8
const BASE = `http://127.0.0.1:3080/?token=${/token=([A-Za-z0-9_-]+)/.exec(readFileSync(LOG, 'utf8'))?.[1] ?? ''}`
扫描于 2026/10/31(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-resources@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-session@deepseek-ai/dsh-client-ui-sidebar-right@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-user-questions给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 逐段添加评论
- 一键提交反馈
README
由 DeepSeek 最新模型翻译生成dsh-doc-review
DeepSeek Harness Web 客户端插件——在原生 plan-review 页面上叠加行内评论能力:审阅文档仍由原生渲染,评论以原生风格卡片骑在渲染流里。
问题背景
DSH 0.1.7 起,plan-review 请求由原生流程接管:紧凑决策卡片(同意执行 / 要求修改)负责应答,ui-plan 把完整文档自动打开到右侧边栏,正文用原生 MarkdownText 渲染。这个流程已经很好,唯独不能在文档上写评论——想对方案某一段提意见,只能去聊天里手打「对于第 N 行…」。
dsh-doc-review 0.2.0 不再自建审阅页面(0.1.x 的全屏弹窗已删除)。它通过扩展点接管原生审阅的侧边栏文档 tab,在原生渲染之上叠加行内评论:
- 文档渲染完全是原生 MarkdownText——标题、表格、代码高亮、KaTeX 公式全部保真;没有评论时正文就是原生预览本身;
- 评论锚定在块(mdast 顶层节点)上,以原生风格卡片插在渲染流的段缝里;
- 聚合反馈经原生决策载体送出,应答编码与内置流程逐字一致。
效果展示
决策卡片 + 未提交评论徽标
原生卡片保持「同意执行 / 要求修改」不变;插件的徽标「N 条未提交评论」插在卡片操作条里,提醒还有意见没送出。
展开完整文档(README 剩余 1 节)
dsh-doc-review
DeepSeek Harness Web 客户端插件——在原生 plan-review 页面上叠加行内评论能力:审阅文档仍由原生渲染,评论以原生风格卡片骑在渲染流里。
问题背景
DSH 0.1.7 起,plan-review 请求由原生流程接管:紧凑决策卡片(同意执行 / 要求修改)负责应答,ui-plan 把完整文档自动打开到右侧边栏,正文用原生 MarkdownText 渲染。这个流程已经很好,唯独不能在文档上写评论——想对方案某一段提意见,只能去聊天里手打「对于第 N 行…」。
dsh-doc-review 0.2.0 不再自建审阅页面(0.1.x 的全屏弹窗已删除)。它通过扩展点接管原生审阅的侧边栏文档 tab,在原生渲染之上叠加行内评论:
- 文档渲染完全是原生 MarkdownText——标题、表格、代码高亮、KaTeX 公式全部保真;没有评论时正文就是原生预览本身;
- 评论锚定在块(mdast 顶层节点)上,以原生风格卡片插在渲染流的段缝里;
- 聚合反馈经原生决策载体送出,应答编码与内置流程逐字一致。
效果展示
决策卡片 + 未提交评论徽标
原生卡片保持「同意执行 / 要求修改」不变;插件的徽标「N 条未提交评论」插在卡片操作条里,提醒还有意见没送出。
整页视图
侧边栏审阅 tab:原生渲染 + 段缝评论
文档全保真渲染(表格、行内代码、列表均为原生排版),评论卡锚定第 4 行,插在段缝里;页脚为「1 条评论 · 清空评论 · 提交评论」。
审阅 tab
悬浮添加入口
hover 任意渲染块,块右上角浮出「+」;或选中文本后右键,直接在该块后插入评论编辑器。
悬浮入口
适用场景
接管两种审阅路径的侧边栏文档 tab(决策卡片仍归原生):
| 来源 | 文档地址 | 触发 |
| 标准 plan-mode | dsh-resource://plan/(logged plan) | /plan 后 exit_plan_mode 提交 |
| 自适应流水线等自定义 ask | dsh-resource://plan-review/(临时预览) | 携带 plan-review 意图的 ask_user_question |
功能特性
行内评论(块锚点)
- 添加:hover 任意渲染块 → 右上角「+」;或选中文本右键直接锚定。
- 编辑 / 删除:评论卡上的 ✎ / 🗑;编辑态预填原文。
- 锚点:块级——段落、标题、列表项独立可评;表格、代码围栏、公式整块吸附(评论卡显示在整块后,反馈仍精确引用块内起始行与原文)。
- 持久化:评论存入共享 store(引擎持久化,dsh-doc-review:comments.<session>),刷新 / 重挂载不丢;提交成功后清除。每条评论带文档内容哈希护栏,防止 wait key 复用串味。
提交反馈
- 聚合:按锚点行升序逐条聚合为 对于第N行{块原文},我认为应{评论},经载体 answer 以 { selected: [], custom } 送出——宿主视为「继续修改 + 反馈」,与内置语义一致。
- 徽标:评论未提交时,决策卡片上显示「N 条未提交评论」;徽标本身就是提交按钮(侧边栏关闭时也能提交)。原生批准按钮常驻——批准会丢弃未提交的评论(设计取舍,见「已知限制」)。
- 一次性锁:提交后全部操作禁用直到宿主应答落定;失败自动重臂并显示原因。
只读回退
载体不匹配(已答复、被更高优先级交互抢占、刷新后临时预览失效)时,tab 回退为原生只读预览:完整渲染、无评论入口。插件卸载后,原生预览自动恢复接管。
技术方案概览
扩展点(零 DSH 源码改动)
sidebarRightTabs.register({ kind: 'plan-review', patterns: [plan/, plan-review/],
priority: 'extension' }) ← 接管 review 文档 tab
slots.register('sidebar.right.pane.tab', key: 'dsh-doc-review') ← tab 正文(分段渲染 body)
slots.register('sidebar.right.pane.tab.title', key) ← tab 标题
slots.register('conversation.plan-review.actions', id) ← 决策卡片徽标 + 提交入口
- extension 接管:侧边栏 tab 注册表的官方协议——extension 优先于 builtin,canOpen 仍生效;插件卸载后 builtin 恢复。原生 PlanReviewOpen 的自动打开无需改动,路由直接落到插件的 tab。
- 载体获取:不占 conversation.composer 链,通过全局标准 hook useSessionStatus 读取会话生效的待答交互,用 tab 地址里的 requestKey / callId 精确匹配;纯收窄谓词复用 0.1.x 的 documentReviewOf()。
- 应答:PendingQuestion.answer({ answers: [{ id, selected: [], custom }] }),与 0.1.x 逐字一致。
分段渲染(评论骑在原生渲染上)
blocks.ts 用与原生渲染器同一套 OSS mdast 栈(mdast-util-from-markdown + micromark gfm/math,版本对齐)解析文档顶层块,每个块带精确行号区间与源文本。渲染按「锚点切段」:
- 携带评论(或打开中的草稿)的块结束其所在段,每段一个原生 MarkdownText 实例;评论卡与行内编辑器作为普通 React 元素插在段缝。
- 无评论 = 单段 = 原生预览本身,零额外实例。
- 段内块映射走「渲染后 DOM 顶层元素 ↔ mdast 块」索引对齐(跳过 definition/脚注区/html 文本节点),段落与标题再做归一化文本自校验;校验不过的段降级为「无添加入口」,渲染永远不受影响(插件的解析只决定锚点,渲染始终是原生的)。
共享存储
review-store.ts 声明一个 store 句柄,同时挂到 tab 正文与卡片徽标两个 session 作用域注册上(框架按 handle × scope 缓存单实例)——两个表面读写同一份实时评论状态,引擎持久化负责跨刷新。
已知限制
- 原生批准常驻:评论存在时不能隐藏批准按钮(卡片页脚无扩展点),以徽标提示;批准会丢弃未提交评论。
- 跨段引用 / 脚注:评论把「引用/脚注的使用点」与「定义」分隔到不同 MarkdownText 实例后,使用端回退为字面文本(计划文档中少见;检测与浮层回退留作后续)。
- 段缝样式:每个 MarkdownText 实例将首末子元素 margin 归零,插件在缝上补间距;h4+列表 的 8px 邻接收紧无法跨实例复现,影响可忽略。
- \[…\] TeX 定界符:DSH 本地的 mathCompatibility 扩展不可复用,此类块的块边界可能与渲染端分歧——自校验捕获后该块降级为不可评论,渲染不受影响。
- 列表项评论:锚点与引用精确到列表项,评论卡显示在整段列表之后(有序列表拆段会重新编号,故不拆)。
- 版本耦合:peer 依赖锁定 0.1.7-alpha.2 的原生 plan-review 流(与 0.1.2 相同策略)。
文件结构
dsh-doc-review/
├── package.json / dsh.plugin.json / cordis.patch.yml
├── tsdown.config.ts / vitest.config.ts
├── src/
│ ├── index.ts # node half(空 apply) │ ├── invariant.ts # 包级不变量伴生 │ └── client/ │ ├── index.tsx # 浏览器入口:tab 类型 + 三个槽注册 + 共享 store │ ├── claim.ts # 载体收窄谓词(documentReviewOf) │ ├── review-address.ts # plan / plan-review 地址解析 │ ├── blocks.ts # mdast 块模型 + DOM 对齐自校验 + 引用/脚注检测 │ ├── comments.ts # 评论纯逻辑:CRUD / 聚合 / 内容哈希 │ ├── review-store.ts # 共享评论 store(引擎持久化) │ ├── review-tab.tsx # tab 正文:分段渲染 + 评论卡 + 交互 + 只读回退 │ ├── plan-badge.tsx # 决策卡片徽标 + 提交入口 │ ├── augment.d.ts # plan 资源协议 / plan-review 参数的结构性类型合并 │ ├── locales.ts # zh / en 词典 │ └── styles.ts # 注入式 CSS(drr- 前缀,仅主题 token) ├── tests/ # 44 项:blocks / comments / claim / review-tab / plan-badge ├── demo/ # 验证截图(原生渲染 + 评论卡 + 徽标) ├── smoke.mjs # 浏览器冒烟(插件 materialize + 零控制台错误) ├── e2e-comments.mjs # /plan 全链路:评论生命周期 + 持久化 + 反馈 + 批准 DONE ├── e2e-plan.mjs # /plan 接管 + 原生批准 DONE(只读路径) └── demo-zh.mjs # 中文环境验证 + 截图
安装与部署
环境要求
- DSH Web,客户端 0.1.7-alpha.2(原生 plan-review 流 + extension tab 协议)
- pnpm >= 10,Node >= 22
构建
cd dsh-doc-review
pnpm install
pnpm run typecheck
pnpm run test # 44 项单测
pnpm run build # tsc 类型声明 + tsdown 打包(client bundle ~74KB gz)
pnpm run pack # dist/dsh-doc-review-0.2.0.tgz
部署到 profile
编辑 ~/.dsh/profiles/web/package.json:
{
"dsh": {
"profile": {
"bundles": [
// ... 已有 bundles ... "dsh-doc-review" // ← 新增 ] } },
"dependencies": {
"dsh-doc-review": "file:/path/to/dsh-doc-review/dist/dsh-doc-review-0.2.0.tgz" // ← 新增 } }
cd ~/.dsh/profiles/web && pnpm install
重启 DSH Web 服务即可生效
快速迭代
pnpm run build
rsync -a lib cordis.patch.yml dsh.plugin.json package.json \
~/.dsh/profiles/web/node_modules/dsh-doc-review/
重启 DSH Web 服务即可生效
验证
重启后访问 Web,标准模式下输入 /plan——右侧边栏自动打开审阅文档(原生渲染),hover 文档块出现「+」入口,右键块直接评论。
node smoke.mjs # 插件 materialize、样式注入、零控制台错误
node e2e-comments.mjs # 两个 /plan 场景:评论生命周期 + 反馈 + 批准 DONE
node e2e-plan.mjs # 接管 + 只读渲染 + 原生批准 DONE
node demo-zh.mjs # 中文环境验证 + 截图(保留待审现场)
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
yaodongH/dsh-doc-review
在原生方案文档上逐段添加评论并一键提交反馈
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,798已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,327已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,021已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 150,724已汉化DSH
71.1