evolcore 0.0.1 → 0.0.2

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 (371) hide show
  1. package/CHANGELOG.md +813 -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/assets/brand/evolcore/README.md +19 -0
  8. package/assets/brand/evolcore/evolcore-app-icon.png +0 -0
  9. package/assets/brand/evolcore/evolcore-app-icon.svg +13 -0
  10. package/assets/brand/evolcore/evolcore-brand-board.png +0 -0
  11. package/assets/brand/evolcore/evolcore-brand-board.svg +126 -0
  12. package/assets/brand/evolcore/evolcore-logo-kit.zip +0 -0
  13. package/assets/brand/evolcore/evolcore-logo-reverse.png +0 -0
  14. package/assets/brand/evolcore/evolcore-logo-reverse.svg +14 -0
  15. package/assets/brand/evolcore/evolcore-logo.png +0 -0
  16. package/assets/brand/evolcore/evolcore-logo.svg +14 -0
  17. package/assets/brand/evolcore/evolcore-mark.png +0 -0
  18. package/assets/brand/evolcore/evolcore-mark.svg +10 -0
  19. package/bin/ec-safe-output.js +161 -0
  20. package/bin/ec.js +29 -0
  21. package/dist/agents/baseagent.js +163 -0
  22. package/dist/agents/claude-runner.js +2385 -0
  23. package/dist/agents/codex-app-server-client.js +448 -0
  24. package/dist/agents/codex-runner.js +2639 -0
  25. package/dist/agents/gemini-runner.js +666 -0
  26. package/dist/agents/runner-types.js +75 -0
  27. package/dist/aun/aid/agentmd.js +216 -0
  28. package/dist/aun/aid/client.js +132 -0
  29. package/dist/aun/aid/control-aid.js +91 -0
  30. package/dist/aun/aid/identity.js +518 -0
  31. package/dist/aun/aid/index.js +4 -0
  32. package/dist/aun/aid/store.js +74 -0
  33. package/dist/aun/aid/types.js +1 -0
  34. package/dist/aun/aid/validation.js +21 -0
  35. package/dist/aun/group-identity.js +10 -0
  36. package/dist/aun/msg/group-index.js +6 -0
  37. package/dist/aun/msg/group.js +1231 -0
  38. package/dist/aun/msg/history.js +123 -0
  39. package/dist/aun/msg/index.js +5 -0
  40. package/dist/aun/msg/p2p.js +393 -0
  41. package/dist/aun/msg/payload-type.js +27 -0
  42. package/dist/aun/msg/upload.js +137 -0
  43. package/dist/aun/outbox.js +160 -0
  44. package/dist/aun/rpc/caller.js +42 -0
  45. package/dist/aun/rpc/connection.js +25 -0
  46. package/dist/aun/rpc/index.js +2 -0
  47. package/dist/aun/service-proxy.js +225 -0
  48. package/dist/aun/storage/download.js +29 -0
  49. package/dist/aun/storage/index.js +3 -0
  50. package/dist/aun/storage/manage.js +10 -0
  51. package/dist/aun/storage/upload.js +68 -0
  52. package/dist/channels/aun.js +4147 -0
  53. package/dist/channels/daemon.js +422 -0
  54. package/dist/channels/dingtalk.js +649 -0
  55. package/dist/channels/feishu.js +1789 -0
  56. package/dist/channels/qqbot.js +409 -0
  57. package/dist/channels/wechat.js +817 -0
  58. package/dist/channels/wecom.js +565 -0
  59. package/dist/cli/agent-command.js +641 -0
  60. package/dist/cli/agent.js +1059 -0
  61. package/dist/cli/aun-commands.js +1948 -0
  62. package/dist/cli/bench.js +1228 -0
  63. package/dist/cli/cli-argv.js +66 -0
  64. package/dist/cli/code-stats.js +329 -0
  65. package/dist/cli/command-log.js +82 -0
  66. package/dist/cli/config-selector.js +69 -0
  67. package/dist/cli/config.js +261 -0
  68. package/dist/cli/ctl-command.js +62 -0
  69. package/dist/cli/daemon-commands.js +2887 -0
  70. package/dist/cli/fs-command.js +1447 -0
  71. package/dist/cli/handoff-command.js +302 -0
  72. package/dist/cli/help.js +31 -0
  73. package/dist/cli/index.js +358 -0
  74. package/dist/cli/init-channel.js +1377 -0
  75. package/dist/cli/init.js +553 -0
  76. package/dist/cli/link-rules.js +240 -0
  77. package/dist/cli/model.js +590 -0
  78. package/dist/cli/net-check.js +723 -0
  79. package/dist/cli/queue-command.js +126 -0
  80. package/dist/cli/response.js +345 -0
  81. package/dist/cli/restart-monitor.js +456 -0
  82. package/dist/cli/stats.js +607 -0
  83. package/dist/cli/task-context.js +80 -0
  84. package/dist/cli/trigger-command.js +505 -0
  85. package/dist/cli/version.js +88 -0
  86. package/dist/cli/watch-logs.js +33 -0
  87. package/dist/cli/watch-msg.js +673 -0
  88. package/dist/config/boot-log.js +266 -0
  89. package/dist/config/builtin-role-templates.js +30 -0
  90. package/dist/config/builtin-roles.js +85 -0
  91. package/dist/config/config-batch-get.js +11 -0
  92. package/dist/config/config-field-policy.js +261 -0
  93. package/dist/config/config-manager.js +916 -0
  94. package/dist/config/config-operation-service.js +384 -0
  95. package/dist/config/contact-book.js +371 -0
  96. package/dist/config/gateway-config.js +858 -0
  97. package/dist/config/lifecycle.js +17 -0
  98. package/dist/config/mention-mode.js +27 -0
  99. package/dist/config/merge.js +161 -0
  100. package/dist/config/owner-policy.js +4 -0
  101. package/dist/config/peer-role-resolver.js +139 -0
  102. package/dist/config/resolved-config-op.js +483 -0
  103. package/dist/config/role-config-v4-startup.js +32 -0
  104. package/dist/config/role-config-v5-startup.js +27 -0
  105. package/dist/config/role-schema.js +105 -0
  106. package/dist/config/role-service.js +159 -0
  107. package/dist/config/role-store.js +204 -0
  108. package/dist/config/roles.js +55 -0
  109. package/dist/config/schema-registry.js +154 -0
  110. package/dist/config/snapshot.js +598 -0
  111. package/dist/config-store.js +503 -0
  112. package/dist/core/auth/agent-delegation.js +111 -0
  113. package/dist/core/auth/auth-gateway.js +166 -0
  114. package/dist/core/auth/authenticated-actor.js +6 -0
  115. package/dist/core/auth/authorization-audit.js +110 -0
  116. package/dist/core/auth/operation-authorizer.js +718 -0
  117. package/dist/core/auth/operation-catalog.js +675 -0
  118. package/dist/core/baseagent-loader.js +54 -0
  119. package/dist/core/bootstrap-service.js +175 -0
  120. package/dist/core/capability/capability-manager.js +316 -0
  121. package/dist/core/capability/providers/claude-capability-provider.js +176 -0
  122. package/dist/core/capability/providers/codex-capability-provider.js +148 -0
  123. package/dist/core/capability/providers/gemini-capability-provider.js +10 -0
  124. package/dist/core/capability/types.js +27 -0
  125. package/dist/core/causation/audit.js +103 -0
  126. package/dist/core/causation/aun-association.js +111 -0
  127. package/dist/core/causation/context.js +93 -0
  128. package/dist/core/causation/index.js +4 -0
  129. package/dist/core/causation/types.js +2 -0
  130. package/dist/core/channel-loader.js +277 -0
  131. package/dist/core/command/agent-control.js +616 -0
  132. package/dist/core/command/cli-intent-parser.js +225 -0
  133. package/dist/core/command/command-handler.js +1638 -0
  134. package/dist/core/command/menu-handler.js +3354 -0
  135. package/dist/core/command/menu-protocol.js +247 -0
  136. package/dist/core/command/role-menu.js +1524 -0
  137. package/dist/core/command/slash-gate.js +148 -0
  138. package/dist/core/command/slash-handler.js +3056 -0
  139. package/dist/core/daemon-file-cache.js +216 -0
  140. package/dist/core/event-bus.js +32 -0
  141. package/dist/core/event-catalog.js +740 -0
  142. package/dist/core/evolagent-registry.js +546 -0
  143. package/dist/core/evolagent.js +331 -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 +657 -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 +803 -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 +1436 -0
  161. package/dist/core/message/message-utils.js +70 -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 +3776 -0
  166. package/dist/core/message/response-snapshot.js +83 -0
  167. package/dist/core/message/stream-debouncer.js +130 -0
  168. package/dist/core/message/stream-idle-monitor.js +124 -0
  169. package/dist/core/model/config-scope.js +162 -0
  170. package/dist/core/model/field-scope.js +78 -0
  171. package/dist/core/model/model-catalog.js +227 -0
  172. package/dist/core/model/model-diagnostics.js +182 -0
  173. package/dist/core/model/model-permission.js +90 -0
  174. package/dist/core/permission/approval-gateway.js +1017 -0
  175. package/dist/core/permission/ec-command-parser.js +347 -0
  176. package/dist/core/permission/execution-sandbox.js +16 -0
  177. package/dist/core/permission/index.js +6 -0
  178. package/dist/core/permission/mode.js +24 -0
  179. package/dist/core/permission/sandbox-runtime.js +265 -0
  180. package/dist/core/permission/tool-policy.js +987 -0
  181. package/dist/core/permission/unix-socket-policy.js +99 -0
  182. package/dist/core/protected-paths.js +330 -0
  183. package/dist/core/relation/peer-identity.js +222 -0
  184. package/dist/core/relation/peer-key.js +1 -0
  185. package/dist/core/role/runtime-policy.js +141 -0
  186. package/dist/core/session/adapters/claude-session-file-adapter.js +218 -0
  187. package/dist/core/session/adapters/codex-session-file-adapter.js +333 -0
  188. package/dist/core/session/adapters/gemini-session-file-adapter.js +181 -0
  189. package/dist/core/session/session-file-adapter.js +7 -0
  190. package/dist/core/session/session-file-health.js +45 -0
  191. package/dist/core/session/session-fs-store.js +232 -0
  192. package/dist/core/session/session-key.js +24 -0
  193. package/dist/core/session/session-manager.js +1587 -0
  194. package/dist/core/session/session-mapper.js +100 -0
  195. package/dist/core/session/session-renew.js +314 -0
  196. package/dist/core/session/session-title.js +128 -0
  197. package/dist/core/session/session-turn-coordinator.js +205 -0
  198. package/dist/core/session/session-turns.js +67 -0
  199. package/dist/core/system-channels.js +29 -0
  200. package/dist/eck/baseagent-caps.js +18 -0
  201. package/dist/eck/detect.js +47 -0
  202. package/dist/eck/group-rules-sync.js +345 -0
  203. package/dist/eck/init.js +77 -0
  204. package/dist/eck/kit-renderer.js +359 -0
  205. package/dist/eck/manifest-engine.js +446 -0
  206. package/dist/eck/message-renderer.js +199 -0
  207. package/dist/eck/rules-loader.js +28 -0
  208. package/dist/index.js +2870 -4
  209. package/dist/ipc.js +748 -0
  210. package/dist/paths.js +262 -0
  211. package/dist/product.js +18 -0
  212. package/dist/response-system/context-builder.js +71 -0
  213. package/dist/response-system/coordinator.js +117 -0
  214. package/dist/response-system/decision-executor.js +86 -0
  215. package/dist/response-system/engines/v1/index.js +21 -0
  216. package/dist/response-system/engines/v1/interactive-flow.js +27 -0
  217. package/dist/response-system/engines/v1/proactive-flow.js +137 -0
  218. package/dist/response-system/engines/v1/types.js +1 -0
  219. package/dist/response-system/extensions.js +41 -0
  220. package/dist/response-system/index.js +6 -0
  221. package/dist/response-system/modes/index.js +7 -0
  222. package/dist/response-system/modes/single-session/index.js +72 -0
  223. package/dist/response-system/queues/fifo-queue.js +44 -0
  224. package/dist/response-system/queues/index.js +6 -0
  225. package/dist/response-system/queues/lifo-queue.js +42 -0
  226. package/dist/response-system/queues/priority-queue.js +63 -0
  227. package/dist/response-system/registry.js +97 -0
  228. package/dist/response-system/resolver.js +37 -0
  229. package/dist/response-system/selector.js +23 -0
  230. package/dist/response-system/types.js +7 -0
  231. package/dist/stats/billing.js +151 -0
  232. package/dist/stats/budget.js +93 -0
  233. package/dist/stats/db.js +403 -0
  234. package/dist/stats/eck-vars.js +89 -0
  235. package/dist/stats/index.js +11 -0
  236. package/dist/stats/normalizer.js +80 -0
  237. package/dist/stats/price-resolver.js +138 -0
  238. package/dist/stats/query.js +763 -0
  239. package/dist/stats/role-budget.js +168 -0
  240. package/dist/stats/writer.js +151 -0
  241. package/dist/trigger/anomaly-store.js +258 -0
  242. package/dist/trigger/audit.js +152 -0
  243. package/dist/trigger/event-source.js +119 -0
  244. package/dist/trigger/feedback.js +685 -0
  245. package/dist/trigger/history.js +290 -0
  246. package/dist/trigger/manager.js +291 -0
  247. package/dist/trigger/parser.js +520 -0
  248. package/dist/trigger/patch.js +148 -0
  249. package/dist/trigger/scheduler.js +1600 -0
  250. package/dist/trigger/script-executor.js +155 -0
  251. package/dist/trigger/state.js +145 -0
  252. package/dist/trigger/types.js +1 -0
  253. package/dist/trigger/validation.js +621 -0
  254. package/dist/types.js +12 -0
  255. package/dist/utils/aid-bind.js +299 -0
  256. package/dist/utils/atomic-write.js +95 -0
  257. package/dist/utils/avatar-upload.js +123 -0
  258. package/dist/utils/cross-platform.js +297 -0
  259. package/dist/utils/ecweb-utils.js +73 -0
  260. package/dist/utils/error-dict.json +153 -0
  261. package/dist/utils/error-utils.js +349 -0
  262. package/dist/utils/instance-registry.js +437 -0
  263. package/dist/utils/locale.js +21 -0
  264. package/dist/utils/log-writer.js +224 -0
  265. package/dist/utils/logger.js +89 -0
  266. package/dist/utils/markdown-to-plain-text.js +20 -0
  267. package/dist/utils/media-cache.js +271 -0
  268. package/dist/utils/model-prices.jsonl +17 -0
  269. package/dist/utils/npm-ops.js +210 -0
  270. package/dist/utils/process-introspect.js +133 -0
  271. package/dist/utils/process-tree-stats.js +271 -0
  272. package/dist/utils/project-path.js +74 -0
  273. package/dist/utils/stats.js +410 -0
  274. package/dist/utils/tool-summary.js +284 -0
  275. package/dist/utils/welcome.js +268 -0
  276. package/kits/docs/GUIDE.md +20 -0
  277. package/kits/docs/INDEX.md +65 -0
  278. package/kits/docs/aun/CHEATSHEET.md +19 -0
  279. package/kits/docs/aun/SYNC_PROTOCOL.md +15 -0
  280. package/kits/docs/channels/aun.md +65 -0
  281. package/kits/docs/channels/feishu.md +56 -0
  282. package/kits/docs/context-assembly.md +366 -0
  283. package/kits/docs/eck_templates/GUIDE.template.md +22 -0
  284. package/kits/docs/eck_templates/INDEX.template.md +28 -0
  285. package/kits/docs/eck_templates/path-registry.template.md +33 -0
  286. package/kits/docs/eck_templates/runtime.template.md +19 -0
  287. package/kits/docs/evolcore/INDEX.md +66 -0
  288. package/kits/docs/evolcore/agent.md +69 -0
  289. package/kits/docs/evolcore/aid.md +49 -0
  290. package/kits/docs/evolcore/config.md +149 -0
  291. package/kits/docs/evolcore/ctl.md +46 -0
  292. package/kits/docs/evolcore/event.md +216 -0
  293. package/kits/docs/evolcore/fs-architecture.md +1215 -0
  294. package/kits/docs/evolcore/fs.md +101 -0
  295. package/kits/docs/evolcore/group-fs.md +17 -0
  296. package/kits/docs/evolcore/group-rules.md +226 -0
  297. package/kits/docs/evolcore/group.md +141 -0
  298. package/kits/docs/evolcore/model.md +47 -0
  299. package/kits/docs/evolcore/msg.md +130 -0
  300. package/kits/docs/evolcore/response.md +80 -0
  301. package/kits/docs/evolcore/rpc.md +35 -0
  302. package/kits/docs/evolcore/self-summary.md +29 -0
  303. package/kits/docs/evolcore/stats.md +70 -0
  304. package/kits/docs/evolcore/storage.md +49 -0
  305. package/kits/docs/evolcore/trigger.md +524 -0
  306. package/kits/docs/identity/AID_PROFILE_SPEC.md +26 -0
  307. package/kits/docs/identity/PATH_OPS.md +16 -0
  308. package/kits/docs/identity/ROLE_DETAIL.md +23 -0
  309. package/kits/docs/identity/identity-tools.md +26 -0
  310. package/kits/docs/path-registry.md +43 -0
  311. package/kits/docs/prompt-loading-architecture.md +266 -0
  312. package/kits/docs/venues/aun-group.md +45 -0
  313. package/kits/docs/venues/aun-private.md +10 -0
  314. package/kits/docs/venues/client-desktop.md +10 -0
  315. package/kits/docs/venues/client-mobile.md +10 -0
  316. package/kits/docs/venues/feishu-group.md +13 -0
  317. package/kits/docs/venues/feishu-private.md +9 -0
  318. package/kits/docs/venues/group.md +25 -0
  319. package/kits/docs/venues/private.md +10 -0
  320. package/kits/eck_manifest.auxiliary.json +43 -0
  321. package/kits/eck_manifest.json +191 -0
  322. package/kits/eck_message_manifest.json +63 -0
  323. package/kits/migrations/README-role-config-v4.md +32 -0
  324. package/kits/migrations/migrate-role-config-v4.mjs +623 -0
  325. package/kits/migrations/migrate-role-config-v5.mjs +346 -0
  326. package/kits/migrations/rename-config-file.mjs +99 -0
  327. package/kits/rules/01-overview.md +142 -0
  328. package/kits/rules/02-navigation.md +76 -0
  329. package/kits/rules/03-identity.md +34 -0
  330. package/kits/rules/04-relation.md +59 -0
  331. package/kits/rules/05-venue.md +44 -0
  332. package/kits/rules/06-channel.md +59 -0
  333. package/kits/schemas/_meta.json +29 -0
  334. package/kits/schemas/agent-config.schema.1.json +177 -0
  335. package/kits/schemas/agent-config.schema.2.json +239 -0
  336. package/kits/schemas/agent-config.schema.3.json +119 -0
  337. package/kits/schemas/agent-config.schema.4.json +208 -0
  338. package/kits/schemas/agent-config.schema.5.json +326 -0
  339. package/kits/schemas/contact-book.schema.1.json +36 -0
  340. package/kits/schemas/daemon.schema.1.json +90 -0
  341. package/kits/schemas/defaults.schema.1.json +81 -0
  342. package/kits/schemas/menu-exec-schema-commands.md +208 -0
  343. package/kits/schemas/migrations/README.md +28 -0
  344. package/kits/schemas/relation-config.schema.1.json +158 -0
  345. package/kits/schemas/relation-config.schema.2.json +73 -0
  346. package/kits/schemas/relation-config.schema.3.json +50 -0
  347. package/kits/schemas/relation-config.schema.4.json +47 -0
  348. package/kits/schemas/role-config.schema.1.json +200 -0
  349. package/kits/schemas/role-registry.schema.1.json +35 -0
  350. package/kits/schemas/single-session.schema.1.json +31 -0
  351. package/kits/templates/bootstrap-welcome.md +15 -0
  352. package/kits/templates/message-fragments/handoff-request-to-target.md +13 -0
  353. package/kits/templates/message-fragments/handoff-response-to-origin.md +10 -0
  354. package/kits/templates/message-fragments/inject-default.md +2 -0
  355. package/kits/templates/message-fragments/item.md +2 -0
  356. package/kits/templates/roles/admin.json +8 -0
  357. package/kits/templates/roles/member.json +40 -0
  358. package/kits/templates/roles/owner.json +8 -0
  359. package/kits/templates/roles/visitor.json +39 -0
  360. package/kits/templates/system-fragments/baseagent.md +14 -0
  361. package/kits/templates/system-fragments/bootstrap.md +16 -0
  362. package/kits/templates/system-fragments/channel.md +48 -0
  363. package/kits/templates/system-fragments/commands.md +26 -0
  364. package/kits/templates/system-fragments/identity.md +11 -0
  365. package/kits/templates/system-fragments/relation.md +19 -0
  366. package/kits/templates/system-fragments/session.md +53 -0
  367. package/kits/templates/system-fragments/venue.md +31 -0
  368. package/package.json +50 -15
  369. package/dist/index.d.ts +0 -7
  370. package/dist/index.d.ts.map +0 -1
  371. package/dist/index.js.map +0 -1
