跳转至

Playbooks

Playbook 用来保存一类任务的可复用编排。需要审核、共享并用不同输入重复运行同一 工作流时,可以使用它。它保存一张图,或组装图的指导;执行仍使用 Raven 原有的 DAG 机制。

选择合适的能力

能力 适用场景 不提供什么
Skill 可复用的指令、脚本和参考资料 保存好的多 Agent 执行图
run_subagent_dag 为当前任务临时组图 可复用的命名库条目
Playbook 可重复的审查、研究或其他多步骤流程 调度计划或持久工作流服务
Evolver 用基准评估 harness 修改的实验 执行用户日常工作流

例如,发布审查 Playbook 可以并行检查兼容性和测试,再汇总结果;事故复盘 Playbook 可以先收集证据,再起草报告。应从只读工作流开始,发送消息或修改 基础设施需要另外考虑权限。

调度和失败处理见DAG 编排,整体能力划分见 技能、记忆与扩展。

检查与创建

raven playbook list
raven playbook create brief-review \
  --input "Review a supplied brief for gaps, then summarize actionable feedback. Do not edit files."
raven playbook get brief-review
raven playbook validate brief-review

create 使用已配置模型;--from FILE 可代替或配合 --input 提供工作流材料。 运行前检查生成的参数和步骤:生成结果不保证与下方示例完全一致。 get 将文件输出到 stdout,将来源路径输出到 stderr。

新建 Playbook 会立即可用,尽管旧 CLI help 仍描述为创建后禁用。 审核期间可用 raven playbook disable brief-review 暂停提供给模型。 如果需要先审核、后发现,应在库目录之外编写,按路径校验,准备好后再安装。

库分为 raven/playbook/builtin/ 下的只读打包层和可写用户层。 打包层可能没有任何条目。用户层默认是 config.workspace_path / "playbooks" (配置的 Agent home);playbooks.dir 可覆盖此路径。 同名用户文件会遮蔽内置文件。库文件变化和禁用列表会实时读取。

完整的 DAG Playbook

将以下内容保存为编写目录下的 brief-review/playbook.md。如果已经生成了同名 条目,应审核并编辑原文件,不要再创建第二份定义。

---
name: brief-review
description: Review a brief for gaps and summarize actionable feedback
---

# Brief review

Inspect the supplied brief, then produce a prioritized checklist.

```yaml playbook-spec
version: 1
taskSummary: Review a brief
mode: dag
confirm: true
triggers:
  keywords: [brief review, review brief]
params:
  brief:
    type: string
    required: true
    description: The brief to inspect
nodes:
  - id: inspect
    subagent: raven
    nodeSummary: Identify gaps
    skills: []
    mcps: []
    promptTemplate: "Find gaps in this brief: {{ params.brief }}. Do not edit files or contact external services."
  - id: summarize
    subagent: raven
    nodeSummary: Prioritize feedback
    dependsOn: [inspect]
    skills: []
    mcps: []
    promptTemplate: "Turn these findings into a prioritized checklist: {{ inspect.output }}. Do not edit files or contact external services."
```

raven 是通用内置 Agent。如需 Raven-Code 等专用 Agent,替换为已注册的名称, 并按Agent 集成检查配置。保存的 Playbook 使用底层 Agent registry,而不是临时组图时向模型展示的 worker label。

raven playbook validate ./brief-review/playbook.md

审核后将目录放入用户库根目录,再运行:

raven playbook run brief-review 'brief=Launch a read-only documentation preview for internal reviewers.'

示例中的指令和空 Skill/MCP 选择不是只读沙箱。普通工具仍遵循 Agent 的权限策略。

文件由三部分组成:只有 name 和 description 的 frontmatter、面向人的正文、 以及恰好一个 yaml playbook-spec 区块。名称与目录名一致,使用小写字母、数字 和连字符。taskSummary 是调度任务的标题,与用于发现的 description 不同。 未知契约字段会报错。

DAG 模式与 prompt 模式

mode: dag 要求非空 nodes,不能包含 prompts。保存的图经过填充后由 SubAgentDagTool 调度。独立节点可以并行;引用其他节点时需要声明依赖。

mode: prompt 要求 prompts,不包含图。例如,将示例的 mode 和 nodes 字段替换为以下片段:

mode: prompt
prompts: |
  Build a read-only review graph for this brief: {{ params.brief }}.
  Use registered agents to inspect clarity and feasibility independently.
  Add a final synthesis node depending on both inspections.
  Do not edit files or contact external services.

对话中,load_playbook 返回已填充的指导,由调用方组图并提交 run_subagent_dag。CLI 则使用已配置模型组图,允许有限次数的修复尝试。 两条路径都使用普通 DAG 契约。Prompt 模式是组图指导,不是运行时分支语言; 应检查实际提交图的选项,包括审批设置。

参数与空字段

在 params 中声明输入,支持 string、integer、number、boolean、 enum、path 和 secret。普通参数引用直接写在 promptTemplate 或 prompts 中,不要写入节点 inputs。支持 {{ params.brief }} 和 dollar-brace 两种参数引用形式。

当前 resolver 进行文本替换并检测缺少的必填值;仅声明类型,并不意味着运行时 会强制检查数字、枚举成员或路径访问限制。敏感输入应在消费它的工具中校验, 文件系统和工具权限要独立落实。

