evolcore 0.0.25 → 0.0.27

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 (304) hide show
  1. package/CHANGELOG.md +632 -565
  2. package/LICENSE +21 -21
  3. package/README.md +455 -455
  4. package/bin/codex-managed-acl.ps1 +203 -160
  5. package/bin/codex-managed-hook.mjs +208 -208
  6. package/bin/ec-safe-output.js +327 -327
  7. package/bin/ec.js +40 -29
  8. package/bin/install-codex-managed-hooks.mjs +582 -555
  9. package/dist/agents/baseagent-availability.js +68 -0
  10. package/dist/agents/baseagent.js +96 -46
  11. package/dist/agents/claude-runner.js +172 -33
  12. package/dist/agents/codex/app-server-client.js +76 -31
  13. package/dist/agents/codex/catalog.js +1 -1
  14. package/dist/agents/codex/diagnostics.js +34 -1
  15. package/dist/agents/codex-runner.js +434 -446
  16. package/dist/agents/ecagent-runner.js +174 -34
  17. package/dist/agents/gemini-runner.js +8 -7
  18. package/dist/agents/runner-types.js +75 -19
  19. package/dist/aun/aid/agentmd.js +151 -36
  20. package/dist/aun/aid/client.js +1 -1
  21. package/dist/aun/aid/control-aid.js +180 -1
  22. package/dist/aun/aid/identity.js +4 -4
  23. package/dist/aun/aid/index.js +1 -1
  24. package/dist/aun/aid/store.js +17 -13
  25. package/dist/aun/group/history.js +303 -0
  26. package/dist/aun/group/identity.js +43 -0
  27. package/dist/aun/group/index.js +5 -0
  28. package/dist/aun/{msg/group.js → group/operations.js} +162 -39
  29. package/dist/aun/{menu-client.js → menu/client.js} +85 -6
  30. package/dist/aun/menu/index.js +2 -0
  31. package/dist/aun/menu/transport.js +49 -0
  32. package/dist/aun/msg/index.js +2 -1
  33. package/dist/aun/msg/managed-operation.js +85 -19
  34. package/dist/aun/msg/mention-schema.js +51 -0
  35. package/dist/aun/msg/p2p.js +19 -9
  36. package/dist/aun/msg/upload.js +43 -80
  37. package/dist/aun/outbox.js +29 -7
  38. package/dist/aun/rpc/client.js +1 -0
  39. package/dist/aun/storage/client.js +39 -50
  40. package/dist/channels/aun.js +842 -318
  41. package/dist/channels/daemon.js +10 -6
  42. package/dist/cli/agent-command.js +212 -89
  43. package/dist/cli/agent-create.js +626 -11
  44. package/dist/cli/agent.js +125 -13
  45. package/dist/cli/aun-commands.js +487 -337
  46. package/dist/cli/bench.js +20 -20
  47. package/dist/cli/config.js +55 -33
  48. package/dist/cli/contact.js +72 -15
  49. package/dist/cli/ctl-command.js +24 -24
  50. package/dist/cli/daemon-commands.js +140 -63
  51. package/dist/cli/diag.js +31 -0
  52. package/dist/cli/fs-command.js +70 -70
  53. package/dist/cli/handoff-command.js +46 -14
  54. package/dist/cli/index.js +91 -79
  55. package/dist/cli/init.js +34 -1
  56. package/dist/cli/link-rules.js +21 -21
  57. package/dist/cli/managed-command-guard.js +5 -1
  58. package/dist/cli/menu-client.js +51 -32
  59. package/dist/cli/model.js +3 -3
  60. package/dist/cli/net-check.js +22 -22
  61. package/dist/cli/queue-command.js +31 -31
  62. package/dist/cli/response.js +32 -32
  63. package/dist/cli/restart-monitor.js +103 -42
  64. package/dist/cli/stats.js +51 -51
  65. package/dist/cli/task-command.js +59 -0
  66. package/dist/cli/task-context.js +97 -49
  67. package/dist/cli/trigger-command.js +74 -64
  68. package/dist/config/builtin-roles.js +11 -0
  69. package/dist/config/config-field-policy.js +11 -0
  70. package/dist/config/config-manager.js +32 -4
  71. package/dist/config/config-operation-service.js +160 -0
  72. package/dist/config/contact-book-store.js +1 -1
  73. package/dist/config/contact-book.js +1 -1
  74. package/dist/config/contact-operation-service.js +97 -8
  75. package/dist/config/peer-role-resolver.js +1 -1
  76. package/dist/config/resolved-config-op.js +30 -7
  77. package/dist/config-store.js +1 -1
  78. package/dist/core/agent-application-service.js +7 -1
  79. package/dist/core/audit/event-key.js +17 -2
  80. package/dist/core/audit/log-integrity.js +34 -8
  81. package/dist/core/auth/agent-delegation.js +48 -14
  82. package/dist/core/auth/auth-gateway.js +2 -0
  83. package/dist/core/auth/authorization-audit.js +53 -49
  84. package/dist/core/auth/operation-authorizer.js +90 -7
  85. package/dist/core/auth/operation-catalog.js +145 -4
  86. package/dist/core/auth/remote-access-store.js +155 -10
  87. package/dist/core/bootstrap-messages.js +66 -7
  88. package/dist/core/bootstrap-service.js +111 -20
  89. package/dist/core/command/agent-control.js +88 -7
  90. package/dist/core/command/agent-storage-menu.js +443 -0
  91. package/dist/core/command/cli-intent-parser.js +19 -0
  92. package/dist/core/command/command-handler.js +159 -65
  93. package/dist/core/command/data-root-resolver.js +273 -0
  94. package/dist/core/command/diag-service.js +118 -0
  95. package/dist/core/command/group-menu.js +7 -2
  96. package/dist/core/command/menu-catalog.js +46 -7
  97. package/dist/core/command/menu-handler.js +392 -100
  98. package/dist/core/command/menu-protocol.js +45 -6
  99. package/dist/core/command/menu-token-store.js +41 -8
  100. package/dist/core/command/role-menu.js +2 -2
  101. package/dist/core/command/slash-gate.js +34 -4
  102. package/dist/core/command/slash-handler.js +123 -43
  103. package/dist/core/event-catalog.js +4 -0
  104. package/dist/core/evolagent-registry.js +28 -2
  105. package/dist/core/group/invite-service.js +924 -0
  106. package/dist/core/handoff/runtime.js +205 -27
  107. package/dist/core/handoff/store.js +193 -4
  108. package/dist/core/interaction-router.js +22 -8
  109. package/dist/core/message/im-renderer.js +146 -34
  110. package/dist/core/message/message-bridge.js +163 -20
  111. package/dist/core/message/message-log.js +5 -3
  112. package/dist/core/message/message-queue.js +99 -41
  113. package/dist/core/message/message-utils.js +1 -0
  114. package/dist/core/message/response-engine.js +755 -144
  115. package/dist/core/model/catalog-service.js +79 -49
  116. package/dist/core/model/context-window-suffix.js +33 -0
  117. package/dist/core/model/model-catalog.js +1 -1
  118. package/dist/core/model/model-permission.js +12 -3
  119. package/dist/core/permission/approval-gateway.js +36 -3
  120. package/dist/core/permission/ec-command-parser.js +112 -41
  121. package/dist/core/permission/protected-paths.js +134 -16
  122. package/dist/core/permission/sandbox-runtime.js +108 -17
  123. package/dist/core/permission/tool-error-code.js +15 -0
  124. package/dist/core/permission/tool-policy.js +9 -8
  125. package/dist/core/relation/peer-identity.js +57 -6
  126. package/dist/core/relation/shared-data.js +106 -0
  127. package/dist/core/role/runtime-policy.js +64 -0
  128. package/dist/core/runtime-lock.js +10 -26
  129. package/dist/core/session/runner-task-history.js +170 -0
  130. package/dist/core/session/session-manager.js +34 -6
  131. package/dist/core/session/session-mapper.js +41 -0
  132. package/dist/core/session/session-turn-coordinator.js +37 -7
  133. package/dist/core/session/session-turns.js +48 -7
  134. package/dist/core/task/task-recovery-service.js +176 -0
  135. package/dist/core/task/task-resume-operation.js +32 -0
  136. package/dist/eck/group-rules-sync.js +5 -3
  137. package/dist/eck/kit-renderer.js +1 -0
  138. package/dist/index.js +588 -217
  139. package/dist/ipc.js +193 -15
  140. package/dist/paths.js +17 -4
  141. package/dist/product.js +2 -0
  142. package/dist/response-system/engines/v1/proactive-flow.js +59 -2
  143. package/dist/stats/billing.js +41 -15
  144. package/dist/stats/db.js +159 -159
  145. package/dist/stats/eck-vars.js +9 -9
  146. package/dist/stats/price-resolver.js +28 -10
  147. package/dist/stats/query.js +139 -139
  148. package/dist/stats/role-budget.js +6 -6
  149. package/dist/stats/writer.js +51 -51
  150. package/dist/trigger/event-source.js +19 -0
  151. package/dist/trigger/feedback.js +233 -40
  152. package/dist/trigger/parser.js +55 -5
  153. package/dist/trigger/patch.js +9 -0
  154. package/dist/trigger/scheduler.js +30 -4
  155. package/dist/trigger/validation.js +20 -3
  156. package/dist/utils/cross-platform.js +30 -1
  157. package/dist/utils/ecweb-utils.js +1 -0
  158. package/dist/utils/error-dict.json +160 -160
  159. package/dist/utils/error-utils.js +61 -2
  160. package/dist/utils/evolcore-version.js +129 -0
  161. package/dist/utils/logger.js +26 -14
  162. package/dist/utils/macos-autostart.js +22 -22
  163. package/dist/utils/model-prices.jsonl +23 -23
  164. package/dist/utils/npm-ops.js +176 -35
  165. package/dist/utils/tool-summary.js +59 -3
  166. package/dist/utils/welcome.js +196 -23
  167. package/ecagent/LICENSE +21 -21
  168. package/ecagent/NOTICE +11 -11
  169. package/ecagent/README.md +61 -61
  170. package/ecagent/dist/harness/agent-harness.js +3 -0
  171. package/ecagent/dist/harness/compaction/branch-summarization.js +30 -30
  172. package/ecagent/dist/harness/compaction/compaction.js +83 -83
  173. package/ecagent/dist/harness/messages.js +7 -7
  174. package/ecagent/dist/harness/session/jsonl-storage.js +21 -2
  175. package/kits/docs/GUIDE.md +20 -20
  176. package/kits/docs/INDEX.md +60 -66
  177. package/kits/docs/aun/CHEATSHEET.md +19 -19
  178. package/kits/docs/aun/SYNC_PROTOCOL.md +15 -15
  179. package/kits/docs/channels/aun.md +69 -56
  180. package/kits/docs/channels/feishu.md +56 -56
  181. package/kits/docs/context-assembly.md +379 -367
  182. package/kits/docs/eck_templates/GUIDE.template.md +22 -22
  183. package/kits/docs/eck_templates/INDEX.template.md +28 -28
  184. package/kits/docs/eck_templates/path-registry.template.md +33 -33
  185. package/kits/docs/eck_templates/runtime.template.md +19 -19
  186. package/kits/docs/evolcore/INDEX.md +76 -71
  187. package/kits/docs/evolcore/agent-create.md +202 -165
  188. package/kits/docs/evolcore/agent.md +99 -67
  189. package/kits/docs/evolcore/aid.md +68 -60
  190. package/kits/docs/evolcore/codex-windows-sandbox.md +146 -146
  191. package/kits/docs/evolcore/config.md +241 -195
  192. package/kits/docs/evolcore/contact.md +75 -68
  193. package/kits/docs/evolcore/ctl.md +46 -46
  194. package/kits/docs/evolcore/event.md +216 -216
  195. package/kits/docs/evolcore/fs-architecture.md +1215 -1215
  196. package/kits/docs/evolcore/fs.md +110 -110
  197. package/kits/docs/evolcore/group-collaboration.md +244 -244
  198. package/kits/docs/evolcore/group-fs.md +17 -17
  199. package/kits/docs/evolcore/group-rules.md +251 -251
  200. package/kits/docs/evolcore/group.md +267 -152
  201. package/kits/docs/evolcore/menu-client.md +58 -34
  202. package/kits/docs/evolcore/model.md +50 -50
  203. package/kits/docs/evolcore/msg.md +169 -165
  204. package/kits/docs/evolcore/response.md +75 -75
  205. package/kits/docs/evolcore/rpc.md +37 -37
  206. package/kits/docs/evolcore/self-summary.md +29 -29
  207. package/kits/docs/evolcore/stats.md +83 -83
  208. package/kits/docs/evolcore/storage.md +53 -50
  209. package/kits/docs/evolcore/task.md +14 -0
  210. package/kits/docs/evolcore/trigger.md +623 -575
  211. package/kits/docs/identity/AID_PROFILE_SPEC.md +26 -26
  212. package/kits/docs/identity/PATH_OPS.md +16 -16
  213. package/kits/docs/identity/ROLE_DETAIL.md +25 -25
  214. package/kits/docs/identity/identity-tools.md +26 -26
  215. package/kits/docs/path-registry.md +62 -62
  216. package/kits/docs/prompt-loading-architecture.md +269 -269
  217. package/kits/docs/venues/aun-group.md +45 -45
  218. package/kits/docs/venues/aun-private.md +10 -10
  219. package/kits/docs/venues/client-desktop.md +10 -10
  220. package/kits/docs/venues/client-mobile.md +10 -10
  221. package/kits/docs/venues/feishu-group.md +13 -13
  222. package/kits/docs/venues/feishu-private.md +9 -9
  223. package/kits/docs/venues/group.md +42 -25
  224. package/kits/docs/venues/private.md +10 -10
  225. package/kits/eck_manifest.auxiliary.json +43 -43
  226. package/kits/eck_manifest.json +217 -190
  227. package/kits/eck_message_manifest.json +74 -74
  228. package/kits/migrations/README-role-config-v4.md +32 -32
  229. package/kits/migrations/migrate-contact-book-v2.mjs +748 -748
  230. package/kits/migrations/migrate-role-config-v4.mjs +614 -614
  231. package/kits/migrations/migrate-role-config-v5.mjs +365 -365
  232. package/kits/migrations/rename-config-file.mjs +99 -99
  233. package/kits/rules/01-overview.md +166 -162
  234. package/kits/rules/02-navigation.md +96 -96
  235. package/kits/rules/03-identity.md +36 -36
  236. package/kits/rules/04-relation.md +76 -75
  237. package/kits/rules/05-venue.md +60 -60
  238. package/kits/rules/06-channel.md +65 -63
  239. package/kits/schemas/_meta.json +53 -53
  240. package/kits/schemas/agent-config.schema.1.json +177 -177
  241. package/kits/schemas/agent-config.schema.10.json +395 -395
  242. package/kits/schemas/agent-config.schema.11.json +421 -421
  243. package/kits/schemas/agent-config.schema.12.json +451 -427
  244. package/kits/schemas/agent-config.schema.2.json +239 -239
  245. package/kits/schemas/agent-config.schema.3.json +119 -119
  246. package/kits/schemas/agent-config.schema.4.json +208 -208
  247. package/kits/schemas/agent-config.schema.5.json +326 -326
  248. package/kits/schemas/agent-config.schema.6.json +322 -322
  249. package/kits/schemas/agent-config.schema.7.json +303 -303
  250. package/kits/schemas/agent-config.schema.8.json +304 -304
  251. package/kits/schemas/agent-config.schema.9.json +364 -364
  252. package/kits/schemas/contact-book.schema.1.json +36 -36
  253. package/kits/schemas/contact-book.schema.2.json +43 -43
  254. package/kits/schemas/contact-book.schema.3.json +67 -67
  255. package/kits/schemas/daemon.schema.1.json +91 -91
  256. package/kits/schemas/daemon.schema.2.json +101 -101
  257. package/kits/schemas/daemon.schema.3.json +123 -123
  258. package/kits/schemas/daemon.schema.4.json +136 -136
  259. package/kits/schemas/daemon.schema.5.json +135 -135
  260. package/kits/schemas/daemon.schema.6.json +131 -131
  261. package/kits/schemas/defaults.schema.1.json +81 -81
  262. package/kits/schemas/defaults.schema.2.json +85 -85
  263. package/kits/schemas/defaults.schema.3.json +73 -73
  264. package/kits/schemas/defaults.schema.4.json +107 -107
  265. package/kits/schemas/defaults.schema.5.json +119 -119
  266. package/kits/schemas/menu-exec-schema-commands.md +208 -208
  267. package/kits/schemas/migrations/README.md +30 -30
  268. package/kits/schemas/relation-config.schema.1.json +158 -158
  269. package/kits/schemas/relation-config.schema.2.json +73 -73
  270. package/kits/schemas/relation-config.schema.3.json +50 -50
  271. package/kits/schemas/relation-config.schema.4.json +47 -47
  272. package/kits/schemas/relation-config.schema.5.json +47 -47
  273. package/kits/schemas/relation-config.schema.6.json +46 -46
  274. package/kits/schemas/relation-config.schema.7.json +59 -59
  275. package/kits/schemas/relation-config.schema.8.json +103 -103
  276. package/kits/schemas/role-config.schema.1.json +215 -201
  277. package/kits/schemas/role-registry.schema.1.json +35 -35
  278. package/kits/schemas/single-session.schema.1.json +31 -31
  279. package/kits/schemas/single-session.schema.2.json +57 -57
  280. package/kits/schemas/single-session.schema.3.json +32 -32
  281. package/kits/templates/bootstrap-welcome.md +17 -17
  282. package/kits/templates/message-fragments/handoff-context-to-target.md +9 -9
  283. package/kits/templates/message-fragments/handoff-request-to-target.md +19 -19
  284. package/kits/templates/message-fragments/handoff-response-to-origin.md +9 -9
  285. package/kits/templates/message-fragments/inject-default.md +2 -2
  286. package/kits/templates/message-fragments/item.md +2 -2
  287. package/kits/templates/roles/admin.json +92 -92
  288. package/kits/templates/roles/member.json +101 -96
  289. package/kits/templates/roles/owner.json +9 -9
  290. package/kits/templates/roles/visitor.json +90 -85
  291. package/kits/templates/system-fragments/baseagent.md +14 -14
  292. package/kits/templates/system-fragments/bootstrap.md +53 -34
  293. package/kits/templates/system-fragments/channel.md +28 -64
  294. package/kits/templates/system-fragments/commands.md +36 -28
  295. package/kits/templates/system-fragments/group-unread-history.md +7 -0
  296. package/kits/templates/system-fragments/identity.md +13 -13
  297. package/kits/templates/system-fragments/relation.md +19 -19
  298. package/kits/templates/system-fragments/reply.md +56 -0
  299. package/kits/templates/system-fragments/session.md +59 -59
  300. package/kits/templates/system-fragments/venue.md +31 -31
  301. package/package.json +104 -98
  302. package/dist/aun/group-identity.js +0 -9
  303. /package/dist/aun/{group-fs-download.js → group/fs-download.js} +0 -0
  304. /package/dist/aun/{msg/group-index.js → group/index-rpc.js} +0 -0
