evolcore 0.0.1 → 0.0.3

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 (379) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/LICENSE +21 -0
  3. package/MIGRATION-0.5.0.md +378 -0
  4. package/README.md +318 -14
  5. package/ROLE_ACCESS_CONTROL.md +174 -0
  6. package/assets/.env.template +4 -0
  7. package/bin/ec-safe-output.js +161 -0
  8. package/bin/ec.js +29 -0
  9. package/dist/agents/baseagent.js +163 -0
  10. package/dist/agents/claude-runner.js +2565 -0
  11. package/dist/agents/codex-app-server-client.js +448 -0
  12. package/dist/agents/codex-runner.js +2682 -0
  13. package/dist/agents/gemini-runner.js +666 -0
  14. package/dist/agents/runner-types.js +75 -0
  15. package/dist/aun/aid/agentmd.js +216 -0
  16. package/dist/aun/aid/client.js +132 -0
  17. package/dist/aun/aid/control-aid.js +91 -0
  18. package/dist/aun/aid/identity.js +518 -0
  19. package/dist/aun/aid/index.js +4 -0
  20. package/dist/aun/aid/store.js +74 -0
  21. package/dist/aun/aid/types.js +1 -0
  22. package/dist/aun/aid/validation.js +21 -0
  23. package/dist/aun/group-identity.js +10 -0
  24. package/dist/aun/msg/group-index.js +6 -0
  25. package/dist/aun/msg/group.js +1231 -0
  26. package/dist/aun/msg/history.js +123 -0
  27. package/dist/aun/msg/index.js +5 -0
  28. package/dist/aun/msg/p2p.js +393 -0
  29. package/dist/aun/msg/payload-type.js +27 -0
  30. package/dist/aun/msg/upload.js +137 -0
  31. package/dist/aun/outbox.js +168 -0
  32. package/dist/aun/rpc/caller.js +42 -0
  33. package/dist/aun/rpc/connection.js +25 -0
  34. package/dist/aun/rpc/index.js +2 -0
  35. package/dist/aun/service-proxy.js +225 -0
  36. package/dist/aun/storage/download.js +29 -0
  37. package/dist/aun/storage/index.js +3 -0
  38. package/dist/aun/storage/manage.js +10 -0
  39. package/dist/aun/storage/upload.js +68 -0
  40. package/dist/channels/aun.js +4164 -0
  41. package/dist/channels/contact-bind-code.js +134 -0
  42. package/dist/channels/daemon.js +422 -0
  43. package/dist/channels/dingtalk.js +1479 -0
  44. package/dist/channels/feishu.js +1865 -0
  45. package/dist/channels/qqbot.js +409 -0
  46. package/dist/channels/wechat.js +817 -0
  47. package/dist/channels/wecom-card.js +101 -0
  48. package/dist/channels/wecom-onboarding.js +82 -0
  49. package/dist/channels/wecom-state.js +191 -0
  50. package/dist/channels/wecom.js +1157 -0
  51. package/dist/cli/agent-command.js +642 -0
  52. package/dist/cli/agent.js +1059 -0
  53. package/dist/cli/aun-commands.js +2003 -0
  54. package/dist/cli/bench.js +1228 -0
  55. package/dist/cli/cli-argv.js +66 -0
  56. package/dist/cli/code-stats.js +329 -0
  57. package/dist/cli/command-log.js +82 -0
  58. package/dist/cli/config-selector.js +69 -0
  59. package/dist/cli/config.js +261 -0
  60. package/dist/cli/contact.js +71 -0
  61. package/dist/cli/ctl-command.js +62 -0
  62. package/dist/cli/daemon-commands.js +2750 -0
  63. package/dist/cli/fs-command.js +1447 -0
  64. package/dist/cli/handoff-command.js +302 -0
  65. package/dist/cli/help.js +35 -0
  66. package/dist/cli/index.js +374 -0
  67. package/dist/cli/init-channel.js +1372 -0
  68. package/dist/cli/init.js +590 -0
  69. package/dist/cli/link-rules.js +240 -0
  70. package/dist/cli/model.js +591 -0
  71. package/dist/cli/net-check.js +723 -0
  72. package/dist/cli/queue-command.js +150 -0
  73. package/dist/cli/raw-key-input.js +25 -0
  74. package/dist/cli/response.js +344 -0
  75. package/dist/cli/restart-monitor.js +480 -0
  76. package/dist/cli/stats.js +609 -0
  77. package/dist/cli/task-context.js +80 -0
  78. package/dist/cli/trigger-command.js +545 -0
  79. package/dist/cli/version.js +93 -0
  80. package/dist/cli/watch-logs.js +33 -0
  81. package/dist/cli/watch-msg.js +673 -0
  82. package/dist/config/boot-log.js +266 -0
  83. package/dist/config/builtin-role-templates.js +42 -0
  84. package/dist/config/builtin-roles.js +91 -0
  85. package/dist/config/config-batch-get.js +11 -0
  86. package/dist/config/config-field-policy.js +261 -0
  87. package/dist/config/config-manager.js +1120 -0
  88. package/dist/config/config-operation-service.js +384 -0
  89. package/dist/config/contact-alias.js +68 -0
  90. package/dist/config/contact-book-store.js +454 -0
  91. package/dist/config/contact-book-v2-startup.js +35 -0
  92. package/dist/config/contact-book.js +224 -0
  93. package/dist/config/contact-operation-service.js +110 -0
  94. package/dist/config/gateway-config.js +858 -0
  95. package/dist/config/lifecycle.js +17 -0
  96. package/dist/config/mention-mode.js +27 -0
  97. package/dist/config/merge.js +161 -0
  98. package/dist/config/owner-policy.js +4 -0
  99. package/dist/config/peer-role-resolver.js +218 -0
  100. package/dist/config/resolved-config-op.js +483 -0
  101. package/dist/config/role-config-v4-startup.js +32 -0
  102. package/dist/config/role-config-v5-startup.js +27 -0
  103. package/dist/config/role-ranks.js +18 -0
  104. package/dist/config/role-schema.js +105 -0
  105. package/dist/config/role-service.js +156 -0
  106. package/dist/config/role-store.js +215 -0
  107. package/dist/config/roles.js +64 -0
  108. package/dist/config/schema-registry.js +154 -0
  109. package/dist/config/snapshot.js +598 -0
  110. package/dist/config-store.js +501 -0
  111. package/dist/core/auth/agent-delegation.js +111 -0
  112. package/dist/core/auth/auth-gateway.js +166 -0
  113. package/dist/core/auth/authenticated-actor.js +6 -0
  114. package/dist/core/auth/authorization-audit.js +119 -0
  115. package/dist/core/auth/operation-authorizer.js +720 -0
  116. package/dist/core/auth/operation-catalog.js +731 -0
  117. package/dist/core/baseagent-loader.js +54 -0
  118. package/dist/core/bootstrap-service.js +175 -0
  119. package/dist/core/capability/capability-manager.js +316 -0
  120. package/dist/core/capability/providers/claude-capability-provider.js +176 -0
  121. package/dist/core/capability/providers/codex-capability-provider.js +148 -0
  122. package/dist/core/capability/providers/gemini-capability-provider.js +10 -0
  123. package/dist/core/capability/types.js +27 -0
  124. package/dist/core/causation/audit.js +103 -0
  125. package/dist/core/causation/aun-association.js +111 -0
  126. package/dist/core/causation/context.js +93 -0
  127. package/dist/core/causation/index.js +4 -0
  128. package/dist/core/causation/types.js +2 -0
  129. package/dist/core/channel-loader.js +277 -0
  130. package/dist/core/command/agent-control.js +616 -0
  131. package/dist/core/command/cli-intent-parser.js +225 -0
  132. package/dist/core/command/command-handler.js +1733 -0
  133. package/dist/core/command/connect-menu.js +374 -0
  134. package/dist/core/command/menu-handler.js +3452 -0
  135. package/dist/core/command/menu-protocol.js +247 -0
  136. package/dist/core/command/role-menu.js +1623 -0
  137. package/dist/core/command/slash-gate.js +148 -0
  138. package/dist/core/command/slash-handler.js +3066 -0
  139. package/dist/core/daemon-file-cache.js +222 -0
  140. package/dist/core/event-bus.js +32 -0
  141. package/dist/core/event-catalog.js +810 -0
  142. package/dist/core/evolagent-registry.js +545 -0
  143. package/dist/core/evolagent.js +342 -0
  144. package/dist/core/handoff/dispatcher.js +229 -0
  145. package/dist/core/handoff/mutex.js +46 -0
  146. package/dist/core/handoff/runtime.js +324 -0
  147. package/dist/core/handoff/store.js +537 -0
  148. package/dist/core/handoff/types.js +12 -0
  149. package/dist/core/inference/text-inference.js +173 -0
  150. package/dist/core/interaction-registration.js +10 -0
  151. package/dist/core/interaction-router.js +278 -0
  152. package/dist/core/message/create-status.js +67 -0
  153. package/dist/core/message/im-renderer.js +659 -0
  154. package/dist/core/message/items-formatter.js +76 -0
  155. package/dist/core/message/logical-queue-bridge.js +123 -0
  156. package/dist/core/message/message-bridge.js +874 -0
  157. package/dist/core/message/message-cache.js +56 -0
  158. package/dist/core/message/message-log.js +339 -0
  159. package/dist/core/message/message-processor.js +4 -0
  160. package/dist/core/message/message-queue.js +1446 -0
  161. package/dist/core/message/message-utils.js +76 -0
  162. package/dist/core/message/peer-mode.js +105 -0
  163. package/dist/core/message/pending-hints.js +232 -0
  164. package/dist/core/message/response-depth.js +33 -0
  165. package/dist/core/message/response-engine.js +4020 -0
  166. package/dist/core/message/response-snapshot.js +83 -0
  167. package/dist/core/message/send-receipt.js +24 -0
  168. package/dist/core/message/stream-debouncer.js +139 -0
  169. package/dist/core/message/stream-idle-monitor.js +124 -0
  170. package/dist/core/model/config-scope.js +162 -0
  171. package/dist/core/model/field-scope.js +78 -0
  172. package/dist/core/model/model-catalog.js +227 -0
  173. package/dist/core/model/model-diagnostics.js +182 -0
  174. package/dist/core/model/model-permission.js +90 -0
  175. package/dist/core/permission/approval-gateway.js +1017 -0
  176. package/dist/core/permission/ec-command-parser.js +347 -0
  177. package/dist/core/permission/execution-sandbox.js +16 -0
  178. package/dist/core/permission/index.js +6 -0
  179. package/dist/core/permission/mode.js +24 -0
  180. package/dist/core/permission/sandbox-runtime.js +265 -0
  181. package/dist/core/permission/tool-policy.js +1019 -0
  182. package/dist/core/permission/unix-socket-policy.js +99 -0
  183. package/dist/core/protected-paths.js +332 -0
  184. package/dist/core/relation/peer-identity.js +222 -0
  185. package/dist/core/relation/peer-key.js +1 -0
  186. package/dist/core/role/runtime-policy.js +141 -0
  187. package/dist/core/session/adapters/claude-session-file-adapter.js +218 -0
  188. package/dist/core/session/adapters/codex-session-file-adapter.js +333 -0
  189. package/dist/core/session/adapters/gemini-session-file-adapter.js +181 -0
  190. package/dist/core/session/session-file-adapter.js +7 -0
  191. package/dist/core/session/session-file-health.js +45 -0
  192. package/dist/core/session/session-fs-store.js +273 -0
  193. package/dist/core/session/session-key.js +24 -0
  194. package/dist/core/session/session-manager.js +1643 -0
  195. package/dist/core/session/session-mapper.js +100 -0
  196. package/dist/core/session/session-renew.js +314 -0
  197. package/dist/core/session/session-title.js +128 -0
  198. package/dist/core/session/session-turn-coordinator.js +205 -0
  199. package/dist/core/session/session-turns.js +67 -0
  200. package/dist/core/system-channels.js +29 -0
  201. package/dist/eck/baseagent-caps.js +18 -0
  202. package/dist/eck/detect.js +47 -0
  203. package/dist/eck/group-rules-sync.js +345 -0
  204. package/dist/eck/init.js +77 -0
  205. package/dist/eck/kit-renderer.js +359 -0
  206. package/dist/eck/manifest-engine.js +446 -0
  207. package/dist/eck/message-renderer.js +199 -0
  208. package/dist/eck/rules-loader.js +28 -0
  209. package/dist/index.js +2926 -4
  210. package/dist/ipc.js +777 -0
  211. package/dist/paths.js +262 -0
  212. package/dist/product.js +18 -0
  213. package/dist/response-system/context-builder.js +71 -0
  214. package/dist/response-system/coordinator.js +117 -0
  215. package/dist/response-system/decision-executor.js +86 -0
  216. package/dist/response-system/engines/v1/index.js +21 -0
  217. package/dist/response-system/engines/v1/interactive-flow.js +27 -0
  218. package/dist/response-system/engines/v1/proactive-flow.js +137 -0
  219. package/dist/response-system/engines/v1/types.js +1 -0
  220. package/dist/response-system/extensions.js +41 -0
  221. package/dist/response-system/index.js +6 -0
  222. package/dist/response-system/modes/index.js +7 -0
  223. package/dist/response-system/modes/single-session/index.js +72 -0
  224. package/dist/response-system/queues/fifo-queue.js +44 -0
  225. package/dist/response-system/queues/index.js +6 -0
  226. package/dist/response-system/queues/lifo-queue.js +42 -0
  227. package/dist/response-system/queues/priority-queue.js +63 -0
  228. package/dist/response-system/registry.js +97 -0
  229. package/dist/response-system/resolver.js +37 -0
  230. package/dist/response-system/selector.js +23 -0
  231. package/dist/response-system/types.js +7 -0
  232. package/dist/stats/billing.js +163 -0
  233. package/dist/stats/budget.js +93 -0
  234. package/dist/stats/db.js +403 -0
  235. package/dist/stats/eck-vars.js +89 -0
  236. package/dist/stats/index.js +11 -0
  237. package/dist/stats/normalizer.js +80 -0
  238. package/dist/stats/price-resolver.js +138 -0
  239. package/dist/stats/query.js +763 -0
  240. package/dist/stats/role-budget.js +168 -0
  241. package/dist/stats/writer.js +151 -0
  242. package/dist/trigger/anomaly-store.js +258 -0
  243. package/dist/trigger/audit.js +152 -0
  244. package/dist/trigger/event-source.js +119 -0
  245. package/dist/trigger/feedback.js +685 -0
  246. package/dist/trigger/history.js +290 -0
  247. package/dist/trigger/manager.js +294 -0
  248. package/dist/trigger/parser.js +595 -0
  249. package/dist/trigger/patch.js +155 -0
  250. package/dist/trigger/scheduler.js +1602 -0
  251. package/dist/trigger/script-executor.js +155 -0
  252. package/dist/trigger/state.js +145 -0
  253. package/dist/trigger/types.js +1 -0
  254. package/dist/trigger/validation.js +634 -0
  255. package/dist/types.js +12 -0
  256. package/dist/utils/aid-bind.js +313 -0
  257. package/dist/utils/atomic-write.js +95 -0
  258. package/dist/utils/avatar-upload.js +123 -0
  259. package/dist/utils/cross-platform.js +297 -0
  260. package/dist/utils/ecweb-utils.js +73 -0
  261. package/dist/utils/error-dict.json +153 -0
  262. package/dist/utils/error-utils.js +349 -0
  263. package/dist/utils/instance-registry.js +444 -0
  264. package/dist/utils/locale.js +21 -0
  265. package/dist/utils/log-writer.js +270 -0
  266. package/dist/utils/logger.js +89 -0
  267. package/dist/utils/markdown-to-plain-text.js +20 -0
  268. package/dist/utils/media-cache.js +274 -0
  269. package/dist/utils/model-prices.jsonl +20 -0
  270. package/dist/utils/npm-ops.js +210 -0
  271. package/dist/utils/process-introspect.js +133 -0
  272. package/dist/utils/process-tree-stats.js +271 -0
  273. package/dist/utils/project-path.js +74 -0
  274. package/dist/utils/restart-safety.js +31 -0
  275. package/dist/utils/stats.js +410 -0
  276. package/dist/utils/system-memory.js +62 -0
  277. package/dist/utils/tool-summary.js +284 -0
  278. package/dist/utils/welcome.js +268 -0
  279. package/kits/docs/GUIDE.md +20 -0
  280. package/kits/docs/INDEX.md +66 -0
  281. package/kits/docs/aun/CHEATSHEET.md +19 -0
  282. package/kits/docs/aun/SYNC_PROTOCOL.md +15 -0
  283. package/kits/docs/channels/aun.md +65 -0
  284. package/kits/docs/channels/feishu.md +56 -0
  285. package/kits/docs/context-assembly.md +366 -0
  286. package/kits/docs/eck_templates/GUIDE.template.md +22 -0
  287. package/kits/docs/eck_templates/INDEX.template.md +28 -0
  288. package/kits/docs/eck_templates/path-registry.template.md +33 -0
  289. package/kits/docs/eck_templates/runtime.template.md +19 -0
  290. package/kits/docs/evolcore/INDEX.md +68 -0
  291. package/kits/docs/evolcore/agent.md +77 -0
  292. package/kits/docs/evolcore/aid.md +52 -0
  293. package/kits/docs/evolcore/config.md +149 -0
  294. package/kits/docs/evolcore/contact.md +57 -0
  295. package/kits/docs/evolcore/ctl.md +46 -0
  296. package/kits/docs/evolcore/event.md +216 -0
  297. package/kits/docs/evolcore/fs-architecture.md +1215 -0
  298. package/kits/docs/evolcore/fs.md +110 -0
  299. package/kits/docs/evolcore/group-fs.md +17 -0
  300. package/kits/docs/evolcore/group-rules.md +226 -0
  301. package/kits/docs/evolcore/group.md +150 -0
  302. package/kits/docs/evolcore/model.md +50 -0
  303. package/kits/docs/evolcore/msg.md +136 -0
  304. package/kits/docs/evolcore/response.md +75 -0
  305. package/kits/docs/evolcore/rpc.md +37 -0
  306. package/kits/docs/evolcore/self-summary.md +29 -0
  307. package/kits/docs/evolcore/stats.md +83 -0
  308. package/kits/docs/evolcore/storage.md +50 -0
  309. package/kits/docs/evolcore/trigger.md +539 -0
  310. package/kits/docs/identity/AID_PROFILE_SPEC.md +26 -0
  311. package/kits/docs/identity/PATH_OPS.md +16 -0
  312. package/kits/docs/identity/ROLE_DETAIL.md +23 -0
  313. package/kits/docs/identity/identity-tools.md +26 -0
  314. package/kits/docs/path-registry.md +43 -0
  315. package/kits/docs/prompt-loading-architecture.md +266 -0
  316. package/kits/docs/venues/aun-group.md +45 -0
  317. package/kits/docs/venues/aun-private.md +10 -0
  318. package/kits/docs/venues/client-desktop.md +10 -0
  319. package/kits/docs/venues/client-mobile.md +10 -0
  320. package/kits/docs/venues/feishu-group.md +13 -0
  321. package/kits/docs/venues/feishu-private.md +9 -0
  322. package/kits/docs/venues/group.md +25 -0
  323. package/kits/docs/venues/private.md +10 -0
  324. package/kits/eck_manifest.auxiliary.json +43 -0
  325. package/kits/eck_manifest.json +203 -0
  326. package/kits/eck_message_manifest.json +63 -0
  327. package/kits/migrations/README-role-config-v4.md +32 -0
  328. package/kits/migrations/migrate-contact-book-v2.mjs +747 -0
  329. package/kits/migrations/migrate-role-config-v4.mjs +623 -0
  330. package/kits/migrations/migrate-role-config-v5.mjs +346 -0
  331. package/kits/migrations/rename-config-file.mjs +99 -0
  332. package/kits/rules/01-overview.md +142 -0
  333. package/kits/rules/02-navigation.md +76 -0
  334. package/kits/rules/03-identity.md +34 -0
  335. package/kits/rules/04-relation.md +59 -0
  336. package/kits/rules/05-venue.md +44 -0
  337. package/kits/rules/06-channel.md +59 -0
  338. package/kits/schemas/_meta.json +32 -0
  339. package/kits/schemas/agent-config.schema.1.json +177 -0
  340. package/kits/schemas/agent-config.schema.2.json +239 -0
  341. package/kits/schemas/agent-config.schema.3.json +119 -0
  342. package/kits/schemas/agent-config.schema.4.json +208 -0
  343. package/kits/schemas/agent-config.schema.5.json +326 -0
  344. package/kits/schemas/agent-config.schema.6.json +322 -0
  345. package/kits/schemas/contact-book.schema.1.json +36 -0
  346. package/kits/schemas/contact-book.schema.2.json +43 -0
  347. package/kits/schemas/daemon.schema.1.json +90 -0
  348. package/kits/schemas/defaults.schema.1.json +81 -0
  349. package/kits/schemas/menu-exec-schema-commands.md +208 -0
  350. package/kits/schemas/migrations/README.md +28 -0
  351. package/kits/schemas/relation-config.schema.1.json +158 -0
  352. package/kits/schemas/relation-config.schema.2.json +73 -0
  353. package/kits/schemas/relation-config.schema.3.json +50 -0
  354. package/kits/schemas/relation-config.schema.4.json +47 -0
  355. package/kits/schemas/relation-config.schema.5.json +47 -0
  356. package/kits/schemas/role-config.schema.1.json +201 -0
  357. package/kits/schemas/role-registry.schema.1.json +35 -0
  358. package/kits/schemas/single-session.schema.1.json +31 -0
  359. package/kits/templates/bootstrap-welcome.md +15 -0
  360. package/kits/templates/message-fragments/handoff-request-to-target.md +13 -0
  361. package/kits/templates/message-fragments/handoff-response-to-origin.md +10 -0
  362. package/kits/templates/message-fragments/inject-default.md +2 -0
  363. package/kits/templates/message-fragments/item.md +2 -0
  364. package/kits/templates/roles/admin.json +9 -0
  365. package/kits/templates/roles/member.json +41 -0
  366. package/kits/templates/roles/owner.json +9 -0
  367. package/kits/templates/roles/visitor.json +40 -0
  368. package/kits/templates/system-fragments/baseagent.md +14 -0
  369. package/kits/templates/system-fragments/bootstrap.md +16 -0
  370. package/kits/templates/system-fragments/channel.md +48 -0
  371. package/kits/templates/system-fragments/commands.md +28 -0
  372. package/kits/templates/system-fragments/identity.md +11 -0
  373. package/kits/templates/system-fragments/relation.md +19 -0
  374. package/kits/templates/system-fragments/session.md +53 -0
  375. package/kits/templates/system-fragments/venue.md +31 -0
  376. package/package.json +50 -15
  377. package/dist/index.d.ts +0 -7
  378. package/dist/index.d.ts.map +0 -1
  379. package/dist/index.js.map +0 -1
