evolcore 0.0.24 → 0.0.25

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 (197) hide show
  1. package/CHANGELOG.md +578 -561
  2. package/LICENSE +21 -21
  3. package/README.md +455 -455
  4. package/bin/codex-managed-acl.ps1 +160 -160
  5. package/bin/codex-managed-hook.mjs +208 -208
  6. package/bin/ec-safe-output.js +327 -327
  7. package/bin/ec.js +29 -29
  8. package/bin/install-codex-managed-hooks.mjs +555 -555
  9. package/dist/agents/claude-runner.js +4 -1
  10. package/dist/agents/codex-runner.js +7 -4
  11. package/dist/agents/ecagent-runner.js +14 -13
  12. package/dist/agents/gemini-runner.js +22 -2
  13. package/dist/aun/aid/agentmd.js +56 -4
  14. package/dist/aun/aid/index.js +1 -0
  15. package/dist/aun/aid/managed-operation.js +53 -1
  16. package/dist/aun/storage/client.js +4 -1
  17. package/dist/aun/storage/index.js +1 -1
  18. package/dist/cli/agent-command.js +186 -87
  19. package/dist/cli/agent-create.js +42 -4
  20. package/dist/cli/agent.js +103 -1
  21. package/dist/cli/aun-commands.js +360 -294
  22. package/dist/cli/bench.js +20 -20
  23. package/dist/cli/config.js +20 -20
  24. package/dist/cli/contact.js +10 -10
  25. package/dist/cli/ctl-command.js +22 -22
  26. package/dist/cli/daemon-commands.js +15 -15
  27. package/dist/cli/fs-command.js +67 -67
  28. package/dist/cli/handoff-command.js +7 -7
  29. package/dist/cli/index.js +77 -77
  30. package/dist/cli/link-rules.js +21 -21
  31. package/dist/cli/menu-client.js +11 -11
  32. package/dist/cli/net-check.js +22 -22
  33. package/dist/cli/queue-command.js +29 -29
  34. package/dist/cli/response.js +30 -30
  35. package/dist/cli/restart-monitor.js +30 -30
  36. package/dist/cli/stats.js +51 -51
  37. package/dist/cli/trigger-command.js +56 -56
  38. package/dist/config/builtin-roles.js +1 -0
  39. package/dist/config/config-manager.js +15 -0
  40. package/dist/config/config-operation-service.js +20 -3
  41. package/dist/config/resolved-config-op.js +39 -1
  42. package/dist/core/auth/operation-authorizer.js +62 -4
  43. package/dist/core/auth/operation-catalog.js +16 -0
  44. package/dist/core/command/agent-control.js +54 -25
  45. package/dist/core/command/cli-intent-parser.js +18 -0
  46. package/dist/core/command/command-handler.js +91 -16
  47. package/dist/core/command/menu-catalog.js +1 -0
  48. package/dist/core/command/menu-handler.js +41 -5
  49. package/dist/core/command/menu-protocol.js +1 -0
  50. package/dist/core/command/slash-handler.js +9 -9
  51. package/dist/core/event-catalog.js +5 -0
  52. package/dist/core/evolagent.js +3 -3
  53. package/dist/core/message/response-engine.js +12 -6
  54. package/dist/core/permission/tool-policy.js +45 -6
  55. package/dist/index.js +209 -162
  56. package/dist/stats/db.js +159 -159
  57. package/dist/stats/eck-vars.js +9 -9
  58. package/dist/stats/query.js +139 -139
  59. package/dist/stats/role-budget.js +6 -6
  60. package/dist/stats/writer.js +51 -51
  61. package/dist/utils/avatar-upload.js +282 -23
  62. package/dist/utils/error-dict.json +160 -160
  63. package/dist/utils/macos-autostart.js +22 -22
  64. package/dist/utils/model-prices.jsonl +23 -23
  65. package/dist/utils/welcome.js +22 -22
  66. package/ecagent/LICENSE +21 -21
  67. package/ecagent/NOTICE +11 -11
  68. package/ecagent/README.md +61 -61
  69. package/ecagent/dist/harness/compaction/branch-summarization.js +30 -30
  70. package/ecagent/dist/harness/compaction/compaction.js +83 -83
  71. package/ecagent/dist/harness/messages.js +7 -7
  72. package/kits/docs/GUIDE.md +20 -20
  73. package/kits/docs/INDEX.md +66 -66
  74. package/kits/docs/aun/CHEATSHEET.md +19 -19
  75. package/kits/docs/aun/SYNC_PROTOCOL.md +15 -15
  76. package/kits/docs/channels/aun.md +56 -56
  77. package/kits/docs/channels/feishu.md +56 -56
  78. package/kits/docs/context-assembly.md +365 -364
  79. package/kits/docs/eck_templates/GUIDE.template.md +22 -22
  80. package/kits/docs/eck_templates/INDEX.template.md +28 -28
  81. package/kits/docs/eck_templates/path-registry.template.md +33 -33
  82. package/kits/docs/eck_templates/runtime.template.md +19 -19
  83. package/kits/docs/evolcore/INDEX.md +71 -69
  84. package/kits/docs/evolcore/agent-create.md +170 -156
  85. package/kits/docs/evolcore/agent.md +83 -73
  86. package/kits/docs/evolcore/aid.md +64 -62
  87. package/kits/docs/evolcore/codex-windows-sandbox.md +146 -0
  88. package/kits/docs/evolcore/config.md +195 -195
  89. package/kits/docs/evolcore/contact.md +68 -68
  90. package/kits/docs/evolcore/ctl.md +46 -46
  91. package/kits/docs/evolcore/event.md +216 -216
  92. package/kits/docs/evolcore/fs-architecture.md +1215 -1215
  93. package/kits/docs/evolcore/fs.md +110 -110
  94. package/kits/docs/evolcore/group-collaboration.md +243 -243
  95. package/kits/docs/evolcore/group-fs.md +17 -17
  96. package/kits/docs/evolcore/group-rules.md +251 -251
  97. package/kits/docs/evolcore/group.md +152 -152
  98. package/kits/docs/evolcore/menu-client.md +34 -34
  99. package/kits/docs/evolcore/model.md +50 -50
  100. package/kits/docs/evolcore/msg.md +165 -165
  101. package/kits/docs/evolcore/response.md +75 -75
  102. package/kits/docs/evolcore/rpc.md +37 -37
  103. package/kits/docs/evolcore/self-summary.md +29 -29
  104. package/kits/docs/evolcore/stats.md +83 -83
  105. package/kits/docs/evolcore/storage.md +50 -50
  106. package/kits/docs/evolcore/trigger.md +575 -575
  107. package/kits/docs/identity/AID_PROFILE_SPEC.md +26 -26
  108. package/kits/docs/identity/PATH_OPS.md +16 -16
  109. package/kits/docs/identity/ROLE_DETAIL.md +25 -25
  110. package/kits/docs/identity/identity-tools.md +26 -26
  111. package/kits/docs/path-registry.md +62 -62
  112. package/kits/docs/prompt-loading-architecture.md +270 -269
  113. package/kits/docs/venues/aun-group.md +45 -45
  114. package/kits/docs/venues/aun-private.md +10 -10
  115. package/kits/docs/venues/client-desktop.md +10 -10
  116. package/kits/docs/venues/client-mobile.md +10 -10
  117. package/kits/docs/venues/feishu-group.md +13 -13
  118. package/kits/docs/venues/feishu-private.md +9 -9
  119. package/kits/docs/venues/group.md +25 -25
  120. package/kits/docs/venues/private.md +10 -10
  121. package/kits/eck_manifest.auxiliary.json +43 -43
  122. package/kits/eck_manifest.json +195 -183
  123. package/kits/eck_message_manifest.json +74 -74
  124. package/kits/migrations/README-role-config-v4.md +32 -32
  125. package/kits/migrations/migrate-contact-book-v2.mjs +748 -748
  126. package/kits/migrations/migrate-role-config-v4.mjs +614 -614
  127. package/kits/migrations/migrate-role-config-v5.mjs +365 -365
  128. package/kits/migrations/rename-config-file.mjs +99 -99
  129. package/kits/rules/01-overview.md +162 -162
  130. package/kits/rules/02-navigation.md +96 -96
  131. package/kits/rules/03-identity.md +39 -37
  132. package/kits/rules/04-relation.md +75 -75
  133. package/kits/rules/05-venue.md +60 -60
  134. package/kits/rules/06-channel.md +63 -63
  135. package/kits/schemas/_meta.json +53 -53
  136. package/kits/schemas/agent-config.schema.1.json +177 -177
  137. package/kits/schemas/agent-config.schema.10.json +395 -395
  138. package/kits/schemas/agent-config.schema.11.json +421 -421
  139. package/kits/schemas/agent-config.schema.12.json +427 -427
  140. package/kits/schemas/agent-config.schema.2.json +239 -239
  141. package/kits/schemas/agent-config.schema.3.json +119 -119
  142. package/kits/schemas/agent-config.schema.4.json +208 -208
  143. package/kits/schemas/agent-config.schema.5.json +326 -326
  144. package/kits/schemas/agent-config.schema.6.json +322 -322
  145. package/kits/schemas/agent-config.schema.7.json +303 -303
  146. package/kits/schemas/agent-config.schema.8.json +304 -304
  147. package/kits/schemas/agent-config.schema.9.json +364 -364
  148. package/kits/schemas/contact-book.schema.1.json +36 -36
  149. package/kits/schemas/contact-book.schema.2.json +43 -43
  150. package/kits/schemas/contact-book.schema.3.json +67 -67
  151. package/kits/schemas/daemon.schema.1.json +91 -91
  152. package/kits/schemas/daemon.schema.2.json +101 -101
  153. package/kits/schemas/daemon.schema.3.json +123 -123
  154. package/kits/schemas/daemon.schema.4.json +136 -136
  155. package/kits/schemas/daemon.schema.5.json +135 -135
  156. package/kits/schemas/daemon.schema.6.json +131 -131
  157. package/kits/schemas/defaults.schema.1.json +81 -81
  158. package/kits/schemas/defaults.schema.2.json +85 -85
  159. package/kits/schemas/defaults.schema.3.json +73 -73
  160. package/kits/schemas/defaults.schema.4.json +107 -107
  161. package/kits/schemas/defaults.schema.5.json +119 -119
  162. package/kits/schemas/menu-exec-schema-commands.md +208 -208
  163. package/kits/schemas/migrations/README.md +30 -30
  164. package/kits/schemas/relation-config.schema.1.json +158 -158
  165. package/kits/schemas/relation-config.schema.2.json +73 -73
  166. package/kits/schemas/relation-config.schema.3.json +50 -50
  167. package/kits/schemas/relation-config.schema.4.json +47 -47
  168. package/kits/schemas/relation-config.schema.5.json +47 -47
  169. package/kits/schemas/relation-config.schema.6.json +46 -46
  170. package/kits/schemas/relation-config.schema.7.json +59 -59
  171. package/kits/schemas/relation-config.schema.8.json +103 -103
  172. package/kits/schemas/role-config.schema.1.json +201 -201
  173. package/kits/schemas/role-registry.schema.1.json +35 -35
  174. package/kits/schemas/single-session.schema.1.json +31 -31
  175. package/kits/schemas/single-session.schema.2.json +57 -57
  176. package/kits/schemas/single-session.schema.3.json +32 -32
  177. package/kits/templates/bootstrap-welcome.md +17 -17
  178. package/kits/templates/message-fragments/handoff-context-to-target.md +9 -9
  179. package/kits/templates/message-fragments/handoff-request-to-target.md +19 -19
  180. package/kits/templates/message-fragments/handoff-response-to-origin.md +9 -9
  181. package/kits/templates/message-fragments/inject-default.md +2 -2
  182. package/kits/templates/message-fragments/item.md +2 -2
  183. package/kits/templates/roles/admin.json +96 -84
  184. package/kits/templates/roles/member.json +97 -96
  185. package/kits/templates/roles/owner.json +9 -9
  186. package/kits/templates/roles/visitor.json +86 -85
  187. package/kits/templates/system-fragments/baseagent.md +14 -14
  188. package/kits/templates/system-fragments/bootstrap.md +38 -29
  189. package/kits/templates/system-fragments/channel.md +64 -64
  190. package/kits/templates/system-fragments/commands.md +28 -28
  191. package/kits/templates/system-fragments/identity.md +13 -13
  192. package/kits/templates/system-fragments/relation.md +19 -19
  193. package/kits/templates/system-fragments/session.md +59 -59
  194. package/kits/templates/system-fragments/venue.md +31 -31
  195. package/package.json +98 -98
  196. package/skills/eclink/SKILL.md +0 -84
  197. package/skills/eclink/agents/openai.yaml +0 -4
