要将脚本或插件提交至QoderWake官方市场,须依次满足五项要求:一、符合可复用性与安全规范;二、发布至NPM并遵循语义化版本;三、通过PR提交至community-plugins仓库registry.json;四、配置CI完成签名与沙箱验证;五、在manifest中声明最小权限并严格遵循执行策略。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您开发了一个适用于QoderWake的脚本或插件,希望将其提交至QoderWake开源社区官方市场,但尚未通过审核或发布流程,则可能是由于未满足平台对可分发性、安全性与标准化的强制要求。以下是完成提交并进入官方市场收录的步骤:
一、确认脚本/插件符合基础收录门槛
QoderWake官方市场仅收录具备可复用性、可验证性与最小依赖约束的脚本插件,所有提交内容必须通过自动化校验与人工抽检双重机制。不满足任一条件将被直接拒收。
1、脚本必须以独立可执行形式存在,支持通过qoderwake run或qoder-cli exec命令直接调用,且不依赖用户本地未声明的全局环境变量。
2、插件包结构需包含标准元数据文件qoderwake-manifest.json,其中必须定义name、version、event_type、required_permissions及entrypoint字段。
3、所有代码必须托管于公开GitHub仓库,主分支根目录下须存在README.md(含功能说明、触发示例、权限说明)与LICENSE(仅接受MIT、Apache-2.0、BSD-3-Clause)。
4、禁止包含硬编码凭证、未经沙箱隔离的系统级命令(如rm -rf /、chmod 777)、或调用未经签名的二进制下载链接。任何违反将导致永久性提交资格冻结。
二、完成NPM包发布与语义化版本标记
QoderWake市场依赖NPM注册表作为唯一可信分发源,所有插件必须以@qoderwake/xxx或@your-org/xxx命名空间发布,并通过openclaw plugins install兼容协议验证安装路径。
1、在项目根目录执行npm init,确保name字段以@qoderwake/开头(如@qoderwake/db-backup),main指向入口JS/TS文件,bin字段映射CLI可执行名(如"qw-db-backup": "./dist/index.js")。
2、使用npm version patch生成符合SemVer规范的版本号(如v1.0.1),严禁使用prerelease标签(如1.0.0-beta.1)。
3、登录NPM账户后执行npm publish --access public,发布成功后访问https://www.npmjs.com/package/你的包名确认页面可公开访问且files字段未遗漏dist/或bin/目录。
三、提交GitHub PR至QoderWake官方收录清单仓库
官方市场清单由qoderwake/community-plugins仓库的registry.json文件驱动,新增条目必须通过Pull Request方式引入,由Maintainer团队执行合并前安全扫描。
1、Fork https://github.com/qoderwake/community-plugins 仓库,并克隆至本地。
2、编辑registry.json,在plugins数组末尾添加新对象,字段包括:id(与NPM包名一致)、name(中文显示名)、description(50字内功能摘要)、repo(GitHub仓库URL)、npm(NPM包URL)、author(作者GitHub ID)、verified(初始值设为false)。
OpenClaw 技能 — 给定一个 GitHub 仓库 URL,自动解析出 owner/repo 名称,发现其中的 YAML/properties 配置文件及其配对的中文字段说明;在 `workspace/{repo}/` 目录下按同步日期(格式为 `YYYY-MM-DD`)创建时间戳子目录;写入 `.openclaw-config-state.json` 状态文件。每次用户提问前,先比对远程仓库当前 ref(如 `main` 或 `master`)的最新提交 SHA 与本地状态文件中记录的 SHA:
3、提交PR时标题格式为:[plugin] add @qoderwake/db-backup v1.0.1,正文须附上CI验证链接(来自qoderwake-ci自动检查结果)及最小可行测试命令示例。
4、Maintainer收到PR后将运行qoderwake verify --package @qoderwake/db-backup,若返回✅ Verified: signature OK, sandbox pass, no high-risk ops,则标记verified: true并合入主干。
四、配置CI自动化签名与沙箱验证
所有新插件在收录前必须通过QoderWake官方CI流水线签名认证,该过程生成不可篡改的.sig签名文件并注入NPM包,用于运行时完整性校验。
1、在插件仓库根目录添加.qoderwake.yml,声明构建任务:指定Node.js版本、启用sign: true、设置test_command: "npm run test"(必须存在且通过)。
2、推送.qoderwake.yml后,GitHub Actions将自动触发qoderwake-ci/sign工作流,生成dist/index.js.sig并上传至NPM同版本包。
3、验证签名有效性:在任意环境执行qoderwake verify --local ./node_modules/@qoderwake/db-backup/dist/index.js,输出Signature valid, issuer: qoderwake-root-ca-v2即表示通过。
4、若签名失败,CI日志中将明确提示缺失SECURITY_CONTACT邮箱或NOTARY_KEY_ID未在qoderwake-keys密钥环注册,需立即补全并重新推送。
五、设置权限声明与最小作用域执行策略
QoderWake运行时强制实施基于required_permissions的沙箱降权机制,插件必须显式声明所需能力,否则在非授权环境中将被静默拒绝执行。
1、在qoderwake-manifest.json中定义required_permissions数组,仅允许以下值:"fs:read"、"fs:write"、"network:outbound"、"env:read"、"process:exec"。
2、若插件需写入/backup/目录,必须声明"fs:write",且代码中所有fs.writeFileSync路径必须以path.join(qoderwake.env.WORKSPACE, "backup")为基点,禁止使用绝对路径字面量。
3、调用child_process.exec前,必须通过qoderwake.runtime.allowCommand("tar", ["-czf"])白名单注册,未注册命令将触发RuntimePermissionDeniedError异常。
4、在README.md显著位置注明权限用途,例如:“本插件申请fs:write仅用于将导出文件保存至用户配置的工作区路径,不涉及系统关键目录。”










