DeepSeek Harness plugin

dsh-task-board-anitoce

可热插拔的 DeepSeek Harness (DSH) 任务看板插件:侧边栏「新会话」下方入口,多列看板视图,任务以 DSH 会话真实执行并回写状态,支持 cron 定时执行与本地持久化。

Jump to install

Source facts

Repository
ANITOCE/dsh-task-board
Latest update
Aug 19, 2026
Category
Workflow & Automation
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/ANITOCE/dsh-task-board
Plugin: dsh-task-board-anitoce
Author: ANITOCE

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-task-board

可热插拔的 DeepSeek Harness (DSH) 任务看板 GUI 插件。以 cordis 插件 + 浏览器 DOM 扩展挂载(外挂形态,与 dsh-web-ui/packages/skins/skin-center 一致),不修改 DSH 源码;卸载即恢复原状,其它托管段(dsh-skin / skin-center / dshmarket / 个人配置)互不干扰。

> 社区安装(DSH 插件市场 / dshmarket): > ``bash > dsh plugin --profile web add github:anitoce/dsh-task-board > ` > 仓库带有 dsh-plugin` 等 GitHub topic,供 awesome-dsh-plugin 社区目录发现与收录。

  • 侧边栏入口:侧边栏列([class*="sidebarCol"],DSH 0.1.0-rc.6 AppFrame 布局)内、「新会话」按钮下方注入「任务看板」入口行;宽栏显示图标+文字,折叠 rail 显示纯图标,颜色随 DSH 皮肤 token 自适应。
  • 多列看板:待规划 / 待办 / 进行中 / 已完成 / 已失败 五列;卡片显示标题、描述、状态、更新时间、执行次数、定时标识;顶部支持搜索、新建任务、返回对话。
  • 任务详情:点卡片打开详情(描述 / 执行 Prompt / 执行记录),不会一点就执行;提供「执行 / 重新执行」「删除(带确认)」「查看会话(跳转真实 transcript)」「移到待规划/待办」。
  • 真实执行:点「执行」后通过客户端 runtime 连接工作区会话(workspaces.connectWorkspace,空白会话复用或 host 新建),把任务标题设为会话名,以任务 Prompt 调用 session.prompt([{ type: 'text', text }], 'queue') 驱动真实 agent;随后订阅会话快照,回合真实结束后把卡片置为 已完成/已失败 并记录执行结果。执行会话出现在会话列表,可点进对话查看真实 transcript。
  • 状态回写:卡片状态(进行中 → 完成/失败)由真实会话状态驱动;刷新页面/重启后,遗留的 running 任务按会话现状自动对账(reconcile)。
  • 定时任务:详情面板可启用 5 段 cron(分 时 日 月 周;支持 * / */n / a-b / a-b/n / 逗号列表;日与周同时受限为「或」)+ 常用预设(每天 09:00、每小时、每 10 分钟、每周一 09:00);启用即计算并持久化「下次运行时间」;到点自动走同一真实执行链路。
  • 系统提示词注入:host 半边通过 SystemPrompt.section 注册 plugin:task-board 段(order 200),向每个 agent 声明本插件存在、能力与限制——插件在组合中即注入,移出组合即消失。
  • 本地持久化:任务数据存于浏览器 localStorage(键 dsh-task-board),刷新页面、重启 DSH 均不丢失。

快速开始

npm run build                      # 生成 lib/index.js(host 半边)与 dist/client.js(client 打包)
node scripts/dsh-task-board.js mount    # 热挂载进 DSH profile(写入托管段 + 依赖链接)
# 刷新 http://127.0.0.1:3080 —— 侧边栏「新会话」下方出现「任务看板」

> 挂载写入的是 profile 的 cordis.patch.yml(DSH 自带 watchUserPatches 热监视,约 1 秒内热重组),因此无需重启 DSH。同一补丁文件在每次 DSH 启动时重放,挂载在重启后依然生效。

