Skip to content

eLeanwang/evolclaw

Repository files navigation

EvolClaw

AI Agent 统一网关 —— 连接 IM、终端、Agent 网络

EvolClaw 是一个轻量级 AI Agent 网关系统。它为 Claude Code / Codex 等 AI Agent 提供统一接入层,支持飞书、微信、AUN Mesh 网络和终端 TUI 四种通道。人类可以通过手机 IM 随时接力开发,其他 Agent 也可以通过 AUN 网络直接调用你的 Agent —— 不只是人机交互,也是 Agent 间协作的基础设施。

核心特性

  • 🔄 多端会话接力:跨终端共享会话、环境、项目,无缝切换开发体验
  • ♻️ 配置自动继承:复用 CLI 环境的 API Key/URL、记忆文件、MCP/Skills 插件,零额外配置
  • 🚀 轻量化设计:进程模式运行,CLI 命令行管理,无端口开放,无容器依赖,无 UI 界面
  • 📁 多项目支持:每个项目独立会话,支持动态切换
  • 👥 双模式会话:多用户私聊会话隔离,群聊会话共享,满足不同协作场景
  • 🌐 多渠道接入:Channel Adapter 模式,飞书 + 微信 + AUN Mesh 网络,扫码一键接入
  • 🤖 Agent 间互联:通过 AUN 网络,你的 Agent 可被其他 Agent 发现和调用
  • 🖥️ 终端 TUI 客户端evolclaw tui 直接在终端与远程 Agent 对话,无需 IM
  • 🔐 分层权限:用户级/管理员级命令分离,多用户安全隔离
  • 📦 项目搬家evolclaw mv 一键迁移项目目录,保留 Claude/Codex/EvolClaw 全部会话历史
  • 💾 会话持久化:会话数据与 CLI 工具共享,不额外存储,服务重启不丢失
  • 执行中插入:任务执行中可发送新消息,自动中断当前任务并处理新请求
  • 🔕 消息智能发送:前台任务动态聚合批量发送,后台任务静默完成后通知
  • 🤖 健壮性保障:任务超时提醒、会话异常安全模式修复、重启失败自动自愈

适合场景

  • 通勤路上:手机打开飞书,继续昨晚的代码 review,到公司无缝切回终端
  • 会议间隙:微信快速问一句「这个接口的返回格式是什么」,Agent 直接查代码回复
  • 终端直连evolclaw tui 在任意终端直接与远程 Agent 对话,无需打开 IM
  • Agent 协作:通过 AUN 网络,让你的 Agent 被其他 Agent 调用,组成分布式协作
  • 外出离开工位:不带电脑也能通过 IM 给 Agent 下达任务,回来看结果
  • 团队协作:拉个飞书群,成员共享同一个 Agent 会话,一起讨论和调试

系统架构

消息渠道层 → 消息队列层 → 命令处理层 → 消息处理层 → 会话管理层 → 存储层

核心组件

  1. 消息渠道层 (src/channels/) - Feishu WebSocket + WeChat HTTP 长轮询 + AUN Mesh 网络
  2. 消息队列层 (src/core/message/message-queue.ts) - 会话级串行处理 + 中断支持
  3. 命令处理层 (src/core/command-handler.ts) - 斜杠命令处理(CommandHandler 类)
  4. 消息处理层 (src/core/message/message-processor.ts) - 统一事件处理引擎
  5. 会话管理层 (src/core/session/session-manager.ts) - 多项目会话管理
  6. 交互路由层 (src/core/interaction-router.ts) - 卡片交互回调注册与路由
  7. 会话存储层 - JSONL 文件(CLI 共用)+ SQLite 元数据

消息流转

用户发送消息
    ↓
Channel.onMessage
    ↓
检查命令 → 是 → CommandHandler.handle() → 立即响应(绕过队列)
    ↓ 否
MessageQueue.enqueue(streamKey, message)
    ↓
检测正在处理 → 是 → 触发中断 → AgentRunner.interrupt()
    ↓ 否                                    ↓
