这是一个个人自用的实验/参考项目,不是通用产品,也不是 production-ready 的服务模板。公开代码主要用于展示事件路由、agent 调度和回写流程;真实部署前需要自行完成安全审计、权限模型、运维隔离、监控告警和密钥管理。
MeowHook 是一个可扩展的事件驱动 Agent 网关:
任意事件源(Webhook) → 统一路由/最小解析 → OpenClaw 执行 → 回写到原平台
当前支持 GitHub 与 Linear 触发:
- GitHub:评论 mention 与 CI 失败自愈触发
- Linear:issue assign 与 comment mention
cp .env.example .env
npm install
npm run dev:localPOST /webhooks/githubPOST /webhooks/linearGET /healthz
npm run check
npm testStart service first, then:
GITHUB_WEBHOOK_SECRET=replace-with-secret npm run smoke:local这个仓库不承诺生产环境可用性。当前实现假设运行者完全理解自己的 GitHub App、Linear、OpenClaw、agent 账号和回写权限配置;默认配置仅作为示例。若要部署到公网,请至少自行处理:
- 使用独立的 GitHub App / token / webhook secret,并放在环境变量或本机 secret 文件中。
- 将公网 webhook 入口、反向代理、TLS、访问控制和 rate limit 放到仓库外配置。
- 为 agent 账号设置最小权限,并审计所有自动回写路径。
- 配置
ALLOWED_GITHUB_USERS/ALLOWED_LINEAR_USERS/TARGET_AGENT_LOGINS/REPO_ACCESS_SCRIPT等本地环境变量。 - 建立日志脱敏、告警、备份、升级和 incident response 流程。
- 评论 mention 触发:通过
ALLOWED_GITHUB_USERS控制白名单 - Linear assign/mention 触发:通过
ALLOWED_LINEAR_USERS控制白名单 - CI 自愈触发:
workflow_run.completed且conclusion=failure,当触发者是 agent(onevclaw/onevpaw/onevtail)时自动分配给对应 agent - 无权限默认:静默拒绝(仅日志)
- reaction 默认开启(GitHub/Linear:👀 处理中;🚀 全部完成;😕 失败)
- 最终评论由各 agent 自己回写(MeowHook 本身不发业务评论)
- 可选 mention polling 模式(通过 GitHub notifications 轮询
reason=mention) - CI 自愈可通过环境变量控制:
CI_AUTOFIX_ENABLED/CI_AUTOFIX_REPO_ALLOWLIST/CI_AUTOFIX_BRANCH_ALLOW_REGEX/CI_AUTOFIX_MAX_ROUNDS - 可选逻辑身份/执行后端拆分:通过
OPENCLAW_AGENT_EXECUTION_TARGETS把某个 GitHub mention 逻辑身份映射到另一条 OpenClaw 执行路径(例如onevtail=claude),并可用OPENCLAW_AGENT_SESSION_KEYS指定专用 hook session 基准前缀 - 评论 mention 默认按「同 repo + 同 PR/Issue + 同 logical agent」复用会话 key;不同 PR/Issue 隔离。会话映射保存在进程内内存,每月 1 日 03:00(本地时区)自动清空一轮