evolclaw 2.8.3 → 3.0.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 (105) hide show
  1. package/README.md +21 -12
  2. package/dist/agents/claude-runner.js +102 -38
  3. package/dist/agents/codex-runner.js +11 -14
  4. package/dist/agents/gemini-runner.js +10 -12
  5. package/dist/agents/resolve.js +134 -0
  6. package/dist/agents/templates.js +3 -3
  7. package/dist/aun/aid/agentmd.js +186 -0
  8. package/dist/aun/aid/client.js +134 -0
  9. package/dist/aun/aid/identity.js +131 -0
  10. package/dist/aun/aid/index.js +3 -0
  11. package/dist/aun/aid/types.js +1 -0
  12. package/dist/aun/aid/validation.js +21 -0
  13. package/dist/aun/msg/group.js +291 -0
  14. package/dist/aun/msg/index.js +4 -0
  15. package/dist/aun/msg/p2p.js +144 -0
  16. package/dist/aun/msg/payload-type.js +27 -0
  17. package/dist/aun/msg/upload.js +98 -0
  18. package/dist/aun/outbox.js +138 -0
  19. package/dist/aun/rpc/caller.js +42 -0
  20. package/dist/aun/rpc/connection.js +34 -0
  21. package/dist/aun/rpc/index.js +2 -0
  22. package/dist/aun/storage/download.js +29 -0
  23. package/dist/aun/storage/index.js +3 -0
  24. package/dist/aun/storage/manage.js +10 -0
  25. package/dist/aun/storage/upload.js +35 -0
  26. package/dist/channels/aun.js +1051 -288
  27. package/dist/channels/dingtalk.js +58 -5
  28. package/dist/channels/feishu.js +266 -30
  29. package/dist/channels/qqbot.js +67 -12
  30. package/dist/channels/wechat.js +61 -4
  31. package/dist/channels/wecom.js +58 -5
  32. package/dist/cli/agent.js +800 -0
  33. package/dist/cli/index.js +4253 -0
  34. package/dist/{utils → cli}/init-channel.js +211 -621
  35. package/dist/cli/init.js +178 -0
  36. package/dist/config-store.js +613 -0
  37. package/dist/core/{agent-loader.js → baseagent-loader.js} +6 -12
  38. package/dist/core/channel-loader.js +162 -11
  39. package/dist/core/command-handler.js +858 -847
  40. package/dist/core/evolagent-registry.js +191 -371
  41. package/dist/core/evolagent.js +203 -234
  42. package/dist/core/interaction-router.js +52 -5
  43. package/dist/core/message/im-renderer.js +480 -0
  44. package/dist/core/message/items-formatter.js +61 -0
  45. package/dist/core/message/message-bridge.js +104 -56
  46. package/dist/core/message/message-log.js +91 -0
  47. package/dist/core/message/message-processor.js +309 -142
  48. package/dist/core/message/message-queue.js +3 -3
  49. package/dist/core/permission.js +21 -8
  50. package/dist/core/session/adapters/codex-session-file-adapter.js +24 -2
  51. package/dist/core/session/session-fs-store.js +230 -0
  52. package/dist/core/session/session-manager.js +704 -775
  53. package/dist/core/session/session-mapper.js +87 -0
  54. package/dist/core/trigger/manager.js +122 -0
  55. package/dist/core/trigger/parser.js +128 -0
  56. package/dist/core/trigger/scheduler.js +224 -0
  57. package/dist/{templates → data}/prompts.md +34 -1
  58. package/dist/index.js +431 -275
  59. package/dist/ipc.js +49 -0
  60. package/dist/paths.js +82 -9
  61. package/dist/types.js +8 -2
  62. package/dist/utils/atomic-write.js +79 -0
  63. package/dist/utils/channel-helpers.js +46 -0
  64. package/dist/utils/cross-platform.js +0 -18
  65. package/dist/utils/instance-registry.js +433 -0
  66. package/dist/utils/log-writer.js +216 -0
  67. package/dist/utils/logger.js +24 -77
  68. package/dist/utils/media-cache.js +23 -0
  69. package/dist/utils/{upgrade.js → npm-ops.js} +52 -21
  70. package/dist/utils/process-introspect.js +144 -0
  71. package/dist/utils/stats.js +192 -0
  72. package/dist/watch-msg.js +529 -0
  73. package/evolclaw-install-aun.md +114 -46
  74. package/kits/aun/meta.md +25 -0
  75. package/kits/aun/role.md +25 -0
  76. package/kits/channels/aun.md +25 -0
  77. package/kits/evolclaw/commands.md +31 -0
  78. package/kits/evolclaw/identity-tools.md +26 -0
  79. package/kits/evolclaw/self-summary.md +29 -0
  80. package/kits/evolclaw/tools.md +25 -0
  81. package/kits/templates/group.md +20 -0
  82. package/kits/templates/private.md +9 -0
  83. package/kits/templates/system-fragments/personal-context.md +3 -0
  84. package/kits/templates/system-fragments/self-intro.md +5 -0
  85. package/kits/templates/system-fragments/speaker-intro.md +5 -0
  86. package/kits/templates/system-fragments/venue-intro.md +5 -0
  87. package/package.json +7 -5
  88. package/data/evolclaw.sample.json +0 -60
  89. package/dist/channels/aun-ops.js +0 -275
  90. package/dist/cli.js +0 -2178
  91. package/dist/config.js +0 -591
  92. package/dist/core/agent-registry.js +0 -450
  93. package/dist/core/evolagent-schema.js +0 -72
  94. package/dist/core/message/stream-flusher.js +0 -238
  95. package/dist/core/message/thought-emitter.js +0 -162
  96. package/dist/core/reload-hooks.js +0 -87
  97. package/dist/prompts/templates.js +0 -122
  98. package/dist/templates/skills.md +0 -66
  99. package/dist/utils/channel-fingerprint.js +0 -59
  100. package/dist/utils/error-dict.js +0 -63
  101. package/dist/utils/format.js +0 -32
  102. package/dist/utils/init.js +0 -645
  103. package/dist/utils/migrate-project.js +0 -122
  104. package/dist/utils/reload-hooks.js +0 -87
  105. package/dist/utils/stats-collector.js +0 -99
@@ -10,9 +10,10 @@ EvolClaw 是一个开源的 AI Agent 网关,将 Claude/Codex 等 AI 后端连
10
10
 
11
11
  ## 前置条件
12
12
 
13
- - Node.js >= 18,npm >= 8
13
+ - Node.js >= 18,npm >= 8(使用 codex baseagent 时建议 >= 22.5 以获得完整 session 列表查询;低版本会自动降级为 rollout 文件查询)
14
+ - 一款 baseagent CLI:`claude` / `codex` / `gemini` 任一在 PATH 中
14
15
  - 一个 AUN Agent ID(AID)——标识你的 Agent
15
- - 一个 Owner AID——接收欢迎消息和管理权限
16
+ - 一个 Owner AID(可选)——接收欢迎消息和管理权限;不填则首次通信者自动绑定
16
17
 
17
18
  ---
18
19
 
@@ -23,10 +24,13 @@ EvolClaw 是一个开源的 AI Agent 网关,将 Claude/Codex 等 AI 后端连
23
24
  ```bash
24
25
  node --version # 需要 >= 18
25
26
  npm --version # 需要 >= 8
27
+ which claude || which codex || which gemini # 至少一款 baseagent CLI
26
28
  ```
27
29
 
28
30
  版本不满足请先升级:https://nodejs.org
29
31
 
32
+ baseagent CLI 缺失时可用 `npm install -g @anthropic-ai/claude-code` 安装 claude。
33
+
30
34
  ### 步骤 2:安装 EvolClaw
31
35
 
32
36
  ```bash
@@ -70,85 +74,134 @@ evolclaw status
70
74
 
71
75
  - 输出表明未运行(`not running` / `stopped` / 无 PID)→ 直接进入下一步。
72
76
 
73
- ### 步骤 4:准备配置信息
77
+ ### 步骤 4:解析用户输入
78
+
79
+ 用户在触发安装时通常用类似下面的格式提供配置信息(**Claude Code 必须按以下规则解析**):
74
80
 
75
- | 参数 | 说明 | 示例 |
76
- |------|------|------|
77
- | `--aun-aid` | **必填**,Agent 自身的 AID,作为 bot 在 AUN 网络上的独立身份 | `mybot.agentid.pub` |
78
- | `--aun-owner` | **必填**,Owner 的 AID,用于接收欢迎消息和管理权限 | `alice.agentid.pub` |
79
- | `--default-path` | 默认项目路径(bot 会话未显式 `/bind` 时使用的工作目录) | `/home/user/myproject` |
81
+ ```
82
+ 安装 evolclaw(npm install -g evolclaw),读取包内的安装文档完成配置
83
+ 你要使用的AID是:aibot.agentid.pub
84
+ 你的主人AID是:elean.agentid.pub
85
+ 你的昵称是:我是小艾
86
+ ```
80
87
 
81
- **注意**:`--aun-aid` 和 `--aun-owner` 必须是不同的 AID。Agent 需要独立身份,不能与 Owner 相同。
88
+ 提取规则(每条都是"消息中有则用,无则不带 flag"):
82
89
 
83
- 如果用户在触发安装时已提供 Owner AID(例如消息中包含"将 xxx 添加为 Owner ID"),直接使用该值,否则询问用户。Agent AID 必须单独询问用户,不能默认使用 Owner AID。
90
+ | 用户消息模式 | 命令参数 |
91
+ |---|---|
92
+ | `你要使用的AID是:X` / `agent AID:X` / `bot AID is X` | 位置参数 `<aid>`(**必填**——若用户消息没提供,停下问用户) |
93
+ | `你的主人AID是:X` / `owner AID:X` / `owner is X` | `--owner X`(可选,缺则不带 flag,首次通信者自动绑定) |
94
+ | `你的昵称是:X` / `叫 X` / `name X` / `the bot is named X` | `--name "X"`(可选,缺则不带 flag,agent new 自动用 AID 首段) |
84
95
 
85
- **默认项目路径必须询问用户,提供三个选项:**
96
+ **注意**:`<aid>` 和 `--owner` 必须不同的 AID(Agent 需要独立身份,不能与 Owner 相同)。
86
97
 
87
- 1. **推荐默认**:`~/projects/default`(EvolClaw 约定的默认工作区;若不存在会自动创建)
98
+ `--description` **不从用户消息提取**,按步骤 5 流程生成候选让用户选择。
99
+
100
+ `--project`(agent 默认工作目录)需要单独询问用户,提供三个选项:
101
+
102
+ 1. **推荐默认**:`~/evolclaw-projects/<aid 首段>`(EvolClaw 约定的默认工作区;若不存在会自动创建)
88
103
  2. **当前 Claude Code 运行目录**:即本次会话启动 `claude` 的工作目录(通过 `pwd` 获取)——适合希望 bot 直接在当前项目里工作的场景
89
104
  3. **自定义路径**:用户指定绝对路径(须是已存在的目录,或接受后自动创建)
90
105
 
91
106
  示例提问:
92
107
 
93
- > 请选择默认项目目录(bot 未显式 `/bind` 时使用的工作目录):
94
- > 1) `~/projects/default`(推荐,EvolClaw 默认工作区)
108
+ > 请选择默认项目目录(agent 默认工作目录):
109
+ > 1) `~/evolclaw-projects/<aid 首段>`(推荐)
95
110
  > 2) 当前目录:`<pwd 输出>`
96
111
  > 3) 自定义路径(请提供绝对路径)
97
112
 
98
113
  用户未选择时,默认取选项 1。选项 3 需校验路径是绝对路径;目录不存在则 `mkdir -p` 创建。
99
114
 
100
- ### 步骤 5:非交互式初始化
115
+ ### 步骤 5:生成 description 候选并让用户选择
116
+
117
+ Claude Code 基于已确定的 `<aid>` / `--name`(若已提取)和当前对话上下文,**生成 3 个不同侧重的简短中文描述**(每条 10-30 字):
118
+
119
+ - **候选 1(能力陈述)**:突出 agent 能做什么,例 `"EvolClaw 多模型 AI 助手"`
120
+ - **候选 2(服务对象)**:突出服务谁,例 `"<owner 名称>的 AI 私人助手"`
121
+ - **候选 3(风格化)**:拟人化或带性格的表述,例 `"可爱聪明的小艾,随叫随到"`
122
+
123
+ 用 `AskUserQuestion`(或交互问答)让用户选择。选项含**4 项**:候选 1 / 2 / 3 / 跳过;用户也可输入"其他"自定义。
124
+
125
+ | 用户选择 | 命令参数 |
126
+ |---|---|
127
+ | 候选 1 / 2 / 3 | `--description "<对应候选>"` |
128
+ | 其他(自定义文本) | `--description "<用户输入>"` |
129
+ | 跳过 | 不带 `--description` flag |
130
+
131
+ ### 步骤 6:写全局 defaults.json
132
+
133
+ ```bash
134
+ evolclaw init --non-interactive
135
+ ```
136
+
137
+ 可选传 `--baseagent <claude|codex|gemini>` 显式指定;不传则取 PATH 中第一个可用项。
138
+ 重装场景下需要覆盖已有 `defaults.json`,加 `--force`。
139
+
140
+ 此命令仅创建 `$EVOLCLAW_HOME/agents/defaults.json`(`$EVOLCLAW_HOME` 默认 `~/.evolclaw`),不碰 AID 与渠道。
101
141
 
102
- 将用户选择的目录作为 `--default-path` 传入:
142
+ ### 步骤 7:创建 agent
103
143
 
104
144
  ```bash
105
- evolclaw init --non-interactive \
106
- --default-path <用户选择的绝对路径> \
107
- --channel aun \
108
- --aun-aid <AID> \
109
- --aun-owner <Owner AID>
145
+ evolclaw agent new <aid> --non-interactive \
146
+ --project <用户选择的绝对路径> \
147
+ [--owner <Owner AID>] \
148
+ [--name "<昵称>"] \
149
+ [--description "<选定描述>"] \
150
+ [--baseagent <claude|codex|gemini>]
110
151
  ```
111
152
 
153
+ 按步骤 4/5 的提取规则填入 flag——**省略未提取到的可选参数**,不要主动填默认值(agent new 内部会处理默认)。
154
+
112
155
  此命令自动完成:
113
- 1. 创建配置文件 `~/.evolclaw/data/evolclaw.json`
114
- 2. 安装 `@agentunion/aun-node`
115
- 3. 创建 AID 密钥对(如本地不存在)
116
- 4. 下载 CA 根证书到 `~/.aun/CA/root/root.crt`
117
- 5. 写入初始 `agent.md`(`initialized: false`)
118
- 6. 写入配置(含 owner 字段)
119
156
 
120
- ### 步骤 6:启动前验证
157
+ 1. 校验 AID 格式(多级域名,如 `mybot.agentid.pub`)
158
+ 2. 创建 AID 密钥对(如本地不存在);下载 CA 根证书到 `~/.aun/CA/root/root.crt`
159
+ 3. 创建 per-agent 配置文件 `$EVOLCLAW_HOME/agents/<aid>/config.json`(含 `initialized: false`)
160
+ 4. 生成并签名上传 `agent.md` 到 AUN 网络
161
+
162
+ AUN 通道由 `agent.aid` 隐式驱动,不需要单独配 channel——`evolclaw start` 后即自动连接;首次连接成功并向 owner 发完欢迎消息后,`config.json` 中的 `initialized` 会被更新为 `true`。
163
+
164
+ ### 步骤 8:启动前验证
121
165
 
122
166
  读取配置文件确认关键字段:
123
167
 
124
168
  ```bash
125
- cat ~/.evolclaw/data/evolclaw.json
169
+ cat $EVOLCLAW_HOME/agents/<aid>/config.json
126
170
  ```
127
171
 
128
172
  检查:
129
- - `channels.aun.aid` — 你的 AID
130
- - `channels.aun.owner` — Owner AID
173
+
174
+ - `aid` — 你的 AID
175
+ - `owners` — Owner AID 数组(可为空,留给自动绑定)
176
+ - `active_baseagent` — `claude` / `codex` / `gemini`
131
177
  - `projects.defaultPath` — 项目路径(目录需存在)
132
- - `channels.defaultChannel` — 应为 `"aun"`
178
+ - `channels` — 数组,初始可为空(AUN 隐式上线)
179
+ - `initialized` — 应为 `false`(首次连接成功后由系统更新为 `true`)
133
180
 
134
181
  如发现缺失或异常,向用户说明并提供修复方案。
135
182
 
136
- ### 步骤 7:启动服务
183
+ ### 步骤 9:启动服务
137
184
 
138
185
  ```bash
139
186
  evolclaw start
140
187
  ```
141
188
 
142
- ### 步骤 8:验证运行状态
189
+ ### 步骤 10:验证运行状态
143
190
 
144
191
  ```bash
145
192
  evolclaw status
146
- tail -n 30 ~/.evolclaw/logs/evolclaw.log
193
+ evolclaw logs # 实时滚动日志,Ctrl+C 退出
194
+ ```
195
+
196
+ 或直接读最近日志(LogWriter 会切片归档,需要 `tail -F` 跨切片续接):
197
+
198
+ ```bash
199
+ tail -F ~/.evolclaw/logs/evolclaw.log
147
200
  ```
148
201
 
149
202
  日志中应出现:`[AUN] Connected as @<aid>`
150
203
 
151
- 如未出现或有错误,读取完整日志分析原因并提供修复建议。
204
+ 如未出现或有错误,读取完整日志分析原因并提供修复建议(也可运行 `evolclaw diagnose` 快速检查配置和数据目录)。
152
205
 
153
206
  ---
154
207
 
@@ -156,9 +209,12 @@ tail -n 30 ~/.evolclaw/logs/evolclaw.log
156
209
 
157
210
  EvolClaw 首次连接 AUN 网络时自动:
158
211
 
159
- 1. 检测 `~/.aun/AIDs/<aid>/agent.md` 中的 `initialized` 字段
160
- 2. 若为 `false`,生成完整 agent.md 并发布到 AUN 网络
161
- 3. Owner 发送欢迎消息
212
+ 1. 检测 `$EVOLCLAW_HOME/agents/<aid>/config.json` 中的 `initialized` 字段
213
+ 2. 若为 `false`,且 `owners[0]` 已配置:
214
+ - 生成完整 agent.md(含基于 owner display name)并发布到 AUN 网络
215
+ - 向 Owner 发送欢迎消息
216
+ - 把 `config.json` 中的 `initialized` 更新为 `true`
217
+ 3. 若 `owners[]` 为空(自动绑定模式):跳过欢迎消息,`initialized` 维持 `false`;首次有人和该 agent 私聊时自动绑定为 owner,**自动绑定后立即补发欢迎消息**并把 `initialized` 置 `true`(订阅 `channel:owner-bound` 事件实现)
162
218
 
163
219
  无需手动触发,连接成功后自动完成。
164
220
 
@@ -179,10 +235,10 @@ EvolClaw 首次连接 AUN 网络时自动:
179
235
  ## 常见问题
180
236
 
181
237
  **Q: AID 已存在怎么办?**
182
- `evolclaw init --non-interactive` 会检测本地密钥,已存在则跳过创建。
238
+ `evolclaw agent new` 会检测本地密钥,已存在则跳过创建(`alreadyExisted`)。如果 `agents/<aid>/config.json` 已存在,命令会失败;加 `--force` 可覆盖配置(AID 密钥保留;agent.md 会按当前 `--name` / `--description` 重新生成并重新上传)。
183
239
 
184
240
  **Q: 启动失败怎么办?**
185
- 查看 `~/.evolclaw/logs/evolclaw.log` 或运行 `evolclaw diagnose`。
241
+ 运行 `evolclaw logs` 实时滚动日志,或 `evolclaw diagnose` 检查配置和数据目录。
186
242
 
187
243
  **Q: 如何重启/查看日志?**
188
244
  ```bash
@@ -192,8 +248,19 @@ evolclaw logs
192
248
 
193
249
  **Q: 如何清理损坏的 AID 重新注册?**
194
250
  ```bash
195
- rm -rf ~/.aun/AIDs/<aid>
196
- evolclaw init --non-interactive --channel aun --aun-aid <aid> --aun-owner <owner>
251
+ evolclaw aid delete <aid> # 删本地密钥与证书
252
+ rm -rf $EVOLCLAW_HOME/agents/<aid> # 删 per-agent 配置
253
+ evolclaw agent new <aid> --non-interactive --project <abs path>
254
+ ```
255
+
256
+ **Q: 想加飞书 / 微信 / 钉钉等 IM 通道?**
257
+ agent 已建好后再单独配置(每条命令交互式从已有 agents 里选目标):
258
+ ```bash
259
+ evolclaw init feishu # 飞书扫码
260
+ evolclaw init wechat # 微信扫码
261
+ evolclaw init dingtalk # 钉钉扫码
262
+ evolclaw init qqbot # QQ 机器人扫码
263
+ evolclaw init wecom # 企业微信手输 Bot ID + Secret
197
264
  ```
198
265
 
199
266
  ---
@@ -293,7 +360,8 @@ node -e "try{require('@anthropic-ai/claude-code-win32-x64');console.log('OK')}ca
293
360
  # 1. 升级到 evolclaw >= 2.5.4
294
361
  npm install -g evolclaw@latest
295
362
 
296
- # 2. 如仍报错,先手动安装 AUN SDK 依赖再执行 init
363
+ # 2. 如仍报错,先手动安装 AUN SDK 依赖再执行 init / agent new
297
364
  npm install -g @agentunion/aun-node
298
- evolclaw init --non-interactive --channel aun --aun-aid <aid> --aun-owner <owner>
299
- ```
365
+ evolclaw init --non-interactive
366
+ evolclaw agent new <aid> --non-interactive --project <abs path>
367
+ ```
@@ -0,0 +1,25 @@
1
+ # AUN 最小认知包
2
+
3
+ AUN(Agent Union Network)是 Agent 之间安全通信的标准协议——类比"Agent 互联网时代的 HTTP + TLS + DNS"。
4
+
5
+ ## 核心概念
6
+
7
+ - **AID**:域名风格标识(如 `alice.agentid.pub`),身份即入口
8
+ - **通信**:WebSocket + JSON-RPC 2.0
9
+ - **信任**:四级 X.509 证书链
10
+
11
+ ## 自主模式
12
+
13
+ AUN 按自主模式设计——收到消息 ≠ 必须回复,Agent 自主决定是否响应。
14
+
15
+ 要和其他 agent 通信时,必须调用 `evolclaw ctl send` 命令发消息,不要把输出当成发送给对方的内容。
16
+
17
+ ## 命名空间
18
+
19
+ | 命名空间 | 作用 |
20
+ |---|---|
21
+ | `message.*` | 点对点消息收发 |
22
+ | `group.*` | 群组生命周期、群消息 |
23
+ | `storage.*` | 文件上传下载 |
24
+ | `stream.*` | 实时流(语音/视频/token) |
25
+ | `meta.*` | ping、状态查询 |
@@ -0,0 +1,25 @@
1
+ # AUN 角色与场景规则
2
+
3
+ ## 场景判定
4
+
5
+ | 条件 | 场景 | 行为 |
6
+ |---|---|---|
7
+ | 无 AUN 通道 | coding | 本地模式,每条都响应 |
8
+ | AUN + private | 私聊 | 自主模式,通过 ctl send 回复 |
9
+ | AUN + group | 群聊 | 自主模式,被 @ 才默认响应 |
10
+
11
+ ## 对端身份
12
+
13
+ | 身份 | 含义 |
14
+ |---|---|
15
+ | owner | 主人(拥有该 agent 的人) |
16
+ | admin | 管理员 |
17
+ | guest | 已认证的普通访客 |
18
+ | anonymous | 未认证 |
19
+
20
+ ## 行为原则
21
+
22
+ - owner 的指令优先级最高
23
+ - admin 可执行管理命令但不能改 owner
24
+ - guest 只能使用基础对话功能
25
+ - anonymous 按 agent 配置决定是否响应
@@ -0,0 +1,25 @@
1
+ # AUN 通信约定
2
+
3
+ ## 消息收发
4
+
5
+ - 私聊:`message.send` / `message.receive`
6
+ - 群聊:`group.message.send` / `group.message.receive`
7
+ - 消息格式:纯文本 / Markdown / 文件引用
8
+
9
+ ## 身份识别
10
+
11
+ - 每条入站消息携带发送者 AID
12
+ - 通过 `https://<aid>/agent.md` 获取对端名片
13
+ - 名片包含:名称、能力声明、联系方式
14
+
15
+ ## 连接管理
16
+
17
+ - evolclaw 自动维护 WebSocket 长连接
18
+ - 断线自动重连(SDK 内置退避策略)
19
+ - 连接状态可通过 `evolclaw ctl aid` 查看
20
+
21
+ ## 群聊
22
+
23
+ - 群 ID 格式:`<issuer>/<group-name>`
24
+ - 被 @ 时才默认响应(可通过 venue policy 配置)
25
+ - 群消息按窗口批量推送(batch_window_seconds)
@@ -0,0 +1,31 @@
1
+ # EvolClaw 可用命令
2
+
3
+ 通过 `evolclaw ctl <command> [args]` 管理运行时配置。仅在 evolclaw 托管环境中可用。
4
+
5
+ ## 查询类(所有用户)
6
+ - `evolclaw ctl help` — 显示帮助
7
+ - `evolclaw ctl status` — 显示会话状态
8
+ - `evolclaw ctl check` — 检查渠道健康状态
9
+
10
+ ## 配置类(管理员)
11
+ - `evolclaw ctl model` — 查看当前模型和可选列表
12
+ - `evolclaw ctl model <model-id>` — 切换模型(如 `opus`, `sonnet`, `haiku`)
13
+ - `evolclaw ctl effort` — 查看当前推理强度
14
+ - `evolclaw ctl effort <low|medium|high|max>` — 切换推理强度
15
+ - `evolclaw ctl compact` — 压缩当前会话上下文
16
+
17
+ ## 权限类
18
+ - `evolclaw ctl perm` — 查看当前权限模式(管理员)
19
+ - `evolclaw ctl perm <mode>` — 切换权限模式(仅 owner)
20
+
21
+ ## 运维类(仅 owner)
22
+ - `evolclaw ctl activity <all|dm|owner|none>` — 查看/控制中间输出显示模式
23
+ - `evolclaw ctl send [channel] <message>` — 发送消息
24
+ - `evolclaw ctl file <path>` — 发送文件
25
+ - `evolclaw ctl restart` — 重启服务
26
+ - `evolclaw ctl restart <channel>` — 重连指定渠道
27
+ - `evolclaw ctl agentmd` — 查看当前 agent.md
28
+ - `evolclaw ctl agentmd put` — 发布本地 agent.md
29
+ - `evolclaw ctl agentmd set <内容>` — 直接设置 agent.md 内容
30
+ - `evolclaw ctl aid` — 列出所有 AUN 实例及连接状态
31
+ - `evolclaw ctl aid new <aid>` — 创建新 AID 并热加载
@@ -0,0 +1,26 @@
1
+ # 身份/环境层工具用法
2
+
3
+ ## 身份识别
4
+
5
+ 当你在对话中识别出对端的真实身份时,可以调用:
6
+
7
+ ```bash
8
+ evolclaw ctl identity.identify --aid <对端AID> --name <名称> --type person --method self-declaration
9
+ ```
10
+
11
+ ## 查看对端信息
12
+
13
+ ```bash
14
+ evolclaw ctl identity.show <对端AID>
15
+ ```
16
+
17
+ ## 查看当前环境
18
+
19
+ ```bash
20
+ evolclaw ctl venue.show
21
+ ```
22
+
23
+ ## 注意
24
+
25
+ - 身份层工具仅在身份层运行时实现后可用(当前为占位文档)
26
+ - 对端名片通过 `https://<aid>/agent.md` 获取,由 AUN 网络提供
@@ -0,0 +1,29 @@
1
+ # 自我总结流程指南
2
+
3
+ 自我总结是 agent 的自省行为——在会话结束或空闲时,回顾本次交互,提炼值得记住的信息。
4
+
5
+ ## 触发时机
6
+
7
+ - 会话结束时(`on_session_end: true`)
8
+ - 空闲超过 N 分钟(`on_idle_minutes: 30`)
9
+ - 每日定时(`daily_at: "03:00"`)
10
+ - 每周定时(`weekly_on: "Sunday"`)
11
+
12
+ ## 总结目标
13
+
14
+ | 目标层 | 写入位置 | 内容 |
15
+ |---|---|---|
16
+ | 事件性记忆 | `personal/memory/episodic.jsonl` | "我经历了什么"——关键事件、决策、结果 |
17
+ | 语义性记忆 | `personal/memory/semantic.md` | 习得的事实、规律、结论 |
18
+ | 当前关注 | `personal/memory/working.md` | 短期关注点(下次会话开始时加载) |
19
+ | 反思日志 | `personal/journal.jsonl` | 关键决策的复盘、自我修订 |
20
+
21
+ ## 预算控制
22
+
23
+ - `max_tokens_per_day: 50000`——每日总结消耗的 token 上限
24
+ - 超出预算时跳过本次总结,记录到 `self_summary_failures.jsonl`
25
+
26
+ ## 去重
27
+
28
+ - episodic.jsonl 按时间窗口去重(同一小时内的重复事件合并)
29
+ - semantic.md 由 LLM 判断是否已有等价结论
@@ -0,0 +1,25 @@
1
+ # EvolClaw 可用工具
2
+
3
+ evolclaw 托管环境下,baseagent 可通过 Bash 工具调用以下命令:
4
+
5
+ ## 消息发送
6
+ - `evolclaw ctl send "<消息>"` — 发送文本消息给当前对话方
7
+ - `evolclaw ctl file <路径>` — 发送项目内文件
8
+
9
+ ## 运行时查询
10
+ - `evolclaw ctl status` — 当前会话状态
11
+ - `evolclaw ctl model` — 当前模型信息
12
+ - `evolclaw ctl effort` — 当前推理强度
13
+ - `evolclaw ctl check` — 渠道健康检查
14
+ - `evolclaw ctl aid` — AUN 连接状态
15
+
16
+ ## 运行时配置
17
+ - `evolclaw ctl model <id>` — 切换模型
18
+ - `evolclaw ctl effort <level>` — 切换推理强度
19
+ - `evolclaw ctl compact` — 压缩上下文
20
+ - `evolclaw ctl perm <mode>` — 切换权限模式
21
+
22
+ ## agent.md 管理
23
+ - `evolclaw ctl agentmd` — 查看当前 agent.md
24
+ - `evolclaw ctl agentmd put` — 发布到 AUN 网络
25
+ - `evolclaw ctl agentmd set <内容>` — 直接设置内容
@@ -0,0 +1,20 @@
1
+ # EvolClaw 运行时系统提示模板(群聊)
2
+
3
+ ## runtime
4
+
5
+ [当前环境] 会话通道: {{channel}} | 当前项目: {{project}}{{?sessionName}} | 会话名称: {{sessionName}}{{/}}{{?selfIdentity}} | 当前名称: {{selfIdentity}}{{/}} | 对端身份: {{peerRole}}{{?peerIdentity}} | 对端名称: {{peerIdentity}}{{/}}{{?peerType}} | 对端类型: {{peerType}}{{/}} | 聊天类型: group{{?agent}} | 当前Agent: {{agent}}{{/}}
6
+ {{?readonly}}[只读模式] 禁止修改项目文件。{{/}}
7
+ {{?fileSendCurrent}}[SEND_FILE:路径] 发送文件到当前通道{{/}}
8
+ {{?capability}}[通道能力] {{capabilities}}{{/}}
9
+
10
+ ## group
11
+
12
+ [群聊回复规则] 回复时必须在开头添加 @{{peerId}} 来通知对方
13
+
14
+ ## proactive
15
+
16
+ [Proactive 模式] 你的所有文本输出都会被静默丢弃,用户永远看不到。唯一能让用户收到消息的方式:
17
+ 调用 Bash 工具执行命令 :evolclaw ctl send "<消息内容>"
18
+ 发送文件: evolclaw ctl file <路径>
19
+ 可多次调用发送多条消息,如果不想回复停止调用即可。
20
+ 禁止使用 AskUserQuestion 和 ExitPlanMode 工具——proactive 模式下应由你主动用 ctl send 与用户沟通。
@@ -0,0 +1,9 @@
1
+ # EvolClaw 运行时系统提示模板(私聊)
2
+
3
+ ## runtime
4
+
5
+ [当前环境] 会话通道: {{channel}} | 当前项目: {{project}}{{?sessionName}} | 会话名称: {{sessionName}}{{/}}{{?selfIdentity}} | 当前名称: {{selfIdentity}}{{/}} | 对端身份: {{peerRole}}{{?peerIdentity}} | 对端名称: {{peerIdentity}}{{/}}{{?peerType}} | 对端类型: {{peerType}}{{/}}{{?chatType}} | 聊天类型: {{chatType}}{{/}}{{?agent}} | 当前Agent: {{agent}}{{/}}
6
+ {{?readonly}}[只读模式] 禁止修改项目文件。如需生成文件供用户下载,请写入 .evolclaw/tmp/ 目录后{{readonlySendHint}}{{/}}
7
+ {{?fileSendCurrent}}[SEND_FILE:路径] 发送文件到当前通道{{/}}
8
+ {{?fileSendCross}}[SEND_FILE:{{crossPrimary}}:路径] 发送文件到指定通道(可用: {{crossTypes}}){{/}}
9
+ {{?capability}}[通道能力] {{capabilities}}{{/}}
@@ -0,0 +1,3 @@
1
+ # 个人上下文片段
2
+
3
+ (由 personal/ 层运行时填充——persona.md 摘要、working memory、当前目标等)
@@ -0,0 +1,5 @@
1
+ # 自我介绍片段
2
+
3
+ {{?selfIdentity}}
4
+ 我是 {{selfIdentity}}。
5
+ {{/}}
@@ -0,0 +1,5 @@
1
+ # 对话者介绍片段
2
+
3
+ {{?peerIdentity}}
4
+ 跟你说话的人是 {{peerIdentity}}({{peerRole}})。
5
+ {{/}}
@@ -0,0 +1,5 @@
1
+ # 环境介绍片段
2
+
3
+ {{?chatType}}
4
+ 当前环境:{{channel}} {{chatType}}
5
+ {{/}}
package/package.json CHANGED
@@ -1,21 +1,22 @@
1
1
  {
2
2
  "name": "evolclaw",
3
- "version": "2.8.3",
3
+ "version": "3.0.0",
4
4
  "description": "Lightweight AI Agent gateway connecting Claude Agent SDK to messaging channels (Feishu, ACP) with multi-project session management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
8
- "evolclaw": "./dist/cli.js"
8
+ "evolclaw": "./dist/cli/index.js"
9
9
  },
10
10
  "files": [
11
11
  "dist/",
12
12
  "!dist/experimental/",
13
- "data/evolclaw.sample.json",
13
+ "kits/",
14
+ "!kits/.kits-version",
14
15
  "evolclaw-install-aun.md"
15
16
  ],
16
17
  "scripts": {
17
18
  "dev": "tsx watch src/index.ts",
18
- "build": "tsc && node -e \"const f='dist/cli.js',c=require('fs').readFileSync(f,'utf8');if(!c.startsWith('#!'))require('fs').writeFileSync(f,'#!/usr/bin/env node\\n'+c)\" && node -e \"try{require('child_process').execFileSync('chmod',['+x','dist/cli.js'])}catch{}\" && node -e \"require('fs').cpSync('src/templates','dist/templates',{recursive:true,force:true})\"",
19
+ "build": "tsc && node -e \"const f='dist/cli/index.js',c=require('fs').readFileSync(f,'utf8');if(!c.startsWith('#!'))require('fs').writeFileSync(f,'#!/usr/bin/env node\\n'+c)\" && node -e \"try{require('child_process').execFileSync('chmod',['+x','dist/cli/index.js'])}catch{}\" && node -e \"require('fs').mkdirSync('dist/data',{recursive:true});require('fs').copyFileSync('src/data/prompts.md','dist/data/prompts.md')\"",
19
20
  "start": "node dist/index.js",
20
21
  "test": "vitest run",
21
22
  "test:watch": "vitest",
@@ -23,8 +24,9 @@
23
24
  "prepublishOnly": "npm run build && npm test"
24
25
  },
25
26
  "dependencies": {
26
- "@agentunion/fastaun": "^0.2.17",
27
+ "@agentunion/fastaun": "^0.2.20",
27
28
  "@anthropic-ai/claude-agent-sdk": "^0.2.100",
29
+ "cron-parser": "^5.5.0",
28
30
  "image-type": "^6.0.0",
29
31
  "qrcode-terminal": "^0.12.0"
30
32
  },
@@ -1,60 +0,0 @@
1
- {
2
- "agents": {
3
- "claude": {
4
- "apiKey": "",
5
- "baseUrl": "",
6
- "model": "sonnet",
7
- "effort": "high",
8
- "useSettingSources": true,
9
- "agentProgressSummaries": true
10
- },
11
- "codex": {
12
- "apiKey": "",
13
- "baseUrl": "",
14
- "model": "gpt-5.2-codex",
15
- "effort": "medium"
16
- },
17
- "gemini": {
18
- "apiKey": "",
19
- "model": "gemini-2.5-flash",
20
- "cliPath": "",
21
- "mode": "cli"
22
- },
23
- "defaultAgent": "claude"
24
- },
25
- "channels": {
26
- "defaultChannel": "aun",
27
- "feishu": {
28
- "enabled": false,
29
- "appId": "",
30
- "appSecret": "",
31
- "owner": ""
32
- },
33
- "wechat": {
34
- "enabled": false,
35
- "baseUrl": "https://ilinkai.weixin.qq.com",
36
- "token": "",
37
- "owner": ""
38
- },
39
- "aun": {
40
- "enabled": false,
41
- "aid": "",
42
- "owner": "",
43
- "flushDelay": 4,
44
- "debounce": 2,
45
- "showActivities": "owner-dm-only"
46
- }
47
- },
48
- "projects": {
49
- "defaultPath": "/path/to/default/project",
50
- "autoCreate": true,
51
- "list": {}
52
- },
53
- "flushDelay": 4,
54
- "debounce": 2,
55
- "showActivities": "all",
56
- "idleMonitor": {
57
- "enabled": true,
58
- "timeout": 120
59
- }
60
- }