TaxolYang0000/dsh-kanban-watcher ↗★ 0
dsh-kanban-watcher
DSH ↔ Hermes 双 Agent 协作管道的看板执行侧插件:监听 Hermes kanban 队列,把任务交给 DSH Agent 在 Web GUI 会话中执行,并把结果回写看板与 done 文件。 支持会话继承([会话继承:关键词] 续接历史会话)。
AI 分析
核心用途是实现 DSH 与 Hermes 之间的双智能体看板任务协同。适合需要跨系统自动派发、执行和跟踪 AI 任务的自动化工作流场景。
インストール
検証済み bundle がないか、互換性チェックに失敗しています。先にリポジトリの説明を読んでください。 README 全文を読む ↗
ドキュメント
README 全文を読む ↗配置项
全部配置走 cordis.patch.yml 里插件行的 config,均有默认值:
| 键 | 默认值 | 说明 |
|---|---|---|
hermesBin | $HERMES_BIN | hermes CLI 可执行文件路径(kanban 子命令入口) |
board | dsh | 看板名;与 Hermes 侧 /dsh-send 创建任务用的 board 一致 |
assignee | dsh | 认领归属人;只处理 assignee 为 dsh 的任务 |
triggerDir | $DSH_TRIGGER_DIR | 触发文件目录:Hermes 下发任务后写 .trigger 到此,fs.watch 监听事件驱动唤醒 |
doneDir | $DSH_DONE_DIR | done 文件目录:任务完成后写 .done 到此;Hermes 外部事件注入(external_event_steer)默认监听这里,可用 HERMES_DONE_WATCH_DIR 覆盖 |
pollIntervalMs | 30000 | 兜底轮询间隔(fs.watch 事件可能合并/丢失) |
taskTimeoutMs | 600000 | 单任务硬超时(10 分钟);超时释放 agent 会话并走错误上报,防审批挂起拖死管道 |
permissionPreset | hermes-trusted | watcher 会话专用权限预设(danger-full-access + never):白名单落点免审批写、升级请求快速失败 |
cwd | $DSH_WORKSPACE | 任务未指定工作区时的默认工作目录 |
allowedOutputDirs | ["$DSH_WORKSPACE", "$DESKTOP"] | 输出落点白名单(镜像 Hermes 下发侧白名单;拦截仍在 Hermes 侧) |
modelMap | flash→flash / __fallback__ | Hermes 模型规格 → DSH provider/model 翻译表;__fallback__ 为兜底 |
⚠️ 安全权衡(必读):
hermes-trusted= danger-full-access + never,watcher 会话拥有全盘写权限。安全边界依赖 Hermes 下发侧白名单(任务源头过滤),不是沙箱。对不可信任务源需要另行防护。
使用
从 Hermes 侧下发任务(上游)
Hermes 侧用技能 /dsh-send(见 hermes-side/dsh-send-skill/SKILL.md):
/dsh-send --model deepseek-v4-flash 写一份本周进展周报
/dsh-send 会:创建 kanban 任务(hermes kanban --board dsh create ... --assignee dsh --created-by hermes --json)→ 写触发文件 ~/.dsh/kanban-trigger/.trigger → 返回任务 id。
watcher 认领执行(本插件)
fs.watch收到触发文件事件(或 30s 兜底轮询),drainOnce启动;list --json --assignee dsh找ready任务 →claim(原子认领)→show --json读元数据;- 按
model_override/provider_override走modelMap翻译,agents.create开 GUI 会话(挂 standard preset + hermes-trusted 权限预设),followup注入任务,withTimeout兜底; - 执行完成后
comment+complete --result回写看板,再writeDoneFile写.done。
会话继承(v0.2.0,续接历史会话上下文)
任务正文携带 [会话继承:](或显式 [会话继承:])时,watcher 会在同一工作区内匹配历史会话并续接上下文,而不是每次新对话:
- live 会话 → 直接复用(
agents.get+followup,方案 A) - 冷会话 →
agents.resume恢复事件流后续接 - 未命中 / 同会话二次占用 → 回退新建会话(行为不变)
/dsh-send --resume 继续讨论X 再分析一下刚才的结论