evolclaw 2.1.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +59 -30
  2. package/data/evolclaw.sample.json +15 -4
  3. package/dist/agents/claude-runner.js +685 -0
  4. package/dist/agents/codex-runner.js +315 -0
  5. package/dist/agents/gemini-runner.js +425 -0
  6. package/dist/channels/aun.js +580 -10
  7. package/dist/channels/feishu.js +888 -135
  8. package/dist/channels/wechat.js +127 -21
  9. package/dist/cli.js +519 -136
  10. package/dist/config.js +277 -25
  11. package/dist/core/agent-loader.js +39 -0
  12. package/dist/core/channel-loader.js +67 -0
  13. package/dist/core/command-handler.js +1537 -392
  14. package/dist/core/event-bus.js +32 -0
  15. package/dist/core/interaction-router.js +68 -0
  16. package/dist/core/message/message-bridge.js +216 -0
  17. package/dist/core/message/message-processor.js +1028 -0
  18. package/dist/core/message/message-queue.js +240 -0
  19. package/dist/core/message/stream-debouncer.js +122 -0
  20. package/dist/{utils → core/message}/stream-flusher.js +73 -13
  21. package/dist/{utils → core/message}/stream-idle-monitor.js +1 -1
  22. package/dist/core/permission.js +259 -0
  23. package/dist/core/session/adapters/claude-session-file-adapter.js +144 -0
  24. package/dist/core/session/adapters/codex-session-file-adapter.js +261 -0
  25. package/dist/core/session/adapters/gemini-session-file-adapter.js +177 -0
  26. package/dist/core/session/session-file-adapter.js +7 -0
  27. package/dist/core/session/session-file-health.js +45 -0
  28. package/dist/core/session/session-manager.js +1072 -0
  29. package/dist/index.js +402 -252
  30. package/dist/ipc.js +106 -0
  31. package/dist/paths.js +1 -0
  32. package/dist/types.js +3 -0
  33. package/dist/utils/{platform.js → cross-platform.js} +38 -1
  34. package/dist/utils/error-utils.js +130 -5
  35. package/dist/utils/init-channel.js +649 -0
  36. package/dist/utils/init.js +190 -53
  37. package/dist/utils/logger.js +8 -3
  38. package/dist/utils/media-cache.js +207 -0
  39. package/dist/utils/migrate-project.js +122 -0
  40. package/dist/utils/rich-content-renderer.js +228 -0
  41. package/dist/utils/stats-collector.js +102 -0
  42. package/package.json +4 -2
  43. package/dist/core/agent-runner.js +0 -348
  44. package/dist/core/message-processor.js +0 -604
  45. package/dist/core/message-queue.js +0 -116
  46. package/dist/core/message-stream.js +0 -59
  47. package/dist/core/session-manager.js +0 -664
  48. package/dist/index.js.bak +0 -340
  49. package/dist/utils/init-feishu.js +0 -261
  50. package/dist/utils/init-wechat.js +0 -170
  51. package/dist/utils/markdown-to-feishu.js +0 -94
  52. package/dist/utils/permission.js +0 -43
  53. package/dist/utils/session-file-health.js +0 -68
  54. /package/dist/core/{message-cache.js → message/message-cache.js} +0 -0
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # EvolClaw
2
2
 
3
- > Claude Code 装进飞书和微信 —— 随时随地,接力开发
3
+ > AI Agent 统一网关 —— 连接 IM、终端、Agent 网络
4
4
 
5
- EvolClaw 是一个轻量级 AI Agent 网关,基于 Claude Agent SDK 构建。它将终端中的 Claude Code 能力延伸到飞书、微信等即时通讯工具,让你在手机上也能review 代码、调试问题、管理项目,真正实现多终端无缝接力开发。
5
+ EvolClaw 是一个轻量级 AI Agent 网关系统。它为 Claude Code / Codex 等 AI Agent 提供统一接入层,支持飞书、微信、AUN Mesh 网络和终端 TUI 四种通道。人类可以通过手机 IM 随时接力开发,其他 Agent 也可以通过 AUN 网络直接调用你的 Agent —— 不只是人机交互,也是 Agent 间协作的基础设施。
6
6
 
7
7
  ## 核心特性
8
8
 
@@ -11,9 +11,11 @@ EvolClaw 是一个轻量级 AI Agent 网关,基于 Claude Agent SDK 构建。
11
11
  - 🚀 **轻量化设计**:进程模式运行,CLI 命令行管理,无端口开放,无容器依赖,无 UI 界面
12
12
  - 📁 **多项目支持**:每个项目独立会话,支持动态切换
13
13
  - 👥 **双模式会话**:多用户私聊会话隔离,群聊会话共享,满足不同协作场景
14
- - 🌐 **多渠道接入**:Channel Adapter 模式,飞书 + 微信扫码一键接入
14
+ - 🌐 **多渠道接入**:Channel Adapter 模式,飞书 + 微信 + AUN Mesh 网络,扫码一键接入
15
+ - 🤖 **Agent 间互联**:通过 AUN 网络,你的 Agent 可被其他 Agent 发现和调用
16
+ - 🖥️ **终端 TUI 客户端**:`evolclaw tui` 直接在终端与远程 Agent 对话,无需 IM
15
17
  - 🔐 **分层权限**:用户级/管理员级命令分离,多用户安全隔离
16
- - 📊 **统一消息处理**:消息处理与渠道解耦,新增渠道仅需 ~15 行代码
18
+ - 📦 **项目搬家**:`evolclaw mv` 一键迁移项目目录,保留 Claude/Codex/EvolClaw 全部会话历史
17
19
  - 💾 **会话持久化**:会话数据与 CLI 工具共享,不额外存储,服务重启不丢失
18
20
  - ⚡ **执行中插入**:任务执行中可发送新消息,自动中断当前任务并处理新请求
19
21
  - 🔕 **消息智能发送**:前台任务动态聚合批量发送,后台任务静默完成后通知
@@ -23,7 +25,8 @@ EvolClaw 是一个轻量级 AI Agent 网关,基于 Claude Agent SDK 构建。
23
25
 
24
26
  - **通勤路上**:手机打开飞书,继续昨晚的代码 review,到公司无缝切回终端
25
27
  - **会议间隙**:微信快速问一句「这个接口的返回格式是什么」,Agent 直接查代码回复
26
- - **下班之后**:躺在沙发上用手机跟进 CI 报错,让 Agent 定位问题并修复
28
+ - **终端直连**:`evolclaw tui` 在任意终端直接与远程 Agent 对话,无需打开 IM
29
+ - **Agent 协作**:通过 AUN 网络,让你的 Agent 被其他 Agent 调用,组成分布式协作
27
30
  - **外出离开工位**:不带电脑也能通过 IM 给 Agent 下达任务,回来看结果
28
31
  - **团队协作**:拉个飞书群,成员共享同一个 Agent 会话,一起讨论和调试
29
32
 
@@ -35,12 +38,13 @@ EvolClaw 是一个轻量级 AI Agent 网关,基于 Claude Agent SDK 构建。
35
38
 
36
39
  ### 核心组件
37
40
 
38
- 1. **消息渠道层** (`src/channels/`) - Feishu WebSocket + WeChat HTTP 长轮询
39
- 2. **消息队列层** (`src/core/message-queue.ts`) - 会话级串行处理 + 中断支持
41
+ 1. **消息渠道层** (`src/channels/`) - Feishu WebSocket + WeChat HTTP 长轮询 + AUN Mesh 网络
42
+ 2. **消息队列层** (`src/core/message/message-queue.ts`) - 会话级串行处理 + 中断支持
40
43
  3. **命令处理层** (`src/core/command-handler.ts`) - 斜杠命令处理(CommandHandler 类)
41
- 4. **消息处理层** (`src/core/message-processor.ts`) - 统一事件处理引擎
42
- 5. **会话管理层** (`src/core/session-manager.ts`) - 多项目会话管理
43
- 6. **会话存储层** - JSONL 文件(CLI 共用)+ SQLite 元数据
44
+ 4. **消息处理层** (`src/core/message/message-processor.ts`) - 统一事件处理引擎
45
+ 5. **会话管理层** (`src/core/session/session-manager.ts`) - 多项目会话管理
46
+ 6. **交互路由层** (`src/core/interaction-router.ts`) - 卡片交互回调注册与路由
47
+ 7. **会话存储层** - JSONL 文件(CLI 共用)+ SQLite 元数据
44
48
 
45
49
  ### 消息流转
46
50
 
@@ -106,6 +110,9 @@ evolclaw init feishu
106
110
 
107
111
  # 单独配置微信(扫码登录)
108
112
  evolclaw init wechat
113
+
114
+ # 单独配置 AUN(Mesh 网络通道)
115
+ evolclaw init aun
109
116
  ```
110
117
 
111
118
  交互式引导完成以下配置:
@@ -150,6 +157,9 @@ evolclaw stop # 停止服务
150
157
  evolclaw restart # 重启服务
151
158
  evolclaw status # 查看状态
152
159
  evolclaw logs # 查看日志(tail -f)
160
+ evolclaw tui # 启动 AUN TUI 终端客户端
161
+ evolclaw mv <old> <new> # 项目搬家(保留全部会话)
162
+ evolclaw diagnose # 诊断启动环境
153
163
 
154
164
  # 开发模式(热重载)
155
165
  npm run dev
@@ -163,23 +173,36 @@ npm test
163
173
  ```
164
174
  evolclaw/
165
175
  ├── src/
176
+ │ ├── agents/
177
+ │ │ ├── claude-runner.ts # Claude Agent SDK 封装
178
+ │ │ ├── codex-runner.ts # Codex Agent 封装
179
+ │ │ └── gemini-runner.ts # Gemini CLI 封装
166
180
  │ ├── core/
167
- │ │ ├── command-handler.ts # 斜杠命令处理
168
- │ │ ├── session-manager.ts # 会话管理(多项目支持)
169
- │ │ ├── message-queue.ts # 消息队列(串行+中断)
170
- │ │ ├── message-processor.ts # 统一消息处理引擎
171
- │ │ ├── stream-flusher.ts # 批量发送(3秒窗口)
172
- │ │ ├── agent-runner.ts # Claude Agent SDK 封装
173
- │ │ └── message-cache.ts # 消息缓存
181
+ │ │ ├── message/
182
+ │ │ ├── message-bridge.ts # 渠道 ↔ 核心消息桥
183
+ │ │ ├── message-processor.ts # 统一消息处理引擎
184
+ │ │ ├── message-queue.ts # 消息队列(串行+中断)
185
+ │ │ ├── message-cache.ts # 消息缓存
186
+ │ │ │ └── stream-flusher.ts # 批量发送(3秒窗口)
187
+ │ │ ├── session/
188
+ │ │ │ ├── adapters/ # 各后端会话文件适配器
189
+ │ │ │ └── session-manager.ts # 会话管理(多项目支持)
190
+ │ │ ├── command-handler.ts # 斜杠命令处理
191
+ │ │ ├── interaction-router.ts # 卡片交互回调路由
192
+ │ │ └── permission.ts # 权限网关
174
193
  │ ├── channels/
175
194
  │ │ ├── feishu.ts # 飞书 WebSocket 渠道
176
- │ │ └── wechat.ts # 微信 ClawBot 渠道
195
+ │ │ ├── wechat.ts # 微信 ClawBot 渠道
196
+ │ │ └── aun.ts # AUN Mesh 网络渠道
177
197
  │ ├── utils/ # 工具函数
178
198
  │ ├── types.ts # 类型定义
179
199
  │ ├── config.ts # 配置加载
180
200
  │ ├── paths.ts # 路径解析
181
- │ ├── cli.ts # CLI 命令(init/start/stop/...)
201
+ │ ├── cli.ts # CLI 命令(init/start/stop/tui/mv/...)
182
202
  │ └── index.ts # 主入口
203
+ ├── aun/
204
+ │ ├── aun_cli.py # AUN TUI 客户端(Python)
205
+ │ └── pyproject.toml # AUN CLI 依赖声明
183
206
  └── data/
184
207
  └── evolclaw.sample.json # 配置模板
185
208
  ```
@@ -191,7 +214,8 @@ evolclaw/
191
214
  **会话管理**:
192
215
  - `/new [名称]` - 创建新会话
193
216
  - `/slist` - 列出当前项目的所有会话
194
- - `/s <名称>` - 切换到指定会话
217
+ - `/slist cli` - 列出未导入的 CLI 会话
218
+ - `/s <名称|序号|uuid>` - 切换到指定会话
195
219
  - `/name <新名称>` - 重命名当前会话
196
220
  - `/del <名称>` - 删除指定会话(仅解绑,不删除文件)
197
221
  - `/status` - 显示会话状态
@@ -205,26 +229,27 @@ evolclaw/
205
229
  - `/p <name|path>` - 切换项目(保留会话历史)
206
230
  - `/bind <path>` - 绑定新项目目录
207
231
 
232
+ **Agent 与模型**:
233
+ - `/agent [name]` - 查看或切换 Agent 后端(claude / codex / gemini)
234
+ - `/model [model]` - 查看或切换模型
235
+ - `/effort [level]` - 查看或切换推理强度(low / medium / high / max / auto)
236
+ - `/perm [mode]` - 查看或切换权限模式(auto / edit / default / readonly)
237
+
208
238
  **系统管理**:
209
239
  - `/clear` - 清空对话历史
210
240
  - `/compact` - 压缩会话上下文
211
241
  - `/stop` - 中断当前任务
242
+ - `/send <文件路径>` - 发送文件给用户
243
+ - `/check` - 系统健康检查面板
212
244
  - `/restart` - 重启服务(自愈机制)
213
245
  - `/repair` - 检查并修复会话
214
246
  - `/safe` - 进入安全模式
215
247
 
216
- **模型管理**:
217
- - `/model` - 显示当前模型和推理强度
218
- - `/model <model>` - 切换模型
219
- - `/model <effort>` - 切换推理强度(low / medium / high / max)
220
- - `/model <model> <effort>` - 同时切换模型和推理强度
221
- - `/model auto` - 恢复 SDK 默认推理强度
222
-
223
248
  ## 技术栈
224
249
 
225
250
  - **运行时**:Node.js >= 22 + TypeScript(ES modules)
226
- - **AI SDK**:@anthropic-ai/claude-agent-sdk >= 0.2.75
227
- - **消息渠道**:飞书(@larksuiteoapi/node-sdk)、微信(ClawBot ilink API
251
+ - **AI SDK**:@anthropic-ai/claude-agent-sdk >= 0.2.75、@openai/codex-sdk、Gemini CLI
252
+ - **消息渠道**:飞书(@larksuiteoapi/node-sdk)、微信(ClawBot ilink API)、AUN Mesh 网络
228
253
  - **数据存储**:node:sqlite(内置模块)+ JSONL(CLI 共用)
229
254
  - **测试框架**:Vitest
230
255
 
@@ -232,8 +257,12 @@ evolclaw/
232
257
 
233
258
  - [x] Windows 系统 CLI 命令支持
234
259
  - [x] 微信插件支持图片/文件的收发
260
+ - [x] AUN Mesh 网络通道接入
261
+ - [x] TUI 终端客户端(`evolclaw tui`)
262
+ - [x] 项目搬家工具(`evolclaw mv`)
235
263
  - [ ] 自动授权可配置(自动放行/自动拒绝)
236
- - [ ] 手动授权支持(飞书卡片/文本回复)
264
+ - [x] 手动授权支持(文本回复)
265
+ - [x] 手动授权支持(飞书卡片)
237
266
  - [ ] ACP 协议支持(接入 Codex / Gemini CLI)
238
267
 
239
268
 
@@ -2,9 +2,20 @@
2
2
  "agents": {
3
3
  "anthropic": {
4
4
  "model": "sonnet"
5
- }
5
+ },
6
+ "openai": {
7
+ "apiKey": "your-openai-api-key",
8
+ "baseUrl": "https://api.openai.com/v1",
9
+ "model": "gpt-5.2-codex",
10
+ "effort": "medium"
11
+ },
12
+ "google": {
13
+ "model": "gemini-2.5-flash"
14
+ },
15
+ "defaultAgent": "claude"
6
16
  },
7
17
  "channels": {
18
+ "defaultChannel": "feishu",
8
19
  "feishu": {
9
20
  "enabled": true,
10
21
  "appId": "",
@@ -16,9 +27,9 @@
16
27
  "token": ""
17
28
  },
18
29
  "aun": {
19
- "enabled": true,
20
- "domain": "your-aun-domain",
21
- "agentName": "your-agent-name"
30
+ "enabled": false,
31
+ "aid": "your-agent.agentid.pub",
32
+ "gatewayPort": 443
22
33
  }
23
34
  },
24
35
  "projects": {