这个项目最初是腾讯微信渠道对 OpenClaw 的接入插件。
原始定位是:
- 通过扫码登录获取微信 bot 凭证
- 通过
ilink网关长轮询收取微信消息 - 通过微信 CDN 上传下载媒体
- 将入站消息直接接入 OpenClaw 的回复链路
因此,原项目天然是:
Weixin -> openclaw-weixin plugin -> OpenClaw
当前仓库仍然首先是一个可工作的 OpenClaw 微信插件。
在此基础上,我们正在做的事情是:
- 保留微信接入能力
- 保留 OpenClaw 作为已实现 backend
- 已接入
codex - 已接入
claude code - 继续为
opencode等其他 backend 预留接入点 - 逐步把后端选择从“只有 OpenClaw”演进为“可切换多 backend”
目标方向是:
Weixin
-> transport
-> router
-> openclaw / codex / claude
当前最重要的产品目标不是“彻底重写架构”,而是:
- 保留现有微信接入能力
- 保持 OpenClaw 作为可用 backend
- 为未来新增轻量 backend 留出稳定接入点
这里的“轻量 backend”指:
- 不需要 OpenClaw 的 route / session / dispatcher
- 只需要文本输入
- 可选图片输入
- 返回文本输出
- 可选返回图片或文件
当前实际状态已经更新为:
claude code已经接入实现codex已经接入实现opencode等其他 backend 仍然只是按这个目标预留接口和命令入口
可以接受 OpenClaw backend 内部继续依赖 OpenClaw runtime。
不要求所有文件都完全零耦合。
真正要避免的是:
- 轻量 backend 必须理解 OpenClaw 内部机制
- 微信 transport 被 OpenClaw 专有逻辑绑死
这个项目原本是一个可工作的 OpenClaw 微信插件。
改造时优先保证:
- 现有微信能力不被拆坏
- OpenClaw backend 仍可用
- 不因为过度拆分导致原有安装/运行语义失效
如果某段代码会让未来的 codex / claude 接入必须理解 OpenClaw 内部实现,则应该继续拆。
如果某段代码只在 openclaw backend 内部使用,则允许保留耦合。
当前仓库大致分成这几层:
-
src/api/src/cdn/src/media/src/storage微信公共接入能力 -
src/transport/weixin微信 transport 层 -
src/router会话级 backend 选择与路由 -
src/backends/openclawOpenClaw backend 的专有实现 -
src/backends/contracts.tsbackend 公共接口 -
src/backends/registry.tsbackend 注册表 -
src/messaging/process-message.ts当前仍是混合编排层,是后续最容易继续演进的主入口
截至当前代码状态:
- OpenClaw backend 已实现并可用
lightweightbackend 模式已经定义codex已实现并可用,当前通过 ACP 直接接入 Codexclaude已实现并可用,当前通过 ACP 直接接入 Claude Codeopencode、copilot、auggie、cursor当前仍只保留 backend id 与命令入口src/router和src/backends的拆分已经落地- 但主链路仍然默认围绕 OpenClaw runtime 运转
换句话说:
- 现在不是“多 backend 全部可用”
- 而是“OpenClaw 可用,Codex 可用,Claude 可用,其他 backend 可以开始接入”
现在的代码已经达到了一个可接受的中间态:
- 已经可以继续实现其他 backend
- 不需要再为
codex/claude code大规模重构 OpenClaw 内核 - 后续新增 backend 应优先走
lightweight模式 - 当前真正可工作的 backend 是
openclaw、codex和claude
当前仓库已经明确切换到 ACP 方向:
claudebackend 当前通过 ACP 直接连接 Claude Codecodexbackend 当前通过 ACP 直接连接 Codex- AgentAPI 实现已经从仓库中移除
- 后续新增
codex/opencode/copilot/auggie/cursor时,也应优先按 direct ACP 接入
当前不再建议:
- 新增基于 AgentAPI 的 backend
- 恢复 AgentAPI 安装或自动拉起逻辑
新增 opencode / copilot / auggie / cursor 时:
- 优先实现
mode: "lightweight"adapter - 输入只消费文本和图片路径
- 输出只返回文本和可选媒体路径 / URL
- 不要复用 OpenClaw 的 route / session / reply-dispatcher
- 优先通过 ACP 直接连接对应 CLI / agent
其中当前已落地的是:
codex- direct ACP
- 通过
codex-acp连接 Codex
claude- direct ACP
- 通过
claude-agent-acp连接 Claude Code
当前仍未落地的是:
opencodecopilotauggiecursor
换句话说:
openclaw是复杂 backendcodex是已实现的 ACP 轻量 backendclaude是已实现的 ACP 轻量 backendopencode/copilot/auggie/cursor是待实现的 ACP 轻量 backend
- 不要为了“绝对纯净”继续大拆所有 OpenClaw 相关逻辑
- 不要在轻量 backend 中引入 OpenClaw runtime 依赖
- 不要破坏现有
weixin-agent-gateway插件入口和安装形态,除非明确决定放弃 OpenClaw 插件兼容 - 不要随意删除现有微信 transport 逻辑
当前仓库的首要目的不是做完美框架,而是:
- 保住微信接入能力
- 保住 OpenClaw backend
- 让新增轻量 backend 的实现成本足够低
只要这三点成立,架构就是成功的。