Install
openclaw skills install @jeanbai0818-cloud/workboard-skill当用户想用 OpenClaw Workboard 看板管理智能体工作卡片时使用——列出/创建/查看卡片、把就绪卡片分派给子智能体 worker、查看卡片生命周期与诊断、或排查卡片无法保存、分派仅数据、worker 不启动等问题。涉及 openclaw workboard CLI、/workboard 斜杠命令、看板状态机与会话生命周期同步。
openclaw skills install @jeanbai0818-cloud/workboard-skillOpenClaw Workboard 是内置看板插件,给 Control UI 加一个 Kanban 风格的看板:智能体粒度的工作卡片、分配给智能体,并返回卡片对应任务、运行和仪表盘会话的链接。它跟踪一个 OpenClaw Gateway 网关的本地操作工作,不是 GitHub Issues / Linear / Jira 这类团队项目管理系统的替代品。
这个 skill 面向操作员视角,负责三件事:
openclaw workboard 命令workboard_* 工具、认领令牌、worker 上下文)时指向参考资料CLI(openclaw workboard)、仪表盘分派操作、聊天斜杠命令(/workboard)三者操作的是同一份 Workboard 插件自有 SQLite 状态。Claude Code 在这里通常是操作员助手,用 CLI 操作看板;智能体工具是给子智能体 worker 调用的,本 skill 把它们收在参考资料里,不要求 Claude Code 直接调用。
Workboard 内置但默认禁用。使用前确认插件已启用、Gateway 在运行:
openclaw plugins enable workboard
openclaw gateway restart
openclaw gateway status --deep
检查插件运行状态:
openclaw plugins inspect workboard --runtime --json
openclaw CLI 不在 PATH、或插件未为当前 profile / 状态根目录启用时,所有 openclaw workboard 命令都会失败——先排这两项再调命令。
openclaw workboard list [--board <id>] [--status <status>] [--include-archived] [--json]
openclaw workboard create <title...> [--notes <text>] [--status <status>] [--priority <priority>] [--agent <id>] [--board <id>] [--labels <items>] [--json]
openclaw workboard show <id> [--json]
openclaw workboard dispatch [--url <url>] [--token <token>] [--timeout <ms>] [--json]
要点:
show 等接受 id 的命令也接受无歧义前缀(紧凑输出只显示前 8 位)list / create / show 直接读写本地插件 SQLite 状态,不经过 Gateway;只有 dispatch 调用运行中的 Gatewaytriage backlog todo scheduled ready running review blocked donelow normal high urgentopenclaw workboard list
openclaw workboard list --board default --status ready
openclaw workboard list --json
紧凑文本输出(列依次:id 前缀 / 状态 / 优先级 / 看板 id / 可选智能体 id / 标题):
7f4a2c10 ready high default agent-a Fix stale worker heartbeat
--include-archived 显示;--json 始终包含已归档卡片(兼容现有自动化)openclaw workboard create "Fix stale worker heartbeat" --priority high --labels bug,workboard
openclaw workboard create "Write Workboard docs" --status ready --agent docs-agent --board docs \
--notes "Cover CLI, slash command, dispatch, and SQLite state."
默认 status=todo、priority=normal。create 直接写 SQLite,卡片立即出现在 Control UI 的 Workboard 标签页和智能体工具里。
openclaw workboard show 7f4a2c10
openclaw workboard show 7f4a2c10 --json
文本输出打印紧凑卡片行 + 备注;--json 返回完整卡片记录(执行元数据、尝试次数、评论、链接、证明、工件、worker 日志、协议状态、诊断、自动化元数据)。排查卡片卡住时优先用 --json 看诊断字段。
openclaw workboard dispatch
openclaw workboard dispatch --json
openclaw workboard dispatch --url http://127.0.0.1:18789 --token "$OPENCLAW_GATEWAY_TOKEN"
调 Gateway RPC workboard.cards.dispatch,用与仪表盘分派相同的子智能体运行时把就绪卡片变成带任务跟踪的 worker 运行。文本输出:
dispatch complete: started=2 failures=0
回退时明确标注:
gateway unavailable; data dispatch only: promoted=1 blocked=0
--json 在 Gateway 支持时含 started 和 startFailures;仅数据回退含 gatewayUnavailable: true。卡片 JSON 输出里认领令牌会被隐去。完整调度语义见下方「调度语义」。
支持命令的渠道可用斜杠命令,与 CLI 对应:
/workboard list
/workboard show 7f4a2c10
/workboard create Fix stale worker heartbeat
/workboard dispatch
list / show 对任何已授权命令发送者都是读取操作create / dispatch 修改看板状态,聊天界面需要 owner 身份,或需要具备 operator.write / operator.admin 的 Gateway 客户端| 字段 | 取值 |
|---|---|
| status | triage, backlog, todo, scheduled, ready, running, review, blocked, done |
| priority | low, normal, high, urgent |
| labels | 自由格式字符串 |
| agentId | 可选的已分配智能体 |
| 关联引用 | 可选的任务、运行、会话或源 URL |
| execution | 从卡片启动的 Codex/Claude 运行的可选元数据(引擎、模式、模型、会话、运行 id、状态) |
卡片还携带紧凑元数据:尝试、评论、链接、证明、工件、自动化设置、附件、worker 日志、worker 协议状态、声明、诊断、通知、模板 id、归档状态、陈旧会话检测,以及最近事件列表。完整模型、状态机、会话同步规则见 card-lifecycle.md。
新卡片可从模板开始:bugfix、docs、release、pr_review、plugin——预填标题 / notes / 标签 / 优先级,模板 id 存为卡片元数据。
创建一张工作卡片时,至少填齐以下字段。CLI 用 openclaw workboard create,仪表盘在 Workboard 标签页新建——两者写入同一份 SQLite 状态。
| 字段 | 必填 | 写法 | CLI flag |
|---|---|---|---|
| 标题 | 是 | 一句话点明这张卡要做什么 | 位置参数 <title> |
| 备注 | 是 | 写清三块:① 背景 / 概述 ② 验收标准(完成判定,逐条列) ③ 相关链接(任务 / 运行 / 会话 / 源 URL)。务必清晰可执行 | --notes <text> |
| 状态 | 是 | 新建一般 todo;已就绪可分派用 ready | --status <status>(默认 todo) |
| 优先级 | 是 | low / normal / high / urgent | --priority <priority>(默认 normal) |
| 代理 | 是 | 选定负责的 agent id(Workboard 本身允许留空,本规范要求必填) | --agent <id> |
| 会话 | 是 | 必须绑定一个唯一会话;建议新建一个会话绑定,不要复用(见下) | CLI 无;仪表盘绑定 |
| 标签 | 是 | 逗号分隔,用于分类 / 筛选 | --labels <items> |
running、completed→review、failed/killed/timeout→blocked),多卡共用一个会话会把它们的状态搅在一起。create 不带会话参数:openclaw workboard create 没有 session 选项。建卡后到仪表盘 Sessions 标签页 → Add to Workboard 绑定一个(新)会话;或从卡片「开始工作」创建 / 复用会话并自动链接。备注里的验收标准和链接必须清晰可执行:
openclaw workboard create "修复 worker 心跳超时" \
--status todo \
--priority high \
--agent agent-a \
--labels bug,workboard \
--notes "背景:running 卡 >20min 无心跳被标 running_without_heartbeat。
验收标准:
- 复现并定位心跳丢失原因
- 修复后 running 卡持续心跳 ≥30min 不再触发该诊断
- 回归 1 次 dispatch 无 startFailures
链接:任务 #123 / 运行 run-abc / 会话(新建后于仪表盘绑定)"
建卡后到仪表盘给这张卡绑定一个新会话。
openclaw workboard list,需要某状态就加 --status readyopenclaw workboard create 建卡;CLI 不带会话参数,建卡后到仪表盘绑定一个新会话openclaw workboard show <id>,要机器消费加 --jsonopenclaw workboard list --status ready 确认有未认领的就绪卡,再 openclaw workboard dispatch调度是 Gateway 本地的,不生成任意 OS 进程;正常 OpenClaw 子智能体会话仍拥有执行权。一次 dispatch 会:
readyready 卡片Worker 选择(较保守):
running 或 review 工作的 ownerready 的卡片,永远不会被选中启动 worker(但仍受数据侧影响:陈旧认领清理、依赖提升、超时清理)agent:<agentId>:subagent:workboard-<boardId>-<cardId>subagent:workboard-<boardId>-<cardId>(Gateway 解析已配置的默认智能体)启动失败处理:卡片被认领后无法启动 worker 时,Workboard 阻塞该卡片、清除认领、记录运行启动失败、追加 worker 日志行——失败保持可见,而不是静默把卡片放回队列。
Gateway 不可用回退(仅数据调度):当 Gateway RPC 因连接 / 不可用失败(或旧版返回 unknown method),且没有显式 --url / --token、也没有已配置远程 Gateway(OPENCLAW_GATEWAY_URL 或 gateway.mode: remote)时,CLI 对本地 SQLite 跑仅数据分派:能提升依赖、清理陈旧认领、阻塞超时运行,但不能启动 worker。来自可访问 Gateway 的身份验证 / 权限 / 校验失败不算不可用,作为命令错误直接报;给了显式 --url / --token 时,任何 Gateway 失败也直接报、不回退。
三个分派入口在 Gateway 可用时都用其子智能体运行时:仪表盘分派操作、openclaw workboard dispatch、/workboard dispatch。
诊断根据本地卡片元数据计算,内置检查:
| 类型 | 条件 |
|---|---|
| stranded_ready | 已分配的 todo / backlog / ready 卡片超过 1 小时未更新 |
| running_without_heartbeat | running 卡片超过 20 分钟没有认领 heartbeat 或执行更新 |
| blocked_too_long | blocked 卡片超过 24 小时未更新 |
| repeated_failures | 卡片失败计数达到 2 次或更多 |
| missing_proof | done 卡片没有 proof / artifacts / attachments |
| orphaned_session | running 卡片有 sessionKey 但没有 execution 元数据 |
排查卡片卡住时,先用 show --json 看诊断字段,对照上表定位原因。
Gateway RPC 方法在 workboard.* 下:operator.read 覆盖只读方法(cards.list / cards.export / cards.diagnostics / attachment 读取 / notification 事件读取 / boards.list / cards.stats / cards.runs),operator.write 覆盖所有变更方法(创建 / 移动 / 删除 / 认领 / 分派 / 指定 / 分解等)。没有方法需要 operator.admin。只读操作员浏览器能看板但不能改卡。CLI 分派路径用 operator.read + operator.write 调 RPC;只读 Gateway 令牌能看数据但不能建卡或分派。
数据存在 OpenClaw 状态目录下、插件自有的关系型 SQLite 库里(boards / cards / labels / lifecycle events / run attempts / comments / dependency links / proof / artifact references / attachment metadata and blobs / diagnostics / notifications / worker logs / protocol state / subscriptions),随该 Gateway 的其他 OpenClaw 状态一起移动。.28 版本用过的安装可跑 openclaw doctor --fix 把旧版插件状态命名空间(workboard.cards、workboard.boards、workboard.notify,及若存在的 workboard.attachments)迁移到关系型库。
| 现象 | 处理 |
|---|---|
| 标签页显示 Workboard 不可用 | openclaw plugins inspect workboard --runtime --json;若配了 plugins.allow 就把 workboard 加进去;若 plugins.deny 含 workboard 先移除再启用 |
| 卡片无法保存 | 确认浏览器 / 令牌有 operator.write;只读会话能列卡但不能建 / 改 / 移 / 删 |
| CLI 看不到卡但仪表盘有 | 确认 CLI 和仪表盘用同一 --dev / --profile / 状态根目录;openclaw plugins inspect workboard --runtime --json |
| 启动卡片没打开预期会话 | 查卡片的 agentId 和已链接会话,打开 Sessions / Chat 看实际运行状态 |
| 分派提示仅数据 | openclaw gateway restart → openclaw gateway status --deep → 重试 openclaw workboard dispatch;仅数据回退对本地清理有用,但 worker 运行要可用 Gateway |
| 分派没启动任何 worker | openclaw workboard list --status ready 确认有未认领就绪卡;同一 owner 已有 running / review 工作时会被跳过——先 complete / block / release 那些活跃工作再分派 |
| 卡片停在 running 不动 | 查 show --json 诊断:running_without_heartbeat(>20min 无心跳 / 执行更新)或 orphaned_session(有 sessionKey 无 execution) |
workboard_* 工具表、认领令牌脱敏、worker 上下文、链接 / 分解 / 通知游标语义):读 agent-tools.mdopenclaw 在 PATH、插件已为当前 profile 启用,再调命令list / create / show 直接操作本地 SQLite,不依赖 Gateway;只有 dispatch 需要 Gatewayshow --json 拿完整卡片记录(执行 / 尝试 / 评论 / 链接 / 证明 / 工件 / worker 日志 / 诊断),用纯 show 看紧凑行 + 备注list --status ready 确认有未认领就绪卡,避免「分派没启动」的来回operator.write