dsh-ui-concise

English | 中文

DeepSeek Harness WebUI 的 Codex/macOS 风格简洁会话模式。

它直接扩展现有 ui-conversation 正常视图,不重新实现 Markdown、消息排版或工具卡。Assistant 内容继续由原 AssistantMarkdown / message-chrome 渲染,工具详情继续通过 keyed conversation.chat.node 交给 ui-tool

功能

  • 每个 Turn 使用一条纯计时器 disclosure:运行中实时显示已处理时间,正常完成后默认收起,中断、steering、达到最大 token 或失败时保持展开。
  • 最终 Assistant 的答案块始终留在外层折叠之外;如果最终 Assistant 节点同时含有 reasoning,其 reasoning 块仍进入过程折叠。
  • 当前设置下可见且相邻的工具调用合并为一个第二层活动 disclosure,不以工具类别分栏;被隐藏的已结束 reasoning 不会切断分组,而可见 reasoning/文本仍会切断分组。展开后仍逐个显示原工具行与原工具详情。
  • 活动栏始终默认收起且可手动展开。运行时标题跟随最后一个活跃动作(如“正在读取文件”),全部完成后改为按出现顺序去重的完成式汇总(如“读取了文件运行了命令”)。隐藏思考时,活跃 reasoning 会并入当前活动并显示“正在思考”。
  • 设置页提供“简洁模式”;开启后才显示“隐藏思考内容”。
  • 开启“隐藏思考内容”后,reasoning 流式输出时仅显示“正在思考”,正文开始或 reasoning 结束后不再显示思考内容。
  • 没有任何可见过程内容的 Turn 不生成空 disclosure,只显示不可点击的耗时标签。
  • 中文、英文界面文案和 README 均已提供。

兼容性与侧载方式

当前侧载构建兼容:

  • DeepSeek Harness 0.1.0-rc.5
  • 公开上游基线提交 47f943859bef60e4160492346772ded9b24f765a

现在的 npm 包是 Harness 原生的 profile 侧载组合包:它声明 dsh.bundledsh.client,通过自己的 cordis.patch.yml 暂停内置 ui-conversation 行,并挂载同一套正常会话视图的简洁构建。它不是另画一套平行的 conversation.view:滚动、分页、Assistant Markdown、消息操作和 keyed 工具 renderer 都来自正常视图实现。

安装过程不执行 git apply,也不修改 Harness 源码或会话数据。cordis.patch.yml 是 Harness profile 的原生挂载清单,不是源码补丁。

安装

在 DeepSeek Harness 根目录运行。dsh plugin 会把包加入 web profile 的 dsh.profile.bundles,下次启动 WebUI 时自动加载浏览器 client。当前请直接从 GitHub Release 的 npm tarball 侧载:

dsh plugin --profile web add \
  https://github.com/stars2022/dsh-ui-concise/releases/download/v0.1.2/dsh-ui-concise-0.1.2.tgz
dsh web

仓库配置 NPM_TOKEN 并发布到 npmjs 后,也可以改用 dsh plugin --profile web add dsh-ui-concise@latest

移除侧载并恢复内置普通视图:

dsh plugin --profile web remove dsh-ui-concise
dsh web

验证

npm test
npm pack --dry-run

测试会检查 dsh.bundledsh.client、profile 挂载清单和浏览器 bundle 标识;发布流程还会打包并检查最终 tarball。

发布流程

版本 tag 会触发 GitHub Actions:校验 tag 与 package.json 版本、运行 npm 包测试、执行 npm pack、生成 SHA-256,并把 tarball 与校验文件附加到 GitHub Release。配置仓库 Secret NPM_TOKEN 后,同一流程还会通过 provenance 发布到 npmjs。

实现原则

  • disclosure 只控制显示与隐藏,不把原内容替换为摘要卡片。
  • 外层计时器不显示工具名;工具类别只出现在内层 disclosure。
  • 工具分组不跨可见 Assistant 文本或可见 reasoning 重新排序;工具类别本身不是边界,隐藏内容也不制造空白分隔。
  • 会话数据不因隐藏 reasoning 而被删除或改写;关闭简洁模式后普通 Think 行完整恢复。
  • 设置沿用 ui-conversation Host settings 命名空间持久化。

许可证

MIT