前言¶
用 DeepSeek Harness(dsh)跑编码智能体时,一个回合往往很长。模型会思考、注入上下文、跑命令、改文件、列目录,界面上逐条刷出工具卡片。过程完整,但回过头只想确认「这一轮到底改了什么、产出是什么」时,就要在长记录里往上翻。
DeepSeek Harness 的设计是「一切皆插件」:模型、工具、技能、会话、UI 都可以在配置层替换,不必改运行时源码。社区目录 deepseek-harness-plugin.com 是独立站点,和 DeepSeek / 幻方没有官方从属关系,用来发现这类扩展。dsh-focus-chat 就是其中一款会话与消息插件:它不改聊天视图本身,而是在 Web GUI 里加一个「聚焦会话」标签页,把一个助手回合收成可展开的摘要行。
本文按插件目录页、GitHub 仓库 README / package.json,以及 npm 包页核对后整理:它是什么、能折叠哪些信息、怎么安装,以及有哪些明确做不到的事。
这是什么¶
dsh-focus-chat 是给 dsh Web GUI 用的阅读插件,维护者是 dingyi222666。npm 包名是 @dingyi222666/dsh-focus-chat,当前版本 0.1.5(2026-08-16 发布)。package.json 声明许可证为 BSD-3-Clause;仓库里目前没有单独的 LICENSE 文件,GitHub 也未自动识别许可证,安装前需要自己打开源码核对。
它解决的问题很具体:默认聊天视图适合盯过程,不适合扫结果。插件在对话里增加一个 Focus chat / 聚焦对话 标签页,用类似 Claude Code 的方式把连续工具轮次折成摘要。仓库 README 写明:视图是对已记录会话快照的纯客户端派生,不会向模型发请求,也不组装、不发送 provider 请求,因此没有 KV Cache 影响。
package.json 里 dsh.client.platform 为 web,它挂在网页界面,不是终端 TUI 插件。GitHub 仓库带 dsh、dsh-plugin topic,主要语言是 TypeScript。截至 2026-08-17,GitHub 显示 20 星;社区目录页收录时写的是 16 星,以仓库页面为准。
核心功能¶
把一个回合收成摘要行¶
开启聚焦视图后,不再逐步盯每一张工具卡片。README 给出的摘要行示例是:
思考了 36 秒,载入了 3 项上下文,运行了 2 个命令,编辑了 8 次,读取了 17 个文件,列出了 18 个目录
整回合还能再收成一条 工作了 X 分 Y 秒。点任意一行会展开完整细节:工具卡片、思考、上下文注入、产物、复制 / fork 操作,画法和普通聊天行一致。中途插话会把折叠按段切开,每段带自己的时长;被停止的回合显示 用户 X 后停止,而不是「工作了」。
后台任务的结算通知(例如 tool-jobs 注入的 bash pnpm install [status: completed] 这类 notice)会归进摘要里的 后台任务 N 个,而不是原样写成一条「注入了 …」。展开该行仍能看到完整通知正文。
文件操作(编辑 / 读写)的失败不会写进摘要行——edited N files 读的是结果;只有命令和其他工具才带失败标注。
想看「刚才发生了什么」就切到聚焦标签;想看完整过程,切回默认聊天视图即可。
为什么是独立标签页,而不是改聊天视图¶
README 专门解释了这一点:聊天视图内部对第三方插件是封闭的,这个插件也刻意不碰 dsh 源码。
- 聊天行通过
conversation.chat.node、tool.call.toolview、conversation.chat.turnTail这类键控槽位渲染。槽位由聊天入口自己声明,加载时拒绝第二次声明。插件既不能往对话流里插行,也不能声明聊天自己的槽位。 - 跨 bundle 边界导入另一个插件包的值会被 bundle purity 门禁拦住,所以借不到聊天视图的组件,每一行只能用共享原语和公开快照自己画。
- 第三方插件唯一合法的插入点是
conversation.view列表槽(整个消息界面)。因此插件自带一套完整视图,而不是去改默认聊天的显示方式。
想让默认聊天视图本身换行为,需要改聊天包;这正是该插件要避开的。
明确缺什么¶
聚焦对话是忠实的阅读面,不是第二个聊天视图。README 列出的缺口包括:
- 没有 Inspect / 详情面板深链。工具卡片内容一样,只是没有「跳去详情」按钮。
- 其他插件给聊天视图加的工具卡片扩展,在聚焦视图里不渲染,这里用内置卡片。
- 折叠按连续工具轮次。两段之间只要有可见内容(回复、命令、插话),就会保持分开。
- 行内文件链接依赖可选的文件提及服务,开关和聊天视图相同。
安装与启用¶
社区目录页给出的安装命令如下,在 DeepSeek Harness 终端里运行:
dsh plugin add github:dingyi222666/dsh-focus-chat
需要可复现安装时,按目录页说明固定 commit 哈希:
dsh plugin add github:dingyi222666/dsh-focus-chat#commit
把 commit 换成仓库里的实际提交哈希。
插件作者 README 推荐从 npm 装到 web profile(需要 dsh >= 0.1.0-rc.6),装完重启网页界面:
dsh plugin --profile web add @dingyi222666/dsh-focus-chat
dsh web
然后打开任意对话里的「聚焦对话」标签页。dsh plugin 相当于给 web profile 加依赖。这是 bundle 型插件,完整包名需要出现在 profile 的 dsh.profile.bundles 列表里才会加载;较新的 dsh 会自动写入,旧构建如果没加上,需要手动补。bundle patch 在下次启动时生效。
用仓库源码启动 CLI 时,README 要求直接调 bin,例如:
node --import tsx/esm apps/cli/src/bin.ts ...
目录页也提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前检查源码仓库和许可证。
典型用法¶
- 确认已经在用 dsh 的 Web GUI(
dsh web或npx @deepseek-ai/dsh web),而不是只开终端界面。 - 按上一节把插件装进 web profile,重启
dsh web。 - 打开任意进行中或已结束的对话,切到 聚焦对话 / Focus chat 标签。
- 先看摘要行:思考耗时、上下文条数、命令次数、文件读写次数。需要细节时点开对应行,查看工具卡片和产物。
- 智能体跑着时如果中途插话,注意折叠会按段切开,每段时长分开统计;主动停止时看
用户 X 后停止。 - 要核对完整工具轨迹,切回默认聊天视图。两套视图读的是同一份会话快照,聚焦标签只改变阅读方式。
适用场景与注意事项¶
比较适合这些情况:
- 回合里工具调用很多,只想先看改了哪些文件、跑了哪些命令。
- 需要向别人快速交代「这一轮做了什么」,不想把完整工具日志贴出去。
- 关心网页界面的阅读体验,并且接受「另开标签、不改默认聊天」。
需要注意:
- 只覆盖 Web GUI。
package.json标明platform: "web",终端 TUI 用不了这个标签页。 - dsh 版本。 README 要求 dsh >= 0.1.0-rc.6;开发者预览阶段 API 仍在变,升级 dsh 后如果标签不出现,先核对
dsh.profile.bundles里是否有完整包名@dingyi222666/dsh-focus-chat。 - 不是第二个聊天。 不能在聚焦视图里补齐 Inspect 深链,也不能看到其他插件挂到聊天视图上的自定义工具卡片。
- 权限与来源。 插件以当前 dsh 进程权限运行。社区目录不是官方应用商店,安装前应阅读 GitHub 源码和许可证;生产环境建议固定 commit,避免后续 push 悄悄改掉装进去的代码。
- 许可证文件。 以
package.json/ npm 上的 BSD-3-Clause 声明为准,同时自行确认仓库里是否后续补上了LICENSE文件。
小结¶
dsh-focus-chat 做的事情很克制:不改 dsh 源码,不往默认聊天里塞行,只在 Web GUI 的 conversation.view 槽上提供一套可折叠的阅读面。对「过程太长、只想看最终产出」的网页用户,切到聚焦标签再点开摘要,比在默认视图里反复上翻要直接。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-focus-chat/
GitHub:https://github.com/dingyi222666/dsh-focus-chat
npm:https://www.npmjs.com/package/@dingyi222666/dsh-focus-chat