@@ -0,0 +1,110 @@
1
+ # ec fs — AUN 文件系统
2
+
3
+ `ec fs` 是个人空间和群空间的统一文件入口。群空间也用 `ec fs`,没有 `ec group fs`。
4
+
5
+ 路径格式:
6
+
7
+ ```bash
8
+ <AID>:<absolute-path>
9
+ ```
10
+
11
+ 无 `:` 的路径是本地路径。操作者身份用 `--as <aid>`,agent 会话内通常由 `EVOLCORE_SELF_AID` 注入,可省略。
12
+
13
+ ## 已实现命令
14
+
15
+ ```bash
16
+ ec fs ls <AID>:<path> # 列目录
17
+ ec fs cat <AID>:<path> # 输出文本文件;二进制/大文件返回头部摘要
18
+ ec fs cp <local> <AID>:<path> # 上传
19
+ ec fs cp <AID>:<path> <local> # 下载
20
+ ec fs cp <AID>:<path> <AID>:<path> # 远程复制(同后端)
21
+ ec fs stat [-L] <AID>:<path> # 查看节点元数据(默认不跟随软链,-L 跟随)
22
+ ec fs lstat <AID>:<path> # 查看节点本身(不跟随末级软链)
23
+ ec fs mv <AID>:<path> <AID>:<path> # 移动/改名(同后端)
24
+ ec fs rm [-r] <AID>:<path> # 删除文件或目录
25
+ ec fs mkdir [-p] <AID>:<path> # 创建目录
26
+ ec fs ln -s <target> <AID>:<path> # 创建软链(personal storage)
27
+ ec fs chmod [mode] <AID>:<path> # 切换公开/私有(personal storage)
28
+ ec fs setfacl <AID>:<path> -m|-x ... # 设置/移除 ACL(personal storage)
29
+ ec fs getfacl <AID>:<path> # 查看 ACL(personal storage)
30
+ ec fs token issue|revoke|ls <path> # 管理访问 token(personal storage)
31
+ ec fs find <AID>:<path> [filters] # 查找节点
32
+ ec fs df <AID>: # 查看容量/配额
33
+ ec fs mount <target> --volume <id> # 挂载实体卷
34
+ ec fs mount <target> --source <src> # 挂载远程子树
35
+ ec fs approve <AID>:<path> # 批准待审挂载(personal storage)
36
+ ec fs reject <AID>:<path> # 拒绝待审挂载(personal storage)
37
+ ec fs umount <AID>:<path> # 卸载挂载点
38
+ ```
39
+
40
+ 通用选项:
41
+
42
+ - `--format json`:结构化输出
43
+ - `--as <aid>`:显式指定操作者
44
+ - `--aun-path <path>`:指定 AUN keystore 根
45
+ - `--app <name>`:指定 AUN app slot
46
+ - `--overwrite` / `--force`:`cp/mv/ln` 覆盖目标;`rm` 强制删除
47
+ - `-r` / `--recursive`:`rm/cp` 递归
48
+ - `-p` / `--parents`:`mkdir` 自动创建父目录
49
+ - `-L` / `--follow`:`stat` 跟随末级软链
50
+ - `--token <token>`:读取 personal storage 时携带访问 token
51
+ - `--content-type <mime>`:上传时指定 MIME
52
+ - `--public`:上传后公开可读(personal storage)
53
+ - `--max-bytes <n>`:`cat` 最大直接输出字节数,默认 1MB
54
+ - `--head-bytes <n>`:`cat` 二进制头部字节数,默认 256
55
+ - `--visibility public|private`:`chmod` 可见性
56
+ - `--allow-roles <roles>`:`chmod` 角色约束,逗号分隔
57
+ - `-m aid:<aid>:<perms>` / `-x aid:<aid>`:`setfacl` 增删 ACL
58
+ - `--source <AID>:<path>` / `--volume <id>`:`mount` 来源
59
+ - `--expires <time>`:`mount/token/ACL` 过期时间,Unix 秒或 ISO 日期
60
+ - `--require-approval`:挂载需要来源 owner 审批
61
+ - `--max-uses <n>`:ACL 最大使用次数
62
+ - `--max-reads <n>`:访问 token 最大读取次数
63
+ - `--readonly` / `--readwrite`:挂载为只读或读写
64
+ - `--name <glob>` / `--type <f|d|l>`:`find` 名称或类型过滤
65
+ - `--size <expr>` / `--mtime <expr>`:`find` 大小或修改时间过滤
66
+
67
+ ## 示例
68
+
69
+ ```bash
70
+ ec fs ls alice.agentid.pub:/private/
71
+ ec fs cat alice.agentid.pub:/private/notes.md
72
+ ec fs cp ./report.md alice.agentid.pub:/private/report.md
73
+ ec fs cp alice.agentid.pub:/private/report.md ./report.md
74
+ ec fs cp alice.agentid.pub:/private/a.md bob.agentid.pub:/inbox/a.md
75
+ ec fs mkdir -p alice.agentid.pub:/private/reports/
76
+ ec fs ln -s alice.agentid.pub:/private/report.md alice.agentid.pub:/public/report.md
77
+ ec fs chmod +r alice.agentid.pub:/public/report.md
78
+ ec fs setfacl alice.agentid.pub:/private/report.md -m aid:bob.agentid.pub:r
79
+ ec fs token issue alice.agentid.pub:/public/report.md --expires 2026-12-31
80
+ ec fs find alice.agentid.pub:/private/ --name "*.md"
81
+ ec fs rm alice.agentid.pub:/private/report.md
82
+ ec fs df alice.agentid.pub:
83
+ ```
84
+
85
+ 群 AID 与个人 AID 写法相同:
86
+
87
+ ```bash
88
+ ec fs ls g-team.agentid.pub:/archive/
89
+ ec fs cp ./weekly.md g-team.agentid.pub:/archive/weekly.md
90
+ ```
91
+
92
+ ## 路由规则
93
+
94
+ CLI 读取目标 AID 的 `agent.md`:
95
+
96
+ - `type: group` 走群文件后端
97
+ - 其他类型走个人 storage 后端
98
+ - 读取失败时先按个人 storage 尝试,并给出警告
99
+
100
+ 权限由后端判断。CLI 只携带操作者、目标 AID、路径和操作。
101
+
102
+ ## 能力边界
103
+
104
+ - `ln -s` 只在 personal storage 创建软链;group fs facade 暂无 symlink 接口。
105
+ - `chmod` 只映射到 personal storage 的 `setVisibility`;group fs facade 暂无 chmod/setVisibility 接口。
106
+ - `setfacl/getfacl/token/approve/reject` 只接 personal storage;group fs facade 暂无对应接口。
107
+ - personal storage 的 `mv` 仅支持同 owner;跨 owner 请先 `cp` 再 `rm`。
108
+ - personal/group 混合远程 `cp/mv` 不支持;请先下载到本地再上传。
109
+
110
+ 需要底层调试时可用 `ec storage`。日常文件操作优先使用 `ec fs`。
@@ -0,0 +1,17 @@
1
+ # ec group fs 已废弃
2
+
3
+ 群文件空间统一使用 `ec fs`,不再提供 `ec group fs` 入口。
4
+
5
+ 迁移:
6
+
7
+ ```bash
8
+ ec group fs ls <group-aid> /path
9
+ # 改为
10
+ ec fs ls <group-aid>:/path
11
+
12
+ ec group fs cp ./file <group-aid>:/path/file
13
+ # 改为
14
+ ec fs cp ./file <group-aid>:/path/file
15
+ ```
16
+
17
+ 当前可用能力以 `fs.md` 为准。群空间通过统一 `ec fs` 入口支持 `ls`、`stat`、`lstat`、`cat`、`cp`、`mv`、`rm`、`mkdir`、`find`、`df`、`mount`、`umount`;group facade 暂无接口的 `ln`、`chmod`、`setfacl`、`getfacl`、`token`、`approve`、`reject` 不在群 AID 上承诺可用。
@@ -0,0 +1,226 @@
1
+ # ec group rules — 群规则文件
2
+
3
+ 管理 AUN 群空间中的 `/rules.md`。群规则文件用于定义本群特有的工作流程、职责分工、交付格式、限制条件和升级路径;发布后,EvolCore 会在该群的对话上下文中自动加载。
4
+
5
+ 以自己的 AID 为操作者 `<from>`,群 AID 为 `<group-id>`。
6
+
7
+ ## 与入群规则的区别
8
+
9
+ `ec group rules` 同时承载两类不同能力:
10
+
11
+ | 能力 | 命令 | 用途 |
12
+ |------|------|------|
13
+ | 群规则文件 | `get/set/publish` | 管理注入上下文的群空间 `/rules.md` |
14
+ | 入群规则 | 无动作或 `--mode` 等选项 | 管理 open、approval、invite_only、closed 等加入策略 |
15
+
16
+ 本文只说明群规则文件。入群规则的用法见 `group.md`。
17
+
18
+ ## 常用命令
19
+
20
+ ```bash
21
+ # 查看当前已发布且有效的群规则
22
+ ec group rules <from> <group-id> get
23
+
24
+ # 上传本地文件到 /rules.md 并立即发布
25
+ ec group rules <from> <group-id> set <file>
26
+
27
+ # 发布群空间中当前已有的 /rules.md
28
+ ec group rules <from> <group-id> publish
29
+ ```
30
+
31
+ 所有命令均支持 `--format json`。
32
+
33
+ ## 推荐流程
34
+
35
+ 日常更新直接使用 `set`:
36
+
37
+ ```bash
38
+ ec group rules admin.agentid.pub g-team.agentid.pub set ./rules.md
39
+ ```
40
+
41
+ 成功后会依次完成:
42
+
43
+ 1. 检查本地文件是普通文件、有效 UTF-8,且不超过 4KB。
44
+ 2. 原样上传到 `<group-id>:/rules.md`。
45
+ 3. 读取远端文件的 `size + mtimeMs`。
46
+ 4. 更新 signed `rules.content`,使该文件版本成为当前有效群规则。
47
+ 5. 再次检查远端 `size + mtimeMs`,防止发布期间文件被并发覆盖。
48
+ 6. 由发布者发送 `group.rules.updated` 群通知。
49
+
50
+ 命令不会规范化换行或重写正文。
51
+
52
+ ## 分步上传与发布
53
+
54
+ 也可以先用底层文件命令修改 `/rules.md`:
55
+
56
+ ```bash
57
+ ec fs cp ./rules.md g-team.agentid.pub:/rules.md --overwrite
58
+ ```
59
+
60
+ `ec fs cp` 只更新文件,不会将它自动发布为有效群规则。命令会提示继续执行:
61
+
62
+ ```bash
63
+ ec group rules <from> g-team.agentid.pub publish
64
+ ```
65
+
66
+ 在 `publish` 成功前,签名元信息仍指向旧版本。此时 `get` 和运行时加载会返回 `file_mismatch`,不会注入新文件,也不会使用本地残留规则。
67
+
68
+ 不要用 `ec fs mv`、`cp` 或其它低层文件操作代替 `publish`。
69
+
70
+ ## 查看规则
71
+
72
+ ```bash
73
+ ec group rules bot.agentid.pub g-team.agentid.pub get
74
+ ```
75
+
76
+ 普通输出在校验通过后直接打印 Markdown 正文。需要查看状态和元信息时使用:
77
+
78
+ ```bash
79
+ ec group rules bot.agentid.pub g-team.agentid.pub get --format json
80
+ ```
81
+
82
+ 示例:
83
+
84
+ ```json
85
+ {
86
+ "ok": true,
87
+ "group_id": "g-team.agentid.pub",
88
+ "status": "ok",
89
+ "path": "/rules.md",
90
+ "metadata": {
91
+ "path": "/rules.md",
92
+ "size": 1024,
93
+ "mtimeMs": 1780000000000
94
+ },
95
+ "content": "# 群规则\n..."
96
+ }
97
+ ```
98
+
99
+ `get` 不是简单执行 `ec fs cat`。它会先验证 signed `rules.content`,再确认远端 `/rules.md` 的 `size + mtimeMs` 与已发布元信息一致。
100
+
101
+ ## 规则文件建议
102
+
103
+ `/rules.md` 是入口规则文档,不是群知识库。文件上限为 4KB,建议只写需要稳定注入每轮上下文的内容:
104
+
105
+ ```markdown
106
+ # 群规则
107
+
108
+ ## 工作流程
109
+ - 需求先明确负责人、截止时间和验收条件。
110
+ - 涉及生产变更时必须先给出回滚方案。
111
+
112
+ ## 职责分工
113
+ - owner:最终决策与权限管理。
114
+ - reviewer:检查风险、测试和兼容性。
115
+ - executor:实现、验证并报告结果。
116
+
117
+ ## 交付要求
118
+ - 结论先行,附关键证据。
119
+ - 未完成验证时必须明确说明。
120
+
121
+ ## 升级路径
122
+ - 权限不足或规则冲突时 @owner。
123
+ ```
124
+
125
+ 较大的规范、资料和附件应存放在群空间其它路径,需要时用 `ec fs ls/find/stat/cat` 查询,不要全部塞进 `/rules.md`。
126
+
127
+ ## 发布权限
128
+
129
+ 发布涉及两层权限:
130
+
131
+ - 群文件权限:允许覆盖 `<group-id>:/rules.md`。
132
+ - 群索引权限:允许通过 `updateRules` 更新当前有效版本。
133
+
134
+ 通常应由 owner/admin 写入和发布,普通成员只读。某人即使能覆盖文件,但不能更新群索引,该次修改也不会成为有效群规则,并会导致 `file_mismatch`。
135
+
136
+ ## 更新通知
137
+
138
+ 只有成功执行 `set` 或 `publish` 的发布者发送通知。读取方发现更新、自动同步或收到通知后刷新规则时,不会再次广播。
139
+
140
+ 通知 payload:
141
+
142
+ ```json
143
+ {
144
+ "type": "notice",
145
+ "subtype": "group.rules.updated",
146
+ "text": "群规则已发布:g-team.agentid.pub:/rules.md\n操作者:admin.agentid.pub",
147
+ "actor_aid": "admin.agentid.pub",
148
+ "group_id": "g-team.agentid.pub",
149
+ "path": "/rules.md",
150
+ "group_index_etag": "\"sha256:...\"",
151
+ "size": 1024,
152
+ "mtimeMs": 1780000000000
153
+ }
154
+ ```
155
+
156
+ 通知只是刷新提示。接收方仍以 signed `rules.content` 和远端文件校验结果为准。
157
+
158
+ ## 状态说明
159
+
160
+ | status | 含义 | 是否加载 |
161
+ |--------|------|----------|
162
+ | `ok` | `get/set/publish` 校验或发布成功 | 是 |
163
+ | `synced` | 运行时已刷新并物化本地规则 | 是 |
164
+ | `cached` | 本地物化文件仍与已发布元信息一致 | 是 |
165
+ | `missing` | 未发布规则,或 `/rules.md` 不存在 | 否 |
166
+ | `forbidden` | 当前身份无读取或发布权限 | 否 |
167
+ | `invalid_metadata` | signed `rules.content` 格式或签名无效 | 否 |
168
+ | `file_mismatch` | `/rules.md` 与当前已发布元信息不一致 | 否 |
169
+ | `too_large` | 文件超过 4KB | 否 |
170
+ | `unreadable` | 文件、编码、网络或远端服务暂时不可读 | 否 |
171
+ | `error` | 其它错误 | 否 |
172
+
173
+ ## 本地物化与上下文加载
174
+
175
+ 远端权威文件固定为:
176
+
177
+ ```text
178
+ <group-id>:/rules.md
179
+ ```
180
+
181
+ 校验成功后,本地物化为:
182
+
183
+ ```text
184
+ $VENUES_DIR/<channel>#<urlEncode(groupId)>/rules.md
185
+ ```
186
+
187
+ AUN 示例:
188
+
189
+ ```text
190
+ $AGENT_DIR/venues/aun#g-team.agentid.pub/rules.md
191
+ ```
192
+
193
+ 该本地文件属于群环境层,而不是关系层。它只是远端规则的物化副本,不应直接编辑。只有当前处理轮次验证通过并设置 `groupRulesPath` 时,ECK manifest 才会把它注入 system context。
194
+
195
+ ## 排障
196
+
197
+ ### `set` 提示文件过大或编码无效
198
+
199
+ 将入口规则压缩到 4KB 以内,并保存为 UTF-8 Markdown。详细资料移到群空间其它文件。
200
+
201
+ ### `get` 返回 `file_mismatch`
202
+
203
+ 有人通过 `ec fs` 或其它低层入口修改了 `/rules.md`,但尚未发布。由有权限的发布者执行:
204
+
205
+ ```bash
206
+ ec group rules <from> <group-id> publish
207
+ ```
208
+
209
+ ### 收到通知但规则没有加载
210
+
211
+ 通知不代表文件一定有效。检查:
212
+
213
+ ```bash
214
+ ec group rules <from> <group-id> get --format json
215
+ ec fs stat <group-id>:/rules.md --format json
216
+ ```
217
+
218
+ 重点查看 `status`、已发布 `metadata` 和远端 `size/mtimeMs` 是否一致。
219
+
220
+ ### 只想查看远端原始文件
221
+
222
+ ```bash
223
+ ec fs cat <group-id>:/rules.md
224
+ ```
225
+
226
+ 这只能查看当前文件内容,不能证明它是当前已签名发布的有效版本。判断有效性仍应使用 `ec group rules ... get`。
@@ -0,0 +1,150 @@
1
+ # ec group — 群聊消息与群管理
2
+
3
+ 群聊场景下收发消息、管理群与成员。触发词:群发/建群/邀请/踢人/退群/群成员。
4
+
5
+ 以自己的 AID 为发送者(`<from>`),群 AID 为 `<group-id>`。
6
+
7
+ 本命令覆盖常用消息、基础生命周期、成员操作、角色/群主管理、封禁、暂停/恢复和群规则。生产环境 agent 优先使用本页列出的 `ec group` 命令。
8
+
9
+ ## 消息
10
+
11
+ ```bash
12
+ # 文本(含空格/换行/特殊字符时用引号包起来;纯短词可不包,但多空格会被压成一个)
13
+ ec group send <from> <group-id> "<text>" [--encrypt]
14
+
15
+ # 文件(--as image|video|voice|file)
16
+ ec group send <from> <group-id> --file <path> [--as <type>] [--text "<说明>"]
17
+
18
+ # 自定义 payload
19
+ ec group send <from> <group-id> --payload '<json>'
20
+
21
+ # 拉取群消息(建议带 --app 独立消费通道,避免影响 daemon)
22
+ ec group pull <from> <group-id> [--after-seq <N>] [--limit <N>] [--app <name>]
23
+
24
+ # 确认已读(推进消费游标;同样建议带 --app)
25
+ ec group ack <from> <group-id> <seq> [--app <name>]
26
+ ```
27
+
28
+ @ 成员:
29
+ - `--mention <aid>` — @ 某个成员,可多次,或单个槽位用逗号分隔多个(`--mention a,b,c`),每个 aid 都过格式校验
30
+ - `--mention-all` — @ 所有人
31
+
32
+ ```bash
33
+ ec group send <from> <group-id> "@bob 看下 PR" --mention bob.agentid.pub
34
+ ec group send <from> <group-id> "通知" --mention alice.agentid.pub,bob.agentid.pub
35
+ ```
36
+
37
+ > 正文恰好以 `--` 开头:带空格的(如 `"--file 是正文"`)会被正确识别为正文;
38
+ > 若正文**精确等于**某个 flag 名(如要发送文本 `--encrypt`),用 `--` 分隔:
39
+ > `ec group send <from> <group-id> -- --encrypt`
40
+
41
+ 发送选项还包括:
42
+
43
+ - `--no-encrypt`:强制明文,优先于 `--encrypt`
44
+ - `--thread <id>`:指定话题 ID
45
+ - `--return <required|none>`:跨会话回流策略
46
+ - `--content-type <mime>`:覆盖文件 MIME
47
+ - `--transcript <text>`:语音转写,仅 `--as voice`
48
+
49
+ ## 群管理
50
+
51
+ ```bash
52
+ # 创建群
53
+ ec group create <from> "<name>" [--visibility public|private] [--description "<desc>"] [--join-mode <mode>] [--group-id <aid>]
54
+
55
+ # 列出我加入的群
56
+ ec group list <from> [--size <N>]
57
+
58
+ # 查看群详情
59
+ ec group info <from> <group-id>
60
+
61
+ # 修改群信息
62
+ ec group update <from> <group-id> [--name "<name>"] [--description "<desc>"]
63
+
64
+ # 解散群
65
+ ec group dissolve <from> <group-id>
66
+
67
+ # 暂停/恢复群
68
+ ec group suspend <from> <group-id>
69
+ ec group resume <from> <group-id>
70
+
71
+ # 查看群规则
72
+ ec group rules <from> <group-id>
73
+
74
+ # 更新入群规则
75
+ ec group rules <from> <group-id> --mode open|approval|invite_only|closed [--question "<question>"] [--max-pending <N>]
76
+
77
+ # 查看已发布群规则文件 /rules.md
78
+ ec group rules <from> <group-id> get
79
+
80
+ # 上传并发布群规则文件
81
+ ec group rules <from> <group-id> set <file>
82
+
83
+ # 发布当前群空间 /rules.md
84
+ ec group rules <from> <group-id> publish
85
+ ```
86
+
87
+ 新建群尚未显式设置入群规则时,`ec group rules` 显示空对象 `{}`。群规则文件通过 `get/set/publish` 管理,底层 `ec fs cp` 只改文件,不会自动发布为有效规则。
88
+
89
+ 群规则文件的发布机制、权限、状态、通知与上下文注入说明见 `group-rules.md`。
90
+
91
+ 搜索公开群、公开信息查询、群统计等高级能力当前未封装为 `ec group` 子命令。
92
+
93
+ ## 成员
94
+
95
+ ```bash
96
+ # 申请加入
97
+ ec group join <from> <group-id> [--message "<msg>"] [--answer "<answer>"]
98
+
99
+ # 退出群
100
+ ec group leave <from> <group-id>
101
+
102
+ # 邀请成员(可多个)
103
+ ec group invite <from> <group-id> <member-aid> [<member-aid>...]
104
+
105
+ # 踢出成员
106
+ ec group kick <from> <group-id> <member-aid>
107
+
108
+ # 列出群成员
109
+ ec group members <from> <group-id> [--page <N>] [--size <N>]
110
+
111
+ # 查看在线成员
112
+ ec group online <from> <group-id>
113
+
114
+ # 设置成员角色
115
+ ec group role <from> <group-id> <member-aid> <admin|member>
116
+
117
+ # 转让群主(当前网关可能需要新群主完成 rekey)
118
+ ec group owner <from> <group-id> <new-owner-aid>
119
+
120
+ # 列出封禁成员
121
+ ec group ban <from> <group-id>
122
+
123
+ # 封禁成员(--duration 单位为秒;不传则按服务端默认)
124
+ ec group ban <from> <group-id> <member-aid> [--duration <seconds>]
125
+
126
+ # 解封成员
127
+ ec group unban <from> <group-id> <member-aid>
128
+ ```
129
+
130
+ ## 入群与公告
131
+
132
+ 当前 CLI 封装了 `join` 和 `rules`。审批申请、邀请码、公告等高级管理能力第一批暂不提供单独命令。
133
+
134
+ ## 通用约定
135
+
136
+ - `<from>` 必须是合法 AID(入口统一校验,格式错直接报错)
137
+ - `--format json` — 对支持结构化结果的子命令输出 JSON
138
+ - `--app <name>` — 仅 `pull` / `ack` 指定独立消费 slot
139
+ - `--aun-path <path>` — 指定 AUN keystore 根
140
+ - `--encrypt` — 仅 send,启用端到端加密(群聊默认明文)
141
+ - `create` 会通过 SDK 自动生成并导入群 `group_aid` 身份。
142
+ - `owner` 会走 SDK 的群主转让授权签名流程,需要本机有该群 `group_aid` 的私钥;若网关返回 `pending_rekey`,CLI 会在本机存在新群主私钥时自动调用完成步骤,否则输出“已发起,等待新群主完成 rekey”。
143
+
144
+ ## Group ID
145
+
146
+ AUN Group 协议当前规范使用 `g-{slug}.issuer-domain` canonical 群 ID;也可输入本域简写 `g-{slug}` 或兼容写法 `g-{slug}@issuer-domain`。历史 EvolCore 会话里可能还有 `group.agentid.pub/11718` 这类旧格式,看到时按已有群 ID 原样使用。
147
+
148
+ ## 自主回复策略
149
+
150
+ 群聊中默认被 @ 才响应,可通过 venue policy 配置其他触发条件。
@@ -0,0 +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 探测。
@@ -0,0 +1,136 @@
1
+ # ec msg — 私聊消息命令
2
+
3
+ 私聊场景下收发消息的命令集。触发词:回复/发消息/拉取/撤回/查在线。
4
+
5
+ 以自己的 AID 为发送者(`<from>`),对端 AID 为 `<to>`。
6
+
7
+ ## 发送消息
8
+
9
+ ```bash
10
+ # 文本(明文)
11
+ ec msg send <from> <to> "<text>"
12
+
13
+ # 从文件读取文本内容(用于超长消息或避免 Shell 转义)
14
+ ec msg send <from> <to> --text-from-file <path>
15
+
16
+ # 文本(密文 E2EE)
17
+ ec msg send <from> <to> "<text>" --encrypt
18
+
19
+ # 强制明文(同时出现时优先于 --encrypt)
20
+ ec msg send <from> <to> "<text>" --no-encrypt
21
+
22
+ # 文件:--as 可选 image|video|voice|file(默认按扩展名推断)
23
+ ec msg send <from> <to> --file <path> [--as <type>]
24
+
25
+ # 链接卡片
26
+ ec msg send <from> <to> --link <url> [--title "<title>"] [--description "<desc>"]
27
+
28
+ # 自定义 payload(JSON)
29
+ ec msg send <from> <to> --payload '<json>'
30
+ ```
31
+
32
+ 发送相关选项:
33
+ - `--text-from-file <path>` — 从文件读取文本(UTF-8),用于超长消息或避免 Shell 转义
34
+ - `--encrypt` — 端到端加密
35
+ - `--no-encrypt` — 强制明文发送,优先于 `--encrypt`
36
+ - `--thread <id>` — 指定话题 ID(多话题路由)
37
+ - `--return <required|none>` — 跨会话回流策略;跨会话默认 `required`
38
+ - `--content-type <mime>` — 显式覆盖 MIME(仅 `--file`)
39
+ - `--text <说>` — 附件说明文字(仅 `--file`)
40
+ - `--transcript <text>` — 语音转写(仅 `--as voice`)
41
+
42
+ 成功输出:`✓ 已发送 <message_id> seq=<n> status=<status>`
43
+
44
+ > 正文写法:含空格/换行/特殊字符时用引号包起来;纯短词可不包,但多空格会被压成一个。
45
+ > 正文恰好以 `--` 开头:带空格的(如 `"--file 是正文"`)会被正确识别为正文;
46
+ > 若正文**精确等于**某个 flag 名(如要发送文本 `--encrypt`),用 `--` 分隔:
47
+ > `ec msg send <from> <to> -- --encrypt`
48
+
49
+ ## 拉取消息
50
+
51
+ ```bash
52
+ ec msg pull <from> --app <name>
53
+ ec msg pull <from> --app <name> --after-seq <N> --limit <N>
54
+ ```
55
+
56
+ `--app <name>` 指定独立消费通道(slot)。**不传 `--app` 会与 daemon 共享 evolcore 消费游标,可能影响 daemon 收消息。**
57
+
58
+ ## 确认已读
59
+
60
+ ```bash
61
+ ec msg ack <from> <seq> --app <name>
62
+ ```
63
+
64
+ 同样:不传 `--app` 会推进与 daemon 共享的游标。
65
+
66
+ ## 撤回消息
67
+
68
+ ```bash
69
+ ec msg recall <from> <message-id> [<message-id>...]
70
+ ```
71
+
72
+ ## 查询在线状态
73
+
74
+ ```bash
75
+ ec msg online <from> <target-aid> [<target-aid>...]
76
+ ```
77
+
78
+ 输出:`🟢` 在线 / `⚫` 离线。
79
+
80
+ ## 查询本地消息历史
81
+
82
+ ```bash
83
+ # 查询最新激活会话最近 50 条本地历史
84
+ ec msg history <self-aid> <target-aid>
85
+
86
+ # 只查询 active.json 当前激活的 EvolCore 会话
87
+ ec msg history <self-aid> <target-aid> --session latest
88
+
89
+ # 查询指定归档会话
90
+ ec msg history <self-aid> <target-aid> --session <session-id>
91
+
92
+ # 查询该 AID 对全部本地历史(包括没有 sessionId 的旧记录)
93
+ ec msg history <self-aid> <target-aid> --session all
94
+
95
+ # 组合过滤
96
+ ec msg history <self-aid> <target-aid> \
97
+ --after 2026-07-13T00:00:00+08:00 \
98
+ --direction in --limit 100 --format json
99
+ ```
100
+
101
+ 历史查询读取本地 `messages.jsonl`,不调用 `message.pull`,不会读取或推进网络收件箱游标。
102
+
103
+ - 不传 `--session`:等价于 `--session latest`。
104
+ - `--session latest`:使用该 AID 对 `active.json` 中的最新激活会话;找不到时直接报错。
105
+ - `--session all`:包含该 AID 对全部本地历史以及没有会话标识的旧记录。
106
+ - `--session <session-id>`:只返回精确属于该逻辑会话的消息。
107
+ - 使用会话过滤时,旧版本中没有 `sessionId` 的消息不会返回。
108
+ - `--limit` 默认 50,最大 500。
109
+ - `--before` / `--after` 支持 epoch 毫秒或 ISO 时间,均为开区间。
110
+ - `--direction` 支持 `in|out|all`,默认 `all`。
111
+ - 内部 `handoff_state` 记录不会出现在结果中。
112
+
113
+ `sessionId` 是 EvolCore 本地逻辑会话 ID,不是 Claude/Codex 等后端的会话 ID。
114
+
115
+ ## 共享选项
116
+
117
+ - `--format json` — 对支持结构化结果的子命令输出 JSON
118
+ - `--app <name>` — 仅 `pull` / `ack` 指定独立消费 slot
119
+ - `--aun-path <path>` — 指定 AUN keystore 根
120
+
121
+ ## 自主回复策略
122
+
123
+ 收到消息 ≠ 必须回复。是否回复、怎么回复、何时回复由 agent 自主决定。
124
+
125
+ 加密策略:
126
+ - 对端发来密文消息时,回复也应使用 `--encrypt`(保持对话加密一致性)
127
+ - 对端发来明文消息时,默认明文回复
128
+
129
+ ## 在当前会话中快速回复(备选)
130
+
131
+ 仅当无法使用 `ec msg send` 时(如拿不到自己的 AID),可用 `ec ctl send`,它自动继承当前会话的 AID 和对端:
132
+
133
+ ```bash
134
+ ec ctl send "<text>"
135
+ ec ctl send --encrypt "<text>"
136
+ ```