用途:publicar 用于发布 whatsapp-closer-agentkit,在本地或 Railway 上部署,并针对所选服务商注册 webhook。流程依据 blueprint/50-despliegue.md。
主要能力与前置检查:
- 门禁检查。运行 /revisar,只有在结果为 pass 时才部署。fail 直接不放行;parcial 表示本应运行的检查被跳过(如缺 jsonschema、缺 .venv 或缺依赖),其中通常包含 contract-control,即整个校验的负向对照,此时绿色报告无法区分“已校验且正常”和“什么都没校验”。需用项目的 .venv 运行门禁,查看每次跳过打印的原因,直到显示 pass。
- git 索引检查。pass 只说明磁盘上的树完整,不代表 git 会交付这些文件。用 git ls-files | wc -l 查看克隆会得到的文件数,用 git ls-files --others --exclude-standard | wc -l 查看在磁盘但不会随克隆交付的文件数。第二项必须为零。资料给出的示例为 9 与 73,意味着 blueprint/、.claude/ 的十个 skill 及 settings.json、scripts/ 三个文件(含门禁)、plantillas/、pruebas/、PINES.md 都不在索引中。
处理步骤:若第二项不为零,先完整列出 git ls-files --others --exclude-standard,再运行 git ls-files | grep -E '(^|/).env|.pem$|service-account' 检查索引中是否含密钥;若输出任何内容则立即停止,不发布,需要从历史中移除并轮换密钥。否则提出修复方案并等待确认,随后执行 git add -A 与 git status --short,在提交前确认暂存内容,异常时改用 .gitignore 与 git restore --staged。提交后重新计数,第二项为零再部署。未提交的修改不阻止部署(railway up 上传目录而非提交),但需说明文件数并由发布者决定;若目录不是 git 仓库则无法校验,需明确说明后继续。
部署与 webhook:询问部署到本地还是 Railway。Railway 使用 Postgres,需在 PINES.md 中固定 asyncpg;SQLite 下不会暴露问题,首次部署时才会以 ModuleNotFoundError 报错。随后注册 webhook:meta 的验证是 GET,以纯文本返回 hub.challenge,不能返回 JSON;zernio 的处理程序需在 5 秒内返回 2xx,否则事件会重试最多七次。凭据不在此处写入,由安装者在 .env 中提供。