Skip to content

Repository files navigation

@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 可见性控制:

  1. location.search?focus=,给 <html> 打上 data-focus="<路径>"
  2. 顶层规则(静态注入):按路径首段把三栏 grid 压成单列轨道——隐藏非目标列容器后,目标列成为唯一 grid item,单轨道无自动放置歧义(规避旧版"详情列被推入 center 列"的 bug);
  3. 嵌套兄弟规则(JS 枚举 + MutationObserver):目标插槽的祖先链兄弟(如聚焦 conversation.session 时隐藏 composer 座位与会话头部)生成隐藏 CSS;目标晚渲染时由 MutationObserver 等待出现后补齐;
  4. 路径专属布局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

About

DSH 网页聚焦插件:?focus=<插槽名> 聚焦任意顶层插槽全宽显示,纯 CSS 实现;附完整 intent-flow 设计决策轨迹(需求→设计→执行→关账)DSH (DeepSeek Harness) web focus plugin: ?focus=<slot> shows one top-level slot full-width, pure CSS, no slot shadowing. Includes the complete intent-flow design trail (requirement → design → execute → report).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages