如何手动打包 .rowboat-app 并发布到 Rowboat 应用注册表?
如何手动打包 .rowboat-app 并发布到 Rowboat 应用注册表【免费下载链接】rowboatOpen-source AI coworker, with memory项目地址: https://gitcode.com/GitHub_Trending/rowb/rowboat如果你的应用代码仓库、构建流水线或 monorepo 需要自己管理而不是走 Rowboat 应用内的引导式发布Apps → 应用详情 → Publish它会自动建仓库、推源码、发 release 并注册就需要走 publishing-apps.md 中描述的进阶手动路径。这条路径分两段先把应用打成name.rowboat-app打包文件并在 GitHub release 上挂好资产再向注册表仓库rowboatlabs/apps-registry提交一个单文件 PR 完成注册。注册表的校验 Action 通过并自动合并后应用就进入 Rowboat 的 Apps → Catalog。准备条件一个 GitHub 账号且对承载应用的仓库有 push 权限注册表校验会检查 PR 作者对repo有 push 访问权。应用目录里已有能构建出浏览器可运行静态文件的构建产物以及一份合法的 manifestrowboat-app.json。应用的name必须满足3–64 个字符形如my-app小写字母、数字、连字符即^[a-z0-9](-[a-z0-9])*$见 registry-record.schema.json 与 rowboat-app.ts 中的PACKAGE_NAME_RE。name必须与打包文件名的主干一致且一旦注册后不能再改。version必须是严格 semverMAJOR.MINOR.PATCH不允许 prerelease/build 后缀。构建打包前的目录结构按 publishing-apps.md 的定义.rowboat-app是一个改名的 ZIP归档根目录相对路径、正斜杠下需要rowboat-app.json # manifest必需 dist/** # 浏览器可运行的静态文件必需且 dist/entry 必须存在 agents/file.yaml # 只包含 manifest.agents 中列出的文件 defaults/** # 可选的初始数据首次安装时复制到 data/打包时必须遵守的规则不得包含src/、package.json、node_modules/、data/、点文件dotfiles以及.rowboat-*.json。安装器会强制大小限制压缩后 100 MB、解压后 500 MB、最多 10,000 个条目符号链接条目和不安全路径会被拒绝。agent 定义文件里只允许出现name、instructions、triggers三个字段运行态、active、模型覆盖等字段会被拒绝。manifest 的最小示例my-app、1.2.0为文档示例值替换为你自己的 name/versionentry指向 dist 下必须存在的入口文件{ schemaVersion: 1, name: my-app, version: 1.2.0, description: What the app does, entry: index.html }完整字段定义见 rowboat-app.ts 中的RowboatAppManifestSchema还包含可选的icon、agents、capabilities、dataContracts等build与minRowboatVersion是 V1 保留字段仅校验不执行。打包为 .rowboat-app从应用根目录rowboat-app.json、dist/所在目录把白名单内的文件压入 ZIP归档名必须为manifest.name.rowboat-app。以文档示例命名、且应用带有一个 agent 和一个 defaults 目录为例zip -r my-app.rowboat-app rowboat-app.json dist agents/my-agent.yaml defaults注意按你的实际情况调整agents/下只放manifest.agents里列出的文件defaults/没有就不带src/、package.json、node_modules/、data/、点文件一律不进包。应用内自带的打包器packager.ts用的就是同一份白名单逻辑并会输出 SHA-256 供核对。发布 GitHub release 并挂双资产把源码推到你的 GitHub 仓库后创建 release 时文档强制两点tag 约定release tag 必须是vversion例如v1.2.0且与manifest.version一致。双资产要求每个 release 必须同时挂上两个资产文件名一字不差name.rowboat-app—— 打包好的 bundlerowboat-app.json—— manifest 的独立副本。独立 manifest 的作用是支撑 Rowboat 的免配额更新检查客户端通过releases/latest/download/rowboat-app.json拉取它。缺少任一资产都会导致注册校验失败或版本发现中断。monorepo 的特殊限制版本发现永远读取仓库的latestrelease。如果一个 monorepo 注册了多个应用那么每一个release 都必须挂上所有已注册应用的资产对——只要某个应用单独发版其他应用的解析就会坏掉。一个应用一个仓库可以完全避开这个问题这也是引导式发布采用的方式。提交注册记录到注册表注册表仓库rowboatlabs/apps-registry中每个应用一条记录位于apps/name.json。记录格式文档示例your-github-login替换为你的 GitHub 账号my-app与 manifest 一致{ schemaVersion: 1, name: my-app, owner: your-github-login, repo: your-github-login/my-app, description: What the app does, iconUrl: https://raw.githubusercontent.com/you/my-app/HEAD/dist/icon.png, createdAt: 2026-07-06T00:00:00Z }字段约束以 registry-record.schema.json 为准name3–64 字符且符合包名正则repo形如owner/repodescription最长 500 字符iconUrl必须是https://开头的 URIcreatedAt为 ISO 时间戳。注册可以走应用内表单Apps → Catalog → Register existing release也可以自己开这个单文件 PR。操作路径forkrowboatlabs/apps-registry在其main基础上新建分支添加唯一的apps/name.json文件并提交然后向main开 PR。校验 Action 会检查PR 恰好只新增这一个文件name合法、唯一且未被退役owner等于 PR 作者PR 作者对repo有 push 访问权releases/latest/download/name.rowboat-app存在即 release 资产挂对了。验证结果PR 被auto-merge注册成功。此时在 Rowboat 里通过 Apps → Catalog 搜索my-app即可看到并安装该应用。PR 被关闭且带有rejected: code评论注册被拒按评论里的代码对照上面的校验项排查修正记录或 release 后重新提交。手动快速自检直接访问https://github.com/owner/repo/releases/latest/download/name.rowboat-app与.../rowboat-app.json两者都能下载说明双资产就位。发布后续版本后续更新同样遵循双资产 vversiontag 约定升 manifest 的version重新打包在仓库新建 release 并挂上新的name.rowboat-app和rowboat-app.json两个资产即可无需再和注册表交互。参考 publisher.ts 中publishUpdate的实现可看到与之一致的流程bump 版本 → 打包 → 推源码 → release → 上传双资产。【免费下载链接】rowboatOpen-source AI coworker, with memory项目地址: https://gitcode.com/GitHub_Trending/rowb/rowboat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考