packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
给 DSH 桌面端(DeepSeek Harness / @deepseek-ai/dsh-desktop)加一个 Ctrl+I 把光标送回输入框 的快捷键插件。
Cherry Studio 用惯了 Ctrl+I 聚焦输入框的人,换到 DSH 桌面端会不适应 —— 这个插件就是把那个手感搬过来。
A tiny DSH desktop plugin: press
Ctrl+Ito send the keyboard back to the session composer.
Ctrl+I → 光标回到当前会话的输入框两条路,按需要挑(不冲突:设置里存过的绑定永远优先于配置里的默认键)。
设置 → 快捷键 → 搜「聚焦输入框」→ 点右边那个键位按钮 → 按下你想用的组合。
userData/keybindings.json),插件更新/重装都不丢在 profile 的 cordis.patch.yml 里给这一行加 config:
- id: focus-composer
name: 'dsh-focus-composer'
config:
code: KeyI # 物理键代码(KeyboardEvent.code)
modifiers: [control] # control | alt | shift | meta | primary
改完刷新一次页面(Ctrl+R)生效。字段含义:
| 字段 | 说明 | 例子 |
|---|---|---|
code | 物理键,不是字符 | 字母 KeyI、数字 Digit1、功能键 F5、Slash、Backquote、Enter |
modifiers | 修饰键数组,primary = Windows 上的 Ctrl / macOS 上的 Command | [control]、[control, alt]、[control, shift] |
Ctrl+I(不会让插件挂掉,也不会静默绑到别的键上)Ctrl+I 这种单修饰键组合在桌面端不受浏览器保留键限制在 DSH 的 插件市场 里填这串(本插件住在一个多插件仓库的子目录里,所以要带子目录选择器 —— pnpm 的 #path:):
github:Yaoxxxxxxx/dsh-plugins#path:/packages/dsh-focus-composer
装完刷新一次页面(Ctrl+R)即可生效 —— 带客户端半边的插件和官方口径一致。
pnpm add ./dsh-focus-composer-<版本>.tgz --dir <你的 profile 目录>
然后把包名加进该 profile package.json 的 dsh.profile.bundles,重启桌面端。
| 项 | 要求 |
|---|---|
| DSH | >= 0.1.7-rc.2(package.json 的 dsh.engines) |
| 平台 | Windows 桌面端(默认键只绑定 desktop:windows) |
| 依赖 | 无。只用宿主自带的官方服务 |
package.json 删除 dependencies 与 dsh.profile.bundles 里的 dsh-focus-composernode_modules/dsh-focus-composer宿主自带 @deepseek-ai/dsh-client-shortcuts(服务名 shortcuts)。通过 ctx.shortcuts.register({...}) 注册的好处:
lib/client.js 先试官方路径,再退到 DOM:
ctx.get("conversation").input.for(scope).focus()
走宿主自己的 Lexical 编辑器,能恢复草稿上次的光标位置。
scope 取 ctx.get("sessions").scope(id),id 是会话列表里 retainedBy.mainView > 0 的那条(主视图独有,所以右侧栏的会话不会混淆)。document.querySelector("[data-composer-input]")(官方给 Lexical 根打的标记)→ focus(),再把光标 collapse 到末尾。
为什么必须自己放光标:官方源码注释写明,裸 DOM focus 会把光标放到开头,那样接着打字会插到最前面。两条路都包了 try/catch:任一失败只 console.warn 并放行按键,不会影响应用本身。
dsh-focus-composer/
├── package.json # dsh.bundle.patch + dsh.client 双声明
├── cordis.patch.yml # 挂载行:insert id: focus-composer
├── lib/
│ ├── index.js # 宿主半边(空实现)
│ └── client.js # 客户端半边:注册快捷键 + 聚焦
└── README.md
MIT