node scripts/dsh-task-board.js unmount  # 热卸载;刷新后 GUI 恢复原状
node scripts/dsh-task-board.js status   # 查看挂载状态(托管段/依赖链接/boot graph)
node scripts/dsh-task-board.js mount --profile <name> [--url http://127.0.0.1:3080] [--no-wait]

挂载仅改动两处、均可逆,且只属于本插件:

1. profile package.json 中一条 "dsh-task-board": "link:<本目录>" 依赖(离线 pnpm install 建立链接;失败时回退为 node_modules 手工 junction); 2. profile cordis.patch.yml 中一个注释标记的托管段:

``yaml # === dsh-task-board managed segment (managed by scripts/dsh-task-board.js; do not edit by hand) === - insert: - id: task-board name: dsh-task-board # === end dsh-task-board managed segment === ``

不触碰 dsh.profile.bundles$DSH_HOME/cordis.patch.yml.dsh-market 状态或任何其它托管段。插件包内亦提供标准 bundle 形态(cordis.patch.yml + dsh.bundle.patch):如偏好 bundle 挂载,把 dsh-task-board 加入 dsh.profile.bundles 即可——但不要同时使用两种方式(同 id 行会冲突)。

验证步骤(对照验收)

1. 挂载后侧边栏「新会话」下方出现「任务看板」入口;点击 → 中间列切换为五列看板;点「返回对话」或点击侧边栏任意会话项回到对话视图。 2. 「+ 新建任务」填标题/描述/Prompt → 卡片出现在「待办」;刷新页面/重启 DSH → 任务仍在(localStorage 持久化)。 3. 点卡片 → 详情可见内容与 Prompt(不会自动执行);详情内有「执行」「删除」「查看会话」按钮。 4. 点「执行」→ 卡片变「进行中」,会话列表出现以任务标题命名的会话;agent 跑完后卡片落「已完成」或「已失败」,详情执行记录有结果与时间,可「查看会话」跳转真实 transcript。 5. 删除有确认环节,删除后本地存储同步移除。 6. 定时任务:详情 →「定时运行」勾选启用,选预设「每 10 分钟」(*/10 * *),卡片出现定时标识;下一个整 10 分钟点自动进入「进行中」并最终完成,详情「上次触发」出现时间、执行记录新增一条(会话可跳转)。浏览器端调度,标签页需保持打开;刷新后调度自动恢复(重新计算下次运行时间)。 7. 一键挂载/卸载;卸载后 GUI 恢复原状,其它托管段不受影响。 8. agent 侧验证:挂载后任意会话(含子代理)的 system prompt 都包含 plugin:task-board 段;卸载后消失。

架构

src/
├── index.js               # host 半边:SystemPrompt.section('plugin:task-board', order 200)
└── client/                # 浏览器半边(微打包为 dist/client.js,__ModuleLoader__ 工厂契约)
    ├── index.js           # cordis 插件入口:inject ['sessions','workspaces'],装配 store/executor/scheduler/ui
    ├── store.js           # localStorage 持久化(v1 文档、迁移、订阅、跨标签页同步)
    ├── cron.js            # 5 段 cron 解析/校验/nextRun 计算(纯逻辑)
    ├── status.js          # 状态机:列流转、执行权限
    ├── executor.js        # 真实执行驱动:connectWorkspace → rename → prompt('queue') → 快照订阅 → 回写
    ├── scheduler.js       # 浏览器端 cron 调度循环(注入时钟,可测)
    ├── ui.js              # DOM 扩展:侧边栏入口、五列看板、详情/新建/删除确认弹层
    └── css.js             # 样式(全部使用 DSH 皮肤 token,随主题自适应)
scripts/
├── build.js               # 零依赖构建:host 复制 + client 微打包(无需网络/外部 bundler)
├── dsh-task-board.js      # mount / unmount / status(托管段 + 依赖链接,热挂载)
└── run-tests.js           # 逐文件测试运行器(兼容受限沙箱)
tests/                     # node:test:存储读写 / 状态流转 / 执行触发 / cron 解析 / 调度器 / host 段 / 打包契约

执行链路(真实会话)

1. 选工作区:workspaces.list 的 recent 工作区 → 当前会话 cwd 所属工作区 → 第一个工作区 → 用当前会话 cwd 新建; 2. workspaces.connectWorkspace(id):复用空白会话或 host 新建,返回 sessionId; 3. session.rename(任务标题):执行会话以任务标题出现在会话列表; 4. session.prompt([{ type: 'text', text: 任务Prompt }], 'queue') 驱动真实 agent 回合; 5. 订阅 session 快照:running true→false、lastAgentError、窗口内 turn-error/assistant 节点共同判定 完成/失败,回写卡片并记录执行结果;手动执行在任务看板覆盖对话列时同步打开会话(不可见切换),完成后再读出真实 transcript 结果。 6. 页面刷新后 reconcile():按会话现状对账遗留 running 任务(会话消失→失败;仍在运行→继续追踪;已结束→按错误/结果落状态)。

开发

npm run build    # 构建(无需网络;client 由 scripts/build.js 微打包)
npm test         # 37 个 node:test 用例(逐文件运行,兼容沙箱)
npm run verify   # build + test

UI 样式遵循工作区规范 [docs/dsh-ui-style-guide.md](../docs/dsh-ui-style-guide.md)(DSH 官方 UI 风格:语义 token / 官方排版变量 / 官方圆角高度与焦点、动效约定)。

测试覆盖:存储读写/迁移/订阅、状态流转与执行权限、执行触发(含 prompt 拒绝、agent 错误、回合错误、reconcile 三种对账)、cron 解析与 nextRun(含闰年、OR 语义、周日 7==0)、调度器(启用/禁用/到点触发/跳过执行中/失效禁用/刷新恢复)、host 系统提示段注册与卸载、打包契约(__ModuleLoader__ 工厂、apply 全链路冒烟)。

已知限制

  • 定时调度运行在浏览器标签页内,标签页需保持打开;浏览器后台节流可能延迟触发(最长约 1 分钟)。
  • 未打开执行会话时完成的任务,结果文本在下次打开该会话/看板可见时补全(状态判定不受影响)。
  • 插件包源码改动后需重新 npm run build 并重新挂载(或重启 DSH)生效;client 包内容变更走 boot graph 的 rev 哈希。
  • Windows 下若离线 pnpm install 不可用,挂载脚本回退为手工 junction:DSH 重启不受影响,但 profile 内后续 pnpm install 可能清理该链接,重新执行 mount 即可恢复。