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
package/README.md CHANGED
@@ -1,34 +1,338 @@
1
1
  # EvolCore
2
2
 
3
- Core utilities and abstractions for EvolClaw ecosystem.
3
+ > AI Agent 统一网关 —— 连接 IM、终端、Agent 网络
4
4
 
5
- ## Installation
5
+ EvolCore 是一个轻量级 AI Agent 网关系统。它为 Claude Code / Codex 等 Coding Agent 提供统一接入层,使其作为通用基座 Agent,接入到飞书、微信、钉钉、QQ频道、企业微信等多种 IM 通道,以及 AUN 多智能体网络。人类可以通过手机 IM 随时接力开发,其他 Agent 也可以通过 AUN 网络直接调用你的 Agent —— 不只是人机交互,也是 Agent 间协作的基础设施。
6
+
7
+ ## 核心特性
8
+
9
+ - 🔄 **多端会话接力**:跨终端共享会话、环境、项目,无缝切换开发体验
10
+ - ♻️ **配置自动继承**:复用 CLI 环境的 API Key/URL、记忆文件、MCP/Skills 插件,零额外配置
11
+ - 🚀 **轻量化设计**:进程模式运行,CLI 命令行管理,无端口开放,无容器依赖,无 UI 界面
12
+ - 🌐 **多渠道接入**:Channel Adapter 模式,飞书 + 微信 + 钉钉 + QQ频道 + 企业微信 + AUN 网络
13
+ - 🤖 **Agent 间互联**:通过 AUN 网络,你的 Agent 可被其他 Agent 发现和调用
14
+ - 🔐 **分层权限**:进程 owner、agent owner/admin、关系 member/visitor/自定义角色分层,多用户安全隔离
15
+ - 🛠️ **Agent 自管理**:Agent 可通过 CLI 命令自主管理运行时(查看状态、切换模型、调整配置等)
16
+ - 📦 **项目搬家**:`ec mv` 一键迁移项目目录,保留 Claude/Codex/EvolCore 全部会话历史
17
+ - 💾 **会话与队列持久化**:会话数据与 CLI 工具共享,队列状态持久化存储,服务重启不丢失,支持 `/queue` 命令查看队列状态
18
+ - ⚡ **执行中插入**:任务执行中可发送新消息,自动中断当前任务并处理新请求
19
+ - 🔕 **消息智能发送**:前台任务动态聚合批量发送,后台任务静默完成后通知
20
+ - 🧩 **Agent 多实例**:一个 JSON 文件定义一个 Agent,多 Agent 并发运行,Agent 运行时隔离 + 热重载无需重启
21
+ - ⏰ **Trigger 自主任务**:Agent 可设置延迟/定时/周期任务,cron 表达式支持,独立 silent session 执行,支持脚本模式和 prompt 模式
22
+ - 🔧 **Daemon 模块**:系统级后台服务,管理升级检查、全局触发器等跨 Agent 任务
23
+ - 🎯 **Agent 启动引导**:首次启动自动引导配置 AID、owners、channels,降低上手门槛
24
+ - 🎭 **主动模式策略**:proactive 模式下智能判断响应时机,群聊支持静默策略,避免无效打扰
25
+ - 🎴 **交互卡片体系**:CommandCard + ActionInteraction,Feishu 与 AUN 统一支持
26
+
27
+ ## 适合场景
28
+
29
+ - **通勤路上**:手机打开飞书,继续昨晚的代码 review,到公司无缝切回终端
30
+ - **会议间隙**:微信快速问一句「这个接口的返回格式是什么」,Agent 直接查代码回复
31
+ - **Agent 协作**:通过 AUN 网络,让你的 Agent 被其他 Agent 调用,组成分布式协作
32
+ - **外出离开工位**:不带电脑也能通过 IM 给 Agent 下达任务,回来看结果
33
+ - **团队协作**:拉个飞书群,成员共享同一个 Agent 会话,一起讨论和调试
34
+
35
+ ## 系统架构
36
+
37
+ ```
38
+ 消息渠道层 → 消息队列层 → 命令处理层 → 消息处理层 → 会话管理层 → 存储层
39
+ ```
40
+
41
+ ### 核心组件
42
+
43
+ 1. **消息渠道层** (`src/channels/`) - Feishu + WeChat + DingTalk + QQBot + WeCom + AUN 网络
44
+ 2. **消息队列层** (`src/core/message/message-queue.ts`) - 会话级串行处理 + 中断支持
45
+ 3. **命令处理层** (`src/core/command/`) - 斜杠命令处理(slash-handler / menu-handler / command-handler)
46
+ 4. **消息处理层** (`src/core/message/message-processor.ts`) - 统一事件处理引擎
47
+ 5. **会话管理层** (`src/core/session/session-manager.ts`) - 多项目会话管理
48
+ 6. **交互路由层** (`src/core/interaction-router.ts`) - 卡片交互回调注册与路由
49
+ 7. **会话存储层** - JSONL 文件(CLI 共用)+ 文件系统(每 chat 一个目录,含 active.json / meta_*.jsonl / messages.jsonl / health.jsonl)
50
+
51
+ ### 消息流转
6
52
 
7
- ```bash
8
- npm install evolcore
9
53
  ```
54
+ 用户发送消息
55
+
56
+ Channel.onMessage
57
+
58
+ 检查命令 → 是 → CommandHandler.handle() → 立即响应(绕过队列)
59
+ ↓ 否
60
+ MessageQueue.enqueue(streamKey, message)
61
+
62
+ 检测正在处理 → 是 → 触发中断 → AgentRunner.interrupt()
63
+ ↓ 否 ↓
64
+ MessageQueue.processNext() ←──────────────┘
65
+
66
+ MessageProcessor.processMessage()
67
+
68
+ ├─ 解析会话和项目路径
69
+ ├─ 创建 StreamFlusher(3 秒批量发送)
70
+ ├─ AgentRunner.runQuery() → 事件流
71
+ ├─ 处理事件(tool_use / text / result)
72
+ ├─ 提取文件标记(Feishu)
73
+ └─ 发送最终响应
74
+ ```
75
+
76
+ ## 快速开始
10
77
 
11
- ## Usage
78
+ ### 环境要求
12
79
 
13
- ```typescript
14
- import { version } from 'evolcore';
80
+ - **操作系统**:macOS / Linux / Windows
81
+ - **Node.js** >= 18
82
+ - **Claude Code** >= 2.1.32(`npm install -g @anthropic-ai/claude-code`)
15
83
 
16
- console.log(`EvolCore version: ${version}`);
84
+ ### 1. 安装
85
+
86
+ **npm 全局安装**(推荐):
87
+
88
+ ```bash
89
+ npm install -g evolcore
17
90
  ```
18
91
 
19
- ## Development
92
+ > **Windows 用户**:首次运行前可能需要执行 `Set-ExecutionPolicy RemoteSigned -Scope CurrentUser`
93
+
94
+ **从源码安装**:
20
95
 
21
96
  ```bash
22
- # Build
97
+ git clone https://github.com/eLeanwang/evolcore.git
98
+ cd evolcore
99
+ npm install
23
100
  npm run build
101
+ npm link
102
+ ```
103
+
104
+ ### 2. 初始化
105
+
106
+ ```bash
107
+ # 完整初始化(选择飞书或微信)
108
+ ec init
109
+
110
+ # 单独配置飞书(扫码登录)
111
+ ec init feishu
112
+
113
+ # 单独配置微信(扫码登录)
114
+ ec init wechat
115
+
116
+ # 单独配置钉钉(扫码登录)
117
+ ec init dingtalk
118
+
119
+ # 单独配置 QQ 频道(扫码登录)
120
+ ec init qqbot
121
+
122
+ # 单独配置企业微信(手动输入 Bot ID + Secret)
123
+ ec init wecom
124
+
125
+ # 单独配置 AUN(Mesh 网络通道)
126
+ ec init aun
127
+ ```
128
+
129
+ 交互式引导完成以下配置:
130
+ - 环境检查(Node.js >= 22、claude CLI、SDK 版本)
131
+ - 渠道选择(飞书/微信)并扫码登录
132
+ - 默认项目路径
133
+ - 模型选择(sonnet/opus/haiku)
134
+ - owner 配置:默认走 **Evol App 扫码绑定**,若无 Evol App 可手工录入 AID 兜底
135
+ - 自动写入 `EVOLCORE_HOME` 到 shell profile(Unix)或用户环境变量(Windows)
136
+
137
+ 配置文件生成在 `{EVOLCORE_HOME}/data/daemon.json`(默认 `~/.evolcore/data/daemon.json`)。
138
+
139
+ ### 补充配置(可选)
140
+
141
+ 以下参数不包含在 `ec init` 交互流程中,需要手动编辑 `daemon.json`:
142
+
143
+ ```jsonc
144
+ {
145
+ "projects": {
146
+ "autoCreate": true // 绑定不存在的项目路径时自动创建目录
147
+ },
148
+ "idleMonitor": {
149
+ "enabled": true, // 任务超时监控开关
150
+ "timeout": 120, // 超时阈值(秒),默认 120 秒
151
+ "safeModeThreshold": 3 // 连续超时 N 次后进入安全模式(设为 0 禁用安全模式)
152
+ },
153
+ "flushDelay": 4 // 工具活动消息聚合发送间隔(秒),默认 4 秒
154
+ }
155
+ ```
24
156
 
25
- # Watch mode
157
+ **API 继承机制**:`agents.claude` 整个 section 可省略,系统自动按以下优先级继承:
158
+ - `apiKey`:配置文件 → `ANTHROPIC_AUTH_TOKEN` 环境变量 → `~/.claude/settings.json`
159
+ - `baseUrl`:配置文件 → `ANTHROPIC_BASE_URL` 环境变量 → `~/.claude/settings.json`
160
+ - `model`:配置文件 → `~/.claude/settings.json` → 默认 `sonnet`
161
+ - `effort`:配置文件 → `~/.claude/settings.json` → SDK 默认值(`auto`)
162
+
163
+ ### 3. 运行
164
+
165
+ ```bash
166
+ # 服务管理
167
+ ec start # 启动服务
168
+ ec stop # 停止服务
169
+ ec restart # 重启服务
170
+ ec status # 查看状态
171
+ ec logs # 查看日志(tail -f)
172
+ ec agent # 管理 EvolAgent(list / show / new / reload)
173
+ ec mv <old> <new> # 项目搬家(保留全部会话)
174
+ ec queue --agent <aid> # 查看/操作 agent 消息队列(队列重启后持久化恢复)
175
+ ec diagnose # 诊断启动环境
176
+
177
+ # 配置管理(v3.4+)
178
+ ec config show # 查看某一层文件原始内容
179
+ ec config effective # 打印合并后的生效配置 + 来源
180
+ ec config get <field> # 读 effective 值
181
+ ec config set <field> <v> # 写参数(scope 自动推断)
182
+ ec config validate # 按 schema 校验
183
+ ec config history # 配置快照历史
184
+
185
+ # 开发模式(热重载)
26
186
  npm run dev
27
187
 
28
- # Test
188
+ # 运行测试
29
189
  npm test
30
190
  ```
31
191
 
32
- ## License
192
+ ## 项目结构
193
+
194
+ ```
195
+ evolcore/
196
+ ├── src/
197
+ │ ├── agents/
198
+ │ │ ├── claude-runner.ts # Claude Agent SDK 封装
199
+ │ │ ├── codex-runner.ts # Codex Agent 封装
200
+ │ │ └── gemini-runner.ts # Gemini CLI 封装
201
+ │ ├── aun/ # AUN 协议工具
202
+ │ ├── core/
203
+ │ │ ├── command/
204
+ │ │ │ ├── command-handler.ts # 命令派发入口
205
+ │ │ │ ├── slash-handler.ts # 斜杠命令实现
206
+ │ │ │ ├── menu-handler.ts # Menu 协议处理
207
+ │ │ │ └── slash-gate.ts # 权限前置拦截
208
+ │ │ ├── message/
209
+ │ │ │ ├── message-bridge.ts # 渠道 ↔ 核心消息桥
210
+ │ │ │ ├── message-processor.ts # 统一消息处理引擎
211
+ │ │ │ ├── message-queue.ts # 消息队列(串行+中断)
212
+ │ │ │ ├── message-cache.ts # 消息缓存
213
+ │ │ │ ├── message-log.ts # 每 chat 的 messages.jsonl
214
+ │ │ │ └── im-renderer.ts # IM 渲染 + 批量发送
215
+ │ │ ├── session/
216
+ │ │ │ ├── adapters/ # 各后端会话文件适配器
217
+ │ │ │ ├── session-fs-store.ts # 文件系统存储原语
218
+ │ │ │ └── session-manager.ts # 会话管理(多项目支持)
219
+ │ │ ├── trigger/ # 触发器引擎
220
+ │ │ ├── evolagent.ts # EvolAgent 实体
221
+ │ │ ├── evolagent-registry.ts # Agent 注册表(扫描/路由/热重载)
222
+ │ │ ├── interaction-router.ts # 卡片交互回调路由
223
+ │ │ └── permission.ts # 权限网关
224
+ │ ├── channels/
225
+ │ │ ├── feishu.ts # 飞书 WebSocket 渠道
226
+ │ │ ├── wechat.ts # 微信 ClawBot 渠道
227
+ │ │ ├── dingtalk.ts # 钉钉 Stream 渠道
228
+ │ │ ├── qqbot.ts # QQ 频道渠道
229
+ │ │ ├── wecom.ts # 企业微信 AI Bot 渠道
230
+ │ │ └── aun.ts # AUN Mesh 网络渠道
231
+ │ ├── cli/ # CLI 命令
232
+ │ ├── utils/ # 工具函数
233
+ │ ├── types.ts # 类型定义
234
+ │ ├── config-store.ts # 配置加载
235
+ │ ├── paths.ts # 路径解析
236
+ │ └── index.ts # 主入口
237
+ └── kits/ # 共享上下文模板
238
+ ```
239
+
240
+ ## 斜杠命令
241
+
242
+ ### 用户级命令(所有用户可用)
243
+
244
+ **会话管理**:
245
+ - `/new [名称]` - 创建新会话
246
+ - `/slist` - 列出当前项目的所有会话
247
+ - `/slist cli` - 列出未导入的 CLI 会话
248
+ - `/s <名称|序号|uuid>` - 切换到指定会话
249
+ - `/name <新名称>` - 重命名当前会话
250
+ - `/del <名称>` - 删除指定会话(仅解绑,不删除文件)
251
+ - `/status` - 显示会话状态
252
+ - `/check` - 系统健康检查(摘要)
253
+ - `/help` - 显示所有命令
254
+
255
+ ### 管理员级命令(Admin+ 可用)
256
+
257
+ **项目**:
258
+ - `/pwd` - 显示当前项目路径
259
+
260
+ **Agent 与模型**:
261
+ - `/baseagent [name]` - 查看或切换 Agent 后端(claude / codex / gemini)(别名 `/base`)
262
+ - `/model [model]` - 查看或切换模型
263
+ - `/effort [level]` - 查看或切换推理强度(low / medium / high / max / auto)
264
+ - `/perm [mode]` - 查看或切换权限模式(readonly / auto / request / bypass;旧值会安全迁移)
265
+
266
+ **系统管理**:
267
+ - `/compact` - 压缩会话上下文
268
+ - `/rewind <turn>` - 回退会话到指定轮次
269
+ - `/stop` - 中断当前任务
270
+ - `/check` - 系统健康检查(详情)
271
+ - `/activity [all|dm|owner|none]` - 查看/控制中间输出显示模式
272
+ - `/chatmode [interactive|proactive]` - 查看/切换会话模式
273
+ - `/dispatch [mention|broadcast]` - 群聊分发模式(仅 @ 响应或广播)
274
+ - `/trigger <动作> ...` - 设置/查看 AI 自主触发器(延迟/定时/周期)
275
+ - `/restart <channel>` - 重连指定渠道
276
+
277
+ ### Owner 专属命令
278
+
279
+ - `/file <文件路径>` - 发送文件给用户
280
+ - `/restart` - 重启服务(自愈机制)
281
+ - `/repair` - 检查并修复会话
282
+
283
+ ### ⚠️ 进程级 menu 操作鉴权(v3.2 Breaking)
284
+
285
+ 进程级 menu 操作(`/system restart/upgrade`、`/agent` agent 生命周期管理)的鉴权已迁移到
286
+ `daemon.json` 顶层 `owners` 字段(v3.2 起,不再读 `agents/defaults.json`)。
287
+ 升级后**必须**在 `daemon.json` 配置 `owners`,否则这些操作一律返回 `FORBIDDEN`(daemon 启动时也会 warn 提示)。
288
+
289
+ ```json
290
+ {
291
+ "owners": ["eleans-2022.agentid.pub"]
292
+ }
293
+ ```
294
+
295
+ `ec init` 交互流程会在生成控制 AID 后提示录入 owners(可跳过后手动编辑)。
296
+
297
+ - **`owners`**:进程级管理者 AID 名单。可执行 `/system`(重启/升级)与 `/agent`
298
+ (create / delete / enable / disable / list / show)。
299
+ - 关系级的 `/trigger`(set / cancel / update / list)仍走 channel 角色(owner/admin)+ scoped 鉴权,**不**受 `owners` 影响。
300
+ - `/agent create` 为「受理即返回」:立即回 `{ accepted: true, aid }`,后台跑完整创建流程并把各
301
+ 环节写入 `agents/<aid>/create-status.json`;客户端用 `menu.query name=agent args={aid}` 轮询
302
+ `createProgress.status` 直到 `ready` / `failed`。
303
+
304
+ ### 控制 AID(control AID)
305
+
306
+ v3.2 新增进程级身份标识。启动时自动生成 `ec+5位数字.agentid.pub` 格式的控制 AID,以
307
+ `pureIdentity` 模式接入 AUN 网络(跳过 evolagent onboarding)。`ec status` 可查看控制 AID 连接状态。
308
+
309
+ ## 技术栈
310
+
311
+ - **运行时**:Node.js >= 22 + TypeScript(ES modules)
312
+ - **AI 后端**:@anthropic-ai/claude-agent-sdk >= 0.3.211、Codex CLI app-server、Gemini CLI
313
+ - **消息渠道**:飞书(@larksuiteoapi/node-sdk)、微信(ClawBot ilink API)、钉钉(dingtalk-stream)、QQ频道(pure-qqbot)、企业微信(AI Bot API)、AUN 网络
314
+ - **数据存储**:文件系统(per-chat 目录) + JSONL(CLI 共用)
315
+ - **测试框架**:Vitest
316
+
317
+ ## TODO
318
+
319
+ - [x] AUN Mesh 网络通道接入
320
+ - [x] 项目搬家工具(`ec mv`)
321
+ - [x] 手动授权支持(文本回复 + 飞书卡片)
322
+ - [x] 自动授权可配置(自动放行/自动拒绝)
323
+ - [x] 触发器支持
324
+ - [x] AUN 群组扩展功能支持
325
+ - [x] 统计/状态监控
326
+
327
+
328
+ ## 许可证
329
+
330
+ MIT — 详见 [LICENSE](LICENSE) 声明
331
+
332
+ ## 交流群
333
+
334
+ EvolCore 正在内测中,欢迎加入微信群交流使用体验、反馈问题或参与讨论:
335
+
336
+ <img src="assets/wechat-group-qr.jpeg" width="300" alt="EvolCore 内测群二维码" />
33
337
 
