packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
为 DeepSeek Harness(dsh)打造的 composer 展开/收起插件。在 composer 工具行放一个 ⬆/⬇ 按钮,点击在「默认封顶高度」与「70vh 高书写视图」之间切换,长草稿不再挤在一个小窗口里滚动。
DSH 默认把 composer 文本框封顶在一个较小高度(seat 上定义了 --dsh-composer-text-max-height: 336px,限制文本框滚动容器)。草稿变长后,只能在小窗口里滚动几行。本插件对短草稿保持默认行为,写长 prompt 时一键切换到大视图。
conversation.input.right(发送按钮旁官方预留的可点击控件位)。max-height。再点一次恢复默认封顶高度。70vh 限制。Ctrl/Cmd + Enter 等带修饰键快捷键仍可用于发送;斜杠 / @ 触发菜单打开时不拦截,回车正常选候选。localStorage[dsh-composer-expand:expanded],刷新页面、切换工作区都保留。locale 服务。data-conversation-scroll / data-composer-seat / data-input-scroll / data-composer-input,并保留 textarea 时代的 data-input-mirror),同时兼容 Lexical 编辑器与旧 textarea 两代 composer,不碰每次构建都会变的哈希类名。dsh plugin --profile web add dsh-composer-expand
已发布到 npm,包含预构建产物,无需本地构建。
dsh CLI 必须在 PATH 上。若你只用 npx 跑过 harness,dsh 尚未全局安装,会报 zsh: command not found: dsh——先全局安装:
npm install -g @deepseek-ai/dsh
从本仓库安装:
# 1. 构建产物(tsdown 生成 lib/index.js + lib/client.js)
pnpm install
pnpm build
# 2. 加入 web profile
dsh plugin --profile web add ./
# 3. 以该 profile 重启 harness
dsh --profile web
重启后 ⬆ 按钮出现在 composer 工具行(发送按钮旁)。可在 设置 → 插件 中确认 dsh-composer-expand 已列出。
| 环节 | 机制 |
|---|---|
| 按钮位 | conversation.input.right 列表槽位(会话作用域);ctx.slots.inject 注册单个 React 组件 |
| 切换状态 | React useState,初始值读 localStorage[dsh-composer-expand:expanded];变更时写回 localStorage |
| DOM 挂钩 | document.querySelector('[data-conversation-scroll]').classList.toggle('dsh-composer-expand-on', on) — 会话滚动容器上的官方稳定属性 |
| CSS 契约 | .dsh-composer-expand-on 在 [data-composer-seat] 上覆盖 --dsh-composer-text-max-height(真正的 336px 上限)为 var(--dsh-composer-expand-height)(默认 70vh),并给 [data-input-mirror] 设 min-height: 300px,即使内容很少输入框也会明显变高 |
| 硬依赖 | export const inject = ['slots', 'locale'] — 均为官方 harness 客户端服务 |
| 无 host 命令 | lib/index.js 是空 apply(),整个插件纯客户端 |
pnpm install
pnpm build # tsdown: lib/index.js(ESM host)+ lib/client.js(ModuleLoader 客户端 bundle)
70vh。未来版本可在设置卡片里提供高度滑块。--dsh-composer-text-max-height(336px)是 DSH 的设计选择。本插件只放宽 composer 文本框容器,不影响其他 disclosure 行。^22.19.0 || >=24.0.0(见 package.json engines)。>=0.1.0-rc.7 <0.3.0;逐版本结论见 package.json → dsh.compatibility.dshReleases,官方最新三版(当前 0.2.1-alpha.1 / alpha.2 / alpha.3,另前瞻声明 alpha.4)均为 compatible。dshOperations 诚实声明为 unknown:尚未提供一次性 Profile 的安装/启动/卸载/回滚证据,不虚构 passed。peerDependencies 仅 @deepseek-ai/cordis ^4.0.1 与 react ^18.2.0(由 harness 提供,不打包);客户端仅使用官方 slots、locale 服务,dsh.client.inject 仅声明 @deepseek-ai/dsh-client-ui-conversation;无 preinstall/install/postinstall/prepare 生命周期脚本。localStorage[dsh-composer-expand:expanded](插件私有展开状态),以及对 [data-conversation-scroll] / [data-composer-seat] 的 DOM class 与 capture 阶段 keydown 监听。无外部服务、无 host 命令、无 LLM 调用、不写会话日志。composer-expand,客户端 slots.register 为 conversation.input.right / composer-expand;不替换、不禁用任何 @deepseek-ai/* 官方包或受保护 entry。localStorage 不可用(隐私模式)则回落为默认收起;找不到 DOM 锚点则 no-op;locale 注册失败则回落英文并 console.error;卸载时 loader 移除插件自有 <style>,observer disconnect 并移除已加 class。MIT