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,366 @@
1
+ # 上下文组装机制(manifest)
2
+
3
+ ECK 把"每条消息该给 base agent 看哪些上下文"这件事,交给一份 **manifest** 声明式描述,由 `renderKitSections`(`src/agents/kit-renderer.ts`)在每次处理消息时执行。本文是这套机制的完整参考。
4
+
5
+ > 本文是按需载入文档。日常对话不需要读它——只有在排查"为什么某段上下文没出现/出现了"、要改 manifest、或要看实际渲染结果时才 Read。
6
+
7
+ ## 三个阶段
8
+
9
+ evolcore 收到消息 → 构造一份 **vars**(运行时变量,见下)→ `renderKitSections`:
10
+
11
+ 1. **选段**:按 manifest 顺序遍历每个 section,用它的 `when` 条件 + 当前 vars 判断是否加载。
12
+ 2. **渲染**:解析 section 路径里的 `$NAME` / `{{key}}` 占位符定位文件;`needsInjection:true` 的文件再跑一遍模板渲染(条件块 + 变量替换)。
13
+ 3. **拼装**:所有命中的文件内容包进一个 `<system-reminder>` 块,作为 system prompt 的一部分注入。
14
+
15
+ 整个过程对每次消息执行一次,结果同时落盘到调试目录(见"调试机制")。
16
+
17
+ ## manifest 文件位置
18
+
19
+ | 文件 | 角色 | 性质 |
20
+ |------|------|------|
21
+ | `$KITS/eck_manifest.json` | 基础 manifest(开发时维护) | 只读 |
22
+ | `$ECK/eck_manifest.json` | 用户覆盖(可选,默认不存在) | 可写 |
23
+
24
+ 加载时合并两者(见"合并与覆盖")。manifest 只加载一次并缓存。
25
+
26
+ ## 多 manifest:按会话原型(sessionType)选清单
27
+
28
+ 不同**会话原型**加载不同的 manifest 文件,各自走同一引擎、同一两级覆盖机制:
29
+
30
+ | 会话原型(`session.sessionType`) | manifest 文件 | 用途 |
31
+ |------|------|------|
32
+ | `main`(默认) | `eck_manifest.json` | 主会话,完整上下文 |
33
+ | `auxiliary` | `eck_manifest.auxiliary.json` | 辅助会话(双会话模式),精简上下文 |
34
+ | 未来:`approval` / `goal` / ... | `eck_manifest.<type>.json` | 权限审批 / 目标管理等专用会话 |
35
+
36
+ **映射由 agent config 的 `sessionManifests` 字段定义**(走 config 分级覆盖:关系/环境/agent 级):
37
+
38
+ ```jsonc
39
+ // $AGENT_DIR/config.json
40
+ {
41
+ "sessionManifests": {
42
+ "main": "eck_manifest.json", // 缺省可省略,兜底就是它
43
+ "auxiliary": "eck_manifest.auxiliary.json"
44
+ }
45
+ }
46
+ ```
47
+
48
+ 渲染时按 `session.sessionType`(缺省 `'main'`)查 `sessionManifests`,取不到则回退 `eck_manifest.json`。
49
+ **每个 manifest 文件各自两级合并**(`$KITS/<file>` + `$ECK/<file>`),互不干扰。
50
+
51
+ ## section 字段
52
+
53
+ manifest 是 `{ "$schema_version": 1, "sections": [...] }`。每个 section:
54
+
55
+ | 字段 | 必填 | 含义 |
56
+ |------|------|------|
57
+ | `id` | ✓ | 唯一标识,覆盖合并的键 |
58
+ | `type` | ✓ | `file`(单文件)或 `directory`(整目录) |
59
+ | `file` | type=file | 文件路径,可含 `$NAME` / `{{key}}` |
60
+ | `path` | type=directory | 目录路径 |
61
+ | `pattern` | | 目录匹配 glob,默认 `*.md`(支持 `*` 和 `{a,b}`) |
62
+ | `maxFiles` | | type=directory:最多加载文件数,默认 20。超出停止加载并注入截断说明 |
63
+ | `maxBytes` | | type=directory:最多加载总字节,默认 40960(40KB)。超出停止加载并注入截断说明(至少保留 1 个文件) |
64
+ | `order` | ✓ | 排序,**升序**决定上下文中出现的先后 |
65
+ | `needsInjection` | ✓ | `true`=按模板渲染(解析 `{{}}` 条件与变量);`false`=原样读入 |
66
+ | `when` | ✓ | 加载条件,`"always"` 或条件对象(见下) |
67
+ | `enabled` | | `false` 时整段跳过 |
68
+ | `loop` | | 三段式循环:`{ forEach, childFile, separator? }`。有 loop 时 file 作 wrapper,见"三段式循环" |
69
+ | `description` | | 调试输出里的人类可读标签 |
70
+
71
+ ### 三段式循环(wrapper + forEach + child)
72
+
73
+ 批量数据(如一批消息)用 `loop` 字段做"包裹层 + 循环体"渲染,避免手写重复模板:
74
+
75
+ ```jsonc
76
+ {
77
+ "id": "batch-messages",
78
+ "type": "file",
79
+ "file": "$KITS_.../batch-wrapper.md", // ① wrapper:包裹模板,含 {{@loop}} 占位
80
+ "loop": {
81
+ "forEach": "items", // ② 循环 vars 里的数组变量
82
+ "childFile": "$KITS_.../batch-item.md", // ③ 每元素渲染的子模板
83
+ "separator": "\n" // 元素间分隔符,默认 "\n"
84
+ },
85
+ "needsInjection": true,
86
+ "order": 5,
87
+ "when": "always"
88
+ }
89
+ ```
90
+
91
+ **wrapper 模板**(`{{@loop}}` 处填入循环结果):
92
+ ```
93
+ 【批次 剩余{{remainingInQueue}}条 | 主队列{{pendingCount}}】
94
+ {{@loop}}
95
+ 【批次结束】
96
+ ```
97
+
98
+ **childFile 模板**(每个元素,可访问元素字段 + 外层 vars + `{{@index}}`):
99
+ ```
100
+ [{{@index}}] {{peerName}}: {{content}}
101
+ ```
102
+
103
+ **渲染规则**:
104
+ - 对 `vars[forEach]` 数组每个元素渲染 childFile(对象元素 → 字段可用 `{{field}}`;标量 → `{{.}}`),以 `separator` 连接
105
+ - wrapper 单独渲染(其变量如 `remainingInQueue` 来自 vars),`{{@loop}}` 位置**字面量填入**循环结果 → 循环结果不被二次解析
106
+ - childFile 内可再嵌套 `{{#each}}` 或另一个占位,支持多层
107
+ - 空数组 / 非数组 → 循环结果为空串
108
+ - wrapper 不含 `{{@loop}}` → 循环结果追加到 wrapper 末尾(容错)
109
+
110
+ > **消息渲染层的 loop**:`eck_message_manifest.json` 里的 loop 段是**批次包裹层**——
111
+ > child 由 message-renderer 的逐条渲染(`renderOneItem`,自带 content 哨兵)产出,
112
+ > 用户消息文本里的 `{{}}` 不会被二次解析。批次 vars(remainingInQueue 等)从 sessionVars 透传。
113
+ > 详见 `prompt-loading-architecture.md`。
114
+
115
+ ### 清单顶层字段
116
+
117
+ 除 `sections` 外,manifest 顶层还支持全局限额(总闸,跨所有段累计):
118
+
119
+ | 字段 | 默认 | 含义 |
120
+ |------|------|------|
121
+ | `$schema_version` | — | 版本号 |
122
+ | `mode` | patch | `patch`(合并)/ `replace`(完全替换),见"合并与覆盖" |
123
+ | `totalMaxFiles` | 50 | 整个清单渲染最多文件数。达到后停止加载后续所有段 |
124
+ | `totalMaxBytes` | 102400(100KB) | 整个清单渲染最多总字节。达到后停止加载后续所有段 |
125
+
126
+ ## 目录加载限额(安全保护)
127
+
128
+ `type: directory` 段加载整个目录,若目录内容失控会撑爆提示词。两层限额保护:
129
+
130
+ - **单目录限额**(`maxFiles` 20 / `maxBytes` 40KB):单个目录段最多加载多少。超出时停止加载该目录后续文件,并在该段末尾注入一行截断说明:
131
+ `[注意] 目录 $KITS_RULES 未完整加载:N 个文件未加载(达文件数上限 20 个)。`
132
+ - **总闸限额**(`totalMaxFiles` 50 / `totalMaxBytes` 100KB):整个清单所有段加起来的上限。达到后停止加载后续所有命中段,末尾注入总截断说明,**带上未加载的 section id 集合**:
133
+ `[注意] 上下文清单总量超限(>50 文件 / >100KB),以下 section 未加载:goal-fragment, extra-docs。`
134
+
135
+ > **注**:字节按文件原始内容(`rawContent`)计,不含渲染后变化,也不含截断说明行本身。
136
+ > 单目录"至少保留 1 个文件"——避免单个超大文件导致整段为空。
137
+ > 截断信息同时写入调试输出(`manifest-*.md`),便于排查。
138
+
139
+ > **现状**:当前唯一目录段 `$KITS_RULES` = 6 文件 / ~18KB,远低于默认限额,不受影响。
140
+ > 新增规则文档时注意别让该目录逼近 40KB。
141
+
142
+ ## when 条件求值
143
+
144
+ `when` 是 `"always"` 或一个对象。求值规则(`evaluateWhen`):
145
+
146
+ | 写法 | 含义 |
147
+ |------|------|
148
+ | `"always"` | 恒为真 |
149
+ | `{ "var": "X", "eq": V }` | `vars.X === V`;`eq:null` 匹配"未注入"(null/undefined) |
150
+ | `{ "var": "X", "neq": V }` | `vars.X !== V`;`neq:null` 匹配"已注入" |
151
+ | `{ "var": "X", "in": [...] }` | `vars.X` 在数组内 |
152
+ | `{ "var": "X", "nin": [...] }` | `vars.X` 不在数组内 |
153
+ | `{ "any": ["A","B"] }` | A、B 任一为真值 |
154
+ | `{ "all": ["A","B"] }` | A、B 全为真值 |
155
+
156
+ "真值"判定:非 `undefined`/`null`/`false`/`""`/`0`。
157
+
158
+ 典型用法:`{ "var": "chatType", "neq": null }` = "非 coding 场景才加载";`{ "var": "groupId", "neq": null }` = "群聊才加载"。
159
+
160
+ ## 合并与覆盖
161
+
162
+ 无 `$ECK/eck_manifest.json` 时,直接用基础 manifest。存在时:
163
+
164
+ - 覆盖文件含 `"mode": "replace"` → **完全替换**,只用覆盖文件的 sections。
165
+ - 否则 **patch 合并**:以 `id` 为键,覆盖文件里同 id 的字段浅合并进基础 section(`{...base, ...override}`),新 id 追加。
166
+
167
+ 合并后统一按 `order` 升序排序。改某段行为(如关掉某层、调顺序、换条件)优先用覆盖文件,不动基础 manifest。
168
+
169
+ ### 覆盖示例
170
+
171
+ 禁用某段:
172
+
173
+ ```json
174
+ { "sections": [ { "id": "venue-client", "enabled": false } ] }
175
+ ```
176
+
177
+ 改加载条件(仅 owner/admin 才载入对端档案):
178
+
179
+ ```json
180
+ { "sections": [ { "id": "peer-profile", "when": { "var": "peerRole", "in": ["owner", "admin"] } } ] }
181
+ ```
182
+
183
+ 新增自定义段:
184
+
185
+ ```json
186
+ {
187
+ "sections": [
188
+ {
189
+ "id": "my-custom-context",
190
+ "type": "file",
191
+ "file": "$AGENT_DIR/custom/my-rules.md",
192
+ "order": 25,
193
+ "needsInjection": false,
194
+ "when": "always",
195
+ "description": "我的自定义规则"
196
+ }
197
+ ]
198
+ }
199
+ ```
200
+
201
+ 完全替换(忽略基础 manifest):
202
+
203
+ ```json
204
+ { "$schema_version": 1, "mode": "replace", "sections": [ ... ] }
205
+ ```
206
+
207
+ ## 路径与模板渲染
208
+
209
+ ### 路径占位符(所有 section 的 file/path)
210
+
211
+ - `$NAME`(大写)→ 从 vars 取真值,如 `$KITS_DOCS` → 包内文档目录。
212
+ - `{{key}}` → 从 vars 取真值,如 `{{chatType}}` → `private`,`{{peerKey}}` → `aun#alice.aid.pub`。
213
+
214
+ manifest 中常用路径变量的展开值:
215
+
216
+ | 变量 | 展开为 |
217
+ |------|--------|
218
+ | `$PACKAGE_ROOT` | evolcore 包根 |
219
+ | `$EVOLCORE_HOME` | 用户数据根(默认 `~/.evolcore`) |
220
+ | `$KITS` | `$PACKAGE_ROOT/kits` |
221
+ | `$KITS_RULES` | `$KITS/rules` |
222
+ | `$KITS_DOCS` | `$KITS/docs` |
223
+ | `$KITS_TEMPLATES` | `$KITS/templates` |
224
+ | `$KITS_FRAGMENTS` | `$KITS_TEMPLATES/system-fragments` |
225
+ | `$ECK` | `$EVOLCORE_HOME/eck` |
226
+ | `$AGENT_DIR` | `$EVOLCORE_HOME/agents/<selfAid>` |
227
+ | `$PERSONAL_DIR` | `$AGENT_DIR/personal` |
228
+ | `$RELATIONS_DIR` | `$AGENT_DIR/relations` |
229
+ | `$VENUES_DIR` | `$AGENT_DIR/venues` |
230
+
231
+ 任一占位符解析为空 → 该 section 视为"未解析",跳过(调试输出标 `unresolved-vars`)。文件不存在 → 标 `not-exist`,也跳过。这是**正常机制**:很多 section 靠"路径解析不出来"自然落选(如 coding 场景没有 `$PERSONAL_DIR`)。
232
+
233
+ ### 模板渲染(仅 needsInjection:true 的文件)
234
+
235
+ 读入跑三遍:
236
+
237
+ 1. **条件块**(内层优先,可嵌套):
238
+ - `{{?key}}...{{/}}` — key 为真值才保留
239
+ - `{{?key=value}}...{{/}}` — `String(vars.key)===value` 才保留
240
+ - `{{?key!=value}}...{{/}}` — 不等才保留
241
+ 2. **变量替换**:`{{key}}` 替换为值,非真值替换为空串。
242
+ 3. **清理**:删掉空行。
243
+
244
+ `needsInjection:false` 的文件原样读入,不做任何替换(如 rules 目录、persona.md、各 venue 文档)。
245
+
246
+ ## 运行时变量(vars)目录
247
+
248
+ vars 由 evolcore 在 `message-processor.ts` 按当前会话构造。分两类:
249
+
250
+ **路径类**(供占位符展开成真实路径):
251
+ `EVOLCORE_HOME`、`PACKAGE_ROOT`、`CURRENT_PROJECT`、`KITS`、`KITS_RULES`、`KITS_DOCS`、`KITS_TEMPLATES`、`KITS_FRAGMENTS`、`PERSONAL_DIR`、`RELATIONS_DIR`、`VENUES_DIR`。
252
+
253
+ **内容/场景类**(供 when 判断与模板替换):
254
+
255
+ | 变量 | 含义 |
256
+ |------|------|
257
+ | `selfAid` / `selfName` | 当前 agent 身份 |
258
+ | `hasPersona` / `hasWorkingMemory` | 是否有人格 / 当前关注 |
259
+ | `peerId` / `peerKey` / `peerName` | 对端原生 ID / 跨渠道键 / 显示名 |
260
+ | `peerRole` / `peerType` | 对端角色(owner/admin/member/visitor/自定义角色/none)/ 类型(human/agent) |
261
+ | `groupId` | 群 ID(群聊时) |
262
+ | `chatType` | `private` / `group` / `null`(coding) |
263
+ | `channel` | 渠道类型(aun/feishu/...)|
264
+ | `mentionMode` | 群 @ 处理模式(mention-only/disabled) |
265
+ | `clientType` | 客户端类型(desktop/web/mobile) |
266
+ | `permissionMode` / `readonly` | 权限模式 / 是否只读 |
267
+ | `capabilities` | 当前渠道能力(图片输入/输出、文件发送) |
268
+ | `project` / `CURRENT_PROJECT` | 项目目录名 / 完整路径 |
269
+ | `sessionId` / `sessionName` / `sessionKey` / `sessionCreatedAt` / `threadId` | 会话标识与元信息 |
270
+ | `chatMode` | `interactive` / `proactive` |
271
+ | `baseAgent` / `baseAgentName` / `baseAgentModel` / `agentSessionId` | base agent 信息 |
272
+
273
+ coding 场景(无 channel/无身份)下,`chatType`、`channel`、`selfAid`、`peer*` 等均为空——这正是身份/关系/环境/渠道层落选的原因。
274
+
275
+ ## 三种加载方式
276
+
277
+ | 加载方式 | 决策者 | 驱动方式 | 例子 |
278
+ |---------|-------|---------|------|
279
+ | **全量加载** | manifest | `when: "always"` | rules/ 核心规则、session 参数 |
280
+ | **按条件自动加载** | manifest | `when` 条件 + 路径存在性 | 身份层(chatType 非空时)、对端档案(peerKey 非空时) |
281
+ | **按需加载** | agent 自主 | agent 在对话中主动 Read 文件 | 查阅 `$KITS_DOCS/` 下的详细参考文档 |
282
+
283
+ 前两种由 manifest 控制,第三种由 agent 根据各层文档中的"按需加载指引"自主决定。
284
+
285
+ ## 默认 manifest 的段(按 order)
286
+
287
+ | order | id | 类型 | 加载条件(when) | inject |
288
+ |-------|----|----|------------------|--------|
289
+ | 10 | rules | 目录 `$KITS_RULES` | always | ✗ |
290
+ | 20 | identity-layer | fragment | chatType≠null | ✓ |
291
+ | 21 | persona | `$PERSONAL_DIR/persona.md` | chatType≠null | ✗ |
292
+ | 22 | working-memory | `$PERSONAL_DIR/memory/working.md` | chatType≠null | ✗ |
293
+ | 30 | relation-layer | fragment | chatType∈{private,group} | ✓ |
294
+ | 35 | peer-profile | `$RELATIONS_DIR/{{peerKey}}/profile.md` | peerKey≠null | ✗ |
295
+ | 40 | venue-fragment | fragment | chatType≠null | ✓ |
296
+ | 41 | venue-chattype | `$KITS_DOCS/venues/{{chatType}}.md` | chatType≠null | ✗ |
297
+ | 42 | venue-channel-chattype | `$KITS_DOCS/venues/{{channel}}-{{chatType}}.md` | chatType≠null | ✗ |
298
+ | 43 | relation-group-profile | `$RELATIONS_DIR/{{peerKey}}/profile.md` | groupId≠null | ✗ |
299
+ | 44 | venue-client | `$KITS_DOCS/venues/client-{{clientType}}.md` | clientType≠null | ✗ |
300
+ | 50 | channel-layer | fragment | channel≠null | ✓ |
301
+ | 55 | commands | fragment | channel≠null | ✓ |
302
+ | 60 | session | fragment | always | ✓ |
303
+ | 70 | baseagent | fragment | baseAgent≠null | ✓ |
304
+
305
+ > 注意:`session`(60) 是 `always`,`baseagent`(70) 只看 `baseAgent` 是否注入——这两段**与 chatType 无关**,coding 场景也会加载。所谓"coding 仅 rules"是近似说法:精确地说 coding 场景命中的是 rules + session + baseagent(其余因 chatType/channel 为空而落选)。
306
+
307
+ ## 环境层文档目录结构
308
+
309
+ venue-* 段从随包发布的通用文档(只读)取文件:
310
+
311
+ ```
312
+ $KITS_DOCS/venues/ 通用环境文档(随包发布,只读)
313
+ ├── private.md 单聊场景通用指引
314
+ ├── group.md 群聊场景通用指引
315
+ ├── aun-private.md AUN 单聊特有
316
+ ├── aun-group.md AUN 群聊特有
317
+ ├── feishu-private.md 飞书单聊特有
318
+ ├── feishu-group.md 飞书群聊特有
319
+ ├── client-desktop.md 桌面端环境
320
+ ├── client-mobile.md 移动端环境
321
+ └── ...
322
+ ```
323
+
324
+ > **注意**:具体群/私聊实例的 profile 数据落**关系层** `$RELATIONS_DIR/<peerKey>/profile.md`,
325
+ > 由 `relation-group-profile` 段注入,不在 venues 目录。
326
+
327
+ ## 输出结构
328
+
329
+ 所有命中 section 的文件内容拼成一个块,注入 system prompt:
330
+
331
+ ```
332
+ <system-reminder>
333
+ EvolCore Context Kit documents are shown below.
334
+
335
+ Contenu de <展示路径> (<id — description>):
336
+
337
+ <文件内容>
338
+
339
+ ...(每个文件一段,按 order)
340
+
341
+ IMPORTANT: Use this context when it affects the current interaction.
342
+ </system-reminder>
343
+ ```
344
+
345
+ 展示路径会把绝对路径回缩成 `$KITS_RULES`/`$AGENT_DIR` 等别名。`needsInjection:true` 的段额外单独汇总到 `fragments-*.md` 调试文件(见下)。
346
+
347
+ ## 调试机制(看实际渲染结果)
348
+
349
+ 每次渲染都把结果落盘到 **`$EVOLCORE_HOME/data/eck-debug/`**,文件名带时间戳(`<字段>-YYYY-MM-DD-HH-MM-SS`):
350
+
351
+ | 文件 | 内容 |
352
+ |------|------|
353
+ | `vars-<ts>.json` | 本次注入的全部 vars 真值 + 每个变量的中文说明 |
354
+ | `context-<ts>.md` | 最终注入 base agent 的完整 `<system-reminder>` 块(即上面"输出结构"的实际产物) |
355
+ | `fragments-<ts>.md` | 仅经过模板渲染(needsInjection)的段,单独汇总,便于核对 `{{}}` 替换是否正确 |
356
+ | `manifest-<ts>.md` | **诊断报告**:每个 section 的 when 是否通过、路径解析状态(ok/unresolved-vars/not-exist/skipped)、是否被用上、是否注入;含未解析占位符清单 |
357
+
358
+ 排查"某段为什么没出现":看 `manifest-<ts>.md` 里该 section 的 `status` 和 `unresolved tokens`。看"实际给 agent 的全文":读 `context-<ts>.md`。
359
+
360
+ 调试文件保留 24 小时,`cleanEckDebug` 自动清理过期的。
361
+
362
+ ## 缓存与热加载
363
+
364
+ - **manifest 缓存**:`_manifestCache`,进程内只加载一次。改了 manifest 需触发 `invalidateKitCache()`(或重启)才生效。
365
+ - **文件内容缓存**:`_sessionPathCache` 按 `sessionId` 缓存已读文件内容;`invalidateSessionCache(sessionId)` 清单个会话。
366
+ - rules / fragments / docs 这些 `kits/` 下的文件,改完一般随会话重建生效(缓存按会话隔离);manifest 本身的结构改动需要 invalidate。
@@ -0,0 +1,22 @@
1
+ # Agent 查阅指南
2
+
3
+ 本文件是 {{SELF_AID}} 的个人查阅指南。
4
+
5
+ ## 查阅优先级
6
+
7
+ 1. `$KITS_RULES`(自动加载)— ECK 机制骨架
8
+ 2. `$AGENT_INDEX/INDEX.md`(本目录)— 个人索引
9
+ 3. `$KITS_DOCS/INDEX.md` — evolcore 级文档索引
10
+ 4. 按索引中的路径 Read 具体文档
11
+
12
+ ## 路径解析
13
+
14
+ 遇到 `$名称` 时:
15
+ 1. 查 `$ECK/path-registry.md` 获取实际路径
16
+ 2. 如果实例文件中没有,查 `$KITS_DOCS/path-registry.md` 了解派生规则
17
+
18
+ ## 索引维护
19
+
20
+ 当以下范围内有文档变动时,更新本索引:
21
+ - `{{CURRENT_PROJECT}}`
22
+ - `{{AGENT_DIR}}`
@@ -0,0 +1,28 @@
1
+ # Agent 索引
2
+
3
+ 本文件是 {{SELF_AID}} 的 agent 级文档索引。
4
+
5
+ ## 项目文档
6
+
7
+ | 文档 | 路径 | 说明 | 最后更新 |
8
+ |------|------|------|----------|
9
+ | — | — | (初始化后由 agent 维护) | — |
10
+
11
+ ## 个人档案
12
+
13
+ | 文档 | 路径 | 说明 | 最后更新 |
14
+ |------|------|------|----------|
15
+ | 人格档案 | `$SELF_DIR/persona.md` | 行为规范与人格定义 | {{CREATED_AT}} |
16
+ | 工作记忆 | `$SELF_DIR/memory/working.md` | 短期关注点 | {{CREATED_AT}} |
17
+
18
+ ## 关系档案
19
+
20
+ | 对端 AID | 路径 | 最后交互 |
21
+ |----------|------|----------|
22
+ | — | — | — |
23
+
24
+ ## 场所档案
25
+
26
+ | 场所 | 路径 | 说明 |
27
+ |------|------|------|
28
+ | — | — | — |
@@ -0,0 +1,33 @@
1
+ # 路径注册表实例
2
+
3
+ 本文件记录运行时解析出的实际路径值。由 evolcore 初始化时生成。
4
+
5
+ ## 基础路径
6
+
7
+ | 名称 | 实际路径 |
8
+ |------|----------|
9
+ | `$EVOLCORE_HOME` | {{EVOLCORE_HOME}} |
10
+ | `$PACKAGE_ROOT` | {{PACKAGE_ROOT}} |
11
+ | `$CURRENT_PROJECT` | {{CURRENT_PROJECT}} |
12
+
13
+ ## 派生路径
14
+
15
+ | 名称 | 实际路径 |
16
+ |------|----------|
17
+ | `$KITS` | {{KITS}} |
18
+ | `$KITS_RULES` | {{KITS_RULES}} |
19
+ | `$KITS_DOCS` | {{KITS_DOCS}} |
20
+ | `$KITS_TEMPLATES` | {{KITS_TEMPLATES}} |
21
+ | `$ECK` | {{ECK}} |
22
+ | `$AGENT_DIR` | {{AGENT_DIR}} |
23
+ | `$SELF_DIR` | {{SELF_DIR}} |
24
+ | `$RELATIONS_DIR` | {{RELATIONS_DIR}} |
25
+ | `$VENUES_DIR` | {{VENUES_DIR}} |
26
+ | `$AGENT_INDEX` | {{AGENT_INDEX}} |
27
+
28
+ ## 外部依赖
29
+
30
+ | 名称 | 实际路径 | 状态 |
31
+ |------|----------|------|
32
+ | `$KITE` | {{KITE}} | {{KITE_STATUS}} |
33
+ | `$AUN_SDK_CORE` | {{AUN_SDK_CORE}} | {{AUN_SDK_STATUS}} |
@@ -0,0 +1,19 @@
1
+ # 运行时配置
2
+
3
+ ## 基本信息
4
+
5
+ - AID: {{SELF_AID}}
6
+ - 名称: {{AGENT_NAME}}
7
+ - 创建时间: {{CREATED_AT}}
8
+
9
+ ## 运行时参数
10
+
11
+ - 模型: {{MODEL_ID}}
12
+ - 推理强度: {{EFFORT_LEVEL}}
13
+ - 权限模式: {{PERMISSION_MODE}}
14
+
15
+ ## 行为配置
16
+
17
+ - 自我总结: {{SELF_SUMMARY_ENABLED}}
18
+ - 空闲总结间隔: {{IDLE_SUMMARY_MINUTES}} 分钟
19
+ - 每日总结 token 预算: {{DAILY_SUMMARY_BUDGET}}
@@ -0,0 +1,66 @@
1
+ # EvolCore 命令集目录
2
+
3
+ 所有 `ec` 命令集的专属索引:用途、触发词、适用场景、详细文档。
4
+ 运行时 evolcore 会通过 `commands` fragment 按当前场景(有无 peer/group、对端角色)
5
+ 注入一张精简能力卡,指向本目录下对应文档;需要完整用法时 Read 对应文档。
6
+
7
+ > 命令通用约定:以自己 AID 为发送者;必须走 CLI,不在会话里直接输出对外消息;
8
+ > `--format json` 所有命令通用;`--app <name>` 指定应用 slot(独立消费通道)。
9
+
10
+ ## 如何使用本索引
11
+
12
+ 1. **遇到触发词**(用户提到"费用/用量/创建/查群/上传文件"等)→ Ctrl+F 本文档找触发词 → 定位命令集 → Read 对应文档
13
+ 2. **不确定有没有命令**时,直接 `ec <猜测的子命令> --help` 试一下(如 `ec stats --help`)
14
+ 3. **已知场景需求**(如"要给对端发消息")→ 看下方分类表 → 定位到对应命令集
15
+
16
+ ## 服务运维类(本地,无需 AUN)
17
+
18
+ | 命令 | 用途 | 触发词 |
19
+ |------|------|--------|
20
+ | `ec --version` / `-v` / `-V` | 查看版本号 | 版本 |
21
+ | `ec restart` | 重启服务(含自动升级检查) | 重启 |
22
+ | `ec status` | 查看运行状态、进程、会话、渠道连接 | 状态/查看状态 |
23
+ | `ec logs` | 查看日志(`--level` `--module` `--raw` `--no-color`) | 日志/查看日志 |
24
+ | `ec diagnose` | 诊断启动环境 | 诊断/环境诊断 |
25
+
26
+ ## 对外通信 / 网络类(连 AUN,以 AID 为发送者)
27
+
28
+ | 命令集 | 用途 | 触发词 | 适用场景 | 文档 |
29
+ |--------|------|--------|----------|------|
30
+ | `ec msg` | 私聊收发消息 | 回复/发消息/拉取/撤回/查在线 | 有对端(peerId) | `msg.md` |
31
+ | `ec group` | 群聊收发与群管理 | 群发/建群/邀请/踢人/退群/群成员/角色/封禁/规则 | 群聊(groupId) | `group.md` |
32
+ | `ec group rules` | 群规则文件发布与上下文注入 | 群规则/工作流程/职责分工/rules.md/发布规则 | AUN 群聊(groupId) | `group-rules.md` |
33
+ | `ec aid` | AID 身份管理 | 身份/证书/名片/探测对端 | 任意有渠道场景 | `aid.md` |
34
+ | `ec fs` | AUN 文件系统统一入口 | 上传/下载/看文件/列目录/删文件/配额/群空间 | 任意有渠道场景 | `fs.md` |
35
+ | `ec storage` | 文件存储底层调试入口 | storage 调试/旧命令/底层上传下载 | 任意有渠道场景 | `storage.md` |
36
+ | `ec agent` | EvolAgent 生命周期 | 创建/启停/热重载/改配置 | 管理员(owner/admin) | `agent.md` |
37
+ | `ec rpc` | 底层 AUN RPC(逃生通道) | 直接调协议方法 | 高级/兜底 | `rpc.md` |
38
+
39
+ ## 会话自管理类(不连 AUN,操作当前会话)
40
+
41
+ | 命令集 | 用途 | 触发词 | 文档 |
42
+ |--------|------|--------|------|
43
+ | `ec ctl` | 当前会话工具 | 主动发消息/文件、重命名、队列、项目路径、会话状态 | `ctl.md` |
44
+
45
+ ## 本地工具类(不连 AUN,操作本地配置)
46
+
47
+ | 命令集 | 用途 | 触发词 | 文档 |
48
+ |--------|------|--------|------|
49
+ | `ec model` | 模型与推理强度管理(按作用域持久化) | 切模型/列模型/当前模型/模型详情/改强度/诊断网关 | `model.md` |
50
+ | `ec response` | 响应模式管理(按作用域持久化) | 切换响应模式/列响应模式/看当前模式/改响应配置 | `response.md` |
51
+ | `ec config` | 配置体系底层入口(读写/快照/回滚) | 看配置/改配置/查字段/查schema/校验/快照/回滚/历史/启动记录 | `config.md` |
52
+ | `ec stats` | Token 用量与费用统计 | 用量/费用/统计/预算/token/cost | `stats.md` |
53
+ | `ec trigger` | 定时与事件触发器管理 | 触发器/定时任务/cron/提醒/定时检查/自动执行/巡检/禁用 trigger/删除 trigger | `trigger.md` |
54
+ | `ec trigger event` | EventBus 事件目录 | 事件触发/事件目录/EventBus/source.type=event/filter.match | `event.md` |
55
+
56
+ ## 开发者工具(非 agent 会话能力)
57
+
58
+ | 命令 | 用途 | 说明 |
59
+ |------|------|------|
60
+ | `ec bench` | AUN 消息系统性能基准测试 | CLI 工具,agent 一般不主动调用;`ec bench --help` 查看用法 |
61
+
62
+ ## 其他
63
+
64
+ | 文档 | 说明 |
65
+ |------|------|
66
+ | `self-summary.md` | 自我总结流程指南 |
@@ -0,0 +1,69 @@
1
+ # ec agent — EvolAgent 生命周期管理
2
+
3
+ 管理本机托管的 EvolAgent(创建、启停、配置、热重载)。触发词:创建/新建/列出/查看/启用/禁用/删除/热重载/改配置。
4
+
5
+ ## 子命令
6
+
7
+ ```bash
8
+ # 列出所有 agent
9
+ ec agent list
10
+
11
+ # 查看 agent 详情(身份 + 配置 + 连接 + 会话 + 路径)
12
+ ec agent show <aid>
13
+
14
+ # 创建 agent(交互式)
15
+ ec agent new [aid]
16
+
17
+ # 创建 agent(非交互式,自动化场景)
18
+ ec agent new <aid> --non-interactive --project <绝对路径> \
19
+ [--baseagent claude|codex|gemini] [--owner <aid>] \
20
+ [--name "<显示名>"] [--description "<text>"] [--force]
21
+
22
+ # 启用 / 停用
23
+ ec agent enable <aid>
24
+ ec agent disable <aid>
25
+
26
+ # 读 / 改单个配置字段(支持点路径,如 active_baseagent)
27
+ ec agent get <aid> <key>
28
+ ec agent set <aid> <key> <val>
29
+
30
+ # 热重载配置(无参数 = 全量 resync:扫磁盘,新增上线/删除下线/修改热更新)
31
+ ec agent reload [aid]
32
+
33
+ # 删除 agent(--purge 连数据一并清除)
34
+ ec agent delete <aid> [--purge]
35
+ ```
36
+
37
+ ## 非交互创建必填项
38
+
39
+ `ec agent new <aid> --non-interactive` 时:
40
+ - 必填:`--project <absolute path>`
41
+ - 可选:`--baseagent`(默认 PATH 中第一个可用项)、`--owner`、`--name`、`--description`、`--force`(覆盖已有 config.json)
42
+
43
+ ## 头像更新
44
+
45
+ 头像上传通过 menu 协议暴露,不是 `ec agent` CLI 子命令:
46
+
47
+ ```json
48
+ {
49
+ "type": "menu.action",
50
+ "name": "agent",
51
+ "action": "update",
52
+ "args": {
53
+ "aid": "mybot.agentid.pub",
54
+ "patch": {
55
+ "avatar": "data:image/png;base64,..."
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ 约束:
62
+ - `patch.avatar` 必须单独提交,不能和 `chatmode`、`owners`、`channels` 等 config patch 混合。
63
+ - 支持 PNG/JPEG/WebP;后端按解码后图片大小硬限制 500KB。
64
+ - 成功后头像上传到该 agent 自己的 AUN storage,`agent.md` frontmatter 写入 AID 风格 URL,并重新签名发布。
65
+
66
+ ## 通用约定
67
+
68
+ - `--format json` — 输出 JSON
69
+ - `--help` / `-h` — 各子命令均支持,查看详细用法
@@ -0,0 +1,49 @@
1
+ # ec aid — AID 身份管理
2
+
3
+ 管理本地 AID 身份(证书、私钥、agent.md 名片),以及远程探测对端 AID。触发词:身份/证书/名片/探测对端/创建身份。
4
+
5
+ ## 子命令
6
+
7
+ ```bash
8
+ # 列出本地所有 AID(实测 sign+verify)
9
+ ec aid list [筛选选项] [--no-verify]
10
+
11
+ # 查看本地 AID 详情(证书有效期、私钥状态、签名能力)
12
+ ec aid show <aid>
13
+
14
+ # 创建新 AID 身份
15
+ ec aid new <aid>
16
+
17
+ # 远程探测 AID(是否存在 + 网关 + agent.md)
18
+ ec aid lookup <aid>
19
+
20
+ # agent.md 名片:签名上传 / 下载验签
21
+ ec aid agentmd put <aid>
22
+ ec aid agentmd get <aid>
23
+
24
+ # 删除指定本地 AID(无网络注销)
25
+ ec aid delete <aid>
26
+ ```
27
+
28
+ ## list 筛选选项
29
+
30
+ 不指定 = 列出 mine + broken + peer-cert(隐藏 no-cert)。可组合:
31
+ - `--mine` — 仅本地可用身份(实测可签名+验签通过)
32
+ - `--broken` — 仅有私钥但不可用(公钥不匹配 / 证书过期 / sign 失败)
33
+ - `--peer-cert` — 仅对端 AID(无私钥,有公钥证书)
34
+ - `--no-cert` — 仅无私钥无证书的孤儿目录
35
+ - `--no-verify` — 跳过 sign+verify 实测,仅静态扫描(更快)
36
+
37
+ 输出图标:`🔑` 有私钥 · `✅` 实测可签名/验签 · `❌` 不可签名 · `⌛` 证书过期 · `📜` 有公钥证书 · `📄` 有 agent.md
38
+
39
+ ## delete 批量清理
40
+
41
+ 批量删除**默认 dry-run,加 `--yes` 才真正执行**:
42
+ - `ec aid delete --orphan` — 清理无私钥的外部 AID 缓存
43
+ - `ec aid delete --no-cert` — 清理无私钥也无公钥证书的孤儿目录
44
+ - `ec aid delete --unrecoverable` — 清理云端公钥已变更、本地不可恢复的 AID
45
+
46
+ ## 通用约定
47
+
48
+ - `--format json` — 输出 JSON
49
+ - `--help` / `-h` — 各子命令均支持