MessageQueue.processNext()  ←──────────────┘
    ↓
MessageProcessor.processMessage()
    ↓
├─ 解析会话和项目路径
├─ 创建 StreamFlusher(3 秒批量发送)
├─ AgentRunner.runQuery() → 事件流
├─ 处理事件(tool_use / text / result)
├─ 提取文件标记(Feishu)
└─ 发送最终响应

快速开始

环境要求

  • 操作系统:macOS / Linux / Windows
  • Node.js >= 22(需要 node:sqlite 内置模块支持)
  • Claude Code >= 2.1.32(npm install -g @anthropic-ai/claude-code

1. 安装

npm 全局安装(推荐):

npm install -g evolclaw

Windows 用户:首次运行前可能需要执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

从源码安装

git clone https://github.com/eLeanwang/evolclaw.git
cd evolclaw
npm install
npm run build
npm link

2. 初始化

# 完整初始化(选择飞书或微信)
evolclaw init

# 单独配置飞书(扫码登录)
evolclaw init feishu

# 单独配置微信(扫码登录)
evolclaw init wechat

# 单独配置 AUN(Mesh 网络通道)
evolclaw init aun

交互式引导完成以下配置:

  • 环境检查(Node.js >= 22、claude CLI、SDK 版本)
  • 渠道选择(飞书/微信)并扫码登录
  • 默认项目路径
  • 模型选择(sonnet/opus/haiku)
  • 自动写入 EVOLCLAW_HOME 到 shell profile(Unix)或用户环境变量(Windows)

配置文件生成在 {EVOLCLAW_HOME}/data/evolclaw.json(默认 ~/.evolclaw/data/evolclaw.json)。

补充配置(可选)

以下参数不包含在 evolclaw init 交互流程中,需要手动编辑 evolclaw.json

{
  "projects": {
    "autoCreate": true                          // 绑定不存在的项目路径时自动创建目录
  },
  "idleMonitor": {
    "enabled": true,                            // 任务超时监控开关
    "timeout": 120,                             // 超时阈值(秒),默认 120 秒
    "safeModeThreshold": 3                      // 连续超时 N 次后进入安全模式(设为 0 禁用安全模式)
  },
  "flushDelay": 4                               // 工具活动消息聚合发送间隔(秒),默认 4 秒
}

API 继承机制agents.anthropic 整个 section 可省略,系统自动按以下优先级继承:

  • apiKey:配置文件 → ANTHROPIC_AUTH_TOKEN 环境变量 → ~/.claude/settings.json
  • baseUrl:配置文件 → ANTHROPIC_BASE_URL 环境变量 → ~/.claude/settings.json
  • model:配置文件 → ~/.claude/settings.json → 默认 sonnet
  • effort:配置文件 → ~/.claude/settings.json → SDK 默认值(auto

3. 运行

# 服务管理
evolclaw start      # 启动服务
evolclaw stop       # 停止服务
evolclaw restart    # 重启服务
evolclaw status     # 查看状态
evolclaw logs       # 查看日志(tail -f)
evolclaw tui        # 启动 AUN TUI 终端客户端
evolclaw mv <old> <new>  # 项目搬家(保留全部会话)
evolclaw diagnose   # 诊断启动环境

# 开发模式(热重载)
npm run dev

# 运行测试
npm test

项目结构

evolclaw/
├── src/
│   ├── agents/
│   │   ├── claude-runner.ts        # Claude Agent SDK 封装
│   │   ├── codex-runner.ts         # Codex Agent 封装
│   │   └── gemini-runner.ts        # Gemini CLI 封装
│   ├── core/
│   │   ├── message/
│   │   │   ├── message-bridge.ts   # 渠道 ↔ 核心消息桥
│   │   │   ├── message-processor.ts # 统一消息处理引擎
│   │   │   ├── message-queue.ts    # 消息队列(串行+中断)
│   │   │   ├── message-cache.ts    # 消息缓存
│   │   │   └── stream-flusher.ts   # 批量发送(3秒窗口)
│   │   ├── session/
│   │   │   ├── adapters/           # 各后端会话文件适配器
│   │   │   └── session-manager.ts  # 会话管理(多项目支持)
│   │   ├── command-handler.ts      # 斜杠命令处理
│   │   ├── interaction-router.ts   # 卡片交互回调路由
│   │   └── permission.ts           # 权限网关
│   ├── channels/
│   │   ├── feishu.ts               # 飞书 WebSocket 渠道
│   │   ├── wechat.ts               # 微信 ClawBot 渠道
│   │   └── aun.ts                  # AUN Mesh 网络渠道
│   ├── utils/                      # 工具函数
│   ├── types.ts                    # 类型定义
│   ├── config.ts                   # 配置加载
│   ├── paths.ts                    # 路径解析
│   ├── cli.ts                      # CLI 命令(init/start/stop/tui/mv/...)
│   └── index.ts                    # 主入口
├── aun/
│   ├── aun_cli.py                  # AUN TUI 客户端(Python)
│   └── pyproject.toml              # AUN CLI 依赖声明
└── data/
    └── evolclaw.sample.json        # 配置模板

斜杠命令

用户级命令(所有用户可用)

会话管理

  • /new [名称] - 创建新会话
  • /slist - 列出当前项目的所有会话
  • /slist cli - 列出未导入的 CLI 会话
  • /s <名称|序号|uuid> - 切换到指定会话
  • /name <新名称> - 重命名当前会话
  • /del <名称> - 删除指定会话(仅解绑,不删除文件)
  • /status - 显示会话状态
  • /help - 显示所有命令

管理员级命令(仅 Owner 可用)

项目管理

  • /pwd - 显示当前项目路径
  • /plist - 列出所有项目(显示会话空闲时间)
  • /p <name|path> - 切换项目(保留会话历史)
  • /bind <path> - 绑定新项目目录

Agent 与模型

  • /agent [name] - 查看或切换 Agent 后端(claude / codex / gemini)
  • /model [model] - 查看或切换模型
  • /effort [level] - 查看或切换推理强度(low / medium / high / max / auto)
  • /perm [mode] - 查看或切换权限模式(auto / edit / default / readonly)

系统管理

  • /clear - 清空对话历史
  • /compact - 压缩会话上下文
  • /stop - 中断当前任务
  • /send <文件路径> - 发送文件给用户
  • /check - 系统健康检查面板
  • /restart - 重启服务(自愈机制)
  • /repair - 检查并修复会话
  • /safe - 进入安全模式

技术栈

  • 运行时:Node.js >= 22 + TypeScript(ES modules)
  • AI SDK:@anthropic-ai/claude-agent-sdk >= 0.2.75、@openai/codex-sdk、Gemini CLI
  • 消息渠道:飞书(@larksuiteoapi/node-sdk)、微信(ClawBot ilink API)、AUN Mesh 网络
  • 数据存储:node:sqlite(内置模块)+ JSONL(CLI 共用)
  • 测试框架:Vitest

TODO

  • Windows 系统 CLI 命令支持
  • 微信插件支持图片/文件的收发
  • AUN Mesh 网络通道接入
  • TUI 终端客户端(evolclaw tui
  • 项目搬家工具(evolclaw mv
  • 自动授权可配置(自动放行/自动拒绝)
  • 手动授权支持(文本回复)
  • 手动授权支持(飞书卡片)
  • ACP 协议支持(接入 Codex / Gemini CLI)

许可证

MIT — 详见 LICENSE 声明

交流群

EvolClaw 正在内测中,欢迎加入微信群交流使用体验、反馈问题或参与讨论:

EvolClaw 内测群二维码

二维码过期后可在 Issues 中留言,我会更新邀请链接。

About

轻量级编程 Agent 网关,让 Claude Code / Codex 通过飞书/微信随时随地接力开发

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors