用 dsh-focus-chat 给 DeepSeek Harness 网页会话加上聚焦阅读视图

前言

用 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.jsondsh.client.platformweb,它挂在网页界面,不是终端 TUI 插件。GitHub 仓库带 dshdsh-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.nodetool.call.toolviewconversation.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 进程的权限运行,安装时可能执行代码。安装前检查源码仓库和许可证。

典型用法

  1. 确认已经在用 dsh 的 Web GUI(dsh webnpx @deepseek-ai/dsh web),而不是只开终端界面。
  2. 按上一节把插件装进 web profile,重启 dsh web
  3. 打开任意进行中或已结束的对话,切到 聚焦对话 / Focus chat 标签。
  4. 先看摘要行:思考耗时、上下文条数、命令次数、文件读写次数。需要细节时点开对应行,查看工具卡片和产物。
  5. 智能体跑着时如果中途插话,注意折叠会按段切开,每段时长分开统计;主动停止时看 用户 X 后停止
  6. 要核对完整工具轨迹,切回默认聊天视图。两套视图读的是同一份会话快照,聚焦标签只改变阅读方式。

适用场景与注意事项

比较适合这些情况:

  • 回合里工具调用很多,只想先看改了哪些文件、跑了哪些命令。
  • 需要向别人快速交代「这一轮做了什么」,不想把完整工具日志贴出去。
  • 关心网页界面的阅读体验,并且接受「另开标签、不改默认聊天」。

需要注意:

  • 只覆盖 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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