DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Taskboard Flow — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
T

taskboard-flow

Taskboard Flow

DSH 插件:多项目看板流程引擎 + 跨会话消息传递。监视 dsh-taskboard 台账,在卡片状态转换时启动分流/执行代理会话,在审核时唤醒创建者,转发 @orchestrator 升级请求,并提供 session_message + contacts 模型工具,用于会话间

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:markelayan/dsh-taskboard-flow#a8fbf1b143983dd48db99f172de9583fdcfd8a82
README兼容性版本

说明

DSH 插件:多项目看板流程引擎 + 跨会话消息传递。监视 dsh-taskboard 台账,在卡片状态转换时启动分流/执行代理会话,在审核时唤醒创建者,转发 @orchestrator 升级请求,并提供 session_message + contacts 模型工具,用于会话间消息传递。配置基于文件(cordis 组合)——无 Web UI。

兼容性与来源证明

Taskboard Flow 以 taskboard-flow 发布,当前版本为 0.7.3。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/9

版本

0.7.3stable
2026/9/9
0.7.0stable
2026/9/1
查看其余 1 个版本收起版本
0.6.2-alpha.3prerelease
2026/9/1

相关插件

正在加载相关插件…

最新版
0.7.3
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
周下载
0
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 agents-orchestration 分类下经过校验的插件。

Headless@deepseek-ai/dsh-headlessdsh one-shot bundle:基于 dsh-base 的直接核心 Agent/Session 运行器,不包含 Host、HTTP 或浏览器层Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序Subagent Claude Code@deepseek-ai/dsh-subagent-claude-code基于官方 Agent SDK 的一次性 Claude Code 子代理提供方

README

dsh-taskboard-flow

Companion plugin to dsh-taskboard — the task kanban plugin for DeepSeek Harness (DSH). dsh-taskboard gives you the board, the cards, and the taskboard_* tools. taskboard-flow makes the board move itself: it watches the ledger, spawns and routes agent sessions through your columns, wakes the right session at the review moment, and lets any session message any other session.

Config is file-based (a cordis composition patch). No web UI, no database, no telemetry — everything runs on your machine against your local dsh web API.

[!WARNING] This plugin is a companion to the dsh-taskboard plugin and can make agent sessions interact with ANY other session on your dsh instance — sessions on your dsh-taskboard boards, idle sessions, or sessions actively running any agent model. A session_message from one session is delivered visibly into another session's conversation even in the middle of a turn, and the target agent may act on it with its full tool permissions. Board flows likewise spawn agent sessions and wake sessions automatically. Treat cross-session messages like remote instructions: only enable this plugin where you trust every session on the instance, and set sessionMessage.enabled: false to withhold the tool entirely.

At a glance

CapabilityWhat happens
Triage spawnA card entering backlog spawns a triage session that decomposes it into child cards in todo
Direct executionA card entering todo executes via the real taskboard run API, on the card's own model pin
Review wakeA card entering in_review wakes the card creator's session — live, or resumed after a restart
@orchestrator relayA comment starting @orchestrator escalates to the project's orchestrator session
[ASK] decision gateQuestion/decision cards skip triage entirely and wake a designated answerer — answered, never decomposed
session_messageAny session can message any other session, with state-aware, always-visible delivery
taskboard_doneCreator-only task close with a mandatory closing comment
contactsNamed contact directory over session ids — alias → session id + live status in one call, message a contact in one call
Concurrency capsGlobal / per-project / per-column executor limits with automatic re-dispatch
Telegram bridge (optional)Polls a local MCP endpoint for pending callbacks and creates tasks from them (off by default)

How it complements dsh-taskboard

dsh-taskboard providestaskboard-flow adds
Kanban board + JSON ledgerThe flow engine that reacts to card transitions
taskboard_create / update / move / checklist toolstaskboard_done — creator-only close
Manual card work by sessionsAutomatic spawn / route / execute / wake
—session_message cross-session messaging
—contacts — named contact directory (alias → session + live status)
—@orchestrator + [ASK] escalation routing
—Optional Telegram remote-control bridge