34
- MIT
338
+ > 二维码过期后可在 [Issues](https://github.com/eLeanwang/evolcore/issues) 中留言,我会更新邀请链接。
@@ -0,0 +1,174 @@
1
+ # 角色访问控制功能实现总结
2
+
3
+ ## 新增功能
4
+
5
+ ### 1. 默认角色 (defaultRole)
6
+ - **位置**: 全局配置 (`roles.json` 顶层字段)
7
+ - **默认值**: `'anonymous'`
8
+ - **语义**: 对端 AID 首次访问时,若不在 `owners/admins/members` 名单中,使用此角色作为兜底
9
+ - **UI**: ecweb 角色定义页面顶部下拉选择器,change 时自动保存
10
+
11
+ ### 2. 是否允许访问 (allowAccess)
12
+ - **位置**: 每个角色定义的顶层字段 (与 `description`/`permissions` 同级)
13
+ - **默认值**:
14
+ - `anonymous`: `false` (拒绝访问)
15
+ - 其他角色 (`owner/admin/member/guest`): `true` (允许访问)
16
+ - **语义**: 当角色的 `allowAccess=false` 时,该角色用户访问 agent 会被直接拦截
17
+ - **拦截行为**: 返回系统错误消息 "暂无权限访问本 agent,请联系 agent 管理员授权访问"
18
+ - **UI**: ecweb 角色编辑/新建弹窗中,描述下方的下拉选择器 (允许 true / 拒绝 false)
19
+
20
+ ## 实现架构
21
+
22
+ ### Backend 改动
23
+
24
+ #### 1. Schema 升级 (v1 → v2)
25
+ - `kits/schemas/roles.schema.2.json` — 新增 `defaultRole` (top-level) 和 `allowAccess` (per-role)
26
+ - `kits/schemas/_meta.json` — currentVersion 更新为 2
27
+ - **迁移逻辑** (`src/config/config-manager.ts`):
28
+ - `migrateRolesV1toV2()` — 直接升版本号,新字段由 merge 时从 builtin 补全 (overlay 模式)
29
+
30
+ #### 2. 类型定义 (`src/types.ts`)
31
+ ```typescript
32
+ export interface RolesConfig {
33
+ $schema_version: number;
34
+ defaultRole?: string; // 新增
35
+ roles: Record<string, RoleDefinition>;
36
+ }
37
+
38
+ export interface RoleDefinition {
39
+ description: string;
40
+ allowAccess?: boolean; // 新增
41
+ permissions: Record<string, FieldPermission>;
42
+ }
43
+ ```
44
+
45
+ #### 3. 内置配置 (`src/config/roles.ts`)
46
+ - `getBuiltinRolesConfig()` 升级为 `$schema_version: 2`
47
+ - 添加 `defaultRole: 'anonymous'`
48
+ - 每个角色添加 `allowAccess` 字段 (owner/admin/member/guest 为 `true`, anonymous 为 `false`)
49
+
50
+ #### 4. 角色解析器 (`src/config/role-resolver.ts`)
51
+ - `resolveUserRole()` 返回类型改为 `string` (支持自定义角色名)
52
+ - 移除 `isAuthenticated()` 判断,改为直接使用 `getDefaultRole()` 作为兜底
53
+ - **新增** `getDefaultRole()` — 从 roles.json 读取 `defaultRole` 字段
54
+ - **新增** `checkRoleAccess(role: string): boolean` — 读取该角色的 `allowAccess` 配置
55
+
56
+ #### 5. 合并/Diff 逻辑 (`src/config/roles-merge.ts`)
57
+ - `mergeRolesConfig()` — 合并 `defaultRole` (overlay 优先) 和每个角色的 `allowAccess`
58
+ - `diffRolesConfig()` — 比对 `defaultRole` 和 `allowAccess`,仅写入改动
59
+
60
+ #### 6. 访问控制拦截 (`src/core/message/response-engine.ts`)
61
+ - `processMessage()` 入口处,在 `resolveSession()` 之后立即检查
62
+ - 调用 `checkRoleAccess(userRole)`,为 `false` 时:
63
+ 1. 记录 warn 日志
64
+ 2. 通过 `adapter.send()` 回复 `system.error` 类型消息
65
+ 3. `return` 终止处理,不进入后续流程
66
+
67
+ ### Frontend 改动 (ecweb)
68
+
69
+ #### 1. HTML 结构 (`ecweb/src/static/index.html`)
70
+ - 新增 `.role-default-selector` 区块 (在 header 和 grid 之间)
71
+ - 包含 `<select id="default-role-select">` 和提示文案
72
+
73
+ #### 2. JavaScript (`ecweb/src/static/app.js`)
74
+ - `renderRoleDefinitions()` — 调用 `renderDefaultRoleSelector(data)` 填充下拉框
75
+ - **新增** `renderDefaultRoleSelector()`:
76
+ - 填充所有角色为选项
77
+ - 绑定 `onchange` 事件 → 读取完整配置 → 更新 `defaultRole` → PUT 写回
78
+ - `showRoleEditModal()` / `showNewRoleModal()` — 在 description 后添加 `allowAccess` 下拉
79
+ - `saveRoleEdit()` — 收集 `allowAccess` 值 (转为真布尔), 写入 `updates` 对象
80
+
81
+ #### 3. CSS (`ecweb/src/static/style.css`)
82
+ - 新增 `.role-default-selector` / `.role-default-label` 样式
83
+ - 原有按钮样式已是黑边框黑字 (`var(--fg)` / `var(--border)`),无需修改
84
+
85
+ ## 配置示例
86
+
87
+ ### roles.json (用户 overlay)
88
+ ```json
89
+ {
90
+ "$schema_version": 2,
91
+ "defaultRole": "guest",
92
+ "roles": {
93
+ "anonymous": {
94
+ "description": "匿名用户,完全未认证,极度受限",
95
+ "allowAccess": false
96
+ },
97
+ "guest": {
98
+ "description": "访客,只读权限,有身份但未授权",
99
+ "allowAccess": true
100
+ }
101
+ }
102
+ }
103
+ ```
104
+
105
+ ### 内置基线 (builtin)
106
+ ```javascript
107
+ {
108
+ $schema_version: 2,
109
+ defaultRole: 'anonymous',
110
+ roles: {
111
+ owner: { allowAccess: true, ... },
112
+ admin: { allowAccess: true, ... },
113
+ member: { allowAccess: true, ... },
114
+ guest: { allowAccess: true, ... },
115
+ anonymous: { allowAccess: false, ... }
116
+ }
117
+ }
118
+ ```
119
+
120
+ ## 升级路径
121
+
122
+ 1. **v1 → v2 自动迁移**:
123
+ - 读取 v1 roles.json 时,`migrateRolesV1toV2()` 自动升版本号
124
+ - `defaultRole` 和 `allowAccess` 字段从 builtin 继承 (overlay 为空时)
125
+ - 原有用户改动 (permissions/description) 完整保留
126
+
127
+ 2. **向后兼容**:
128
+ - `defaultRole` 缺失时默认 `'anonymous'` (原有行为)
129
+ - `allowAccess` 缺失时默认 `true` (除 anonymous 为 `false`)
130
+ - 旧代码不读这两个字段时,功能降级但不报错
131
+
132
+ ## 测试要点
133
+
134
+ 1. **默认角色生效**:
135
+ - 清空某 agent 的 owners/admins/members
136
+ - 对端 AID 访问时,角色应为 `roles.json` 中的 `defaultRole`
137
+
138
+ 2. **访问控制拦截**:
139
+ - 设置某角色 `allowAccess: false`
140
+ - 将用户加入该角色 (如 guest)
141
+ - 用户访问时应收到 "暂无权限" 系统错误,后续流程不触发
142
+
143
+ 3. **ecweb UI**:
144
+ - 默认角色下拉能正常切换并保存
145
+ - 编辑角色时,`allowAccess` 下拉能正确读取/保存
146
+ - 保存按钮为黑边框黑字 (非白色)
147
+
148
+ 4. **Schema 迁移**:
149
+ - 备份旧 roles.json (v1)
150
+ - 启动新版本,读取时自动升级为 v2
151
+ - 原有改动不丢失,新字段从 builtin 补全
152
+
153
+ ## 文件清单
154
+
155
+ ### Backend
156
+ - `kits/schemas/roles.schema.2.json` (新增)
157
+ - `kits/schemas/_meta.json` (修改 - 版本号)
158
+ - `src/types.ts` (修改 - RolesConfig/RoleDefinition)
159
+ - `src/config/roles.ts` (修改 - builtin 配置)
160
+ - `src/config/role-resolver.ts` (修改 - 添加 checkRoleAccess)
161
+ - `src/config/roles-merge.ts` (修改 - merge/diff 逻辑)
162
+ - `src/config/config-manager.ts` (修改 - 迁移函数)
163
+ - `src/core/message/response-engine.ts` (修改 - 访问拦截)
164
+
165
+ ### Frontend (ecweb)
166
+ - `ecweb/src/static/index.html` (修改 - 默认角色选择器)
167
+ - `ecweb/src/static/app.js` (修改 - render/save 逻辑)
168
+ - `ecweb/src/static/style.css` (修改 - 样式)
169
+
170
+ ---
171
+
172
+ **实现完成时间**: 2026-06-25
173
+ **Schema 版本**: roles v2
174
+ **向后兼容**: ✅ (v1 自动迁移,字段缺失时使用默认值)
@@ -0,0 +1,4 @@
1
+ # AUN 环境变量
2
+ # 取消注释并填入值即可生效(进程已有的同名变量不会被覆盖)
3
+
4
+ # AUN_ENCRYPTION_SEED=your-seed-here
@@ -0,0 +1,19 @@
1
+ # Evolcore Logo
2
+
3
+ The symbol combines three channel paths, an open circular system, and a central signal point. It represents multiple agents and messaging channels converging into one persistent core.
4
+
5
+ ## Files
6
+
7
+ - `evolcore-logo.svg`: primary logo for light backgrounds
8
+ - `evolcore-logo-reverse.svg`: reverse logo for dark backgrounds
9
+ - `evolcore-mark.svg`: standalone transparent symbol
10
+ - `evolcore-app-icon.svg`: square app/avatar icon
11
+ - `evolcore-brand-board.svg`: identity concept overview
12
+
13
+ ## Palette
14
+
15
+ - Core: `#091512`
16
+ - Signal: `#42E8B4`
17
+ - Cloud: `#F2F7F5`
18
+
19
+ Keep clear space around the logo equal to the diameter of the green core. Do not rotate, stretch, outline, or add effects to the mark.
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" role="img" aria-labelledby="title desc">
2
+ <title id="title">Evolcore app icon</title>
3
+ <desc id="desc">Evolcore connected core symbol on a dark rounded square.</desc>
4
+ <rect width="1024" height="1024" rx="224" fill="#091512"/>
5
+ <g transform="translate(192 192) scale(5)">
6
+ <g fill="none" stroke="#F2F7F5" stroke-linecap="round" stroke-linejoin="round">
7
+ <path d="M91 34.5A39 39 0 1 0 91 93.5" stroke-width="11"/>
8
+ <path d="M105 35.5 73 56.5M111 64H74M105 92.5 73 71.5" stroke-width="9"/>
9
+ </g>
10
+ <circle cx="66" cy="64" r="10" fill="#42E8B4"/>
11
+ <circle cx="66" cy="64" r="3.5" fill="#091512"/>
12
+ </g>
13
+ </svg>