@dsh-focus/focus-plugin
DSH (DeepSeek Harness) web 聚焦模式插件:?focus=<插槽路径> 让 DSH 页面只显示指定的插槽——消息流、输入区、会话列表、详情面板或任意注册插槽——其余界面隐藏,主视野留给代码。
本仓库也是 intent-flow 工作流的完整展示:
.intentflow/目录记录了每个 feature 从需求 → 设计 → 执行 → 关账的完整 AI 决策轨迹(requirement.md/design.md/later-on.md/report.md),AGENTS.md是工作流全局规范,_packages/是模块现状基线。评审工作流请直接看这些文件。
功能
URL(?focus=) |
效果 |
|---|---|
conversation.session |
只显示消息流(隐藏输入区、会话头部、侧栏、详情) |
conversation.composer |
只显示输入区(沉底于视口底部,隐藏消息流等) |
conversation.chat.node |
消息区域全宽(与 conversation.session 视觉等价) |
conversation |
对话区整体(含输入区)全宽 |
sidebar / details |
会话列表 / 详情面板全宽 |
<任意 data-slot 路径> |
聚焦三槽内任意已注册插槽(含第三方插件注册的插槽) |
| 无参数 / 未知值 | 完全正常,插件 no-op |
聚焦模式下若 DSH 没有当前会话,插件自动恢复最近的非空白会话(否则消息流视图是空白 hero)。
原理
DSH 的 Web UI 是插槽树(sidebar | conversation | details 三栏),渲染器为每个插槽输出 data-slot="<完整路径>" 的 wrapper。本插件不改 DSH 任何代码,纯 CSS 可见性控制:
- 读
location.search的?focus=,给<html>打上data-focus="<路径>"; - 顶层规则(静态注入):按路径首段把三栏 grid 压成单列轨道——隐藏非目标列容器后,目标列成为唯一 grid item,单轨道无自动放置歧义(规避旧版"详情列被推入 center 列"的 bug);
- 嵌套兄弟规则(JS 枚举 + MutationObserver):目标插槽的祖先链兄弟(如聚焦
conversation.session时隐藏 composer 座位与会话头部)生成隐藏 CSS;目标晚渲染时由 MutationObserver 等待出现后补齐; - 路径专属布局:
conversation.composer聚焦附加沉底规则(输入区固定在视口底部,active 相位生效)。
安装 / 部署
DSH 从 ~/.dsh/profiles/node_modules 解析插件包。把本仓库链接(junction)到该位置,再经 patch 挂载:
# 1. 部署(Windows junction;修改本仓库代码即生效,无需重建)
mklink /J "$env:USERPROFILE\.dsh\profiles\node_modules\@dsh-focus\focus-plugin" "<本仓库绝对路径>"
# 2. 挂载:在 .dsh/dsh.mcp.patch.yml(或任意 --patch overlay)里 insert
# - id: focus-mode
# name: '@dsh-focus/focus-plugin'
挂载行的
name必须精确等于包名(@dsh-focus/focus-plugin),写错会导致 DSH 启动失败(端口打不开)。
- 首次挂载:需重启 dsh(patch 进 boot graph);
- 修改插件代码后:无需重启——DSH 的 client-modules 按内容 hash 伺服插件,浏览器刷新即加载新代码。
开发
npm install # tsdown + typescript + cordis 类型
npm run build # 构建 lib/client.js
npm run typecheck # 类型检查
- 源码:
src/client/index.ts(client 半:路径解析、顶层/兄弟规则、MutationObserver 时序、会话恢复) - 构建产物:
lib/client.js(DSH 经/plugins/<id>/client.js伺服) - host 半:
lib/index.js(空 cordis 插件壳) - 基线对齐
@deepseek-ai/dsh@0.1.0-rc.6
演进方向
见各 feature 的 later-on.md(.intentflow/ 下):
- list occupant 单条目聚焦(消息流中某条消息/工具调用的独立展示)— 触发条件:出现明确用例
- opendsh buildFocusUrls 联动(composer URL 改指
conversation.composer)— 双窗口工作流闭环 - settings 等非三栏顶层插槽聚焦 — 需先解决其宿主布局
- composer 聚焦下消息流半屏预览 — 触发条件:边输入边看上下文
License
MIT
No comments yet. Be the first to write one.