跳转至

提案内容、支持文件和 agent 工具

插件评估与生命周期钩子

网关插件可以扩展 Skill Workshop,而无需持有提案存储或现有技能写入权限:

  • skill_proposal_evaluate 接收精确的候选包,对于更新提案,还接收完整的基线技能。它返回带归属的发现结果、指标,以及可选的 pass、revise 或 block 决策。
  • skill_proposal_changed 观察持久的 created、revised、evaluation_completed、applied、rejected、quarantined 和 stale 事件。
  • skill_changed 观察来自 Workshop 以及受支持的安装/卸载路径的已提交现有技能 created、updated 和 removed 事件。

评估从 CLI、Control UI、Gateway skills.proposals.evaluate 方法或智能体 skill_workshop 动作显式触发。结果存储在精确的提案修订版以及仅追加的提案事件账本中。评估器失败仍保留为归属结果;只有已完成的 decision: "block" 会阻止应用。应用还会重新验证已评估的目标树,因此任何现有技能资产漂移都需要重新评估。

生命周期支持外部优化循环,而无需内嵌循环。控制器可以消费 skills.proposals.events.list,评估精确的 revisionHash,使用 expectedRevisionHash 和 correlationId 进行修订,然后从返回的事件序列继续。OpenClaw 不会调度、自动修订或决定此类循环何时停止。

提案内容

待处理期间,提案以 PROPOSAL.md 形式存储,并带有仅提案专用的 frontmatter:

---
name: "morning-catchup"
description: "Daily inbox catch-up: triage, archive, surface, draft, plan"
status: proposal
version: "v1"
date: "2026-05-30T00:00:00.000Z"
---

应用时,Skill Workshop 会写入生效的 SKILL.md 并移除仅提案专用的字段:status、提案 version 和提案 date。

支持文件

当提案技能需要 PROPOSAL.md 旁边的文件时,使用 --proposal-dir:

openclaw skills workshop propose-create \
  --name weekly-update \
  --description "Friday wrap-up: stats, highlights, next week's top three" \
  --proposal-dir ./weekly-update-proposal

该目录必须包含 PROPOSAL.md。支持文件必须位于 assets/、examples/、references/、scripts/ 或 templates/ 下。Skill Workshop 会扫描、哈希并将它们与提案一起存储,然后仅在应用时将文件写入现有 SKILL.md 旁边。

被拒绝的支持文件路径包括:绝对路径、隐藏路径段、路径遍历、重叠路径、可执行文件、非 UTF-8 文本、空字节,以及标准支持文件夹之外的路径。

目录草稿必须完全可读,并且包括文件名在内不超过八个路径组件。评估器包要求所有包含的目标内容可读且不超过十六个路径组件。根目录下的 .clawhub、.clawdhub 和 .openclaw 元数据条目会被排除;这些名称嵌套在其他位置时仍会被包含。无法读取的包含目录或更深层内容会产生错误。修复报告的目录或减少其嵌套层级,然后重试。对于集合恢复失败,请遵循手动恢复指南,而不要重构现有目录树。

智能体工具

对于个人库操作,skill_workshop 暴露 list | read | create | update | share | unshare | transfer | activate | remove | rollback。Gateway 选择已授权的命名空间。当 Workshop 编写也可用时,target: "personal" 选择个人库。读取操作返回稳定的技能 ID 和修订版本。个人 list 仅接受 action 和 target;它最多返回 20 个条目,并指向 My skills 以获取完整库。请使用条目的 skillId 作为 read 的 skill_id,而不是其名称或 slug。个人操作不接受仅 Workshop 的字段(如 query、limit 或 skill_name),也不接受提案操作(如 inspect 和 prepare_patch)。更新需要 skill_id 和 expected_revision;省略 proposal_content 以保留指令。使用 files 进行命名支持文件的更新插入(upsert),使用 delete_files 进行显式删除。未提及的支持文件会被保留。大型指令会完整返回,或明确省略并指引到操作员工作流;二进制支持内容不会注入模型上下文。

对于 Workshop 提案,请省略 target。该工具使用一个必需的 action: create | read | prepare_patch | patch | update | revise | list | inspect | evaluate | apply | reject | quarantine | history | restore_collection。 根据操作不同,其他 Workshop 参数适用:

参数 使用于 备注
name create、inspect、revise create 必需;否则按名称解析待处理提案
description create、update、revise 最多 160 字节
skill_name read、prepare_patch、patch、update 现有技能名称或键
old_string prepare_patch、patch 精确的当前文本;当无法读取完整技能时请先准备
new_string patch 精确当前文本的替换内容
proposal_content create、update、revise create/update 必需;revise 时省略以保留正文
参数 使用方 备注
support_files create, update, revise 包含 { path, content } 的数组
goal, evidence create, update, revise 自由文本上下文
proposal_id inspect, revise, evaluate, apply, reject, quarantine 目标提案
artifact_path inspect PROPOSAL.md 或列出的支持文件路径之一
expected_revision_hash evaluate, apply, reject, quarantine 拒绝过时的编排步骤
correlation_id evaluate, revise, apply, reject, quarantine 外部运行或实验关联
reason apply, reject, quarantine 可选
query, status, limit list 过滤/分页;limit 最大 50,默认 20

read 和 prepare_patch 返回解析后的 skillName。在后续调用中将该名称作为 skill_name 复用;元数据中的 skillKey 可能匹配另一个技能的精确名称。更新提案和修订会保留现有技能的 frontmatter 名称。

每个技能只能有一个已准备的 patch 跨度处于活动状态。在某个 patch 尝试消耗或使活动授权失效之前,第二次 prepare_patch 会被拒绝。

inspect 返回提案元数据、有界工件清单,以及一个完整工件(如果它适合所选模型的上下文预算)。默认选择 PROPOSAL.md。设置 artifact_path 可单独读取一个支持文件。当所选工件不适合时,结果会省略其正文, 报告原始大小,并指向更小的按工件读取或无限制的操作员 CLI 命令。

代理必须使用 skill_workshop 处理生成的技能工作,并且在前景创作期间不得直接创建或修改技能或提案文件。自动 后台维护改用 自我学习和审批设置 中描述的根文件工具路径。 前台规则是建议性的,并通过提示强制执行。工具策略接缝不会强制执行它。

Note

skill_workshop 是内置代理工具,并包含在 tools.profile: "coding" 中。如果更严格的策略将其隐藏,请将 skill_workshop 添加到当前活动的 tools.allow 列表,或者当作用域使用没有显式 tools.allow 的 profile 时,使用 tools.alsoAllow: ["skill_workshop"]。沙箱运行不会构造主机侧 Workshop 提案工具。当存在已授权的个人库能力时,沙箱和云运行会改用其 Gateway 支持的创作界面; 库和数据库不会以可写方式挂载到 worker 中。 请使用普通的主机侧会话或 CLI 进行 Workshop 提案审查。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw