DeepSeek Harness 插件

dsh-task-board-anitoce

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

跳到安装方式

来源信息

GitHub 仓库
ANITOCE/dsh-task-board
最近更新
2026年8月19日
分类
自动化与任务
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/ANITOCE/dsh-task-board
插件名:dsh-task-board-anitoce
作者:ANITOCE

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

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 即可恢复。