fills 只能补全作者留空的字段。必需字段包括 subagent、nodeSummary 和 promptTemplate;可选的可填字段包括 skills、mcps 和 instance。 不能修改已有值。显式空列表是固定选择,不是留空。

如果某个变体刻意将 inspect.promptTemplate 留空,可以使用:

raven playbook run brief-review 'brief=Review the launch plan.' \
  --fill 'inspect.promptTemplate=List unclear assumptions in the launch plan; do not edit files.'

对前面的完整示例执行此命令会被拒绝,因为它已写明 prompt。CLI validate 检查完整性,因此会报告必需字段留空;运行时仍可加载此类模板并请求 fills。 CLI --fill 用于字符串字段;列表形式的 Skill/MCP fills 应通过结构化工具参数提供。

Agent、Skill 与随附 MCP 服务

节点字段遵循DAG 契约。 省略 skills 或 mcps 保留该 Agent 的菜单或默认选择;[] 请求不附加任何项。 非空列表请求指定选择,具体取决于后端支持。共享 instance 要求有状态 Agent, 且节点以依赖链顺序使用同一个 Agent。并行不会自动提供独立工作副本。

DAG Playbook 可以携带使用宿主 MCP 配置 schema 的 mcpServers 定义。 本次运行中,它的定义优先于宿主同名服务。以下片段可加入 DAG Playbook; 替换示例 endpoint,并在消费节点添加 mcps: [docs-api]:

params:
  API_TOKEN:
    type: secret
    description: Credential for the documentation service
mcpServers:
  docs-api:
    url: https://mcp.example.invalid/mcp
    headers:
      Authorization: "Bearer {{ params.API_TOKEN }}"

与现有参数合并;这不是完整 Playbook。随附命令、URL 和工具应按可执行配置审核。 加载器会丢弃无法使用的服务定义并记录警告。Prompt 模式携带的定义也会被 丢弃,因为后续由调用方组装的图无法接收它们;该模式应使用宿主配置的 MCP。

缺少服务、凭据或后端不支持注入时,运行可能降级而不是整体停止。依赖某项工具的 回答不能仅凭文字相信,应先检查能力提示并确认工具确实到达 Agent。

在本地保存凭据

针对上方片段,可用以下命令保存 secret,避免写入 shell history:

raven playbook secret set brief-review API_TOKEN

省略 --value 时会无回显地提示输入。文件以 0600 权限保存在 <credentials>/playbooks/brief-review/params.json;这是本地文件,不是加密保险库。 参数必须声明为 type: secret,且不能有默认值。只有随附 MCP 的 env/headers 引用会获得其值;prompt 中的 secret 引用会被隐藏并记录日志。

不要通过聊天、普通参数或 CLI K=V 提供 secret。这里保护的是参数替换路径, 不是外部工具所有可能的回复;接收凭据的服务仍处于信任范围内。

对于声明了 auth: oauth 的随附服务:

raven playbook auth brief-review docs-api

该命令需要 OAuth 服务定义,不适用于上方 bearer-header 示例。 OAuth token 位于 <credentials>/playbooks/brief-review/mcp/,与宿主服务凭据隔离。 使用 raven playbook secret clear brief-review API_TOKEN 删除已保存参数。

发现、审批与执行

库较大时,triggers.keywords 影响向模型展示哪些完整描述。关键词永远不会自动 执行 Playbook。模型显式调用 load_playbook;即使检索没有选中完整描述, 启用的名称仍然可达。

CLI run 同步等待;对话中的 DAG 加载通常后台调度。缺少普通参数或必需字段 会阻止调度并返回命名缺口。Prompt 模式加载只返回指导,本身不调度。

Playbook 的 confirm 默认 true,executor 调度时会将它传给图。 没有 ask channel 时,当前 DAG 实现记录提示后以未确认状态运行; 显式 CLI 路径没有接入 ask channel。有 ask channel 时,拒绝或投递失败会 阻止调度。这不是无人值守安全门,详见权限与安全。

raven playbook disable brief-review
raven playbook enable brief-review

Disable 将条目从模型可见库中移除,但显式 CLI run 仍可执行它。 raven playbook delete brief-review 会询问确认后删除用户条目的目录, Playbook 没有撤销删除功能。删除覆盖副本会重新露出同名内置条目并清除其禁用状态; 内置条目本身只能禁用。

排障与安全运行

现象 检查
模型工具中看不到条目 禁用列表、解析错误、已注册 Agent,以及当前 Agent 是否有 Playbook 工具
校验提示 Agent 未注册 使用当前底层 roster;注册不等于已安装或就绪
运行提示缺少值 补充普通 params 和必需空字段;secret 在本地保存
Fill 被拒绝 字段已有固定值、节点 ID 错误,或字段不允许填充
缺少 MCP 工具 宿主/随附定义、凭据、连接状态和后端注入支持
运行返回但工作未完成 检查节点结果和 verdict;收到回执不证明任务成功
图执行时宿主重启 检查已有输出和副作用,再把剩余工作作为新图提交

安装前校验并审核文件,使用限定凭据测试,在允许修改前检查一个小型只读运行。 版本控制保存工作流定义,不保存凭据或 transcript。DAG 历史恢复不自动恢复执行, 再次运行可能重复外部副作用。