拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ClawHub 实验性 Claw 包规范:从可移植 Manifest 到托管发布与 Feed 的完整实现

ClawHub 实验性 Claw 包规范:从可移植 Manifest 到托管发布与 Feed 的完整实现 后端前端AI 技能AI 插件搜索引擎【免费下载链接】clawhubSkill Plugin Registry for OpenClaw项目地址https://gitcode.com/gh_mirrors/mo/clawhub点击查看免费下载ClawHub 的 Claw 支持实现了合并后的 OpenClaw RFC 0016、实验性 portable-core 增补RFC #48与应用层后续RFC #52的注册表侧契约一个 Claw 包用分组化的CLAW.mdschema 描述一个完整的新 Agent。本文以 specs/claws.md 为主线结合 specs/experimental-claw-feed.md 与仓库源码完整讲解可移植 manifest、harness 配置文件profile、实验门控、严格 v1 验证、摘要存储模型、精确制品exact-artifact发布管线与托管 Feed 契约并给出可复制的完整示例包。读完后你将掌握如何按规范构造并发布一个 Claw 包、ClawHub 在注册表侧验证什么、为什么发布必须是仅精确制品、以及如何通过 Conformance 向量与--dry-run证明注册表与 OpenClaw 消费者侧的行为一致。一、定位与职责边界ClawHub 管什么、OpenClaw 管什么Claw 包描述的是一个完整的新 Agent采用分组化CLAW.mdschemagroupedCLAW.mdschema。在 ClawHub 与 OpenClaw 的分工上注册表侧拥有发布publication所有权ownership发现discovery包详情 APIpackage detail APIs托管 Feed 导出hosted feed export而 OpenClaw 在本地仍是以下环节的权威方本地规划local planning、同意consent、变更mutation、来源provenance、更新update与移除removal。也就是说ClawHub 负责让一个 Agent 包可被发现、可被验证、可被精确下载而应用层如何消费完全由 OpenClaw 的本地消费者契约决定。这条边界贯穿全文的每个设计决策注册表验证永远不比对 pinned 消费者契约更宽松。二、可移植 ManifestCLAW.mdFrontmatter、分组 JSON 与隐含SOUL.md2.1 YAML frontmatter 是可移植 manifestClaw 包的可移植清单portable manifest是CLAW.md的YAML frontmatter。一个CLAW.md包信封package envelope可以仅由 frontmatter 构成当正文包含非空白文本时正文原文就是隐含的受管SOUL.md工作区文件implicit managedSOUL.mdworkspace file空或纯空白正文则不产生任何隐含文件。关键约束manifest 不得声明一个等于、包含或被该隐含SOUL.md路径所包含的工作区目标即不能显式声明一个与隐含 SOUL.md 冲突的 workspace destination。分组 JSONgrouped JSON形式则完全不同没有正文不产生隐含文件可以显式声明SOUL.md。2.2 可移植 Agent 对象只携带身份与意图可移植 Agent 对象portable agent object只承载identity身份与 purpose意图。任何 harness 特定的设置都放在包内约定路径profiles/harness.yml的包本地 profile 中manifest 中不含任何 profile 指针。metadata.openclaw.config已被退役ClawHub 直接拒绝并给出迁移指引见下文诊断码claw_v1_legacy_profile_pointer。2.3 Manifest 的字段结构源码级packages/schema/src/claws.ts 中的ClawManifestSchemaArkType 定义给出了 v1 manifest 的完整字段字段类型说明schemaVersion字面量1当前仅接受1CLAW_SCHEMA_VERSION 1agent.idstring必填Agent 标识agent.name/agent.descriptionstring可选展示信息agent.identity对象可选name/theme/emoji/avatar身份展示字段metadata{ [string]: string }可选元数据注意openclaw.config已被禁止workspace.bootstrapFiles对象可选键仅限AGENTS.md/SOUL.md/IDENTITY.md/TOOLS.md/HEARTBEAT.md值形如{ source: string }workspace.files{ source, path }[]可选普通工作区文件映射packages数组可选每个条目kind: skill|plugin、source: clawhub、ref、versionmcpServers对象可选stdio 或 remotesse/streamable-http两种 server 结构支持toolFiltercronJobs数组可选含schedule.cron/timezone、session: main|isolated、message、delivery值得注意的 schema 细节stdio MCP server 支持command、transport: stdio?、args、env、toolFilter、timeout、connectTimeoutremote server 支持url、transport: sse|streamable-http、auth: oauth?。toolFilter仅接受include/exclude字符串数组且按严格 v1 契约只接受精确工具名加*通配符。三、Profile 系统profiles/命名空间与openclaw.yml的 profile-v1 结构3.1 命名空间保留与结构约束Profile只存在于 Claw 包内部。ClawHub 对profiles/命名空间做出以下保留与强制约束仅接受小写、单文件的 harness profileprofiles/harness.yml每个 profile 必须是有界bounded的 UTF-8 JSON 兼容 YAML mapping拒绝alias、anchor、tag、merge key、非字符串 mapping key、非有限值non-finite values如 NaN/Infinity应用 harness 时只发现自己的 profileprofiles/openclaw.yml只被 OpenClaw 消费其余 harness 互不干扰。3.2profiles/openclaw.yml的严格 profile-v1 验证ClawHub 验证profiles/openclaw.yml时遵循严格 profile-v1 结构其基准是内置 profile 注册表built-in profile registry该注册表由一致性制品conformance artifact见第五节pin 住。验证方式不安装任何扩展不声称与该 pinned 消费者之外的任何东西兼容外国foreignprofile 仍做结构化验证但不做解释structurally validated but uninterpreted。验证范围覆盖注册的内置 profile、有界工具授权bounded tool grants、扩展引用extension references、心跳设置heartbeat settings及其跨字段规则。ClawHub 对profiles/openclaw.yml的验证绝不比 pinned 的 OpenClaw v1 消费者契约更宽松。3.3 一致性向量fixtures/claws/conformance-v1/cases.jsonfixtures/claws/conformance-v1/cases.json 记录了消费者契约的提交点consumer.commit为f8c0e1b8325b1fc36e039cf357a2c4602f76d5aarepository 为openclaw/openclaw并保存了代表性的接受/拒绝行为让注册表与消费者在仓库边界之外保持一致。几个典型用例minimalagent.tools.profile: minimal消费者接受、注册表接受unbounded coding仅profile: coding无 allow 约束消费者拒绝、注册表拒绝——unbounded 不允许dynamic MCP bundleallow: [bundle-mcp]双方拒绝overlong concrete MCP tool过长的server__tool名双方拒绝心跳用例every: 30mactiveHourstimeoutSeconds被接受已退役的skipWhenBusy被拒绝扩展用例精确版本的 OpenClaw 扩展version: 2.3.4被接受version: latest这种浮动版本被拒绝metadata 用例空{}被接受带openclaw.config指针的注册表拒绝消费者接受但注册表承担了更严格的迁移职责。这套向量同时是严格 v1 契约的可执行体现字符串不会被 trim 成合法、MCP 包选择器必须解析到精确版本、进程环境键遵循 OpenClaw 的 host 级安全策略、工具过滤器只接受精确名加*通配符。核心原则一句话注册表验证绝不能接受一个 OpenClaw 客户端会拒绝的声明。四、BOOTSTRAP.md与其他普通资源包根目录可选的BOOTSTRAP.md承载经过审核的首次运行说明first-run instructions。约束包括必须是有界的、非空的 UTF-8 文本不能同时通过可移植工作区文件映射workspace.files指向它它的存在性计入有界 manifest 摘要bounded manifest summary但其内容只存在于精确的不可变制品immutable artifact中不复制进 Convex 存储。Schemas、模板、示例、fixtures 与静态资源不需要任何特殊注册表角色它们就是普通的已声明workspace.files由制品摘要artifact digest覆盖。五、实验契约与功能门控5.1 两个独立的门控后端 Claw 发布与读取面read surfaces要求CLAWHUB_EXPERIMENTAL_CLAWS1这个托管门控独立于OpenClaw 本地的OPENCLAW_EXPERIMENTAL_CLAWS1消费者门控——任何一方都不能开启另一方。源码层面convex/lib/experimentalClaws.ts 的实现非常直接export function experimentalClawsEnabled(env: Recordstring, string | undefined process.env) { return env.CLAWHUB_EXPERIMENTAL_CLAWS 1; } export function isClawFamilyPubliclyVisible( family: string, env: Recordstring, string | undefined process.env, ) { return family ! claw || experimentalClawsEnabled(env); }即只有family claw且门控开启时该 family 才对外可见。5.2 门控的语义红线门控不是用户同意user consent绝不能绕过验证、审核、所有权或扫描器检查关闭门控的部署不得接受 Claw 发布也不得通过 Claw 专属发现面暴露 Claws门控生效期间公开的 Claw schema 与 API可能变更移除门控需要单独的兼容性与迁移决策。六、分阶段实现路线原规范给出了清晰的六个落地阶段按 PR 顺序添加共享分组 manifest 契约、安全摘要与存储模型PR #3089添加功能门控的认证发布、包内容验证、CLI 创作支持与创作文档PR #3090添加功能门控的搜索、详情与 API 面PR #3091添加单独门控的托管 Claws Feed以及通过 OpenClawclaws add --dry-run的可重复发布包证明PR #3092验证可移植CLAW.mdprompt 正文将其投影为受管SOUL.md能力元数据并证明 Feed 到 OpenClaw 的映射PR #3262堆叠在 PR #3092 之后采用约定式 harness profile、包根 bootstrap、原生 OpenClaw 扩展与普通应用资产PR #3328。托管投影使用独立的实验性 Claw Feed 契约详见 specs/experimental-claw-feed.md不是稳定 plugin/skill catalog feed v1 schema 的扩展。七、环境策略一致性OPENCLAW_CLAW_HOST_ENV_POLICY_V1OPENCLAW_CLAW_HOST_ENV_POLICY_V1是跨仓库的版本化兼容性制品承载 OpenClaw 的进程环境策略。它记录精确的 OpenClaw 源路径source path消费者提交consumer commit源文件 SHA-256。ClawHub 从该制品派生被封禁键blocked-key查找表并把每个键/前缀都作为一致性向量运行。策略变更要求要么发布一个新的、经过审核的制品版本要么对现有实验性 v1 契约做有意的更新。这保证了注册表侧的invalidEnvironmentKey/blockedEnvironmentKey等判断始终对齐消费者侧的真实策略。八、诊断码稳定、可分支、带 phaseManifest 拒绝以稳定的claw_v1_*诊断码暴露phase 恒为schema并附字段路径与人类可读消息。消费者可以基于 code phase 分支处理消息只是解释性文本不是标识符。packages/schema/src/claws.ts 定义了完整的 code 集合例如claw_v1_invalid_manifest_shapeclaw_v1_invalid_agent_idclaw_v1_non_canonical_stringclaw_v1_empty_listclaw_v1_legacy_profile_pointer对应退役的metadata.openclaw.configclaw_v1_reserved_workspace_target/claw_v1_unsafe_path/claw_v1_duplicate_workspace_destinationclaw_v1_invalid_avatar/claw_v1_undeclared_avatarclaw_v1_invalid_package_reference/claw_v1_invalid_package_version/claw_v1_duplicate_packageclaw_v1_invalid_mcp_server_id/claw_v1_invalid_mcp_url/claw_v1_mcp_url_credentials/claw_v1_unpinned_mcp_packageclaw_v1_invalid_tool_filter/claw_v1_duplicate_tool_filterclaw_v1_invalid_environment_key/claw_v1_blocked_environment_key/claw_v1_invalid_environment_referenceclaw_v1_invalid_timeout/claw_v1_invalid_cron_job_id等九、存储模型只存有界摘要不存完整 manifest9.1 摘要 schema 的双端一致持久化的版本文档durable version document只保存有界的 manifest 摘要bounded manifest summary。其字段结构由createClawManifestSummarySchema同时构建于公开的 ArkType 契约packages/schema/src/claws.tsConvex 存储验证器convex/schema.ts 处使用。ClawManifestSummary类型同文件 L102-L111为type ClawManifestSummary { schemaVersion: 1; agent: { id: string; name?: string; description?: string }; workspace: { bootstrapFiles: string[]; fileCount: number }; packages: { skillCount: number; pluginCount: number }; profiles?: { count: number; hasOpenClaw: boolean }; extensions?: { count: number }; mcpServerCount: number; cronJobCount: number; };注意长度上限在 schema 层被显式约束CLAW_SUMMARY_AGENT_NAME_MAX_CHARS 128、CLAW_SUMMARY_AGENT_DESCRIPTION_MAX_CHARS 1_024L6-L7。Convex 无法表达这些文本长度上限所以发布流程必须在入库前通过共享 schema 完成摘要的验证或推导。9.2 摘要只暴露 footprint新摘要额外暴露的是profile / 扩展足迹footprintharness profile 总数、约定式 OpenClaw profile 数、OpenClaw 原生扩展计数。它永不暴露 profile 内容。同样workspace.bootstrapFiles只记录文件名列表BOOTSTRAP.md的存在性进摘要、内容只在精确制品中。这一设计保证了Convex 存储的可检索面最小化而权威数据始终是那条精确字节的不可变制品。十、发布管线复用现有包管线但仅精确制品10.1package.json与 manifest 路径Claws 走现有的包发布管线package publication pipeline。package.json声明包身份、版本与package 相对路径的openclaw.clawmanifest 路径。发布时解析CLAW.mdYAML frontmatter 或 JSON 兼容形式验证分组 manifest、被引用的工作区文件、约定式 harness profile 与可选的包根 bootstrap非空 Markdown 正文即可移植 Agent prompt映射为受管SOUL.md发布拒绝正文 任何显式 SOUL.md 工作区声明的组合release 保留精确制品与有界派生摘要含隐含 prompt 与 bootstrap 的存在性不把完整 manifest、prompt 正文、profile 或 bootstrap 内容复制进 Convex 存储服务端在门控关闭时、于任何变更mutation之前拒绝family: claw门控开启也不绕过所有权、审核、扫描或发布不变式。10.2 exact-artifact-only只有 tgz 能发布实验性 Claw 发布是仅精确制品exact-artifact-only发布者必须提交已构建好的 npm-pack.tgz源文件夹、GitHub checkout、解压文件载荷、以及旧版 public-action 路径都不能发布 Claw release发布者提供该 tarball 的规范小写 SHA-256。ClawHub 在变更前从上传字节重算摘要缺失或不匹配即拒绝验证通过的 tarball 摘要贯穿分阶段扫描、finalize、发布状态响应与精确字节下载作为制品身份的凭据分阶段重试身份包括actor、owner、包名、版本与已验证制品摘要。只有精确重试才能复用同一活动 pending attempt 或活动已发布 release不同 actor/owner/摘要、终态 attempt、或已删除/封禁/隔离/撤销/恶意 release 一律视为版本冲突重试兼容性仅限于 Claws。现有非 Claw 包行为与历史 attempt 恢复保持不变除非其自身契约已携带所需的确切制品元数据。10.3 可复制的发布示例包仓库中的 fixtures/claws/hosted-e2e/package 是一个完整的托管 E2E 示例展示了规范要求的全部要素。package.json{ name: openclaw/hosted-e2e, version: 1.0.0, type: module, openclaw: { claw: CLAW.md } }CLAW.mdfrontmatter 正文 prompt--- schemaVersion: 1 agent: id: hosted-e2e name: Hosted E2E workspace: bootstrapFiles: HEARTBEAT.md: source: HEARTBEAT.md files: - source: assets/incident.schema.json path: assets/incident.schema.json packages: [] mcpServers: {} cronJobs: [] --- # Hosted E2E Use the published Claw package without mutating local state during proof.profiles/openclaw.ymlprofile-v1最小工具授权 工作区限定 自然人类延迟schemaVersion: 1 agent: tools: profile: minimal fs: workspaceOnly: true humanDelay: { mode: natural }以及BOOTSTRAP.mdAsk which services the user owns before beginning.与HEARTBEAT.mdCheck the hosted Claw fixture heartbeat.。该示例同时出现在 conformance-v1/cases.json 的projectArtifact中被消费者与注册表双方接受。十一、托管 Feed 契约与 Registry→OpenClaw 证明11.1 Feed 契约要点Claws Feed 是独立的实验性 wire 契约完整定义见 specs/experimental-claw-feed.md不向稳定 catalog feed schema v1 添加type: claw。契约要点路由/api/v1/feeds/claws代理为/v1/feeds/clawsFeed idclawhub-official-claws实验性 schema 版本1门控CLAWHUB_EXPERIMENTAL_CLAWS1条目类型仅claw安装坐标规范包名 精确 release 版本完整性sha256:不可变制品 sha256元数据有界的clawManifestSummary绝不携带完整 manifest启用与禁用两种状态下都用Cache-Control: no-store且无 surrogate cache切换门控不会在边缘留下已启用的响应禁用时在读取任何持久化发布状态之前直接返回404无未版本化的 Vercel 重定向实验期间也不在/.well-known/openclaw-registry.json中做广告。Feed 解析器拒绝通用 plugin/skill 条目、未知 feed id、未知字段、非法时间戳、不支持的 schema 版本、非官方发布者以及没有恰好一个安装候选的条目。该候选必须匹配条目的 package/version且使用小写sha256:加恰好 64 个十六进制字符。11.2 证明边界scripts/claws-feed-openclaw-e2e.test.tsscripts/claws-feed-openclaw-e2e.test.ts 是注册表到 OpenClaw 的桥接证明解析实验性 Feed → 选择恰好一个 ClawHub 候选 → 用 Feed 摘要核对制品元数据与下载字节 → 有界安全解包 → 把包目录交给真实 OpenClaw 的claws add --dry-run --json命令在隔离状态下执行。它证明的是ClawHub 广告的包能产生一个非变更non-mutating的 OpenClaw 计划。它不声称 OpenClaw 自身能解析 ClawHub Feed URL——消费者侧集成是另一条独立的依赖轨道。配套细节合法 TGZ fixture 与发布走同一条npm pack --ignore-scripts路径非法链接/特殊条目 fixture 使用确定性 ustar 字节而非宿主tar实现ClawHub CI 检出声明的 OpenClaw 契约 SHA 并安装其冻结依赖来运行该桥接变更该 SHA 即一次显式兼容性更新。下载上限 64 MiBTGZ 解析复用 npm-pack 路径强制规范package/路径、仅常规文件/目录、10,000 条目、展开内容 50 MiB、可移植重复拒绝Legacy ZIP 解包沿用相同的条目/展开大小/路径/可移植冲突边界支持package/或归档根两种布局。十二、总结从可移植声明到可证明消费回看整条链路Claw 支持的架构可以浓缩为三条原则声明最小化可移植 manifest 只描述身份与意图harness 细节全部下沉到profiles/正文 prompt 成为隐含SOUL.md——包是可移植的 Agent 描述不是某特定运行时的配置快照验证与消费对齐conformance-v1/cases.json与OPENCLAW_CLAW_HOST_ENV_POLICY_V1让注册表验证永远不宽于 pinned 消费者契约claw_v1_*码让拒绝可程序化处理存储最小化、制品权威化Convex 只存有界摘要完整内容只存在于精确不可变制品发布必须提交自构建 tgz 与规范 SHA-256下载、扫描、重试、Feed 完整性全部锚定这一摘要。对希望参与实验或消费 Claws 的开发者推荐按以下路径深入先阅读 specs/claws.md 与 specs/experimental-claw-feed.md再对照 fixtures/claws/hosted-e2e/package 与 fixtures/claws/conformance-v1/cases.json 理解合法/非法形态最后在启用了CLAWHUB_EXPERIMENTAL_CLAWS1的环境中以npm pack --ignore-scripts产出的 tgz 走发布管线并用claws add --dry-run验证消费者侧计划。注意门控生效期间 schema 与 API 可能变化任何跨仓库的消费者契约 SHA 更新都应视为显式兼容性决策。赞分享后端前端AI 技能AI 插件搜索引擎【免费下载链接】clawhubSkill Plugin Registry for OpenClaw项目地址https://gitcode.com/gh_mirrors/mo/clawhub点击查看免费下载相关推荐ClawHub 实验性 Claw 包实战指南创作、发布与发现完整 OpenClaw Agent 包ClawHub 实验性 Claw 包实战指南创作、发布与发现完整 OpenClaw Agent 包 导读 本文以 docs/claws.md https://后端前端AI 技能AI 插件搜索引擎ClawHub 托管目录 Feed 详解OpenClaw 插件、技能与促销 Feed 的发布契约与实现ClawHub 托管目录 Feed 详解OpenClaw 插件、技能与促销 Feed 的发布契约与实现 本文基于 ClawHub 仓库中的托管 Feed 规格后端前端AI 技能AI 插件搜索引擎ClawHub 实验性 Claws Feed 契约解析版本化 Claw 包的独立分发通道与 OpenClaw 桥接证明ClawHub 实验性 Claws Feed 契约解析版本化 Claw 包的独立分发通道与 OpenClaw 桥接证明 ClawHub 为 OpenClaw后端前端AI 技能AI 插件搜索引擎上一篇AssetRipper教程系列从入门到精通下一篇Pachyderm与Jupyter集成10个技巧实现交互式数据分析与管道开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表