@@ -1,152 +1,267 @@
1
- # ec group — 群聊消息与群管理
2
-
3
- 群聊场景下收发消息、管理群与成员。触发词:群发/建群/邀请/踢人/退群/群成员/群聊协作/分工/任务分派。
4
-
5
- 以自己的 AID 为发送者(`<from>`),群 AID 为 `<group-id>`。
6
-
7
- 本命令覆盖常用消息、基础生命周期、成员操作、角色/群主管理、封禁、暂停/恢复和群规则。生产环境 agent 优先使用本页列出的 `ec group` 命令。
8
-
9
- 需要发起一次完整的 Agent 群聊协作时,按场景流程阅读 `group-collaboration.md`;本文只作为命令参数参考。
10
-
11
- ## 消息
12
-
13
- ```bash
14
- # 文本(含空格/换行/特殊字符时用引号包起来;纯短词可不包,但多空格会被压成一个)
15
- ec group send <from> <group-id> "<text>" --return none|required [--encrypt]
16
-
17
- # 文件(--as image|video|voice|file)
18
- ec group send <from> <group-id> --file <path> --return none|required [--as <type>] [--text "<说明>"]
19
-
20
- # 自定义 payload
21
- ec group send <from> <group-id> --payload '<json>' --return none|required
22
-
23
- # 拉取群消息(建议带 --app 独立消费通道,避免影响 daemon)
24
- ec group pull <from> <group-id> [--after-seq <N>] [--limit <N>] [--app <name>]
25
-
26
- # 确认已读(推进消费游标;同样建议带 --app)
27
- ec group ack <from> <group-id> <seq> [--app <name>]
28
- ```
29
-
30
- @ 成员:
31
- - `--mention <aid>` — @ 某个成员,可多次,或单个槽位用逗号分隔多个(`--mention a,b,c`),每个 aid 都过格式校验
32
- - `--mention-all` — @ 所有人
33
-
34
- ```bash
35
- ec group send <from> <group-id> "@bob 看下 PR" --mention bob.agentid.pub
36
- ec group send <from> <group-id> "通知" --mention alice.agentid.pub,bob.agentid.pub
37
- ```
38
-
39
- > 正文恰好以 `--` 开头:带空格的(如 `"--file 是正文"`)会被正确识别为正文;
40
- > 若正文**精确等于**某个 flag 名(如要发送文本 `--encrypt`),用 `--` 分隔:
41
- > `ec group send <from> <group-id> -- --encrypt`
42
-
43
- 发送选项还包括:
44
-
45
- - `--no-encrypt`:强制明文,优先于 `--encrypt`
46
- - `--thread <id>`:指定话题 ID
47
- - `--return <none|required>`:跨会话发送必填;Trigger 任务只能使用 `none`
48
- - `--content-type <mime>`:覆盖文件 MIME
49
- - `--transcript <text>`:语音转写,仅 `--as voice`
50
-
51
- ## 群管理
52
-
53
- ```bash
54
- # 创建群
55
- ec group create <from> "<name>" [--visibility public|private] [--description "<desc>"] [--join-mode <mode>] [--group-id <aid>]
56
-
57
- # 列出我加入的群
58
- ec group list <from> [--size <N>]
59
-
60
- # 查看群详情
61
- ec group info <from> <group-id>
62
-
63
- # 修改群信息
64
- ec group update <from> <group-id> [--name "<name>"] [--description "<desc>"]
65
-
66
- # 解散群
67
- ec group dissolve <from> <group-id>
68
-
69
- # 暂停/恢复群
70
- ec group suspend <from> <group-id>
71
- ec group resume <from> <group-id>
72
-
73
- # 查看群规则
74
- ec group rules <from> <group-id>
75
-
76
- # 更新入群规则
77
- ec group rules <from> <group-id> --mode open|approval|invite_only|closed [--question "<question>"] [--max-pending <N>]
78
-
79
- # 查看已发布群规则文件 /rules.md
80
- ec group rules <from> <group-id> get
81
-
82
- # 上传并发布群规则文件
83
- ec group rules <from> <group-id> set <file>
84
-
85
- # 发布当前群空间 /rules.md
86
- ec group rules <from> <group-id> publish
87
- ```
88
-
89
- 新建群尚未显式设置入群规则时,`ec group rules` 显示空对象 `{}`。群规则文件通过 `get/set/publish` 管理,底层 `ec fs cp` 只改文件,不会自动发布为有效规则。
90
-
91
- 群规则文件的发布机制、权限、状态、通知与上下文注入说明见 `group-rules.md`。
92
-
93
- 搜索公开群、公开信息查询、群统计等高级能力当前未封装为 `ec group` 子命令。
94
-
95
- ## 成员
96
-
97
- ```bash
98
- # 申请加入
99
- ec group join <from> <group-id> [--message "<msg>"] [--answer "<answer>"]
100
-
101
- # 退出群
102
- ec group leave <from> <group-id>
103
-
104
- # 邀请成员(可多个)
105
- ec group invite <from> <group-id> <member-aid> [<member-aid>...]
106
-
107
- # 踢出成员
108
- ec group kick <from> <group-id> <member-aid>
109
-
110
- # 列出群成员
111
- ec group members <from> <group-id> [--page <N>] [--size <N>]
112
-
113
- # 查看在线成员
114
- ec group online <from> <group-id>
115
-
116
- # 设置成员角色
117
- ec group role <from> <group-id> <member-aid> <admin|member>
118
-
119
- # 转让群主(当前网关可能需要新群主完成 rekey)
120
- ec group owner <from> <group-id> <new-owner-aid>
121
-
122
- # 列出封禁成员
123
- ec group ban <from> <group-id>
124
-
125
- # 封禁成员(--duration 单位为秒;不传则按服务端默认)
126
- ec group ban <from> <group-id> <member-aid> [--duration <seconds>]
127
-
128
- # 解封成员
129
- ec group unban <from> <group-id> <member-aid>
130
- ```
131
-
132
- ## 入群与公告
133
-
134
- 当前 CLI 封装了 `join` 和 `rules`。审批申请、邀请码、公告等高级管理能力第一批暂不提供单独命令。
135
-
136
- ## 通用约定
137
-
138
- - `<from>` 必须是合法 AID(入口统一校验,格式错直接报错)
139
- - `--format json` — 对支持结构化结果的子命令输出 JSON
140
- - `--app <name>` — 仅 `pull` / `ack` 指定独立消费 slot
141
- - `--aun-path <path>` — 指定 AUN keystore 根
142
- - `--encrypt` — 仅 send,启用端到端加密(群聊默认明文)
143
- - `create` 会通过 SDK 自动生成并导入群 `group_aid` 身份。
144
- - `owner` 会走 SDK 的群主转让授权签名流程,需要本机有该群 `group_aid` 的私钥;若网关返回 `pending_rekey`,CLI 会在本机存在新群主私钥时自动调用完成步骤,否则输出“已发起,等待新群主完成 rekey”。
145
-
146
- ## Group ID
147
-
148
- AUN Group 协议当前规范使用 `g-{slug}.issuer-domain` canonical 群 ID;也可输入本域简写 `g-{slug}` 或兼容写法 `g-{slug}@issuer-domain`。历史 EvolCore 会话里可能还有 `group.agentid.pub/11718` 这类旧格式,看到时按已有群 ID 原样使用。
149
-
150
- ## 自主回复策略
151
-
152
- 群聊中默认被 @ 才响应,可通过 venue policy 配置其他触发条件。
1
+ # ec group — 群聊消息与群管理
2
+
3
+ 群聊场景下收发消息、管理群与成员。触发词:群发/建群/邀请/踢人/退群/群成员/群聊协作/分工/任务分派。
4
+
5
+ 以自己的 AID 为发送者(`<from>`),群 AID 为 `<group-id>`。
6
+
7
+ 本命令覆盖常用消息、基础生命周期、成员操作、角色/群主管理、封禁、屏蔽、成员状态、暂停/恢复和群规则。生产环境 agent 优先使用本页列出的 `ec group` 命令。
8
+
9
+ 需要发起一次完整的 Agent 群聊协作时,按场景流程阅读 `group-collaboration.md`;本文只作为命令参数参考。
10
+
11
+ ## 消息
12
+
13
+ ```bash
14
+ # 文本(含空格/换行/特殊字符时用引号包起来;纯短词可不包,但多空格会被压成一个)
15
+ ec group send <from> <group-id> "<text>" --return none|required [--encrypt]
16
+
17
+ # 文件(--as image|video|voice|file)
18
+ ec group send <from> <group-id> --file <path> --return none|required [--as <type>] [--text "<说明>"]
19
+
20
+ # 自定义 payload
21
+ ec group send <from> <group-id> --payload '<json>' --return none|required
22
+
23
+ # 查询本地群历史(不调用 Gateway,不推进 group pull/ack 游标)
24
+ ec group history <from> <group-id> --unread [--limit <N>] [--thread <id>] [--format json]
25
+ ec group history <from> <group-id> --all [--limit <N>] [--thread <id>] [--format json]
26
+
27
+ # 拉取群消息(建议带 --app 独立消费通道,避免影响 daemon)
28
+ ec group pull <from> <group-id> [--after-seq <N>] [--limit <N>] [--app <name>]
29
+
30
+ # 确认已读(推进消费游标;同样建议带 --app)
31
+ ec group ack <from> <group-id> <seq> [--app <name>]
32
+ ```
33
+
34
+ @ 成员:
35
+ - `--mention <aid>` — @ 某个成员,可多次,或单个槽位用逗号分隔多个(`--mention a,b,c`),每个 aid 都过格式校验
36
+ - `--mention-all` — @ 所有人
37
+
38
+ ```bash
39
+ ec group send <from> <group-id> "@bob 看下 PR" --mention bob.agentid.pub
40
+ ec group send <from> <group-id> "通知" --mention alice.agentid.pub,bob.agentid.pub
41
+ ```
42
+
43
+ > 正文恰好以 `--` 开头:带空格的(如 `"--file 是正文"`)会被正确识别为正文;
44
+ > 若正文**精确等于**某个 flag 名(如要发送文本 `--encrypt`),用 `--` 分隔:
45
+ > `ec group send <from> <group-id> -- --encrypt`
46
+
47
+ 发送选项还包括:
48
+
49
+ - `--no-encrypt`:强制明文,优先于 `--encrypt`
50
+ - `--thread <id>`:指定话题 ID
51
+ - `--return <none|required>`:跨会话发送必填;Trigger 任务只能使用 `none`
52
+ - `--content-type <mime>`:覆盖文件 MIME
53
+ - `--transcript <text>`:语音转写,仅 `--as voice`
54
+
55
+ ## 本地群历史
56
+
57
+ `history` 读取本机的 `messages.jsonl`,不连接 Gateway,不改变 `group pull/ack` 游标。
58
+ 这里的自动已读只记录本地历史查询进度;`group pull` / `group ack` 仍是独立的 Gateway 消费游标命令,二者互不替代。
59
+ 查询必须显式指定 `--unread` 或 `--all`;首次没有日志时返回空结果,不创建模型会话。
60
+
61
+ | 选项 | 含义 |
62
+ |---|---|
63
+ | `--unread` | 最早的未读群背景,按本地记录顺序输出,并自动记录本页已读 |
64
+ | `--all` | 最近的群会话历史,包含没有未读标记的旧日志及出站消息 |
65
+ | `--limit N` | 默认 50,范围 1–500;单页另有 24 KiB 消息预算 |
66
+ | `--thread main\|all\|id` | 无话题、整个群或指定话题;当前群任务默认继承当前话题,其他调用默认 all |
67
+ | `--direction in\|out\|all` | 方向过滤,默认 all |
68
+ | `--before/--after time` | 接收时间开区间,支持 epoch 毫秒和 ISO 时间 |
69
+ | `--format text\|json` | 默认 text |
70
+ | `--message msg-id` | 配合 --all 查询指定消息正文,不改变已读状态 |
71
+ | `--offset bytes` | 配合 --message 从返回的 next_offset 继续读取长正文 |
72
+
73
+ `--unread` 会把本次返回的消息自动记为已读,再次执行即可取得下一页,无需额外确认。
74
+ 查询期间新到的消息、未返回条目及其他筛选范围的消息不会被清除。`--all` 始终只浏览、不改变已读状态。
75
+ `has_more` 表示本次还有匹配内容,普通 `--all` 可用时间/话题进一步缩小范围。
76
+
77
+ 长正文以 `content_truncated` 标识;预览返回后该消息也记为已读,需要完整内容时使用
78
+ `--all --message <msg-id> --offset <next_offset>` 继续读取。偏移为 UTF-8 字节边界,每段最多 8 KiB。
79
+ 附件返回已有类型、名称或转写摘要,不自动下载。已读不会删除历史,随时可用 `--all` 回看。
80
+
81
+ 受管执行通过 `group.op` 和 delegation 授权;member 限当前 Agent 的当前 AUN 群,
82
+ owner/admin 按 Agent 管理范围查询其他群;visitor 默认拒绝。读取时的已读记录由服务内部维护。
83
+ 不支持 `--app`、`--aun-path` 或自选历史文件路径。
84
+
85
+ 旧记录仍可用 `--all` 查询;精确未读统计从新增的本地过滤标记开始,不根据缺少 sessionId 猜测。
86
+ 已读状态独立存储,重启、renew、切模型不会清空;历史只包含本机收到并记录的会话内容。
87
+
88
+ ## 群管理
89
+
90
+ ```bash
91
+ # 创建群
92
+ ec group create <from> "<name>" [--visibility public|private] [--description "<desc>"] [--join-mode <mode>] [--group-id <aid>]
93
+
94
+ # 不指定 --group-id 时,默认名称为 g- 加五位随机数字(10000–99999)
95
+ # 例如返回 g-12345.agentid.cn;issuer 以群服务实际返回为准
96
+ ec group create <from> "研讨群" --visibility private
97
+
98
+ # 自定义群 AID;g- 若出现,是名称的一部分,会完整保留
99
+ ec group create <from> "本体研讨" --group-id ontology.agentid.cn
100
+
101
+ # 列出我加入的群
102
+ ec group list <from> [--size <N>]
103
+
104
+ # 查看群详情
105
+ ec group info <from> <group-id>
106
+
107
+ # 修改群信息
108
+ ec group update <from> <group-id> [--name "<name>"] [--description "<desc>"]
109
+
110
+ # 解散群
111
+ ec group dissolve <from> <group-id>
112
+
113
+ # 暂停/恢复群
114
+ ec group suspend <from> <group-id>
115
+ ec group resume <from> <group-id>
116
+
117
+ # 查看群规则
118
+ ec group rules <from> <group-id>
119
+
120
+ # 更新入群规则
121
+ ec group rules <from> <group-id> --mode open|approval|invite_only|closed [--question "<question>"] [--max-pending <N>]
122
+
123
+ # 查看已发布群规则文件 /rules.md
124
+ ec group rules <from> <group-id> get
125
+
126
+ # 上传并发布群规则文件
127
+ ec group rules <from> <group-id> set <file>
128
+
129
+ # 发布当前群空间 /rules.md
130
+ ec group rules <from> <group-id> publish
131
+ ```
132
+
133
+ 新建群尚未显式设置入群规则时,`ec group rules` 显示空对象 `{}`。群规则文件通过 `get/set/publish` 管理,底层 `ec fs cp` 只改文件,不会自动发布为有效规则。
134
+
135
+ 群规则文件的发布机制、权限、状态、通知与上下文注入说明见 `group-rules.md`。
136
+
137
+ 搜索公开群、公开信息查询、群统计等高级能力当前未封装为 `ec group` 子命令。
138
+
139
+ ## 收到群邀请:Owner 审核
140
+
141
+ Agent 的 AUN 主渠道收到定向邀请后,由 daemon 查询待处理邀请并向当前 `owners[]` 的每位 Owner
142
+ 发送加密私聊卡片。卡片提供“接受入群”和“拒绝邀请”;收到邀请不会自动加入,也不启动模型。
143
+ 接受/拒绝操作先记录决定,再查询当前邀请并调用 SDK,最终结果另行通知 Owner。
144
+
145
+ Owner 可以在与该 Agent 的 AUN 私聊中直接输入以下命令(不经过模型):
146
+
147
+ ```text
148
+ /invites
149
+ /invites 2
150
+ /invites <审核编号> open
151
+ /invites <审核编号> accept
152
+ /invites <审核编号> reject
153
+ ```
154
+
155
+ 列表每页 10 条,显示审核编号和状态。`open` 重新发送当前 Owner 的卡片;审核编号由列表返回,
156
+ 不同于 Gateway 的 invite ID。卡片默认有效 24 小时;忽略、关闭或过期均不拒绝邀请。
157
+ 多 Owner 同时操作时,第一个成功落盘的决定锁定本轮;其余点击不能提交相反决定。
158
+
159
+ 邀请、决定与投递记录持久化。重启后旧卡失效,对账仍为待审核时发新卡;没有 Owner 或发送失败时
160
+ 保留邀请。请求超时后保留原决定并核实结果,期间不开放相反操作。未加入事实无法确认时显示“正在核实结果”,
161
+ 不能仅因邀请从列表消失就断言已拒绝。
162
+
163
+ 也可使用邀请 RPC 命令:
164
+
165
+ ```bash
166
+ ec group invites <from> [--page N] [--size N]
167
+ ec group accept-invite <from> <invite-id>
168
+ ec group reject-invite <from> <invite-id>
169
+ ec group revoke-invite <from> <invite-id>
170
+ ```
171
+
172
+ 托管会话的 `accept-invite/reject-invite` 仅允许当前 Agent Owner 在 AUN 私聊中执行,并进入同一持久化审核服务;
173
+ admin、普通成员或仅具 daemon-owner 身份者不能代替该 Agent Owner。宿主直接运行的独立 CLI 保留原 RPC 路径,
174
+ 外部客户端造成的状态变化通过后续对账识别。`revoke-invite` 是原邀请者撤回自己发出的邀请。
175
+
176
+ 接受后沿用 SDK 的成员/密钥同步,以及现有群消息、群规则和 mentionMode 策略;不自动发送入群欢迎消息。
177
+
178
+ ## 成员
179
+
180
+ ```bash
181
+ # 申请加入
182
+ ec group join <from> <group-id> [--message "<msg>"] [--answer "<answer>"]
183
+
184
+ # 退出群
185
+ ec group leave <from> <group-id>
186
+
187
+ # 邀请成员(可多个)
188
+ ec group invite <from> <group-id> <member-aid> [<member-aid>...]
189
+
190
+ # 踢出成员
191
+ ec group kick <from> <group-id> <member-aid>
192
+
193
+ # 列出群成员
194
+ ec group members <from> <group-id> [--page <N>] [--size <N>]
195
+
196
+ # 查看在线成员
197
+ ec group online <from> <group-id>
198
+
199
+ # 设置成员角色
200
+ ec group role <from> <group-id> <member-aid> <admin|member>
201
+
202
+ # 转让群主(当前网关可能需要新群主完成 rekey)
203
+ ec group owner <from> <group-id> <new-owner-aid>
204
+
205
+ # 列出封禁成员
206
+ ec group ban <from> <group-id>
207
+
208
+ # 封禁成员(--duration 单位为秒;不传则按服务端默认)
209
+ ec group ban <from> <group-id> <member-aid> [--duration <seconds>]
210
+
211
+ # 解封成员
212
+ ec group unban <from> <group-id> <member-aid>
213
+
214
+ # 屏蔽成员接收群消息;member-aid 填 from 即屏蔽自己
215
+ ec group block <from> <group-id> <member-aid> [--reason "<reason>"]
216
+
217
+ # 取消屏蔽
218
+ ec group unblock <from> <group-id> <member-aid>
219
+
220
+ # 查看屏蔽列表(群管理员)
221
+ ec group blocklist <from> <group-id>
222
+
223
+ # 显式上报自己的群内状态;两项均必填,值为字符串
224
+ ec group report-status <from> <group-id> --online-status online --work-status busy
225
+
226
+ # 查看群成员上报状态(包括未上报的成员)
227
+ ec group member-statuses <from> <group-id>
228
+ ```
229
+
230
+ 屏蔽与封禁互相独立:`block` 停止接收实时/离线 Push、Pull 和 E2EE wrap,但不影响发送;
231
+ `ban` 禁止发送但不影响接收。群成员可屏蔽/取消屏蔽自己;群 owner/admin 可在其权限范围内操作其他成员并查看屏蔽列表。
232
+
233
+ `report-status` 只更新 `<from>` 自己在指定群内的状态,不接受其他成员参数;不会启动定时心跳。
234
+ `member-statuses` 返回群成员主动上报的状态,`online` 仍查询 Gateway 在线连接索引。
235
+ 服务端维护的更新时间、最后发言时间与 payload 类型保留在 `--format json` 结果中。
236
+
237
+ 托管任务还须通过 Core 关系权限:member 只能在当前 AUN 群中操作当前 Agent 的自身屏蔽/状态及查询成员状态;
238
+ 操作他人和查询屏蔽列表需要 Core owner/admin,随后仍由 Gateway 校验该 Agent 的群内权限。
239
+ visitor 不开放这五个命令;托管调用不允许替换 `<from>`、`--app` 或 `--aun-path`。
240
+
241
+ ## 入群与公告
242
+
243
+ 当前 CLI 封装了 `join` 和 `rules`。审批申请、邀请码、公告等高级管理能力第一批暂不提供单独命令。
244
+
245
+ ## 通用约定
246
+
247
+ - `<from>` 必须是合法 AID(入口统一校验,格式错直接报错)
248
+ - `--format json` — 对支持结构化结果的子命令输出 JSON
249
+ - `--app <name>` — 仅 `pull` / `ack` 指定独立消费 slot
250
+ - `--aun-path <path>` — 指定 AUN keystore 根
251
+ - `--encrypt` — 仅 send,启用端到端加密(群聊默认明文)
252
+ - `create` 会通过 SDK 自动生成并导入群 `group_aid` 身份。
253
+ - 默认群名遇到明确的身份占用错误时最多尝试 5 次;显式指定的名称不会自动更换,超时或身份导入失败也不会换名重建。
254
+ - 创建结果以服务端返回的 `group_aid` 为准;与请求不一致时输出提示,JSON 结果包含 `warning` 和 `requested_group_aid`。
255
+ - `owner` 会走 SDK 的群主转让授权签名流程,需要本机有该群 `group_aid` 的私钥;若网关返回 `pending_rekey`,CLI 会在本机存在新群主私钥时自动调用完成步骤,否则输出“已发起,等待新群主完成 rekey”。
256
+
257
+ ## Group ID
258
+
259
+ AUN 群 AID 使用 `{base}.{issuer}`,例如 `ontology.agentid.cn`、`g-12345.agentid.cn`、`11824.agentid.pub`。base 为 4–64 位,首字符为小写字母或数字,后续可包含小写字母、数字、下划线和连字符。`g-` 是 EvolCore 默认建群的命名约定,不是判断一个 AID 是否属于群的协议标志。
260
+
261
+ 群命令支持完整 AID 和本域 base 简写;简写按发送方 AID 的 issuer 补全。完整 AID 中的 issuer 和 base 会保留(统一小写),不会删除 `g-`。`group.{issuer}/{base}` 已停止支持,不会自动转换;`base@issuer` 也不支持,两者均明确报错。请直接使用群服务返回的 `{base}.{issuer}`。群文件路径应提供完整群 AID,如 `ontology.agentid.cn:/rules.md`。
262
+
263
+ 普通主体与群的 AID 格式可以相同。格式校验只检查参数是否合法,当前群限制、身份和权限校验仍由托管会话与服务端执行。
264
+
265
+ ## 自主回复策略
266
+
267
+ 群聊中默认被 @ 才响应,可通过 venue policy 配置其他触发条件。
@@ -1,34 +1,58 @@
1
- # ec menu-client — 远程 Daemon Menu 客户端
2
-
3
- 向另一台主机的 EvolCore Control AID 发送一个标准 `menu.*` 请求,并在同一 AUN 短连接中完成发送、拉取、匹配和 ACK。适合非托管主机上的 eclink/运维工具调用;托管 Agent 会话不应使用它绕过当前 daemon。
4
-
5
- ## 用法
6
-
7
- ```bash
8
- ec menu-client request <from-aid> <daemon-aid> \
9
- --request-file "$TMPDIR/menu-request.json" \
10
- --timeout 15s \
11
- --encrypt \
12
- --format json
13
- ```
14
-
15
- - `--request-file` 与 `--request-json` 二选一,内容是现有 Menu request;缺少 `id` 时自动生成 UUID。
16
- - 默认使用 E2EE,并发送 `client_name=ec-menu-client` 和本机 EvolCore `client_version`。
17
- - 默认 slot 是 `evolcore-menu-client`;`--app <slot>` 可覆盖,但会切换消费游标,调用方须自行串行化。
18
- - 默认授权是远端 `daemon.json.owners` 对发送 AID 的校验。
19
- - `--remote-token <token>` 使用 daemon 签发的远程访问 token,权限与 daemon-owner 一致。CLI 审计日志不会记录 token 明文。
20
- - `--ecweb-token <token>` 是 `--remote-token` 的兼容别名。
21
- - `menu.query` / `menu.options` 等待响应超时时自动重发一次相同 request id;写操作不自动重试。
22
- - 成功时 stdout 是完整 `menu.response` JSON。远端业务错误仍在响应的 `error` 字段中;本地传输/超时/ACK 错误退出码非 0。
23
-
24
- ## 常用请求
25
-
26
- ```json
27
- {"type":"menu.query","id":"status-1","name":"system","args":{"view":"status"}}
28
- {"type":"menu.query","id":"monitor-1","name":"system","args":{"view":"monitor"}}
29
- {"type":"menu.query","id":"logs-1","name":"system","args":{"view":"logs","source":"daemon","limit":200}}
30
- {"type":"menu.options","id":"config-options-1","name":"config","args":{"option":"rawFile"}}
31
- {"type":"menu.query","id":"config-1","name":"config","args":{"view":"rawFile","resource":"daemon"}}
32
- ```
33
-
34
- 先用 `menu.list` 的 `args.view=catalog`、`context.kind=process` 获取目标 daemon 实际支持的能力和 wire 参数,不要在适配器中另建一套协议字段。
1
+ # ec menu-client — 远程 Daemon Menu 客户端
2
+
3
+ 向另一台主机的 EvolCore Control AID 发送标准 `menu.*` 请求。独立终端使用 AUN 短连接完成发送、拉取、匹配和 ACK;EvolCore 托管 Agent 自动通过当前 daemon 的委托入口与现有 AUN 连接完成调用。
4
+
5
+ ## 托管会话边界
6
+
7
+ 托管调用必须使用当前 self AID,并拥有 `ec.menu.request` 的 relation 权限。daemon 校验当前 session、委托和角色,按目标 AID 与 request ID 匹配加密响应;普通角色的聊天权限不自动授予远程 Menu 调用能力。
8
+
9
+ 托管模式不接受 `--app`、`--aun-path`、`--no-encrypt`,也不创建独立连接或清理 daemon 的消息。`--request-file` 由 daemon 校验后读取,须为当前项目或本会话 `$TMPDIR` 内不受保护的普通文件,最大 128 KiB;也可用 `--request-json`。目标是否允许具体操作,仍由远端 Control Menu 的 Token/Owner 鉴权决定。
10
+
11
+ ## 用法
12
+
13
+ ```bash
14
+ ec menu-client request <from-aid> <daemon-aid> \
15
+ --request-file "$TMPDIR/menu-request.json" \
16
+ --timeout 15s \
17
+ --encrypt \
18
+ --format json
19
+ ```
20
+
21
+ - `--request-file` 与 `--request-json` 二选一,内容是现有 Menu request;缺少 `id` 时自动生成 UUID。
22
+ - 默认使用 E2EE,并发送 `client_name=ec-menu-client` 和本机 EvolCore `client_version`。
23
+ - 独立终端默认 slot 是 `evolcore-menu-client`;`--app <slot>` 可覆盖,但会切换消费游标,调用方须自行串行化。托管模式使用 daemon 的现有连接和 ACK 路径。
24
+ - 默认授权是远端 `daemon.json.owners` 对发送 AID 的校验。
25
+ - `--remote-token <token>` 使用 daemon 签发的远程访问 token,权限与 daemon-owner 一致。CLI 审计日志不会记录 token 明文。
26
+ - `system/paircode` 例外:仅接受加密的 daemon-owner 请求,已有 remote token 不能换取新配对码。
27
+ - 配对码有效期为 10 分钟,成功兑换一次即失效;并发兑换最多一次成功。再次获取会生成新码,已签发 token 不受影响。
28
+ - 未消费的码由各入口共享,重复获取不延长有效期。发放来源记录在运行时 `data/instance/control-access-tokens.json` 的 `pairingIssuances`:`host-cli` 为宿主机 CLI,`pair` 为 `/pair`,`menu` 为 AUN Menu,`ecweb-local` 为本地 ECWeb。`pair` / `menu` 同时记录已认证 daemon owner 的 `authorizedBy` AID;同一码经多个入口发放时保留全部不同来源与 owner,而不覆盖旧记录。
29
+ - 发放记录包含 `pairingId`、发放/到期时间、`issuers` 和成功兑换时间 `redeemedAt`,保留 30 天;不保存配对码或其哈希。成功兑换的 token 同时保存 `pairingId` / `pairingIssuers`,后续续期与 daemon 重启不丢失来源。旧 token 缺少来源时不补造历史。
30
+ - `--ecweb-token <token>` 是 `--remote-token` 的兼容别名。
31
+ - Menu 请求和响应使用 `message.send` 顶层 `ttl: 60`,接收响应时应支持 volatile 游标和无持久 `seq`;响应若带 `sender_device_id`,服务端会用 `to_device_id` 定向回原设备。
32
+ - `menu.query` / `menu.options` 等待响应超时时自动重发一次相同 request id;写操作不自动重试。
33
+ - 成功时 stdout 是完整 `menu.response` JSON。远端业务错误仍在响应的 `error` 字段中;本地传输/超时错误退出码非 0。独立终端的 ACK 错误也以非零退出码返回;托管模式由 daemon 的正常消费路径处理 ACK。
34
+
35
+ ## 常用请求
36
+
37
+ ```json
38
+ {"type":"menu.query","id":"status-1","name":"system","args":{"view":"status"}}
39
+ {"type":"menu.query","id":"baseagents-1","name":"baseagents"}
40
+ {"type":"menu.query","id":"subtasks-1","name":"session","args":{"view":"subtasks"}}
41
+ {"type":"menu.query","id":"monitor-1","name":"system","args":{"view":"monitor"}}
42
+ {"type":"menu.query","id":"logs-1","name":"system","args":{"view":"logs","source":"daemon","limit":200}}
43
+ {"type":"menu.action","id":"paircode-1","name":"system","action":"paircode"}
44
+ {"type":"menu.options","id":"config-options-1","name":"config","args":{"option":"rawFile"}}
45
+ {"type":"menu.query","id":"config-1","name":"config","args":{"view":"rawFile","resource":"daemon"}}
46
+ ```
47
+
48
+ 先用 `menu.list` 的 `args.view=catalog`、`context.kind=process` 获取目标 daemon 实际支持的能力和 wire 参数,不要在适配器中另建一套协议字段。
49
+
50
+ `name=baseagents` 查询返回 `{ active, baseagents: [{ id, label, configured, detected, loaded, active, model, effort, version }] }`。
51
+ 控制 AID / EC Web 沿用进程管理鉴权,返回 defaults 配置、主机检测、全局已加载 runner;
52
+ 发往 Agent AID 时沿用 `agent.baseagent.list` 权限,仅返回当前 Agent 的配置及 runner,`detected=null` 表示未探测主机。
53
+ `menu.options name=baseagent` 仍只提供可切换的已加载后端。
54
+
55
+ 子任务示例需发往目标 Agent 的会话;话题可用 `name=topic args={"target":"<threadId>","view":"subtasks"}`。
56
+ 返回 `{ scope: "retained-history", tasks: [...] }`。普通 session/topic 状态另带 `subtasks`、`subtasksScope`;
57
+ `/status` 单列“已记录子任务数”,不把它加到主会话轮数中。历史来自现有 `events*.log`,
58
+ 受 `EVENT_LOG` 开关和日志保留期限制(当前归档保留 48 小时);无记录不能据此推断从未执行过子任务。
@@ -1,50 +1,50 @@
1
- # ec model - 模型管理命令集
2
-
3
- 按作用域查看或设置 agent 使用的模型与推理强度。`ec model` 修改持久化配置,对该作用域内所有会话的下一条消息生效;`ec ctl model` 只操作当前运行会话。
4
-
5
- ## 命令
6
-
7
- ```bash
8
- # 列出可用模型并显示当前生效模型
9
- ec model list [--self <aid>] [--peer <peer>] [--role <role>]
10
-
11
- # 显示生效模型、推理强度和配置来源
12
- ec model current [--self <aid>] [--peer <peer>] [--role <role>]
13
-
14
- # 查看单个模型详情
15
- ec model info <model-id> [--self <aid>]
16
-
17
- # 设置模型,可同时设置推理强度;本机终端写操作需要 --self
18
- ec model use <model-id> --self <aid> [--peer <peer>] [--effort <level>]
19
-
20
- # 设置推理强度:low | medium | high | xhigh | max | auto
21
- ec model effort <level> --self <aid> [--peer <peer>]
22
-
23
- # 清除当前作用域的模型和推理强度,回落到上一级
24
- ec model reset --self <aid> [--peer <peer>]
25
-
26
- # 诊断网关连通性、模型目录和模型可用性
27
- ec model check [--self <aid>]
28
- ```
29
-
30
- ## 作用域
31
-
32
- | 参数 | 作用域 | 配置位置 |
33
- |------|--------|----------|
34
- | 无 | 只读 catalog/defaults | 不允许写入 |
35
- | `--self <aid>` | agent | `agents/<aid>/config.json` |
36
- | `--self <aid> --role <role>` | 角色策略预览 | 只读;写入由角色策略编辑器管理 |
37
- | `--self <aid> --peer <peer>` | 关系 | `agents/<aid>/relations/<peerKey>/config.json` |
38
-
39
- 生效优先级为关系、角色、agent、defaults。`--peer` 可使用 `channelType#channelId`;裸 AID 按 `aun#<aid>` 处理。
40
-
41
- 在 EvolCore 托管会话中,省略 `--self`、`--peer`、`--role` 时,`list/current/use/effort/reset`
42
- 会通过 `ec ctl` 作用于当前会话;显式 selector 仍按上表访问持久化作用域。本机终端不具备该隐式当前会话语义。
43
-
44
- ## 输出与权限
45
-
46
- - 所有子命令支持 `--format json`。
47
- - 从聊天菜单或 agent 工具调用时,命令会在执行前经过 operation 鉴权;关系目标默认限制为当前 agent 和当前关系。
48
- - 本地终端直接运行时不伪造远端角色。显式传入 `--role` 可检查该角色的模型可见性和有效模型。
49
- - `use`、`effort`、`reset` 不直接修改角色策略;传入 role 写作用域会返回 `ROLE_POLICY_MANAGED`。
50
- - `check` 会连接已配置的模型网关并发送最小探测请求;未配置自定义网关时跳过 API 探测。
1
+ # ec model - 模型管理命令集
2
+
3
+ 按作用域查看或设置 agent 使用的模型与推理强度。`ec model` 修改持久化配置,对该作用域内所有会话的下一条消息生效;`ec ctl model` 只操作当前运行会话。
4
+
5
+ ## 命令
6
+
7
+ ```bash
8
+ # 列出可用模型并显示当前生效模型
9
+ ec model list [--self <aid>] [--peer <peer>] [--role <role>]
10
+
11
+ # 显示生效模型、推理强度和配置来源
12
+ ec model current [--self <aid>] [--peer <peer>] [--role <role>]
13
+
14
+ # 查看单个模型详情
15
+ ec model info <model-id> [--self <aid>]
16
+
17
+ # 设置模型,可同时设置推理强度;本机终端写操作需要 --self
18
+ ec model use <model-id> --self <aid> [--peer <peer>] [--effort <level>]
19
+
20
+ # 设置推理强度:low | medium | high | xhigh | max | auto
21
+ ec model effort <level> --self <aid> [--peer <peer>]
22
+
23
+ # 清除当前作用域的模型和推理强度,回落到上一级
24
+ ec model reset --self <aid> [--peer <peer>]
25
+
26
+ # 诊断网关连通性、模型目录和模型可用性
27
+ ec model check [--self <aid>]
28
+ ```
29
+
30
+ ## 作用域
31
+
32
+ | 参数 | 作用域 | 配置位置 |
33
+ |------|--------|----------|
34
+ | 无 | 只读 catalog/defaults | 不允许写入 |
35
+ | `--self <aid>` | agent | `agents/<aid>/config.json` |
36
+ | `--self <aid> --role <role>` | 角色策略预览 | 只读;写入由角色策略编辑器管理 |
37
+ | `--self <aid> --peer <peer>` | 关系 | `agents/<aid>/relations/<peerKey>/config.json` |
38
+
39
+ 生效优先级为关系、角色、agent、defaults。`--peer` 可使用 `channelType#channelId`;裸 AID 按 `aun#<aid>` 处理。
40
+
41
+ 在 EvolCore 托管会话中,省略 `--self`、`--peer`、`--role` 时,`list/current/use/effort/reset`
42
+ 会通过 `ec ctl` 作用于当前会话;显式 selector 仍按上表访问持久化作用域。本机终端不具备该隐式当前会话语义。
43
+
44
+ ## 输出与权限
45
+
46
+ - 所有子命令支持 `--format json`。
47
+ - 从聊天菜单或 agent 工具调用时,命令会在执行前经过 operation 鉴权;关系目标默认限制为当前 agent 和当前关系。
48
+ - 本地终端直接运行时不伪造远端角色。显式传入 `--role` 可检查该角色的模型可见性和有效模型。
49
+ - `use`、`effort`、`reset` 不直接修改角色策略;传入 role 写作用域会返回 `ROLE_POLICY_MANAGED`。
50
+ - `check` 会连接已配置的模型网关并发送最小探测请求;未配置自定义网关时跳过 API 探测。