Use cases

  1. Autonomous work-order pipeline. Drop a work order as a backlog card and walk away: triage decomposes it into model-pinned children, executors run them through the run API, and your session is woken with the execution report the moment a card hits in_review.
  2. Multi-project federation. Wire several boards (each with its own workspace path, orchestrator session, and column wiring) in one config file. A @orchestrator comment always escalates within the card's own project.
  3. Human-in-the-loop decisions. Title a card [ASK] … when the agents need a ruling: it never gets decomposed — it wakes the designated answerer (you, or a staff session), the answer lands as a comment, and work resumes.
  4. Cross-session coordination. An orchestrator nudges a stuck executor with session_message: if the executor is mid-turn the message appears as a visible notice without interrupting the turn; if it is idle the full text is steered into its conversation.
  5. Unattended resilience. resumeIfDead resurrects callback targets after dsh restarts, so the review loop survives reboots; the optional Telegram fallback keeps you reachable when no session can be reached.
  6. Remote control. With the Telegram bridge enabled, callbacks from your bot become kanban tasks with embedded data — the board becomes the queue for everything.

Flows

The kanban loop (per board, all wiring optional)

              ┌──────────────────────────────────────────────┐
              │            backlog card arrives              │
              └───────────────────┬──────────────────────────┘
                 [ASK] title? ────┼──── normal card
                      │                          │
                      ▼                          ▼
        wake [ASK] answerer         spawn TRIAGE session
        (answered in comment        (column prompt + card body)
         → in_review)                            │
                                                 ▼
                                   child cards created in todo
                                                 │
                                                 ▼
                                  TODO card executes (run API,
                                  card's model pin, column cap)
                                                 │
                                                 ▼
                                  IN_REVIEW → wake the creator
                                  (report attached, resumeIfDead)
                                                 │
                                                 ▼
                                    creator closes (taskboard_done)

Any card, any column: a comment starting @orchestrator escalates to that project's orchestrator session (live → resumed → Telegram fallback).

Callback delivery (dshCallback)

How a wake reaches the target session — per column, your choice:

modeBehavior
wakeStarts a turn on the target: steer for live sessions, followup for executor sessions, AgentRegistry.resume for dead ones
notifyInjects a visible plugin notice — mid-turn safe, starts no turn
contextQuietly pushes a runtime-context note (30-min TTL) the agent reads at its next turn

Knobs: target (creator or a fixed session id), onlyPrefix, delivery (steer/followup for wake mode), includeReport, resumeIfDead, telegramFallback.

session_message delivery

Delivery adapts to the target's state so a human always sees the message:

Target stateHuman seesAgent getsdelivery value
IdleFull text steered into the conversationSteer + runtime-context note; turn starts at the target's next user inputcontext+wake-steer
Busy (mid-turn)Full text injected as a visible notice — same channel as context-compression nudges, mid-turn safeSame notice + runtime-context note; the running turn is untouchedcontext+notice

Both paths also push a runtime-context note (30-min TTL, cap 5) so the target agent reads the payload at its next turn even if it never re-opens the GUI.

Model tools

session_message

session_message { action: "list" }
→ { ok, count, sessions: [{ id, status }] }

session_message { action: "send", target, message, wake?, resumeIfDead? }
→ { ok, from, to, targetStatus, delivery, nudgeVia, noticeInjected, note, resumed }

Options: wake: false disables turn-start attempts; resumeIfDead: true resurrects a dead target first (opt-in). Self-sends are refused. Disable the whole tool with the sessionMessage.enabled: false config knob.

taskboard_done

taskboard_done { id, comment }

Creator-only: the caller must be the task's creator and the task must be in_review. Posts the closing comment, then performs the done move. No other path moves a task to done — taskboard_move hard-forbids it.

contacts

contacts { action: "list" }
→ { ok, count, contacts: [{ name, sessionId, label, tags, note, updatedAt, status }] }

contacts { action: "get", name }
contacts { action: "call", name, message, wake?, resumeIfDead? }   // via the session_message engine
contacts { action: "add", name, sessionId?, label?, tags?, note? }
// v0.7.3: omit sessionId → registers YOUR calling session automatically
// (agents self-register by name only); pass one to register another session.
contacts { action: "update", name, sessionId?, label?, tags?, note?, rename? }
contacts { action: "remove", name }

A named directory over raw session ids: list/get resolve an alias to its session id + live status in one call, call messages the contact through the session_message delivery engine (same wake / resumeIfDead semantics, same delivery fields), and add/update/ remove manage entries at runtime — no config edit, no restart. Entries persist to a local JSON store (~/.dsh/taskboard-flow-contacts.json by default; atomic writes; personal state, never shipped). Kill-switch contacts.enabled: false; custom store path via contacts.file. Names: lowercase [a-z0-9._-], ≤64 chars.

Requirements

  • A running dsh web deployment (the plugin talks to the local run API at http://127.0.0.1:9001/dsh-taskboard by default).
  • The dsh-taskboard plugin (provides the ledger the flow engine watches and the taskboard_* tools agents use).
  • Node.js (ESM, no runtime dependencies — package.json declares none).

Install

# 1. Get the package
git clone https://github.com/markelayan/dsh-taskboard-flow.git
cd dsh-taskboard-flow

# 2. Create YOUR config (the live config is gitignored on purpose)
cp cordis.patch.yml.example cordis.patch.yml
#    → edit cordis.patch.yml: your board id(s), workspace paths, sessions

# 3. Make the package resolvable from your dsh profile
#    Either link it into the profile's node_modules…
ln -s "$(pwd)" ~/.dsh/profiles/web/node_modules/taskboard-flow
#    …or add it as a profile dependency and register the bundle
#    ("taskboard-flow") in your profile's dsh.profile bundles list.

# 4. Restart dsh web (plugin patches load at startup)

Do NOT also add a - insert: taskboard-flow row to your profile's cordis.patch.yml — the package ships its own patch, and doubling it up produces a duplicate entry for taskboard-flow error at startup.

Configuration reference

Every knob is documented inline in cordis.patch.yml.example. Summary:

Global

KeyDefaultMeaning
enabledtrueMaster switch for the whole plugin
pollMs5000Ledger poll interval (ms)
skipFirstPolltrueIgnore transitions that predate plugin boot
maxConcurrent3Global fallback cap on simultaneous executors
executeUrlhttp://127.0.0.1:9001/dsh-taskboardLocal dsh web run API
defaultEnabledfalseBoards without an entry stay untouched
sessionMessage.enabledtrueRegisters (or withholds) the session_message tool
contacts.enabledtrueRegisters (or withholds) the contacts tool
contacts.file~/.dsh/taskboard-flow-contacts.jsonLocal JSON store for contact entries (atomic writes)

Per project (one key per board/workspace id)

KeyMeaning
enabledGate for this board
cwdWorkspace path attached to spawned sessions
renameSessionRename spawned sessions after the task
attachWorkspaceAttach cwd as the session workspace
orchestratorSessionTarget for @orchestrator escalation (omit to disable)
telegramBridge{ enabled, brainMcpUrl } — optional callback bridge
columnsPer-column wiring (below)

Per column (backlog / todo / in_review)

KeyMeaning
enabledReact to transitions into this column
prompt(backlog) system prompt for the spawned triage session
model{ provider, model } pin for spawned sessions
skipSpawnPrefixes(backlog) titles with these prefixes skip triage (e.g. [ASK])
spawnModeexecute = real run-API execution (todo), not a bare spawn
executeSkipTitleContainsTitles containing these keywords are held (umbrella mains)
executeMaxConcurrentColumn executor cap (column > project > global)
dshCallbackWake wiring on transition (see delivery table above)

Security & privacy

  • Local-only. The flow engine talks to your local dsh web API (127.0.0.1); the optional Telegram bridge talks to whatever local MCP URL you configure. Nothing else. No telemetry, no analytics, no bundled secrets.
  • Your config stays yours. cordis.patch.yml (board ids, session ids, local paths) is gitignored; only a sanitized cordis.patch.yml.example ships in the repo.
  • No stored credentials. The plugin reads no tokens and stores no secrets. If your Telegram bridge requires auth, that lives in your own MCP setup, not here.
  • session_message trust boundary. Any session on your dsh instance can message any other session on the same instance. That is the point of the tool — but it means a hijacked session can whisper to other sessions. If that is a concern for your deployment, set sessionMessage.enabled: false and the tool is not registered at all.
  • Spawned sessions inherit your permissions. Triage/executor sessions run with your dsh account's tool access and your column prompts. Review the prompts you put in the config — they are instructions your agents will follow.

Troubleshooting

  • duplicate entry for taskboard-flow at startup — you added an insert row to your profile patch while the package already ships one. Remove the row.
  • projects=0, all loops dead — your projects: wrapper is malformed (indentation). The example file shows the correct nesting.
  • Config changes not taking effect — restart dsh web; the plugin reads its config once at startup.
  • A wake didn't start a turn — main GUI sessions only start turns on user input; the message is rendered visibly in the conversation and the agent reads it at its next turn. Executor-style sessions wake immediately.

Documents

  • SKILL.md — agent companion skill: tool reference, usage patterns, etiquette.
  • CHANGELOG.md — full version history.
  • cordis.patch.yml.example — annotated config template.

License

MIT