DeepSeek Harness Web 内置的问题编辑器(QuestionComposer)设计为通用提问,采用紧凑卡片布局。当内容是完整的 Markdown 设计文档(含标题、表格、代码块、公式)时,卡片内的 60vh / 520px 滚动区域显得局促,审阅体验不佳。dsh-doc-review 将文档类提问替换为全屏弹窗,以渲染后的 Markdown 全幅展示,并保留完整的交互能力。
该插件由 yaodongH 维护,旨在解决设计文档与方案审阅的展示问题,将原本局促的卡片升级为支持行内评论、自动弹出、关闭不取消的全幅渲染弹窗。
核心功能¶
文档渲染¶
- 支持 GFM Markdown 全量渲染:标题层级、列表、表格、代码块(含语法高亮)、KaTeX 数学公式。
- 弹窗内宽表格支持横向滚动,避免布局错乱。
交互能力¶
- 选项按钮:单选即提交,与内置流程答案编码一致。
- 自定义意见:单行输入框,用于补充修改意见。
- 取消操作:以
ASK_CANCELLED拒绝请求,编辑器恢复为普通聊天状态。 - 一次性锁:点击后禁用所有操作,直到宿主响应落定;失败自动重试并显示错误。
弹窗行为¶
- 自动弹出:文档类提问到达时弹窗立即打开。
- 关闭不取消:点击 X / Esc / 遮罩层关闭弹窗,请求保持待审状态。
- 重新展开:控制条上的「展开完整文档」按钮可重新打开弹窗。
- 重连恢复:页面刷新或断连重连后,待审弹窗随组件重开。
行内评论¶
- 评论管理:支持添加、编辑、删除行内评论。评论持久化存储于
localStorage(key 格式:dsh-doc-review:v1:comments:<wait.key>)。 - 提交反馈:存在评论时,弹窗页脚与收起控制条切换为「提交评论 / 取消」,选项按钮与自定义输入隐藏。提交时按行号升序聚合,格式为
对于第N行{原文内容},我认为应{评论内容}。 - 编辑与删除:评论提供编辑(✎)和删除(🗑)按钮,编辑态预填原文。
国际化¶
- 插件自身文案支持中英文双语切换。
plan-review意图的选项按钮标签(如Approve)根据语义本地化显示(如「确认执行」),但发送的答案值保持原标签。
安装与部署¶
环境要求¶
- DeepSeek Harness
>= 0.0.1 - pnpm
>= 11 - Node
>= 22
构建¶
在插件源码目录下执行:
pnpm install
pnpm run typecheck
pnpm run test
pnpm run build # 构建 ESM 与 Client Bundle
pnpm run pack # 打包为 tarball
部署到 profile¶
- 编辑
~/.dsh/profiles/web/package.json,将打包产物(如dsh-doc-review-0.1.0.tgz)添加到bundles列表。 - 在
dependencies中添加该产物路径。 - 进入
~/.dsh/profiles/web目录执行pnpm install。 - 重启 DeepSeek Harness Web 服务。
快速迭代¶
开发期间可跳过打包步骤,直接同步构建产物:
pnpm run build
rsync -a lib/ cordis.patch.yml dsh.plugin.json \
~/.dsh/profiles/web/node_modules/dsh-doc-review/
使用示例¶
触发方式¶
在自适应模式下跑一个任务进入设计阶段,或在标准模式下输入 /plan,弹窗会自动弹出并渲染设计文档。
评论与反馈¶
- 在弹窗中选中文本或点击行号槽,添加评论。
- 审阅完毕后,点击「提交评论」。
- 若需拒绝,点击「去聊天里说」。
标准端到端验证¶
提交评论(有评论时)按行号升序聚合为一条意见,每条逐字 对于第N行{原文内容},我认为应{评论内容},经 { selected: [], custom } 信封发送;成功后清空评论与持久化。
适用场景¶
本插件接管以下文档审阅路径:
- 标准 plan-mode:输入
/plan后exit_plan_mode提交方案审阅。 - 自适应流水线:任务进入设计阶段。
未被认领的提问(短问题、无标题 detail、多选、>3 选项、未知意图等)原样落回内置问题编辑器。
认领条件¶
满足以下全部条件时接管:
- 单个 question(非多题批量)。
- multiSelect 非真。
- intent 为 undefined 或 { kind: 'plan-review' }。
- detail 为含 Markdown ATX 标题行(/^#{1,6}\s+\S/m)的字符串。
- 选项数 ≤ 3。
已知限制¶
- 弹窗内宽表格保持横向滚动。
- 依赖项包括
@deepseek-ai/cordis、react、@deepseek-ai/dsh-client-runtime等。