启用插件
Workboard 已内置,但默认禁用:- 在 Control UI 中打开 Plugins,或使用相对于已配置 Control UI 基础路径的
/settings/plugins。例如,基础路径为/openclaw时,使用/openclaw/settings/plugins。 - 找到 Workboard 并选择 Enable。由于 Workboard 已包含在 OpenClaw 中,因此无需执行 Install 操作。
- 如果 UI 提示需要重启,请重启 Gateway 网关。
plugins.allow/plugins.deny 阻止,直接打开 /workboard 路由会显示插件不可用状态,而不是卡片数据。
对应的 CLI 工作流如下:
配置
Workboard 没有插件专用配置。使用标准插件条目启用或禁用它:卡片字段
卡片还包含简洁的元数据,用于记录尝试、评论、链接、验证材料、工件、自动化设置、附件、工作器日志、工作器协议状态、认领、诊断、通知、模板 ID、归档状态和过期会话检测,以及最近事件列表(
created、edited、moved、linked、specified、decomposed、claimed、heartbeat、execution_updated、attempt_started、attempt_updated、comment_added、link_added、proof_added、artifact_added、attachment_added、diagnostic、notification、dispatch、orchestration、protocol_violation、archived、unarchived、stale)。借助这些元数据,操作员无需打开关联会话即可查看卡片在工作面板中的流转过程;它们是本地运维上下文,不能替代会话记录或 GitHub Issue 历史记录。
插件和 Control UI 使用同一套 Workboard 卡片契约。因此,仪表板刷新时会保留工作区来源和权限、认领状态、诊断操作以及通知序列号,而不是投影一份字段更少且仅供 UI 使用的卡片副本。未知的诊断类型、诊断严重性和通知类型会被忽略,直到两个界面均支持它们;它们绝不会被改写为其他有效状态。
打开的仪表板通过 plugin.workboard.changed 失效事件进行更新。每个事件仅包含存储纪元和修订号;随后 UI 会通过常规 operator.read RPC 重新读取规范卡片。多个修订会合并为一次后续读取。拖动、编辑或写入卡片时,Workboard 会推迟该读取,并在本地交互完成后恢复。重新连接始终会执行规范重新加载。系统不会例行轮询完整卡片,同时仍可使用 Refresh 进行手动恢复。
存在多个工作面板时,工具栏会提供 Board 筛选器;该筛选器由持久化的工作面板元数据提供支持,而不是只依据当前可见的卡片。因此,空工作面板和已归档工作面板仍可选择。没有显式工作面板 ID 的卡片属于规范的 default 工作面板。每个工作面板都有一个规范的 /workboard/<boardId> 页面,可以添加书签、共享或固定到侧边栏。此前发布的 /workboard?board=<boardId> 形式仍作为兼容性别名,并会在保留其他查询参数的同时重定向到该页面。选择 All boards 会返回 /workboard。
卡片存储在插件自己的 Gateway 网关状态中,并会与该 Gateway 网关的其他 OpenClaw 状态一起迁移(请参阅存储)。
从卡片开始工作
未关联的卡片可以直接开始工作:- Run Codex / Run Claude 会使用显式指定的引擎启动一个由任务跟踪的智能体运行,发送卡片提示词,并将卡片标记为
running。Codex 运行使用openai/gpt-5.6-sol;Claude 运行使用anthropic/claude-sonnet-4-6。 - Open Codex / Open Claude 会创建一个关联的仪表板会话,但不会发送卡片提示词或移动卡片,适用于需要保持附加到工作面板的手动工作。
review 或 blocked(请参阅会话生命周期同步)。
智能体工具
证明状态是工作节点报告的结果,而非独立验证。
passed
条目表示工作节点报告其命令或检查已成功;需要独立质量门禁的使用方应检查
所附的命令、URL 或工件,并运行自己的验证程序。workboard_proof
返回新记录的 proofId。当 workboard_complete 报告同一证明的
终止状态时,传入 proofId,以便原地解析待处理记录,而不丢失
其标识或时间戳。已有相同终止状态的证明会原样复用。未提供
proofId 的完成证明保持仅追加,因此后续重试不能仅因其命令或
备注相同而改写较早的历史记录。
除非调用方持有 workboard_claim 返回的认领令牌,否则已认领的卡片会
拒绝其他智能体发起的智能体工具变更。智能体工具或 Gateway RPC 调用返回的
每张卡片都会将 metadata.claim.token 脱敏为 [redacted]
(令牌本身仅由 workboard_claim 在顶层返回一次),因此仪表板操作员和
其他智能体可以检查认领状态,而永远不会看到可用的令牌。恢复通过
workboard_promote/workboard_reassign/workboard_reclaim 进行,这些操作
不需要令牌。
调度
调度在 Gateway 网关本地进行:它不会生成任意操作系统进程。执行仍由常规 OpenClaw 子智能体会话负责。一次调度流程:- 提升依赖项已就绪的卡片。
- 在就绪卡片上记录调度元数据。
- 阻塞认领已过期或运行已超时的卡片。
- 将看板配置的分诊卡片标记为编排候选项。
- 认领一小批就绪卡片,并通过 Gateway 网关子智能体运行时启动工作节点运行。
operator.write 的
Gateway 网关客户端可以使用已配置的智能体工作区;operator.admin
客户端可以使用其他主机检出目录。沙箱隔离的智能体工具使用其沙箱工作区访问权限,
而未进行沙箱隔离且仅限工作区的工具使用其配置的工作区根目录。Workboard 在分配
工作区时记录该权限,并在调度时再次将其与当前调用方的权限取交集,因此持久化的
卡片无法扩大后续调用方的访问权限。对于具有显式主机工作区但未记录权限的旧卡片,
必须先重新保存该工作区,才能执行完整主机调度;没有主机路径的卡片在首次调度时
采用当前调用方的权限。
仅当目录或 Git 检出目录的仓库根目录与目标智能体工作区完全匹配时,绑定工作区的
调度才会接受它。工作树请求会限定到该目录并持久化为目录工作区,因此主机不会具现化
检出目录或执行仓库设置代码。目标工作节点必须为该确切工作区使用可写、非共享的
Docker 沙箱,且不得使用提升权限的执行、持久化的主机/节点 Exec 覆盖,也不得使用
未分类的插件和 MCP 工具。Workboard 会枚举其注册工具,而不是信任
workboard_* 前缀;如果热 Docker 容器的实时挂载/配置哈希已过期,调度将拒绝
该容器。调度会报告不兼容的目标策略,而不会启动隔离程度较低的工作节点。
完整主机调度可以面向其他本地检出目录,并保留常规的托管工作树设置。
工作区权限不会创建第二套卡片生命周期权限模型。获准变更 Workboard 卡片的调用方
可以在所有界面上手动将其移经相同的状态;只读工作区访问权限仅会阻止需要写入的
工作节点调度。
工作节点选择
每轮默认启动最多 3 个工作进程。就绪卡片依次按优先级、位置和创建时间排序。每轮对每个所有者/智能体只启动一张卡片,并跳过看板上已有运行中或审查中工作的所有者。已归档的卡片、有活动认领的卡片,以及状态不是ready 的卡片,绝不会被选中用于启动工作进程(但仍可能受到调度数据侧操作的影响:清理过期认领、提升依赖项、清理超时)。
会话键按看板/卡片确定性生成,因此重复调度会路由回同一工作进程通道,而不是创建无关会话:
- 已分配的卡片:
agent:<agentId>:subagent:workboard-<boardId>-<cardId> - 未分配的卡片:
subagent:workboard-<boardId>-<cardId>(Gateway 网关会解析已配置的默认智能体)
入口点
- 仪表板调度操作
openclaw workboard dispatch- 支持命令的渠道上的
/workboard dispatch
unknown method 错误),并且未指定显式 --url/--token 目标,也没有已配置的远程 Gateway 网关(OPENCLAW_GATEWAY_URL 或 gateway.mode: remote)适用,CLI 会针对本地 SQLite 状态执行仅数据调度——它可以提升依赖项、清理过期认领并阻塞超时运行,但无法启动工作进程。可访问的 Gateway 网关所返回的身份验证、权限和验证失败不会被视为不可用;这些失败会显示为命令错误。如果指定了显式 --url/--token 目标,任何 Gateway 网关失败也都会显示为命令错误。
看板元数据可以设置 autoDecompose、autoDecomposePerDispatch、defaultAssignee 和 orchestratorProfile。OpenClaw 会记录此意图并将其公开到工作进程上下文中;实际的规格制定/任务拆分仍通过常规 Workboard 工具进行。
CLI 和斜杠命令
list 文本输出默认隐藏已归档卡片(--include-archived 可覆盖此行为);--json 始终包含已归档卡片,与现有脚本使用的完整卡片契约一致。show 和 move 接受无歧义的 ID 前缀。list、create、show 和 move 始终直接读写本地插件状态。只有 dispatch 会调用正在运行的 Gateway 网关,并使用上述回退机制。
有关完整标志、JSON 输出、Gateway 网关回退行为、ID 前缀处理、调度选择规则和故障排查,请参阅 Workboard CLI。
/workboard list、/workboard show <card-id>、/workboard create <title>、/workboard move <card-id> --status <status> 和 /workboard dispatch 与 CLI 对应。对于任何获得授权的命令发送者,列出和显示都是读取操作。在聊天界面中,创建、移动和调度要求拥有所有者身份;Gateway 网关客户端则需要 operator.write/operator.admin。操作员手动移动卡片时,使用与仪表板拖放相同的认领覆盖行为。其工作树访问仍遵循上述相同的工作区边界。
会话生命周期同步
卡片可以链接到现有仪表板会话,也可以链接到从卡片启动工作时创建的会话。已链接的卡片会内联显示会话生命周期:运行中、已过期、已链接但空闲、已完成、失败或缺失。还可以在会话选项卡中使用添加到 Workboard捕获现有会话;卡片会链接到该会话,使用会话标签或最近的用户提示作为标题,并在可用时使用最近的用户提示和最新的助手回复初始化备注。 如果已链接的会话缺失,卡片会为保留上下文而继续保持链接,并仍提供启动控件,以便在新会话中重新启动。如果活动的已链接会话停止报告近期活动,Workboard 会将卡片标记为stale,并将其存储为元数据,直到生命周期将其清除。
当卡片处于活动工作状态时,Workboard 会跟随已链接会话:
手动审查状态优先。 将卡片移至
review、blocked 或 done 会停止该卡片的自动同步,直到将其移回 todo 或 running。
启动卡片时使用常规 Gateway 网关会话;Workboard 仅存储卡片元数据和链接。对话记录、模型选择和运行生命周期仍由常规会话系统负责。对活动的已链接卡片使用停止可中止活动运行——Workboard 会将该卡片标记为 blocked,使其继续显示以便后续处理。
新卡片可以从 Workboard 模板(bugfix、docs、release、pr_review、plugin)开始创建。模板会预填标题、备注、标签和优先级;模板 ID 会存储为卡片元数据。
仪表板工作流
- 在 Control UI 中打开 Workboard 选项卡。
- 创建一张卡片,填写标题、备注、优先级、标签、可选智能体和可选的已链接会话;或者打开会话并为现有会话选择添加到 Workboard。
- 在列之间拖动卡片,或聚焦其紧凑状态控件,然后使用菜单或 ArrowLeft/ArrowRight。拖动期间,源卡片会变暗,可用的放置列会显示轮廓。
- 从卡片启动工作,以创建或复用仪表板会话。
- 智能体工作期间,从卡片打开已链接会话。
- 让生命周期同步将运行中的工作移至
review/blocked,然后在接受后手动将卡片移至done。
会话看板小组件
Workboard 为会话仪表板提供两个原生小组件(参阅仪表板)。智能体使用其dashboard 工具并通过 content: { kind: "plugin", pluginKind, props } 固定这些小组件;它们会使用实时数据渲染为第一方 UI——无需沙箱框架或能力授权:
workboard:card与props: { cardId }结合使用时,会显示一张卡片及其状态控件、优先级和已分配智能体。workboard:mini与可选的props: { boardId, limit }结合使用时,会显示各状态的数量以及排名靠前的就绪/运行中卡片,并链接到完整看板页面。如果没有boardId,它会聚合所有看板;如果有boardId,则限定到该看板(未指定显式看板 ID 而创建的卡片位于default)。
诊断
诊断根据本地卡片元数据计算。内置检查会标记:权限
Gateway 网关 RPC 方法位于workboard.* 下:
没有 RPC 方法需要
operator.admin。以只读操作员权限连接的浏览器可以查看看板,但不能修改卡片。管理员权限范围会扩大可接受的 Workboard 主机路径,但不会改变可用的方法。
存储
Workboard 将持久数据存储在 OpenClaw 状态目录下由插件所有的关系型 SQLite 数据库中:看板、卡片、标签、生命周期事件、运行尝试、评论、依赖链接、证明、工件引用、附件元数据和二进制大对象、诊断、通知、工作进程日志、协议状态和订阅均存储在 Workboard 表中(而不是插件键值条目中)。卡片导出会保留看板叙事,但不会内联附件二进制大对象的内容。 在.28 版本中使用过 Workboard 的安装可以运行 openclaw doctor --fix,将已发布的旧版插件状态命名空间(workboard.cards、workboard.boards、workboard.notify,以及存在时的 workboard.attachments)迁移到关系型数据库中。
故障排查
选项卡显示 Workboard 不可用plugins.allow,请将 workboard 添加到其中。如果 plugins.deny 包含 workboard,请在启用插件前将其移除。
卡片无法保存
确认浏览器连接具有 operator.write 访问权限。只读操作员会话可以列出卡片,但无法创建、编辑、移动或删除卡片。
启动卡片后未打开预期会话
检查卡片的智能体 ID 和已链接会话,然后打开会话或聊天以查看实际运行状态。
调度未启动工作进程
确认至少有一张没有活动认领的 ready 卡片: