dingyi222666/dsh-focus-chat ↗★ 7
@dingyi222666/dsh-focus-chat
Claude Code-style focus view for the dsh web GUI: the conversation's condensed reading surface — tool calls folded into expandable metric summaries, chat 1:1 row chrome, and streaming think rows
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:dingyi222666/dsh-focus-chat说明文档
阅读完整 README ↗dsh-focus-chat
English | 中文
一个给 dsh Web GUI 的插件,加了一个 聚焦对话 标签页——用 Claude Code 的方式精简地读对话。
安装
# 从 npm 安装(需要 dsh >= 0.1.0-rc.6)
dsh plugin --profile web add @dingyi222666/dsh-focus-chat
# 重启 dsh web,工具自动挂载
dsh web
然后打开任意对话里的 聚焦对话 / Focus chat 标签页。
说明:
dsh plugin相当于给 web profile 加一个依赖。bundle 型插件需要在 profile 的dsh.profile.bundles里出现它的完整包名才会被加载(新版本 dsh 会自动加;如果你的版本没加,请手动补上);bundle patch 在下次启动时生效。- 用仓库源码启动的 CLI 时,请直接调用 bin(
node --import tsx/esm apps/cli/src/bin.ts ...)。
截图
关闭——普通 chat 视图:

开启——聚焦对话视图:

不再一步步盯着过程,一个助手回合会收成一条摘要行:
思考了 36 秒,载入了 3 项上下文,运行了 2 个命令,编辑了 8 次,读取了 17 个文件,列出了 18 个目录 (Thought for 36s, loaded 3 context items, ran 2 shell commands, edited 8 files, read 17 files, listed 18 directories)
整回合还能再收成一条 工作了 X 分 Y 秒 / Worked for Xm Ys 行。点任何一行都能展开成完整细节——工具卡片、思考、上下文注入、产物、复制/fork 操作——全部和普通 chat 行同款画法。中途插话会把折叠按段切开,每段带自己的时长;被停止的回合显示 用户 X 后停止 / Stopped after X 而不是"工作了"。当一条上下文注入自带一句话摘要——比如 tool-tasks 后台任务完成后的 bash pnpm install [status: completed]——这条摘要也会写进摘要行(注入了 … / injected …),而不只是 载入了 N 项上下文 的数量。
想看"刚才到底发生了什么"就切过来,想看完整过程就切回 chat。
为什么要单独一个标签页?为什么不直接改 chat?
一句话:chat 视图的内部对第三方插件是封闭的——这是设计如此——而且这个插件刻意不碰 dsh 自己的源码。具体来说:
- **键控槽位是独占的,不是共享的。**chat 的行通过
conversation.chat.node、tool.call.toolview、conversation.chat.turnTail这类槽位渲染。这些槽位由 chat 入口自己声明,槽位系统在加载期拒绝重复声明——冲突本身就是设计在说话。插件既不能往 chat 对话流里插自己的行,甚至连声明 chat 自己的槽位都不行。