@@ -1,110 +1,110 @@
1
- # ec fs — AUN 文件系统
2
-
3
- `ec fs` 是个人空间和群空间的统一文件入口。群空间也用 `ec fs`,没有 `ec group fs`。
4
-
5
- 路径格式:
6
-
7
- ```bash
8
- <AID>:<absolute-path>
9
- ```
10
-
11
- 无 `:` 的路径是本地路径。操作者身份用 `--as <aid>`,agent 会话内通常由 `EVOLCORE_SELF_AID` 注入,可省略。
12
-
13
- ## 已实现命令
14
-
15
- ```bash
16
- ec fs ls <AID>:<path> # 列目录
17
- ec fs cat <AID>:<path> # 输出文本文件;二进制/大文件返回头部摘要
18
- ec fs cp <local> <AID>:<path> # 上传
19
- ec fs cp <AID>:<path> <local> # 下载
20
- ec fs cp <AID>:<path> <AID>:<path> # 远程复制(同后端)
21
- ec fs stat [-L] <AID>:<path> # 查看节点元数据(默认不跟随软链,-L 跟随)
22
- ec fs lstat <AID>:<path> # 查看节点本身(不跟随末级软链)
23
- ec fs mv <AID>:<path> <AID>:<path> # 移动/改名(同后端)
24
- ec fs rm [-r] <AID>:<path> # 删除文件或目录
25
- ec fs mkdir [-p] <AID>:<path> # 创建目录
26
- ec fs ln -s <target> <AID>:<path> # 创建软链(personal storage)
27
- ec fs chmod [mode] <AID>:<path> # 切换公开/私有(personal storage)
28
- ec fs setfacl <AID>:<path> -m|-x ... # 设置/移除 ACL(personal storage)
29
- ec fs getfacl <AID>:<path> # 查看 ACL(personal storage)
30
- ec fs token issue|revoke|ls <path> # 管理访问 token(personal storage)
31
- ec fs find <AID>:<path> [filters] # 查找节点
32
- ec fs df <AID>: # 查看容量/配额
33
- ec fs mount <target> --volume <id> # 挂载实体卷
34
- ec fs mount <target> --source <src> # 挂载远程子树
35
- ec fs approve <AID>:<path> # 批准待审挂载(personal storage)
36
- ec fs reject <AID>:<path> # 拒绝待审挂载(personal storage)
37
- ec fs umount <AID>:<path> # 卸载挂载点
38
- ```
39
-
40
- 通用选项:
41
-
42
- - `--format json`:结构化输出
43
- - `--as <aid>`:显式指定操作者
44
- - `--aun-path <path>`:指定 AUN keystore 根
45
- - `--app <name>`:指定 AUN app slot
46
- - `--overwrite` / `--force`:`cp/mv/ln` 覆盖目标;`rm` 强制删除
47
- - `-r` / `--recursive`:`rm/cp` 递归
48
- - `-p` / `--parents`:`mkdir` 自动创建父目录
49
- - `-L` / `--follow`:`stat` 跟随末级软链
50
- - `--token <token>`:读取 personal storage 时携带访问 token
51
- - `--content-type <mime>`:上传时指定 MIME
52
- - `--public`:上传后公开可读(personal storage)
53
- - `--max-bytes <n>`:`cat` 最大直接输出字节数,默认 1MB
54
- - `--head-bytes <n>`:`cat` 二进制头部字节数,默认 256
55
- - `--visibility public|private`:`chmod` 可见性
56
- - `--allow-roles <roles>`:`chmod` 角色约束,逗号分隔
57
- - `-m aid:<aid>:<perms>` / `-x aid:<aid>`:`setfacl` 增删 ACL
58
- - `--source <AID>:<path>` / `--volume <id>`:`mount` 来源
59
- - `--expires <time>`:`mount/token/ACL` 过期时间,Unix 秒或 ISO 日期
60
- - `--require-approval`:挂载需要来源 owner 审批
61
- - `--max-uses <n>`:ACL 最大使用次数
62
- - `--max-reads <n>`:访问 token 最大读取次数
63
- - `--readonly` / `--readwrite`:挂载为只读或读写
64
- - `--name <glob>` / `--type <f|d|l>`:`find` 名称或类型过滤
65
- - `--size <expr>` / `--mtime <expr>`:`find` 大小或修改时间过滤
66
-
67
- ## 示例
68
-
69
- ```bash
70
- ec fs ls alice.agentid.pub:/private/
71
- ec fs cat alice.agentid.pub:/private/notes.md
72
- ec fs cp ./report.md alice.agentid.pub:/private/report.md
73
- ec fs cp alice.agentid.pub:/private/report.md ./report.md
74
- ec fs cp alice.agentid.pub:/private/a.md bob.agentid.pub:/inbox/a.md
75
- ec fs mkdir -p alice.agentid.pub:/private/reports/
76
- ec fs ln -s alice.agentid.pub:/private/report.md alice.agentid.pub:/public/report.md
77
- ec fs chmod +r alice.agentid.pub:/public/report.md
78
- ec fs setfacl alice.agentid.pub:/private/report.md -m aid:bob.agentid.pub:r
79
- ec fs token issue alice.agentid.pub:/public/report.md --expires 2026-12-31
80
- ec fs find alice.agentid.pub:/private/ --name "*.md"
81
- ec fs rm alice.agentid.pub:/private/report.md
82
- ec fs df alice.agentid.pub:
83
- ```
84
-
85
- 群 AID 与个人 AID 写法相同:
86
-
87
- ```bash
88
- ec fs ls g-team.agentid.pub:/archive/
89
- ec fs cp ./weekly.md g-team.agentid.pub:/archive/weekly.md
90
- ```
91
-
92
- ## 路由规则
93
-
94
- CLI 读取目标 AID 的 `agent.md`:
95
-
96
- - `type: group` 走群文件后端
97
- - 其他类型走个人 storage 后端
98
- - 读取失败时先按个人 storage 尝试,并给出警告
99
-
100
- 权限由后端判断。CLI 只携带操作者、目标 AID、路径和操作。
101
-
102
- ## 能力边界
103
-
104
- - `ln -s` 只在 personal storage 创建软链;group fs facade 暂无 symlink 接口。
105
- - `chmod` 只映射到 personal storage 的 `setVisibility`;group fs facade 暂无 chmod/setVisibility 接口。
106
- - `setfacl/getfacl/token/approve/reject` 只接 personal storage;group fs facade 暂无对应接口。
107
- - personal storage 的 `mv` 仅支持同 owner;跨 owner 请先 `cp` 再 `rm`。
108
- - personal/group 混合远程 `cp/mv` 不支持;请先下载到本地再上传。
109
-
110
- 需要底层调试时可用 `ec storage`。日常文件操作优先使用 `ec fs`。
1
+ # ec fs — AUN 文件系统
2
+
3
+ `ec fs` 是个人空间和群空间的统一文件入口。群空间也用 `ec fs`,没有 `ec group fs`。
4
+
5
+ 路径格式:
6
+
7
+ ```bash
8
+ <AID>:<absolute-path>
9
+ ```
10
+
11
+ 无 `:` 的路径是本地路径。操作者身份用 `--as <aid>`,agent 会话内通常由 `EVOLCORE_SELF_AID` 注入,可省略。
12
+
13
+ ## 已实现命令
14
+
15
+ ```bash
16
+ ec fs ls <AID>:<path> # 列目录
17
+ ec fs cat <AID>:<path> # 输出文本文件;二进制/大文件返回头部摘要
18
+ ec fs cp <local> <AID>:<path> # 上传
19
+ ec fs cp <AID>:<path> <local> # 下载
20
+ ec fs cp <AID>:<path> <AID>:<path> # 远程复制(同后端)
21
+ ec fs stat [-L] <AID>:<path> # 查看节点元数据(默认不跟随软链,-L 跟随)
22
+ ec fs lstat <AID>:<path> # 查看节点本身(不跟随末级软链)
23
+ ec fs mv <AID>:<path> <AID>:<path> # 移动/改名(同后端)
24
+ ec fs rm [-r] <AID>:<path> # 删除文件或目录
25
+ ec fs mkdir [-p] <AID>:<path> # 创建目录
26
+ ec fs ln -s <target> <AID>:<path> # 创建软链(personal storage)
27
+ ec fs chmod [mode] <AID>:<path> # 切换公开/私有(personal storage)
28
+ ec fs setfacl <AID>:<path> -m|-x ... # 设置/移除 ACL(personal storage)
29
+ ec fs getfacl <AID>:<path> # 查看 ACL(personal storage)
30
+ ec fs token issue|revoke|ls <path> # 管理访问 token(personal storage)
31
+ ec fs find <AID>:<path> [filters] # 查找节点
32
+ ec fs df <AID>: # 查看容量/配额
33
+ ec fs mount <target> --volume <id> # 挂载实体卷
34
+ ec fs mount <target> --source <src> # 挂载远程子树
35
+ ec fs approve <AID>:<path> # 批准待审挂载(personal storage)
36
+ ec fs reject <AID>:<path> # 拒绝待审挂载(personal storage)
37
+ ec fs umount <AID>:<path> # 卸载挂载点
38
+ ```
39
+
40
+ 通用选项:
41
+
42
+ - `--format json`:结构化输出
43
+ - `--as <aid>`:显式指定操作者
44
+ - `--aun-path <path>`:指定 AUN keystore 根
45
+ - `--app <name>`:指定 AUN app slot
46
+ - `--overwrite` / `--force`:`cp/mv/ln` 覆盖目标;`rm` 强制删除
47
+ - `-r` / `--recursive`:`rm/cp` 递归
48
+ - `-p` / `--parents`:`mkdir` 自动创建父目录
49
+ - `-L` / `--follow`:`stat` 跟随末级软链
50
+ - `--token <token>`:读取 personal storage 时携带访问 token
51
+ - `--content-type <mime>`:上传时指定 MIME
52
+ - `--public`:上传后公开可读(personal storage)
53
+ - `--max-bytes <n>`:`cat` 最大直接输出字节数,默认 1MB
54
+ - `--head-bytes <n>`:`cat` 二进制头部字节数,默认 256
55
+ - `--visibility public|private`:`chmod` 可见性
56
+ - `--allow-roles <roles>`:`chmod` 角色约束,逗号分隔
57
+ - `-m aid:<aid>:<perms>` / `-x aid:<aid>`:`setfacl` 增删 ACL
58
+ - `--source <AID>:<path>` / `--volume <id>`:`mount` 来源
59
+ - `--expires <time>`:`mount/token/ACL` 过期时间,Unix 秒或 ISO 日期
60
+ - `--require-approval`:挂载需要来源 owner 审批
61
+ - `--max-uses <n>`:ACL 最大使用次数
62
+ - `--max-reads <n>`:访问 token 最大读取次数
63
+ - `--readonly` / `--readwrite`:挂载为只读或读写
64
+ - `--name <glob>` / `--type <f|d|l>`:`find` 名称或类型过滤
65
+ - `--size <expr>` / `--mtime <expr>`:`find` 大小或修改时间过滤
66
+
67
+ ## 示例
68
+
69
+ ```bash
70
+ ec fs ls alice.agentid.pub:/private/
71
+ ec fs cat alice.agentid.pub:/private/notes.md
72
+ ec fs cp ./report.md alice.agentid.pub:/private/report.md
73
+ ec fs cp alice.agentid.pub:/private/report.md ./report.md
74
+ ec fs cp alice.agentid.pub:/private/a.md bob.agentid.pub:/inbox/a.md
75
+ ec fs mkdir -p alice.agentid.pub:/private/reports/
76
+ ec fs ln -s alice.agentid.pub:/private/report.md alice.agentid.pub:/public/report.md
77
+ ec fs chmod +r alice.agentid.pub:/public/report.md
78
+ ec fs setfacl alice.agentid.pub:/private/report.md -m aid:bob.agentid.pub:r
79
+ ec fs token issue alice.agentid.pub:/public/report.md --expires 2026-12-31
80
+ ec fs find alice.agentid.pub:/private/ --name "*.md"
81
+ ec fs rm alice.agentid.pub:/private/report.md
82
+ ec fs df alice.agentid.pub:
83
+ ```
84
+
85
+ 群 AID 与个人 AID 写法相同:
86
+
87
+ ```bash
88
+ ec fs ls g-team.agentid.pub:/archive/
89
+ ec fs cp ./weekly.md g-team.agentid.pub:/archive/weekly.md
90
+ ```
91
+
92
+ ## 路由规则
93
+
94
+ CLI 读取目标 AID 的 `agent.md`:
95
+
96
+ - `type: group` 走群文件后端
97
+ - 其他类型走个人 storage 后端
98
+ - 读取失败时先按个人 storage 尝试,并给出警告
99
+
100
+ 权限由后端判断。CLI 只携带操作者、目标 AID、路径和操作。
101
+
102
+ ## 能力边界
103
+
104
+ - `ln -s` 只在 personal storage 创建软链;group fs facade 暂无 symlink 接口。
105
+ - `chmod` 只映射到 personal storage 的 `setVisibility`;group fs facade 暂无 chmod/setVisibility 接口。
106
+ - `setfacl/getfacl/token/approve/reject` 只接 personal storage;group fs facade 暂无对应接口。
107
+ - personal storage 的 `mv` 仅支持同 owner;跨 owner 请先 `cp` 再 `rm`。
108
+ - personal/group 混合远程 `cp/mv` 不支持;请先下载到本地再上传。
109
+
110
+ 需要底层调试时可用 `ec storage`。日常文件操作优先使用 `ec fs`。