packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
把原生子代理下拉按使用批次折叠为 历史 / 今日 / 上次 / 本次 四组,本次始终展开;不改动原版头部。
给 DeepSeek Harness(DSH)用的子代理下拉折叠:把子代理按「使用批次」收进 历史 / 今日 / 上次 / 本次 四组,本次始终展开,其余可折叠。
不改原版头部、不新增入口——只在官方「子代理」下拉里加分组,按钮和布局一个都没动。
| 分组 | 含义 | 默认 |
|---|---|---|
| 本次 | 最近一次使用子代理产生的那一批(并行发起算同一批) | 始终展开 |
| 上次 | 上一次使用子代理产生的那一批 | 折叠 |
| 今日 | 今天其余批次 | 折叠 |
| 历史 | 今天之前 | 折叠 |
「批次」按子代理创建时间聚合,间隔 ≤ 120 秒视为同一批。
子代理下拉
├ 历史 12 ← 折叠(点开)
├ 今日 5 ← 折叠
├ 上次 2 ← 折叠
└ 本次 3 ← 标签 + 始终展开
├ 任务 A 运行中
├ 任务 B
└ 任务 C
| 之前(51 条平铺) | 之后(分组折叠) |
|---|---|
![]() | ![]() |
已发布到 npm,一条命令装进 profile(会写依赖与 bundles):
dsh plugin --profile desktop add dsh-subagent-fold
或手动:
cd "$env:USERPROFILE\.dsh\profiles\desktop"
pnpm add dsh-subagent-fold
然后在 profile 的 package.json 登记:
{
"dependencies": { "dsh-subagent-fold": "^0.0.3" },
"dsh": { "profile": { "bundles": ["dsh-subagent-fold"] } }
}
完成后完全退出并重开 DSH。
解压后运行(自动写 dependencies + dsh.profile.bundles,并备份 profile 的 package.json):
node tools/install.cjs --profile desktop # 安装
node tools/install.cjs --dry-run # 只预览
node tools/install.cjs --uninstall --profile desktop # 卸载
然后完全退出并重开 DSH。
把本包放进目标 profile 并登记,然后完全退出并重开 DSH:
cd "$env:USERPROFILE\.dsh\profiles\<profile>"
pnpm add "<本仓库路径或解压目录>"
在该 profile 的 package.json 登记:
{
"dependencies": { "@dsh-external/dsh-subagent-fold": "link:<本仓库路径>" },
"dsh": { "profile": { "bundles": ["@dsh-external/dsh-subagent-fold"] } }
}
把 package.json、cordis.patch.yml、lib/ 放到
<profile>/node_modules/@dsh-external/dsh-subagent-fold/,再按上面登记 dependencies 与 dsh.profile.bundles,重启。
从 dependencies 与 dsh.profile.bundles 移除本包,删除 node_modules/@dsh-external/dsh-subagent-fold,重启。
package.json # 插件声明(bundle patch + client)
cordis.patch.yml # 装配补丁:向组合树插入一条插件条目
lib/index.js # 宿主半(空实现)
lib/client.js # 客户端半:菜单分组与折叠(手写,零构建)
lib/client.js 为手写 CJS bundle(window.__ModuleLoader__.load),无构建步骤。改完保存后 Ctrl+R 刷新页面即可加载。
role="tree" / role="treeitem" 语义锚点;官方若改结构需适配。BSD-3-Clause
A subagent-dropdown folding plugin for DeepSeek Harness (DSH). Subagents are grouped by usage batch into History / Today / Previous / Current; Current is always expanded, the rest are collapsible.
No header replacement, no new entry point — it only adds grouping inside the built-in Subagent dropdown.
| Group | Meaning | Default |
|---|---|---|
| Current | the most recent batch of subagents (parallel spawns = one batch) | always expanded |
| Previous | the batch before that | collapsed |
| Today | other batches from today | collapsed |
| History | anything before today | collapsed |
A "batch" is clustered by creation time; a gap of ≤ 120 s counts as the same batch.
| Before (51 flat rows) | After (grouped & folded) |
|---|---|
![]() | ![]() |
Published to npm — one command installs it into the profile (writes dependency + bundles):
dsh plugin --profile desktop add dsh-subagent-fold
Or manually:
cd "$DSH_HOME/profiles/desktop"
pnpm add dsh-subagent-fold
Then register in the profile's package.json:
{
"dependencies": { "dsh-subagent-fold": "^0.0.3" },
"dsh": { "profile": { "bundles": ["dsh-subagent-fold"] } }
}
Fully quit and reopen DSH.
After extracting, run (it writes dependencies + dsh.profile.bundles and backs up the profile package.json):
node tools/install.cjs --profile desktop # install
node tools/install.cjs --dry-run # preview only
node tools/install.cjs --uninstall --profile desktop # uninstall
Then fully quit and reopen DSH.
cd "$DSH_HOME/profiles/<profile>"
pnpm add "<path-or-extracted-dir>"
Then register in that profile's package.json:
{
"dependencies": { "@dsh-external/dsh-subagent-fold": "link:<path>" },
"dsh": { "profile": { "bundles": ["@dsh-external/dsh-subagent-fold"] } }
}
Fully quit and reopen DSH.
Remove the package from dependencies and dsh.profile.bundles, delete node_modules/@dsh-external/dsh-subagent-fold, restart.
package.json # manifest (bundle patch + client)
cordis.patch.yml # assembly patch (inserts one entry)
lib/index.js # host half (no-op)
lib/client.js # client half: grouping & folding (hand-written, no build)
role="tree" / "treeitem" semantics.BSD-3-Clause