@@ -0,0 +1,268 @@
1
+ /**
2
+ * 统一的欢迎消息模块
3
+ *
4
+ * 包含欢迎消息生成、管理器和渠道帮助函数
5
+ *
6
+ * 设计:
7
+ * - AUN:connect 时发送给预配置的 owner(协议内建机制,P2P 主动推送)
8
+ * - 所有 IM 渠道(Feishu/WeChat/DingTalk/QQBot/WeCom):首次交互时发送给交互用户(被动响应)
9
+ */
10
+ import fs from 'fs';
11
+ import path from 'path';
12
+ import { resolvePaths } from '../paths.js';
13
+ import { loadAgent, saveAgent } from '../config-store.js';
14
+ import { withLifecycleForWrite } from '../config/lifecycle.js';
15
+ import { logger } from './logger.js';
16
+ // ============================================================================
17
+ // 欢迎消息生成
18
+ // ============================================================================
19
+ /**
20
+ * 生成统一的欢迎消息文本
21
+ */
22
+ export function generateWelcomeMessage(options) {
23
+ const channelDesc = getChannelDescription(options.channelType);
24
+ const greeting = options.ownerName
25
+ ? `👋 你好,${options.ownerName}!`
26
+ : '👋 你好!';
27
+ const agentIntro = options.agentName
28
+ ? `我是 ${options.agentName},你的 AI Agent 网关。`
29
+ : '我是您的 AI Agent 网关。';
30
+ const channelInfo = `已成功连接到${channelDesc}。`;
31
+ const channelSpecificNote = getChannelSpecificNote(options.channelType);
32
+ const bindingNote = options.includeBindingNote
33
+ ? `\n\n🔐 **绑定说明**:\n- 这条消息表示您的设备已和此 Agent 绑定\n- 只有您能看到和使用这个 Agent\n- AUN 提供端到端加密和跨设备同步`
34
+ : '';
35
+ return `🎉 欢迎使用 EvolCore!
36
+
37
+ ${greeting}
38
+
39
+ ${agentIntro}${channelInfo}
40
+
41
+ 📋 **日常使用方法**:
42
+
43
+ 1. **查看帮助**:发送 \`/help\` 查看所有可用命令
44
+ 2. **查看状态**:发送 \`/status\` 查看当前会话状态
45
+ 3. **会话管理**:发送 \`/session\` 查看和切换会话
46
+
47
+ 💡 **提示**:
48
+ - 直接发送消息即可与 Claude/Codex 对话
49
+ - 支持多会话管理,每个会话独立上下文
50
+ - 所有命令以 \`/\` 开头${channelSpecificNote}${bindingNote}
51
+
52
+ 现在就可以开始工作了!`;
53
+ }
54
+ /**
55
+ * 生成简化版欢迎消息(用于快速场景)
56
+ */
57
+ export function generateQuickWelcome(channelType, agentName) {
58
+ const channelDesc = getChannelDescription(channelType);
59
+ const intro = agentName ? `${agentName} 已连接` : '已连接';
60
+ return `👋 ${intro}到${channelDesc}!\n发送 /help 查看可用命令。`;
61
+ }
62
+ /**
63
+ * 生成 init 完成后的控制台提示消息
64
+ */
65
+ export function generateInitSuccessMessage(channelType, hasOwner) {
66
+ const channelName = getChannelDescription(channelType);
67
+ // AUN 在 connect 时向 owner 发送欢迎消息
68
+ if (hasOwner && channelType === 'aun') {
69
+ return `\n💡 提示:首次启动时会向 owner 发送欢迎消息
70
+ 启动服务: ec start`;
71
+ }
72
+ // Feishu 虽然有 owner,但已改为首次交互发送(与其他 IM 统一)
73
+ if (hasOwner && channelType === 'feishu') {
74
+ return `\n💡 提示:首次用户交互时会发送欢迎消息
75
+ 启动服务: ec start`;
76
+ }
77
+ // 其他 IM 渠道:首次交互发送
78
+ if (hasOwner) {
79
+ return `\n💡 提示:${channelName}渠道已配置
80
+ 启动服务: ec start`;
81
+ }
82
+ const ownerHint = channelType === 'aun'
83
+ ? ` 配置 owner: ec init ${channelType}`
84
+ : ' 配置 owner: 在 agent config.json 的 owners 中写入 AID;非 AUN 渠道身份写入 contact.json';
85
+ // 无 owner 的渠道
86
+ return `\n💡 提示:${channelName}渠道已配置
87
+ 启动服务: ec start
88
+ ${ownerHint}`;
89
+ }
90
+ /**
91
+ * 获取渠道的中文描述
92
+ */
93
+ function getChannelDescription(channelType) {
94
+ switch (channelType) {
95
+ case 'aun':
96
+ return 'AUN 网络';
97
+ case 'feishu':
98
+ return '飞书';
99
+ case 'wechat':
100
+ return '微信';
101
+ case 'dingtalk':
102
+ return '钉钉';
103
+ case 'qqbot':
104
+ return 'QQ';
105
+ case 'wecom':
106
+ return '企业微信';
107
+ default:
108
+ return '未知渠道';
109
+ }
110
+ }
111
+ /**
112
+ * 获取渠道特定的额外说明
113
+ */
114
+ function getChannelSpecificNote(channelType) {
115
+ switch (channelType) {
116
+ case 'aun':
117
+ return '\n- AUN 提供端到端加密和跨设备同步';
118
+ case 'feishu':
119
+ return '\n- 群聊中使用 @机器人 来触发对话';
120
+ case 'wechat':
121
+ return '';
122
+ case 'dingtalk':
123
+ return '\n- 群聊中使用 @机器人 来触发对话';
124
+ case 'qqbot':
125
+ return '\n- 群聊中使用 @机器人 来触发对话';
126
+ case 'wecom':
127
+ return '';
128
+ default:
129
+ return '';
130
+ }
131
+ }
132
+ // ============================================================================
133
+ // 欢迎消息管理器
134
+ // ============================================================================
135
+ /**
136
+ * 标记 agent 已初始化
137
+ */
138
+ export function markAgentInitialized(agentAid) {
139
+ const agentConfig = loadAgent(agentAid);
140
+ if (agentConfig) {
141
+ saveAgent(withLifecycleForWrite(agentConfig, 'active'));
142
+ logger.info(`[WelcomeManager] Marked ${agentAid} lifecycle=active`);
143
+ }
144
+ }
145
+ /**
146
+ * 首次交互欢迎消息管理器(用于所有 IM 渠道:Feishu/WeChat/DingTalk/QQBot/WeCom)
147
+ */
148
+ export class FirstInteractionWelcomeManager {
149
+ channelType;
150
+ agentAid;
151
+ channelName;
152
+ greetedUsersFile;
153
+ greetedUsers = new Set();
154
+ initializedCache = null; // 缓存 initialized 状态,避免重复 I/O
155
+ constructor(channelType, agentAid, channelName) {
156
+ this.channelType = channelType;
157
+ this.agentAid = agentAid;
158
+ this.channelName = channelName;
159
+ // 每个 channel instance 独立的已欢迎用户记录
160
+ this.greetedUsersFile = path.join(resolvePaths().dataDir, `${channelType}-greeted-${channelName}.jsonl`);
161
+ this.loadGreetedUsers();
162
+ }
163
+ /**
164
+ * 检查是否应该向该用户发送欢迎消息
165
+ */
166
+ shouldGreet(userId) {
167
+ // 懒加载并缓存 initialized 状态(避免每条消息都读取磁盘)
168
+ if (this.initializedCache === null) {
169
+ const agentConfig = loadAgent(this.agentAid);
170
+ this.initializedCache = agentConfig?.lifecycle === 'active';
171
+ }
172
+ // Agent 已初始化 → 所有用户都不需要欢迎消息
173
+ if (this.initializedCache) {
174
+ return false;
175
+ }
176
+ // 该用户未被欢迎过
177
+ return !this.greetedUsers.has(userId);
178
+ }
179
+ /**
180
+ * 生成欢迎消息文本
181
+ */
182
+ generateWelcomeText() {
183
+ const agentName = this.agentAid.split('.')[0];
184
+ return generateWelcomeMessage({
185
+ channelType: this.channelType,
186
+ agentName,
187
+ });
188
+ }
189
+ /**
190
+ * 标记用户已被欢迎
191
+ */
192
+ markGreeted(userId) {
193
+ if (this.greetedUsers.has(userId))
194
+ return;
195
+ this.greetedUsers.add(userId);
196
+ this.persistGreetedUser(userId);
197
+ // 首个用户被欢迎后,标记 agent 已初始化
198
+ if (this.greetedUsers.size === 1) {
199
+ markAgentInitialized(this.agentAid);
200
+ }
201
+ }
202
+ /**
203
+ * 持久化已欢迎用户到文件
204
+ */
205
+ persistGreetedUser(userId) {
206
+ try {
207
+ const record = { userId, timestamp: Date.now() };
208
+ fs.appendFileSync(this.greetedUsersFile, JSON.stringify(record) + '\n', 'utf-8');
209
+ }
210
+ catch (e) {
211
+ logger.warn(`[WelcomeManager] Failed to persist greeted user: ${e}`);
212
+ }
213
+ }
214
+ /**
215
+ * 从文件加载已欢迎用户列表
216
+ */
217
+ loadGreetedUsers() {
218
+ if (!fs.existsSync(this.greetedUsersFile))
219
+ return;
220
+ try {
221
+ const content = fs.readFileSync(this.greetedUsersFile, 'utf-8');
222
+ const lines = content.split('\n').filter(Boolean);
223
+ for (const line of lines) {
224
+ try {
225
+ const { userId } = JSON.parse(line);
226
+ if (userId)
227
+ this.greetedUsers.add(userId);
228
+ }
229
+ catch {
230
+ // 忽略损坏的行
231
+ }
232
+ }
233
+ if (this.greetedUsers.size > 0) {
234
+ logger.debug(`[WelcomeManager] Loaded ${this.greetedUsers.size} greeted users for ${this.channelName}`);
235
+ }
236
+ }
237
+ catch (e) {
238
+ logger.warn(`[WelcomeManager] Failed to load greeted users: ${e}`);
239
+ }
240
+ }
241
+ }
242
+ // ============================================================================
243
+ // 渠道帮助函数
244
+ // ============================================================================
245
+ /**
246
+ * 初始化欢迎消息管理器(同步方式,避免竞态条件)
247
+ */
248
+ export function initWelcomeManager(channelType, agentAid, channelName) {
249
+ return new FirstInteractionWelcomeManager(channelType, agentAid, channelName);
250
+ }
251
+ /**
252
+ * 发送欢迎消息(如果需要)
253
+ *
254
+ * @param welcomeManager 欢迎消息管理器实例
255
+ * @param userId 用户 ID
256
+ * @param channelId 渠道 ID(消息发送目标)
257
+ * @param sendMessage 发送消息的函数
258
+ * @param channelName 渠道名称(用于日志)
259
+ * @returns 是否发送了欢迎消息
260
+ */
261
+ export async function sendWelcomeIfNeeded(welcomeManager, userId, channelId, sendMessage, channelName) {
262
+ void welcomeManager;
263
+ void userId;
264
+ void channelId;
265
+ void sendMessage;
266
+ void channelName;
267
+ return false;
268
+ }
@@ -0,0 +1,20 @@
1
+ # 文档查阅指南
2
+
3
+ ## 查阅流程
4
+
5
+ 1. 先看 `$KITS_RULES`(自动加载的 6 个规则文件 01-06)了解机制骨架
6
+ 2. 需要详细信息时,按 `INDEX.md` 找到对应文档路径
7
+ 3. Read 对应文档
8
+
9
+ ## 路径解析
10
+
11
+ 文档中用 `$名称` 引用路径。解析步骤:
12
+ 1. 查 `$KITS_RULES/02-navigation.md` 的路径体系速查表
13
+ 2. 如需完整定义,Read `$KITS_DOCS/path-registry.md`
14
+ 3. 如需运行时实际值,Read `$ECK/path-registry.md`
15
+
16
+ ## 不要做的事
17
+
18
+ - 不要一次性加载所有文档——按需逐个 Read
19
+ - 不要猜测路径——查注册表
20
+ - 不要在当前会话输出对外消息——用 CLI
@@ -0,0 +1,65 @@
1
+ # EvolCore 文档索引
2
+
3
+ 本文件是 `$KITS_DOCS` 下所有文档的索引。
4
+
5
+ ## 路径与机制
6
+
7
+ | 文档 | 路径 | 说明 |
8
+ |------|------|------|
9
+ | 查阅指南 | `GUIDE.md` | 文档查阅流程 |
10
+ | 路径定义 | `path-registry.md` | 所有预定义路径及派生规则 |
11
+ | 上下文组装机制 | `context-assembly.md` | manifest 装配机制:when 条件/合并覆盖/模板渲染/运行时变量/调试输出 |
12
+
13
+ ## AUN 协议
14
+
15
+ | 文档 | 路径 | 说明 |
16
+ |------|------|------|
17
+ | 速查表 | `aun/CHEATSHEET.md` | AUN 协议命名空间与常用操作速查 |
18
+ | 同步协议 | `aun/SYNC_PROTOCOL.md` | 上游协议同步 SOP |
19
+
20
+ ## EvolCore 命令
21
+
22
+ 所有 `ec` 命令集的专属目录(用途/触发词/适用场景/文档)见 `evolcore/INDEX.md`。
23
+ 运行时由 `commands` fragment 按场景注入精简能力卡。
24
+
25
+ | 文档 | 路径 | 说明 |
26
+ |------|------|------|
27
+ | 命令集目录 | `evolcore/INDEX.md` | msg/group/agent/aid/storage/ctl/rpc/bench 全集索引 |
28
+
29
+ ## 身份
30
+
31
+ | 文档 | 路径 | 说明 |
32
+ |------|------|------|
33
+ | 身份工具 | `identity/identity-tools.md` | 身份识别与环境层工具 |
34
+ | 角色详情 | `identity/ROLE_DETAIL.md` | 角色与场景详细规则 |
35
+ | AID 档案规范 | `identity/AID_PROFILE_SPEC.md` | AID 档案格式规范 |
36
+ | 路径运维 | `identity/PATH_OPS.md` | 路径运维操作 |
37
+
38
+ ## 渠道(知识文档·按需加载,不依赖当前渠道)
39
+
40
+ | 文档 | 路径 | 说明 |
41
+ |------|------|------|
42
+ | AUN 渠道 | `channels/aun.md` | AUN 渠道配置、参数与特有机制(网关发现/E2EE/群 ID/证书链) |
43
+ | 飞书渠道 | `channels/feishu.md` | 飞书渠道配置、参数与特有机制(appId/合并转发/卡片/user_id) |
44
+
45
+ ## 触发器
46
+
47
+ | 文档 | 路径 | 说明 |
48
+ |------|------|------|
49
+ | Trigger 命令手册 | `evolcore/trigger.md` | 创建、管理、运行定时与事件 trigger |
50
+ | EventBus 事件目录 | `evolcore/event.md` | event source 可监听事件、payload、filter 与循环防护规则 |
51
+
52
+ ## ECK 模板
53
+
54
+ | 文档 | 路径 | 说明 |
55
+ |------|------|------|
56
+ | 运行时配置模板 | `eck_templates/runtime.template.md` | agent 运行时配置模板 |
57
+ | 路径注册表模板 | `eck_templates/path-registry.template.md` | 路径实例模板 |
58
+ | 索引模板 | `eck_templates/INDEX.template.md` | agent 级索引模板 |
59
+ | 指南模板 | `eck_templates/GUIDE.template.md` | agent 级查阅指南模板 |
60
+
61
+ ## Base Agent
62
+
63
+ | 文档 | 路径 | 说明 |
64
+ |------|------|------|
65
+ | Claude Code 日志 | `baseagent/cc-logs.md` | CC 会话日志查阅(找完整对话/工具调用/注入) |
@@ -0,0 +1,19 @@
1
+ # AUN 协议速查表
2
+
3
+ ## 命名空间
4
+
5
+ | 命名空间 | 作用 |
6
+ |---|---|
7
+ | `auth.*` | AID 创建、认证、JWT |
8
+ | `message.*` | 点对点消息收发 |
9
+ | `group.*` | 群组生命周期、群消息 |
10
+ | `storage.*` | 文件上传下载 |
11
+ | `stream.*` | 实时流(语音/视频/token) |
12
+ | `meta.*` | ping、状态、信任根查询 |
13
+ | `nameservice.*` | AID 名字注册查询 |
14
+ | `custody.*` | AID 托管 |
15
+ | `peer.*` / `relay.*` | 直连/中继认证 |
16
+
17
+ ## Group 使用入口
18
+
19
+ 日常群操作使用 `ec group`,详见 `evolcore/group.md`。群文件使用 `ec fs`,详见 `evolcore/fs.md`。
@@ -0,0 +1,15 @@
1
+ # AUN 协议同步 SOP
2
+
3
+ <!-- TODO: 填充上游协议同步流程 -->
4
+
5
+ ## 同步时机
6
+
7
+ - AUN SDK 有新版本发布时
8
+ - 协议文档有重大变更时
9
+
10
+ ## 同步步骤
11
+
12
+ 1. 拉取上游最新协议文档
13
+ 2. 对比本地认知包与上游差异
14
+ 3. 更新 `$KITS_RULES/04-aun.md` 和 `$KITS_DOCS/aun/` 下相关文档
15
+ 4. 更新索引
@@ -0,0 +1,65 @@
1
+ # AUN 渠道
2
+
3
+ > 知识性文档:AUN 渠道的配置、参数与特有机制。**不依赖当前会话渠道**——任意会话都可按需 Read。
4
+ > 运行时"怎么发消息"由注入的 `[channel]` 段决定(aun 渠道用 `ec msg send` / `ec group send`),不在本文。
5
+ > 群聊使用 `evolcore/group.md`;群文件使用 `evolcore/fs.md`。
6
+
7
+ ## 概述
8
+
9
+ AUN 渠道把 agent 接入 AUN(Agent Union Network),对端以 **AID** 为身份标识(既是身份也是地址)。evolcore 通过 AUN SDK(`@agentunion/fastaun`)维护到 Gateway 的 WebSocket 长连接,支持私聊、群聊、文件、E2EE 加密。
10
+
11
+ ## 配置
12
+
13
+ AUN 渠道是**隐式**的——它不写在 `channels[]` 数组里,而是从 agent 自身的 AID 自动创建。一个 agent 就是一个 AID,启动时 evolcore 用顶层 `aid` 字段隐式构造唯一的 aun 实例(`channel-loader.ts`)。所以真实的 agent config.json 里 `channels` 数组通常是空的(飞书等非 aun 渠道才往里加)。
14
+
15
+ ### agent 配置(`agents/<aid>/config.json`)
16
+
17
+ ```json
18
+ {
19
+ "$schema_version": 1,
20
+ "aid": "myagent.agentid.pub",
21
+ "enabled": true,
22
+ "owners": ["owner.agentid.pub"],
23
+ "channels": [],
24
+ "active_baseagent": "claude"
25
+ }
26
+ ```
27
+
28
+ | 字段 | 说明 |
29
+ |------|------|
30
+ | `aid` | agent 的 AID,**即 aun 渠道身份**(隐式创建,无需在 channels[] 声明) |
31
+ | `enabled` | agent 是否启用 |
32
+ | `owners` | owner 的 **AID** 列表(最高权限);首个 owner 用于首次连接发欢迎消息 |
33
+ | `admins` | admin 的 AID 列表 |
34
+ | `channels` | 非 aun 渠道(飞书等)的实例数组;aun 不在此 |
35
+
36
+ > `owners`/`admins` 用 **AID**,不是渠道原生 ID。
37
+
38
+ ### 进程级配置(`$EVOLCORE_HOME/config.json`)
39
+
40
+ E2EE 加密种子是**进程级**的,所有 agent 共享,不在 agent config 里:
41
+
42
+ ```json
43
+ {
44
+ "aun": {
45
+ "encryptionSeed": "<seed>"
46
+ }
47
+ }
48
+ ```
49
+
50
+ 留空时 SDK 依次回退 `AUN_ENCRYPTION_SEED` 环境变量 → 默认 `'evol'`。
51
+
52
+ > Gateway 不在配置里手填:连接时从 AID 自动发现(见下)。Keystore 默认落在 `$EVOLCORE_HOME`。
53
+
54
+ ## 特有机制
55
+
56
+ - **隐式创建**:aun 渠道由顶层 `aid` 派生,无独立配置实例;这是它与飞书等渠道最大的不同。
57
+ - **网关发现**:连接前查询 `https://<aid>/.well-known/aun-gateway` 获取网关地址(AID 本身即域名);per-agent 流程不提供手填 gateway 的入口,发现失败即连接失败。
58
+ - **身份与信任**:每条入站消息携带发送者 AID,经四级 X.509 证书链(Root CA → Registry CA → Issuer CA → Agent)验签。
59
+ - **agent.md 缓存**:对端名片 `https://<aid>/agent.md` 由 **AUN SDK 自动拉取并缓存**(`AgentMdManager`,带 ETag/TTL,默认 1 天内不重复探测)。缓存落在 **`$EVOLCORE_HOME/AIDs/<aid>/`**,每个 AID 两个文件:`agent.md`(带签名正文)+ `agentmd.json`(元数据:etag/last_modified/checked_at/verify_status)。本端与对端的 agent.md 都缓存于此。
60
+ - 关系层另存一份**派生**的精简身份 `relations/<peerKey>/peer-identity.json`(type/isAgent/name),由 evolcore 从 agent.md 提取,不是 agent.md 本体。
61
+ - **E2EE 加密**:可选端到端加密,回复默认跟随对端消息加密状态(密文回密文,明文回明文);种子由进程级 `aun.encryptionSeed` 提供。
62
+ - **断线重连**:SDK 内置退避策略自动重连。实时连接状态用 `ec watch aid` 查看(`ec aid` 是身份/证书管理,不显示连接状态)。
63
+ - **群 ID 格式**:当前协议规范使用 `g-{slug}.issuer-domain` canonical 形式,输入也可接受本域简写 `g-{slug}` 或兼容形式 `g-{slug}@issuer-domain`。历史会话里可能仍出现 `group.{issuer}/{group_no}` 一类旧格式,运行时需兼容读取。
64
+ - **群分发模式**:`dispatch_mode=broadcast|mention` 是群级配置,只决定哪些群消息进入 Agent LLM 上下文,不影响 AUN 协议层投递;被过滤消息仍应本地存档。
65
+ - **身份体系**:对端以 AID 标识,关系层 peerKey 形如 `aun#alice.aid.pub`。
@@ -0,0 +1,56 @@
1
+ # 飞书渠道
2
+
3
+ > 知识性文档:飞书渠道的配置、参数与特有机制。**不依赖当前会话渠道**——任意会话都可按需 Read(在 aun 会话里也可查飞书)。
4
+ > 运行时"怎么发消息"由注入的 `[channel]` 段决定(飞书是 evolcore 自动回复,agent 不调 CLI),不在本文。
5
+
6
+ ## 概述
7
+
8
+ 飞书渠道通过 evolcore 的 feishu channel 插件接入,对端以飞书 `user_id`(如 `ou_xxx`)为身份标识。支持单聊/群聊收发、合并转发解析、富文本卡片、文件/图片/视频消息。
9
+
10
+ ## 配置
11
+
12
+ 飞书渠道按 **per-agent** 配置,写在 `agents/<aid>/config.json` 的 `channels` 数组里。每个元素是一个独立实例,靠 `name` 区分;同一 agent 可配多个飞书实例。
13
+
14
+ ```json
15
+ {
16
+ "aid": "myagent.aid.pub",
17
+ "channels": [
18
+ {
19
+ "type": "feishu",
20
+ "name": "main",
21
+ "enabled": true,
22
+ "appId": "cli_xxx",
23
+ "appSecret": "<app-secret>",
24
+ "owners": ["ou_owner_user_id"],
25
+ "admins": ["ou_admin_user_id"]
26
+ }
27
+ ]
28
+ }
29
+ ```
30
+
31
+ ### 实例字段
32
+
33
+ | 字段 | 必填 | 说明 |
34
+ |------|------|------|
35
+ | `type` | 是 | 固定 `"feishu"` |
36
+ | `name` | 是(数组形式) | 该 agent 内飞书实例的本地标识,不含 `#` |
37
+ | `enabled` | 否 | 默认启用;`false` 关闭该实例 |
38
+ | `appId` | 是 | 飞书自建应用 App ID |
39
+ | `appSecret` | 是 | 飞书自建应用 App Secret |
40
+ | `owners` | 否 | owner 的飞书 `user_id` 列表(最高权限) |
41
+ | `admins` | 否 | admin 的飞书 `user_id` 列表 |
42
+ | `flushDelay` | 否 | flush 间隔(秒),覆盖全局值 |
43
+ | `debounce` | 否 | 入站消息去抖间隔(秒),覆盖全局值 |
44
+ | `showActivities` | 否 | 思考过程展示范围:`all` / `dm-only` / `owner-dm-only` / `none` |
45
+
46
+ > `owners`/`admins` 用飞书原生 `user_id`,**不是 AID**。
47
+
48
+ agent 级(config.json 顶层)相关开关:
49
+ - `enable_rich_content`:已废弃,仅为旧配置兼容保留;飞书继续按 Markdown/post 消息发送。
50
+
51
+ ## 特有机制
52
+
53
+ - **合并转发解析**:飞书的 `merge_forward` 消息会被自动展开为文本注入上下文(含"以下是引用的原消息"包裹)。
54
+ - **交互卡片**:命令和交互请求可使用飞书卡片发送;卡片按钮**仅发起者可操作**,他人点击返回提示。
55
+ - **身份体系**:对端以 `user_id` 标识,关系层 peerKey 形如 `feishu#ou_xxx`。
56
+ - **自动回复**:飞书是非 aun 渠道,回复由 evolcore 自动完成,agent 无需调用 `ec msg send`。