evolcore 0.0.25 → 0.0.26

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 (231) hide show
  1. package/CHANGELOG.md +607 -565
  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 +40 -29
  8. package/bin/install-codex-managed-hooks.mjs +582 -555
  9. package/dist/agents/baseagent.js +96 -46
  10. package/dist/agents/claude-runner.js +50 -12
  11. package/dist/agents/codex/app-server-client.js +13 -5
  12. package/dist/agents/codex/catalog.js +1 -1
  13. package/dist/agents/codex/diagnostics.js +34 -1
  14. package/dist/agents/codex-runner.js +121 -38
  15. package/dist/agents/ecagent-runner.js +4 -9
  16. package/dist/agents/gemini-runner.js +2 -7
  17. package/dist/agents/runner-types.js +25 -17
  18. package/dist/aun/aid/agentmd.js +81 -8
  19. package/dist/aun/aid/client.js +1 -1
  20. package/dist/aun/aid/identity.js +1 -1
  21. package/dist/aun/aid/index.js +1 -1
  22. package/dist/aun/aid/store.js +17 -13
  23. package/dist/aun/menu-client.js +74 -0
  24. package/dist/aun/msg/group.js +1 -1
  25. package/dist/aun/msg/managed-operation.js +1 -1
  26. package/dist/aun/msg/p2p.js +6 -1
  27. package/dist/aun/msg/upload.js +30 -22
  28. package/dist/channels/aun.js +329 -94
  29. package/dist/cli/agent-command.js +105 -84
  30. package/dist/cli/agent-create.js +112 -10
  31. package/dist/cli/agent.js +16 -5
  32. package/dist/cli/aun-commands.js +297 -296
  33. package/dist/cli/bench.js +20 -20
  34. package/dist/cli/config.js +47 -28
  35. package/dist/cli/contact.js +70 -13
  36. package/dist/cli/ctl-command.js +22 -22
  37. package/dist/cli/daemon-commands.js +105 -40
  38. package/dist/cli/diag.js +31 -0
  39. package/dist/cli/fs-command.js +67 -67
  40. package/dist/cli/handoff-command.js +41 -9
  41. package/dist/cli/index.js +83 -77
  42. package/dist/cli/link-rules.js +21 -21
  43. package/dist/cli/managed-command-guard.js +3 -0
  44. package/dist/cli/menu-client.js +46 -31
  45. package/dist/cli/net-check.js +22 -22
  46. package/dist/cli/queue-command.js +29 -29
  47. package/dist/cli/response.js +30 -30
  48. package/dist/cli/restart-monitor.js +87 -40
  49. package/dist/cli/stats.js +51 -51
  50. package/dist/cli/trigger-command.js +56 -56
  51. package/dist/config/builtin-roles.js +1 -0
  52. package/dist/config/config-operation-service.js +145 -0
  53. package/dist/config/contact-operation-service.js +96 -7
  54. package/dist/config/resolved-config-op.js +27 -7
  55. package/dist/core/agent-application-service.js +2 -1
  56. package/dist/core/auth/authorization-audit.js +20 -12
  57. package/dist/core/auth/operation-authorizer.js +25 -4
  58. package/dist/core/auth/operation-catalog.js +35 -4
  59. package/dist/core/auth/remote-access-store.js +40 -1
  60. package/dist/core/bootstrap-service.js +1 -1
  61. package/dist/core/command/command-handler.js +83 -26
  62. package/dist/core/command/diag-service.js +118 -0
  63. package/dist/core/command/menu-catalog.js +12 -3
  64. package/dist/core/command/menu-handler.js +47 -26
  65. package/dist/core/command/menu-protocol.js +5 -0
  66. package/dist/core/command/menu-token-store.js +41 -8
  67. package/dist/core/command/slash-gate.js +34 -4
  68. package/dist/core/command/slash-handler.js +86 -21
  69. package/dist/core/handoff/runtime.js +205 -27
  70. package/dist/core/handoff/store.js +193 -4
  71. package/dist/core/message/im-renderer.js +72 -21
  72. package/dist/core/message/message-bridge.js +69 -9
  73. package/dist/core/message/message-queue.js +26 -0
  74. package/dist/core/message/message-utils.js +1 -0
  75. package/dist/core/message/response-engine.js +47 -28
  76. package/dist/core/model/catalog-service.js +79 -49
  77. package/dist/core/model/context-window-suffix.js +33 -0
  78. package/dist/core/model/model-catalog.js +1 -1
  79. package/dist/core/model/model-permission.js +12 -3
  80. package/dist/core/permission/ec-command-parser.js +51 -12
  81. package/dist/core/permission/sandbox-runtime.js +36 -14
  82. package/dist/core/permission/tool-policy.js +2 -1
  83. package/dist/index.js +280 -163
  84. package/dist/ipc.js +54 -2
  85. package/dist/response-system/engines/v1/proactive-flow.js +59 -2
  86. package/dist/stats/billing.js +41 -15
  87. package/dist/stats/db.js +159 -159
  88. package/dist/stats/eck-vars.js +9 -9
  89. package/dist/stats/price-resolver.js +28 -10
  90. package/dist/stats/query.js +139 -139
  91. package/dist/stats/role-budget.js +6 -6
  92. package/dist/stats/writer.js +51 -51
  93. package/dist/utils/cross-platform.js +30 -1
  94. package/dist/utils/error-dict.json +160 -160
  95. package/dist/utils/error-utils.js +21 -0
  96. package/dist/utils/evolcore-version.js +129 -0
  97. package/dist/utils/logger.js +3 -1
  98. package/dist/utils/macos-autostart.js +22 -22
  99. package/dist/utils/model-prices.jsonl +23 -23
  100. package/dist/utils/npm-ops.js +176 -35
  101. package/dist/utils/welcome.js +22 -22
  102. package/ecagent/LICENSE +21 -21
  103. package/ecagent/NOTICE +11 -11
  104. package/ecagent/README.md +61 -61
  105. package/ecagent/dist/harness/compaction/branch-summarization.js +30 -30
  106. package/ecagent/dist/harness/compaction/compaction.js +83 -83
  107. package/ecagent/dist/harness/messages.js +7 -7
  108. package/kits/docs/GUIDE.md +20 -20
  109. package/kits/docs/INDEX.md +66 -66
  110. package/kits/docs/aun/CHEATSHEET.md +19 -19
  111. package/kits/docs/aun/SYNC_PROTOCOL.md +15 -15
  112. package/kits/docs/channels/aun.md +56 -56
  113. package/kits/docs/channels/feishu.md +56 -56
  114. package/kits/docs/context-assembly.md +364 -364
  115. package/kits/docs/eck_templates/GUIDE.template.md +22 -22
  116. package/kits/docs/eck_templates/INDEX.template.md +28 -28
  117. package/kits/docs/eck_templates/path-registry.template.md +33 -33
  118. package/kits/docs/eck_templates/runtime.template.md +19 -19
  119. package/kits/docs/evolcore/INDEX.md +71 -71
  120. package/kits/docs/evolcore/agent-create.md +170 -165
  121. package/kits/docs/evolcore/agent.md +66 -66
  122. package/kits/docs/evolcore/aid.md +60 -60
  123. package/kits/docs/evolcore/codex-windows-sandbox.md +146 -146
  124. package/kits/docs/evolcore/config.md +202 -195
  125. package/kits/docs/evolcore/contact.md +75 -68
  126. package/kits/docs/evolcore/ctl.md +46 -46
  127. package/kits/docs/evolcore/event.md +216 -216
  128. package/kits/docs/evolcore/fs-architecture.md +1215 -1215
  129. package/kits/docs/evolcore/fs.md +110 -110
  130. package/kits/docs/evolcore/group-collaboration.md +243 -243
  131. package/kits/docs/evolcore/group-fs.md +17 -17
  132. package/kits/docs/evolcore/group-rules.md +251 -251
  133. package/kits/docs/evolcore/group.md +152 -152
  134. package/kits/docs/evolcore/menu-client.md +42 -34
  135. package/kits/docs/evolcore/model.md +50 -50
  136. package/kits/docs/evolcore/msg.md +166 -165
  137. package/kits/docs/evolcore/response.md +75 -75
  138. package/kits/docs/evolcore/rpc.md +37 -37
  139. package/kits/docs/evolcore/self-summary.md +29 -29
  140. package/kits/docs/evolcore/stats.md +83 -83
  141. package/kits/docs/evolcore/storage.md +50 -50
  142. package/kits/docs/evolcore/trigger.md +575 -575
  143. package/kits/docs/identity/AID_PROFILE_SPEC.md +26 -26
  144. package/kits/docs/identity/PATH_OPS.md +16 -16
  145. package/kits/docs/identity/ROLE_DETAIL.md +25 -25
  146. package/kits/docs/identity/identity-tools.md +26 -26
  147. package/kits/docs/path-registry.md +62 -62
  148. package/kits/docs/prompt-loading-architecture.md +269 -269
  149. package/kits/docs/venues/aun-group.md +45 -45
  150. package/kits/docs/venues/aun-private.md +10 -10
  151. package/kits/docs/venues/client-desktop.md +10 -10
  152. package/kits/docs/venues/client-mobile.md +10 -10
  153. package/kits/docs/venues/feishu-group.md +13 -13
  154. package/kits/docs/venues/feishu-private.md +9 -9
  155. package/kits/docs/venues/group.md +37 -25
  156. package/kits/docs/venues/private.md +10 -10
  157. package/kits/eck_manifest.auxiliary.json +43 -43
  158. package/kits/eck_manifest.json +190 -190
  159. package/kits/eck_message_manifest.json +74 -74
  160. package/kits/migrations/README-role-config-v4.md +32 -32
  161. package/kits/migrations/migrate-contact-book-v2.mjs +748 -748
  162. package/kits/migrations/migrate-role-config-v4.mjs +614 -614
  163. package/kits/migrations/migrate-role-config-v5.mjs +365 -365
  164. package/kits/migrations/rename-config-file.mjs +99 -99
  165. package/kits/rules/01-overview.md +162 -162
  166. package/kits/rules/02-navigation.md +96 -96
  167. package/kits/rules/03-identity.md +36 -36
  168. package/kits/rules/04-relation.md +75 -75
  169. package/kits/rules/05-venue.md +60 -60
  170. package/kits/rules/06-channel.md +63 -63
  171. package/kits/schemas/_meta.json +53 -53
  172. package/kits/schemas/agent-config.schema.1.json +177 -177
  173. package/kits/schemas/agent-config.schema.10.json +395 -395
  174. package/kits/schemas/agent-config.schema.11.json +421 -421
  175. package/kits/schemas/agent-config.schema.12.json +427 -427
  176. package/kits/schemas/agent-config.schema.2.json +239 -239
  177. package/kits/schemas/agent-config.schema.3.json +119 -119
  178. package/kits/schemas/agent-config.schema.4.json +208 -208
  179. package/kits/schemas/agent-config.schema.5.json +326 -326
  180. package/kits/schemas/agent-config.schema.6.json +322 -322
  181. package/kits/schemas/agent-config.schema.7.json +303 -303
  182. package/kits/schemas/agent-config.schema.8.json +304 -304
  183. package/kits/schemas/agent-config.schema.9.json +364 -364
  184. package/kits/schemas/contact-book.schema.1.json +36 -36
  185. package/kits/schemas/contact-book.schema.2.json +43 -43
  186. package/kits/schemas/contact-book.schema.3.json +67 -67
  187. package/kits/schemas/daemon.schema.1.json +91 -91
  188. package/kits/schemas/daemon.schema.2.json +101 -101
  189. package/kits/schemas/daemon.schema.3.json +123 -123
  190. package/kits/schemas/daemon.schema.4.json +136 -136
  191. package/kits/schemas/daemon.schema.5.json +135 -135
  192. package/kits/schemas/daemon.schema.6.json +131 -131
  193. package/kits/schemas/defaults.schema.1.json +81 -81
  194. package/kits/schemas/defaults.schema.2.json +85 -85
  195. package/kits/schemas/defaults.schema.3.json +73 -73
  196. package/kits/schemas/defaults.schema.4.json +107 -107
  197. package/kits/schemas/defaults.schema.5.json +119 -119
  198. package/kits/schemas/menu-exec-schema-commands.md +208 -208
  199. package/kits/schemas/migrations/README.md +30 -30
  200. package/kits/schemas/relation-config.schema.1.json +158 -158
  201. package/kits/schemas/relation-config.schema.2.json +73 -73
  202. package/kits/schemas/relation-config.schema.3.json +50 -50
  203. package/kits/schemas/relation-config.schema.4.json +47 -47
  204. package/kits/schemas/relation-config.schema.5.json +47 -47
  205. package/kits/schemas/relation-config.schema.6.json +46 -46
  206. package/kits/schemas/relation-config.schema.7.json +59 -59
  207. package/kits/schemas/relation-config.schema.8.json +103 -103
  208. package/kits/schemas/role-config.schema.1.json +201 -201
  209. package/kits/schemas/role-registry.schema.1.json +35 -35
  210. package/kits/schemas/single-session.schema.1.json +31 -31
  211. package/kits/schemas/single-session.schema.2.json +57 -57
  212. package/kits/schemas/single-session.schema.3.json +32 -32
  213. package/kits/templates/bootstrap-welcome.md +17 -17
  214. package/kits/templates/message-fragments/handoff-context-to-target.md +9 -9
  215. package/kits/templates/message-fragments/handoff-request-to-target.md +19 -19
  216. package/kits/templates/message-fragments/handoff-response-to-origin.md +9 -9
  217. package/kits/templates/message-fragments/inject-default.md +2 -2
  218. package/kits/templates/message-fragments/item.md +2 -2
  219. package/kits/templates/roles/admin.json +92 -92
  220. package/kits/templates/roles/member.json +96 -96
  221. package/kits/templates/roles/owner.json +9 -9
  222. package/kits/templates/roles/visitor.json +85 -85
  223. package/kits/templates/system-fragments/baseagent.md +14 -14
  224. package/kits/templates/system-fragments/bootstrap.md +31 -29
  225. package/kits/templates/system-fragments/channel.md +64 -64
  226. package/kits/templates/system-fragments/commands.md +28 -28
  227. package/kits/templates/system-fragments/identity.md +13 -13
  228. package/kits/templates/system-fragments/relation.md +19 -19
  229. package/kits/templates/system-fragments/session.md +59 -59
  230. package/kits/templates/system-fragments/venue.md +31 -31
  231. package/package.json +100 -98
@@ -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`。