evolcore 0.0.2 → 0.0.4
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.
- package/CHANGELOG.md +93 -778
- package/README.md +45 -10
- package/bin/ec-safe-output.js +89 -24
- package/dist/agents/baseagent.js +46 -0
- package/dist/agents/claude-runner.js +198 -48
- package/dist/agents/codex-app-server-client.js +68 -0
- package/dist/agents/codex-runner.js +203 -8
- package/dist/agents/runner-types.js +2 -2
- package/dist/aun/aid/agentmd.js +79 -0
- package/dist/aun/aid/encryption-seed-policy.js +29 -0
- package/dist/aun/aid/index.js +1 -1
- package/dist/aun/aid/store.js +2 -5
- package/dist/aun/outbox.js +8 -0
- package/dist/channels/aun.js +241 -116
- package/dist/channels/daemon.js +18 -4
- package/dist/channels/dingtalk.js +1005 -260
- package/dist/channels/feishu.js +184 -56
- package/dist/channels/qqbot.js +23 -1
- package/dist/channels/wechat.js +303 -155
- package/dist/channels/wecom.js +1132 -164
- package/dist/cli/agent-command.js +2 -1
- package/dist/cli/aun-commands.js +98 -43
- package/dist/cli/bench.js +2 -2
- package/dist/cli/contact.js +71 -0
- package/dist/cli/ctl-command.js +2 -2
- package/dist/cli/daemon-commands.js +77 -214
- package/dist/cli/handoff-command.js +4 -3
- package/dist/cli/help.js +9 -5
- package/dist/cli/index.js +132 -116
- package/dist/cli/init-channel.js +242 -129
- package/dist/cli/init.js +70 -31
- package/dist/cli/model.js +2 -1
- package/dist/cli/net-check.js +2 -2
- package/dist/cli/queue-command.js +30 -6
- package/dist/cli/raw-key-input.js +25 -0
- package/dist/cli/response.js +5 -6
- package/dist/cli/restart-monitor.js +25 -1
- package/dist/cli/stats.js +6 -4
- package/dist/cli/trigger-command.js +146 -25
- package/dist/cli/version.js +6 -1
- package/dist/config/access-policy-domain.js +38 -0
- package/dist/config/access-policy.js +134 -0
- package/dist/config/builtin-role-templates.js +42 -17
- package/dist/config/builtin-roles.js +31 -6
- package/dist/config/config-field-policy.js +17 -5
- package/dist/config/config-manager.js +409 -29
- package/dist/config/config-operation-service.js +35 -38
- package/dist/config/contact-alias.js +68 -0
- package/dist/config/contact-bind-code.js +274 -0
- package/dist/config/contact-book-store.js +622 -0
- package/dist/config/contact-book-v2-startup.js +35 -0
- package/dist/config/contact-book.js +185 -300
- package/dist/config/contact-operation-service.js +116 -0
- package/dist/config/contact-request-service.js +331 -0
- package/dist/config/peer-role-resolver.js +136 -55
- package/dist/config/role-ranks.js +18 -0
- package/dist/config/role-service.js +16 -19
- package/dist/config/role-store.js +16 -5
- package/dist/config/roles.js +10 -1
- package/dist/config/schema-registry.js +49 -24
- package/dist/config-store.js +14 -4
- package/dist/core/auth/agent-delegation.js +105 -11
- package/dist/core/auth/authorization-audit.js +16 -1
- package/dist/core/auth/operation-authorizer.js +10 -0
- package/dist/core/auth/operation-catalog.js +105 -1
- package/dist/core/auth/trigger-authorization.js +15 -0
- package/dist/core/bootstrap-service.js +2 -9
- package/dist/core/channel-loader.js +6 -2
- package/dist/core/command/command-handler.js +113 -21
- package/dist/core/command/connect-menu.js +599 -0
- package/dist/core/command/evol-menu-version-gate.js +38 -0
- package/dist/core/command/group-menu.js +421 -0
- package/dist/core/command/menu-handler.js +382 -100
- package/dist/core/command/menu-protocol.js +8 -2
- package/dist/core/command/menu-token-store.js +102 -0
- package/dist/core/command/role-menu.js +128 -29
- package/dist/core/command/slash-gate.js +1 -1
- package/dist/core/command/slash-handler.js +186 -49
- package/dist/core/daemon-file-cache.js +40 -6
- package/dist/core/event-catalog.js +99 -0
- package/dist/core/evolagent-registry.js +4 -40
- package/dist/core/evolagent.js +20 -9
- package/dist/core/handoff/runtime.js +162 -37
- package/dist/core/handoff/store.js +46 -2
- package/dist/core/handoff/types.js +1 -0
- package/dist/core/inference/text-inference.js +16 -74
- package/dist/core/message/file-markers.js +7 -0
- package/dist/core/message/im-renderer.js +20 -14
- package/dist/core/message/inbound-admission.js +124 -0
- package/dist/core/message/message-bridge.js +670 -57
- package/dist/core/message/message-log.js +1 -0
- package/dist/core/message/message-queue.js +195 -10
- package/dist/core/message/message-utils.js +8 -2
- package/dist/core/message/peer-mode.js +7 -8
- package/dist/core/message/response-engine.js +642 -96
- package/dist/core/message/send-receipt.js +24 -0
- package/dist/core/message/stream-debouncer.js +11 -2
- package/dist/core/permission/approval-gateway.js +17 -10
- package/dist/core/permission/ec-command-parser.js +101 -46
- package/dist/core/permission/tool-policy.js +115 -38
- package/dist/core/protected-paths.js +38 -11
- package/dist/core/session/session-fs-store.js +44 -3
- package/dist/core/session/session-manager.js +86 -8
- package/dist/core/session/session-mapper.js +2 -0
- package/dist/core/session/session-renew.js +125 -69
- package/dist/core/session/session-turn-coordinator.js +5 -1
- package/dist/eck/kit-renderer.js +12 -1
- package/dist/eck/message-renderer.js +79 -1
- package/dist/index.js +285 -94
- package/dist/ipc.js +114 -8
- package/dist/paths.js +3 -0
- package/dist/response-system/config-resolver.js +29 -0
- package/dist/response-system/coordinator.js +8 -32
- package/dist/response-system/engines/v1/proactive-flow.js +1 -1
- package/dist/response-system/index.js +1 -0
- package/dist/response-system/modes/single-session/index.js +7 -4
- package/dist/stats/billing.js +20 -8
- package/dist/trigger/manager.js +3 -0
- package/dist/trigger/parser.js +126 -11
- package/dist/trigger/patch.js +12 -2
- package/dist/trigger/scheduler.js +444 -40
- package/dist/trigger/validation.js +13 -0
- package/dist/utils/aid-bind.js +43 -29
- package/dist/utils/error-dict.json +7 -0
- package/dist/utils/evolcore-version.js +21 -0
- package/dist/utils/instance-registry.js +14 -7
- package/dist/utils/log-writer.js +46 -0
- package/dist/utils/logger.js +2 -2
- package/dist/utils/media-cache.js +4 -1
- package/dist/utils/model-prices.jsonl +6 -3
- package/dist/utils/restart-safety.js +31 -0
- package/dist/utils/stable-semver.js +21 -0
- package/dist/utils/stats.js +33 -9
- package/dist/utils/system-memory.js +62 -0
- package/kits/docs/INDEX.md +2 -1
- package/kits/docs/channels/aun.md +4 -13
- package/kits/docs/evolcore/INDEX.md +5 -3
- package/kits/docs/evolcore/agent.md +9 -1
- package/kits/docs/evolcore/aid.md +5 -2
- package/kits/docs/evolcore/config.md +47 -2
- package/kits/docs/evolcore/contact.md +61 -0
- package/kits/docs/evolcore/fs.md +9 -0
- package/kits/docs/evolcore/group-rules.md +46 -4
- package/kits/docs/evolcore/group.md +15 -6
- package/kits/docs/evolcore/model.md +4 -1
- package/kits/docs/evolcore/msg.md +12 -6
- package/kits/docs/evolcore/response.md +16 -21
- package/kits/docs/evolcore/rpc.md +2 -0
- package/kits/docs/evolcore/stats.md +15 -2
- package/kits/docs/evolcore/storage.md +1 -0
- package/kits/docs/evolcore/trigger.md +42 -10
- package/kits/docs/path-registry.md +36 -17
- package/kits/eck_manifest.json +12 -0
- package/kits/eck_message_manifest.json +12 -1
- package/kits/migrations/migrate-contact-book-v2.mjs +754 -0
- package/kits/rules/01-overview.md +17 -7
- package/kits/rules/02-navigation.md +38 -18
- package/kits/rules/03-identity.md +28 -24
- package/kits/rules/04-relation.md +44 -28
- package/kits/rules/05-venue.md +31 -15
- package/kits/rules/06-channel.md +11 -7
- package/kits/schemas/_meta.json +21 -7
- package/kits/schemas/agent-config.schema.6.json +322 -0
- package/kits/schemas/agent-config.schema.7.json +303 -0
- package/kits/schemas/agent-config.schema.8.json +304 -0
- package/kits/schemas/agent-config.schema.9.json +374 -0
- package/kits/schemas/contact-book.schema.2.json +43 -0
- package/kits/schemas/contact-book.schema.3.json +67 -0
- package/kits/schemas/daemon.schema.1.json +3 -2
- package/kits/schemas/daemon.schema.2.json +101 -0
- package/kits/schemas/daemon.schema.3.json +123 -0
- package/kits/schemas/defaults.schema.2.json +85 -0
- package/kits/schemas/defaults.schema.3.json +73 -0
- package/kits/schemas/relation-config.schema.5.json +47 -0
- package/kits/schemas/relation-config.schema.6.json +46 -0
- package/kits/schemas/relation-config.schema.7.json +59 -0
- package/kits/schemas/role-config.schema.1.json +1 -0
- package/kits/schemas/role-registry.schema.1.json +2 -2
- package/kits/schemas/single-session.schema.2.json +57 -0
- package/kits/templates/message-fragments/handoff-context-to-target.md +9 -0
- package/kits/templates/message-fragments/handoff-request-to-target.md +14 -8
- package/kits/templates/message-fragments/handoff-response-to-origin.md +5 -6
- package/kits/templates/roles/admin.json +47 -0
- package/kits/templates/roles/member.json +5 -0
- package/kits/templates/roles/owner.json +1 -0
- package/kits/templates/roles/visitor.json +5 -0
- package/kits/templates/system-fragments/channel.md +12 -2
- package/kits/templates/system-fragments/commands.md +3 -1
- package/kits/templates/system-fragments/identity.md +3 -1
- package/kits/templates/system-fragments/relation.md +1 -1
- package/kits/templates/system-fragments/session.md +6 -2
- package/package.json +7 -5
- package/MIGRATION-0.5.0.md +0 -378
- package/ROLE_ACCESS_CONTROL.md +0 -174
- package/assets/brand/evolcore/README.md +0 -19
- package/assets/brand/evolcore/evolcore-app-icon.png +0 -0
- package/assets/brand/evolcore/evolcore-app-icon.svg +0 -13
- package/assets/brand/evolcore/evolcore-brand-board.png +0 -0
- package/assets/brand/evolcore/evolcore-brand-board.svg +0 -126
- package/assets/brand/evolcore/evolcore-logo-kit.zip +0 -0
- package/assets/brand/evolcore/evolcore-logo-reverse.png +0 -0
- package/assets/brand/evolcore/evolcore-logo-reverse.svg +0 -14
- package/assets/brand/evolcore/evolcore-logo.png +0 -0
- package/assets/brand/evolcore/evolcore-logo.svg +0 -14
- package/assets/brand/evolcore/evolcore-mark.png +0 -0
- package/assets/brand/evolcore/evolcore-mark.svg +0 -10
|
@@ -10,6 +10,8 @@ ec agent list
|
|
|
10
10
|
|
|
11
11
|
# 查看 agent 详情(身份 + 配置 + 连接 + 会话 + 路径)
|
|
12
12
|
ec agent show <aid>
|
|
13
|
+
# 简写,等价于 show
|
|
14
|
+
ec agent <aid>
|
|
13
15
|
|
|
14
16
|
# 创建 agent(交互式)
|
|
15
17
|
ec agent new [aid]
|
|
@@ -27,6 +29,12 @@ ec agent disable <aid>
|
|
|
27
29
|
ec agent get <aid> <key>
|
|
28
30
|
ec agent set <aid> <key> <val>
|
|
29
31
|
|
|
32
|
+
# 修改 agent.md 显示名称
|
|
33
|
+
ec agent rename <aid> "<name>"
|
|
34
|
+
|
|
35
|
+
# 标记 bootstrap 完成,进入 active 状态
|
|
36
|
+
ec agent ready <aid>
|
|
37
|
+
|
|
30
38
|
# 热重载配置(无参数 = 全量 resync:扫磁盘,新增上线/删除下线/修改热更新)
|
|
31
39
|
ec agent reload [aid]
|
|
32
40
|
|
|
@@ -65,5 +73,5 @@ ec agent delete <aid> [--purge]
|
|
|
65
73
|
|
|
66
74
|
## 通用约定
|
|
67
75
|
|
|
68
|
-
- `--format json` —
|
|
76
|
+
- `--format json` — 用于 `list/show/new/enable/disable/get/set/rename/ready/reload/delete` 的结构化输出
|
|
69
77
|
- `--help` / `-h` — 各子命令均支持,查看详细用法
|
|
@@ -12,7 +12,7 @@ ec aid list [筛选选项] [--no-verify]
|
|
|
12
12
|
ec aid show <aid>
|
|
13
13
|
|
|
14
14
|
# 创建新 AID 身份
|
|
15
|
-
ec aid new <aid>
|
|
15
|
+
ec aid new <aid> [--force]
|
|
16
16
|
|
|
17
17
|
# 远程探测 AID(是否存在 + 网关 + agent.md)
|
|
18
18
|
ec aid lookup <aid>
|
|
@@ -42,8 +42,11 @@ ec aid delete <aid>
|
|
|
42
42
|
- `ec aid delete --orphan` — 清理无私钥的外部 AID 缓存
|
|
43
43
|
- `ec aid delete --no-cert` — 清理无私钥也无公钥证书的孤儿目录
|
|
44
44
|
- `ec aid delete --unrecoverable` — 清理云端公钥已变更、本地不可恢复的 AID
|
|
45
|
+
- `--skip-pki` — 仅用于 `--unrecoverable`,跳过 PKI 探测并按本地自检结果判断;有误删风险
|
|
45
46
|
|
|
46
47
|
## 通用约定
|
|
47
48
|
|
|
48
|
-
- `--format json` —
|
|
49
|
+
- `--format json` — 对支持结构化结果的子命令输出 JSON
|
|
50
|
+
- `--aun-path <path>` — 指定 AUN keystore 根;未传时可由 `AUN_HOME` 提供
|
|
51
|
+
- `aid delete --orphan|--no-cert|--unrecoverable` 默认 dry-run,`--yes` 才执行删除
|
|
49
52
|
- `--help` / `-h` — 各子命令均支持
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
按作用域读写所有配置参数 + 配置快照/回滚/启动历史。触发词:看配置/改配置/查字段/列配置/校验配置/快照/回滚/历史/对比版本/启动记录。
|
|
4
4
|
|
|
5
5
|
> `ec config` 是配置读写的统一 CLI 入口;模型交互由 menu 协议和 slash `/model` 提供。
|
|
6
|
-
>
|
|
6
|
+
> 字段由共享 field policy 决定路由、值类型和访问级别;同一套规则用于 CLI、Menu 和 agent-tool。
|
|
7
7
|
|
|
8
8
|
## 参数读写
|
|
9
9
|
|
|
@@ -114,7 +114,8 @@ ec config schema <name> [version]
|
|
|
114
114
|
| `--process` | 进程级 | `~/.evolcore/daemon.json` |
|
|
115
115
|
| 写操作三者全无 | — | **拒绝**(防误写全局) |
|
|
116
116
|
|
|
117
|
-
`--peer` 取 `channelType#channelId` 或裸 aid(裸 aid 视为 `aun#<aid
|
|
117
|
+
`--peer` 取 `channelType#channelId` 或裸 aid(裸 aid 视为 `aun#<aid>`)。配置提交后开始处理的新
|
|
118
|
+
turn 使用新值;提交前已经开始的 turn 不被打断。
|
|
118
119
|
|
|
119
120
|
## 覆盖链
|
|
120
121
|
|
|
@@ -124,6 +125,49 @@ defaults → agent/config → relation/config
|
|
|
124
125
|
|
|
125
126
|
ConfigManager 只合并上述物理层并返回物理来源。角色策略不进入配置合并链:`permissionMode` 和 `baseagents.*.model` 由消费方按当前角色单独应用。
|
|
126
127
|
|
|
128
|
+
### Agent 消息准入策略
|
|
129
|
+
|
|
130
|
+
消息准入策略保存在 `agents/<aid>/config.json` 的 `access` 字段,但它是 Agent 自身的安全边界,
|
|
131
|
+
不参与 defaults/relation 有效覆盖:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"access": {
|
|
136
|
+
"policyMode": "contacts",
|
|
137
|
+
"allowedGroupChannels": [],
|
|
138
|
+
"requestLimit": { "maxTimes": 600, "coolDown": 3600 }
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
`policyMode` 为 `open | contacts | owners-only`;`allowedGroupChannels` 使用完整渠道实例键,空数组表示
|
|
144
|
+
关闭全部群聊渠道;`coolDown` 单位为秒。该对象由 Connect 的访问设置入口整体修改并与 Agent Owner、
|
|
145
|
+
已启用渠道实例共同校验,不通过通用 relation/defaults 覆盖链放宽。
|
|
146
|
+
|
|
147
|
+
### AUN 群规则加载策略
|
|
148
|
+
|
|
149
|
+
`groupRules.mode` 可设为 `load` 或 `ignore`,缺省为 `load`。该字段仅存在于 Agent 和 relation
|
|
150
|
+
层,relation 可覆盖 Agent 默认值,`--default` 不支持。
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Agent 默认值
|
|
154
|
+
ec config set groupRules.mode ignore --self bot.agentid.pub
|
|
155
|
+
|
|
156
|
+
# 当前群覆盖
|
|
157
|
+
ec config set groupRules.mode load \
|
|
158
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
159
|
+
|
|
160
|
+
# 查看有效值和来源 / 删除群覆盖
|
|
161
|
+
ec config get groupRules.mode \
|
|
162
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub --format json
|
|
163
|
+
ec config unset groupRules.mode \
|
|
164
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
`ignore` 表示运行时不访问远端群规则、不读本地物化文件、不注入规则正文,但不删除缓存,也不影响
|
|
168
|
+
`ec group rules` 的远端管理命令。配置切换不会自动创建或清空会话。Claude/Codex 从后续新 turn
|
|
169
|
+
按当前值重新组装上下文;其他 runner 的 Menu 写入结果会提示新建或清空群会话后生效。
|
|
170
|
+
|
|
127
171
|
## 权限控制
|
|
128
172
|
|
|
129
173
|
**写权限**(API 层判定):
|
|
@@ -131,6 +175,7 @@ ConfigManager 只合并上述物理层并返回物理来源。角色策略不进
|
|
|
131
175
|
- **角色专用入口**:`roles/index.json` 与 `roles/{roleId}.json` 由角色服务维护;relation 的
|
|
132
176
|
`role` 由角色分配服务维护;`permissionMode` 仅在角色策略中维护
|
|
133
177
|
- **兼容字段**:`enable_rich_content` 仍可读取旧值,但已废弃且不再产生运行时效果
|
|
178
|
+
- **群规则策略**:`groupRules.mode` 仅 Agent owner 或 daemon owner 可 set/unset;其他角色可读取当前 relation 的有效值
|
|
134
179
|
- **仅人可写**:channels / owners / admins / 凭证 / aid / enabled / projects / aun / models.allowed
|
|
135
180
|
- Agent 托管环境写仅人字段被拒
|
|
136
181
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# ec contact — Agent 联系人与访问控制
|
|
2
|
+
|
|
3
|
+
`ec contact` 管理指定 Agent 的 Contact Book v3。它只接受 AUN AID 主键;拉黑的是该 canonical AID,
|
|
4
|
+
因此会拒绝它在 AUN 以及所有已绑定外部渠道中的私聊入站。角色统一由 relation `config.json role` 管理。
|
|
5
|
+
|
|
6
|
+
## 命令
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
ec contact block <aid> --self <agent-aid>
|
|
10
|
+
ec contact unblock <aid> --self <agent-aid>
|
|
11
|
+
ec contact list --blocked --self <agent-aid>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
所有命令都要求显式 `--self`,支持 `--format json`。
|
|
15
|
+
|
|
16
|
+
## 约束
|
|
17
|
+
|
|
18
|
+
- `<aid>` 和 `--self` 必须是合法 AID。
|
|
19
|
+
- 写入 Agent Owner 时,系统会自动创建该 Owner 的 active 联系人记录。
|
|
20
|
+
- `block/unblock` 只接受已存在的联系人;不存在时返回 `NOT_FOUND`。
|
|
21
|
+
- `block/unblock` 只改变本 Agent 的入站接收策略,不代表对端也拉黑了本 Agent。
|
|
22
|
+
- Agent owner 不能被拉黑。
|
|
23
|
+
- `list --blocked` 只列出当前 blocked contact,并返回 `contactRevision`。
|
|
24
|
+
|
|
25
|
+
## 权限边界
|
|
26
|
+
|
|
27
|
+
直接从本机终端运行时,这是本地管理命令。
|
|
28
|
+
|
|
29
|
+
从 Agent 活动任务执行时,CLI 不直接写文件,而是携带当前 session delegation token 调用 daemon `contact.op`:
|
|
30
|
+
|
|
31
|
+
| 操作 | owner | admin | 普通角色 |
|
|
32
|
+
|---|---:|---:|---:|
|
|
33
|
+
| `list --blocked` | 允许 | 允许 | 拒绝 |
|
|
34
|
+
| `block` / `unblock` | 允许 | 拒绝 | 拒绝 |
|
|
35
|
+
|
|
36
|
+
缺少、伪造、撤销或跨会话 delegation token 时失败关闭。托管调用的 `--self` 必须等于当前任务所属 Agent。
|
|
37
|
+
|
|
38
|
+
角色管理使用 Role Menu relation assignment;admin 的授予和撤销必须由 owner 执行。
|
|
39
|
+
|
|
40
|
+
## JSON 输出
|
|
41
|
+
|
|
42
|
+
拉黑成功:
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"ok": true,
|
|
47
|
+
"operation": "set-blocked",
|
|
48
|
+
"selfAid": "bot.agentid.pub",
|
|
49
|
+
"primaryId": "peer.agentid.pub",
|
|
50
|
+
"blocked": true,
|
|
51
|
+
"changed": true,
|
|
52
|
+
"contactRevision": "..."
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## 拉黑后的消息行为
|
|
57
|
+
|
|
58
|
+
- AUN 和已绑定外部私聊身份的入站在 MessageBridge 业务入口被拦截,不进入 menu/auth/command/session/queue/LLM。
|
|
59
|
+
- 群聊不按成员的联系人状态过滤,只由 Agent 的 `access.allowedGroupChannels` 和 `policyMode` 决定。
|
|
60
|
+
- 对 `ai`、`bot`、`agent`、`service` 类型的私聊对端,可限频返回 `[rejection] Not accepting messages from you.`。
|
|
61
|
+
- 入站正文中的 `[rejection]` 没有协议控制语义。发送者未被本 Agent 拉黑时,该文本正常进入响应式会话。
|
package/kits/docs/evolcore/fs.md
CHANGED
|
@@ -41,12 +41,15 @@ ec fs umount <AID>:<path> # 卸载挂载点
|
|
|
41
41
|
|
|
42
42
|
- `--format json`:结构化输出
|
|
43
43
|
- `--as <aid>`:显式指定操作者
|
|
44
|
+
- `--aun-path <path>`:指定 AUN keystore 根
|
|
45
|
+
- `--app <name>`:指定 AUN app slot
|
|
44
46
|
- `--overwrite` / `--force`:`cp/mv/ln` 覆盖目标;`rm` 强制删除
|
|
45
47
|
- `-r` / `--recursive`:`rm/cp` 递归
|
|
46
48
|
- `-p` / `--parents`:`mkdir` 自动创建父目录
|
|
47
49
|
- `-L` / `--follow`:`stat` 跟随末级软链
|
|
48
50
|
- `--token <token>`:读取 personal storage 时携带访问 token
|
|
49
51
|
- `--content-type <mime>`:上传时指定 MIME
|
|
52
|
+
- `--public`:上传后公开可读(personal storage)
|
|
50
53
|
- `--max-bytes <n>`:`cat` 最大直接输出字节数,默认 1MB
|
|
51
54
|
- `--head-bytes <n>`:`cat` 二进制头部字节数,默认 256
|
|
52
55
|
- `--visibility public|private`:`chmod` 可见性
|
|
@@ -54,6 +57,12 @@ ec fs umount <AID>:<path> # 卸载挂载点
|
|
|
54
57
|
- `-m aid:<aid>:<perms>` / `-x aid:<aid>`:`setfacl` 增删 ACL
|
|
55
58
|
- `--source <AID>:<path>` / `--volume <id>`:`mount` 来源
|
|
56
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` 大小或修改时间过滤
|
|
57
66
|
|
|
58
67
|
## 示例
|
|
59
68
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ec group rules — 群规则文件
|
|
2
2
|
|
|
3
|
-
管理 AUN 群空间中的 `/rules.md`。群规则文件用于定义本群特有的工作流程、职责分工、交付格式、限制条件和升级路径;发布后,EvolCore
|
|
3
|
+
管理 AUN 群空间中的 `/rules.md`。群规则文件用于定义本群特有的工作流程、职责分工、交付格式、限制条件和升级路径;发布后,EvolCore 默认会在该群的对话上下文中加载,本地 Agent 也可用 `groupRules.mode` 选择忽略。
|
|
4
4
|
|
|
5
5
|
以自己的 AID 为操作者 `<from>`,群 AID 为 `<group-id>`。
|
|
6
6
|
|
|
@@ -30,6 +30,44 @@ ec group rules <from> <group-id> publish
|
|
|
30
30
|
|
|
31
31
|
所有命令均支持 `--format json`。
|
|
32
32
|
|
|
33
|
+
## 本地加载策略
|
|
34
|
+
|
|
35
|
+
`ec group rules get/set/publish` 管理远端群规则;`groupRules.mode` 管理当前 Agent 是否把远端规则
|
|
36
|
+
读取并注入上下文。两者互不替代。策略支持 Agent 默认值和当前群 relation 覆盖,优先级为:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
Agent groupRules.mode -> 当前群 relation groupRules.mode -> 缺省 load
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# 当前群的有效策略与来源
|
|
44
|
+
ec config get groupRules.mode \
|
|
45
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub --format json
|
|
46
|
+
|
|
47
|
+
# 只忽略当前群;重新设为 load 可恢复
|
|
48
|
+
ec config set groupRules.mode ignore \
|
|
49
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
50
|
+
ec config set groupRules.mode load \
|
|
51
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
52
|
+
|
|
53
|
+
# 删除当前群覆盖,回落 Agent 默认值或缺省 load
|
|
54
|
+
ec config unset groupRules.mode \
|
|
55
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
56
|
+
|
|
57
|
+
# 设置 Agent 默认策略;只能从允许 Agent 级写入的私聊或控制面执行
|
|
58
|
+
ec config set groupRules.mode ignore --self bot.agentid.pub
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
`groupRules.mode` 只能由 Agent owner 或 daemon owner 修改,其他角色仍可读取当前 relation 的有效值。
|
|
62
|
+
在群聊中,即使 owner 也只能修改当前群 relation,不能修改 Agent 默认值。命令沿用既有
|
|
63
|
+
`ec config set/unset` 的授权、selector 和输出语义,不新增 Menu 协议。
|
|
64
|
+
|
|
65
|
+
`ignore` 从配置提交后开始处理的新 turn 生效,并保证不访问远端规则、不读取本地
|
|
66
|
+
`rules.md`、不注入规则正文;旧物化文件会保留,但不能作为回退来源。切回 `load` 后仍须重新完成
|
|
67
|
+
远端元数据校验。配置切换不会清空、新建或 fork 会话,也不会删除已进入恢复会话历史的旧内容。
|
|
68
|
+
Claude/Codex 的后续 turn 会按新策略重新组装上下文;其他 runner 仍保存配置,但 Menu 成功输出会
|
|
69
|
+
提示新建或清空该群会话后生效。
|
|
70
|
+
|
|
33
71
|
## 推荐流程
|
|
34
72
|
|
|
35
73
|
日常更新直接使用 `set`:
|
|
@@ -160,6 +198,7 @@ ec group rules bot.agentid.pub g-team.agentid.pub get --format json
|
|
|
160
198
|
| status | 含义 | 是否加载 |
|
|
161
199
|
|--------|------|----------|
|
|
162
200
|
| `ok` | `get/set/publish` 校验或发布成功 | 是 |
|
|
201
|
+
| `ignored` | 当前 Agent 的 `groupRules.mode=ignore`,本轮未访问远端或本地规则 | 否 |
|
|
163
202
|
| `synced` | 运行时已刷新并物化本地规则 | 是 |
|
|
164
203
|
| `cached` | 本地物化文件仍与已发布元信息一致 | 是 |
|
|
165
204
|
| `missing` | 未发布规则,或 `/rules.md` 不存在 | 否 |
|
|
@@ -181,16 +220,19 @@ ec group rules bot.agentid.pub g-team.agentid.pub get --format json
|
|
|
181
220
|
校验成功后,本地物化为:
|
|
182
221
|
|
|
183
222
|
```text
|
|
184
|
-
$
|
|
223
|
+
$RELATIONS_DIR/<channel>#<urlEncode(groupId)>/rules.md
|
|
185
224
|
```
|
|
186
225
|
|
|
187
226
|
AUN 示例:
|
|
188
227
|
|
|
189
228
|
```text
|
|
190
|
-
$AGENT_DIR/
|
|
229
|
+
$AGENT_DIR/relations/aun#g-team.agentid.pub/rules.md
|
|
191
230
|
```
|
|
192
231
|
|
|
193
|
-
|
|
232
|
+
该本地文件属于**关系层**(群是对端的一种,见 `kits/rules/04-relation.md`),落在
|
|
233
|
+
`agentRelationsDir(selfAid)/<peerKey>/rules.md`(`src/eck/group-rules-sync.ts` 的 `relationPaths`)。
|
|
234
|
+
`$VENUES_DIR` 下的同名文件是已删除模块 `group-venue-sync.ts` 的历史残留,不再有效。
|
|
235
|
+
它只是远端规则的物化副本,不应直接编辑。只有当前处理轮次验证通过并设置 `groupRulesPath` 时,ECK manifest 才会把它注入 system context。
|
|
194
236
|
|
|
195
237
|
## 排障
|
|
196
238
|
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
# 文本(含空格/换行/特殊字符时用引号包起来;纯短词可不包,但多空格会被压成一个)
|
|
13
|
-
ec group send <from> <group-id> "<text>" [--encrypt]
|
|
13
|
+
ec group send <from> <group-id> "<text>" --return none|required [--encrypt]
|
|
14
14
|
|
|
15
15
|
# 文件(--as image|video|voice|file)
|
|
16
|
-
ec group send <from> <group-id> --file <path> [--as <type>] [--text "<说明>"]
|
|
16
|
+
ec group send <from> <group-id> --file <path> --return none|required [--as <type>] [--text "<说明>"]
|
|
17
17
|
|
|
18
18
|
# 自定义 payload
|
|
19
|
-
ec group send <from> <group-id> --payload '<json>'
|
|
19
|
+
ec group send <from> <group-id> --payload '<json>' --return none|required
|
|
20
20
|
|
|
21
21
|
# 拉取群消息(建议带 --app 独立消费通道,避免影响 daemon)
|
|
22
22
|
ec group pull <from> <group-id> [--after-seq <N>] [--limit <N>] [--app <name>]
|
|
@@ -38,11 +38,19 @@ ec group send <from> <group-id> "通知" --mention alice.agentid.pub,bob.agentid
|
|
|
38
38
|
> 若正文**精确等于**某个 flag 名(如要发送文本 `--encrypt`),用 `--` 分隔:
|
|
39
39
|
> `ec group send <from> <group-id> -- --encrypt`
|
|
40
40
|
|
|
41
|
+
发送选项还包括:
|
|
42
|
+
|
|
43
|
+
- `--no-encrypt`:强制明文,优先于 `--encrypt`
|
|
44
|
+
- `--thread <id>`:指定话题 ID
|
|
45
|
+
- `--return <none|required>`:跨会话发送必填;Trigger 任务只能使用 `none`
|
|
46
|
+
- `--content-type <mime>`:覆盖文件 MIME
|
|
47
|
+
- `--transcript <text>`:语音转写,仅 `--as voice`
|
|
48
|
+
|
|
41
49
|
## 群管理
|
|
42
50
|
|
|
43
51
|
```bash
|
|
44
52
|
# 创建群
|
|
45
|
-
ec group create <from> "<name>" [--visibility public|private] [--description "<desc>"] [--join-mode <mode>]
|
|
53
|
+
ec group create <from> "<name>" [--visibility public|private] [--description "<desc>"] [--join-mode <mode>] [--group-id <aid>]
|
|
46
54
|
|
|
47
55
|
# 列出我加入的群
|
|
48
56
|
ec group list <from> [--size <N>]
|
|
@@ -126,8 +134,9 @@ ec group unban <from> <group-id> <member-aid>
|
|
|
126
134
|
## 通用约定
|
|
127
135
|
|
|
128
136
|
- `<from>` 必须是合法 AID(入口统一校验,格式错直接报错)
|
|
129
|
-
- `--format json` —
|
|
130
|
-
- `--app <name>` —
|
|
137
|
+
- `--format json` — 对支持结构化结果的子命令输出 JSON
|
|
138
|
+
- `--app <name>` — 仅 `pull` / `ack` 指定独立消费 slot
|
|
139
|
+
- `--aun-path <path>` — 指定 AUN keystore 根
|
|
131
140
|
- `--encrypt` — 仅 send,启用端到端加密(群聊默认明文)
|
|
132
141
|
- `create` 会通过 SDK 自动生成并导入群 `group_aid` 身份。
|
|
133
142
|
- `owner` 会走 SDK 的群主转让授权签名流程,需要本机有该群 `group_aid` 的私钥;若网关返回 `pending_rekey`,CLI 会在本机存在新群主私钥时自动调用完成步骤,否则输出“已发起,等待新群主完成 rekey”。
|
|
@@ -14,7 +14,7 @@ ec model current [--self <aid>] [--peer <peer>] [--role <role>]
|
|
|
14
14
|
# 查看单个模型详情
|
|
15
15
|
ec model info <model-id> [--self <aid>]
|
|
16
16
|
|
|
17
|
-
#
|
|
17
|
+
# 设置模型,可同时设置推理强度;本机终端写操作需要 --self
|
|
18
18
|
ec model use <model-id> --self <aid> [--peer <peer>] [--effort <level>]
|
|
19
19
|
|
|
20
20
|
# 设置推理强度:low | medium | high | xhigh | max | auto
|
|
@@ -38,6 +38,9 @@ ec model check [--self <aid>]
|
|
|
38
38
|
|
|
39
39
|
生效优先级为关系、角色、agent、defaults。`--peer` 可使用 `channelType#channelId`;裸 AID 按 `aun#<aid>` 处理。
|
|
40
40
|
|
|
41
|
+
在 EvolCore 托管会话中,省略 `--self`、`--peer`、`--role` 时,`list/current/use/effort/reset`
|
|
42
|
+
会通过 `ec ctl` 作用于当前会话;显式 selector 仍按上表访问持久化作用域。本机终端不具备该隐式当前会话语义。
|
|
43
|
+
|
|
41
44
|
## 输出与权限
|
|
42
45
|
|
|
43
46
|
- 所有子命令支持 `--format json`。
|
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
# 文本(明文)
|
|
11
|
-
ec msg send <from> <to> "<text>"
|
|
11
|
+
ec msg send <from> <to> "<text>" --return none|required
|
|
12
12
|
|
|
13
13
|
# 从文件读取文本内容(用于超长消息或避免 Shell 转义)
|
|
14
|
-
ec msg send <from> <to> --text-from-file <path>
|
|
14
|
+
ec msg send <from> <to> --text-from-file <path> --return none|required
|
|
15
15
|
|
|
16
16
|
# 文本(密文 E2EE)
|
|
17
|
-
ec msg send <from> <to> "<text>" --encrypt
|
|
17
|
+
ec msg send <from> <to> "<text>" --encrypt --return none|required
|
|
18
|
+
|
|
19
|
+
# 强制明文(同时出现时优先于 --encrypt)
|
|
20
|
+
ec msg send <from> <to> "<text>" --no-encrypt --return none|required
|
|
18
21
|
|
|
19
22
|
# 文件:--as 可选 image|video|voice|file(默认按扩展名推断)
|
|
20
23
|
ec msg send <from> <to> --file <path> [--as <type>]
|
|
@@ -29,7 +32,9 @@ ec msg send <from> <to> --payload '<json>'
|
|
|
29
32
|
发送相关选项:
|
|
30
33
|
- `--text-from-file <path>` — 从文件读取文本(UTF-8),用于超长消息或避免 Shell 转义
|
|
31
34
|
- `--encrypt` — 端到端加密
|
|
35
|
+
- `--no-encrypt` — 强制明文发送,优先于 `--encrypt`
|
|
32
36
|
- `--thread <id>` — 指定话题 ID(多话题路由)
|
|
37
|
+
- `--return <none|required>` — 跨会话发送必填;`none` 仅补充目标上下文,`required` 将回答回流来源。Trigger 任务只能使用 `none`
|
|
33
38
|
- `--content-type <mime>` — 显式覆盖 MIME(仅 `--file`)
|
|
34
39
|
- `--text <说>` — 附件说明文字(仅 `--file`)
|
|
35
40
|
- `--transcript <text>` — 语音转写(仅 `--as voice`)
|
|
@@ -107,10 +112,11 @@ ec msg history <self-aid> <target-aid> \
|
|
|
107
112
|
|
|
108
113
|
`sessionId` 是 EvolCore 本地逻辑会话 ID,不是 Claude/Codex 等后端的会话 ID。
|
|
109
114
|
|
|
110
|
-
##
|
|
115
|
+
## 共享选项
|
|
111
116
|
|
|
112
|
-
- `--format json` —
|
|
113
|
-
- `--app <name>` —
|
|
117
|
+
- `--format json` — 对支持结构化结果的子命令输出 JSON
|
|
118
|
+
- `--app <name>` — 仅 `pull` / `ack` 指定独立消费 slot
|
|
119
|
+
- `--aun-path <path>` — 指定 AUN keystore 根
|
|
114
120
|
|
|
115
121
|
## 自主回复策略
|
|
116
122
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
11
|
# 列出所有响应模式(含适用场景)
|
|
12
|
-
ec response list
|
|
12
|
+
ec response list
|
|
13
13
|
|
|
14
14
|
# 显示当前作用域生效的默认模式 + 配置
|
|
15
15
|
ec response current [--self <aid>] [--peer <X>]
|
|
@@ -17,10 +17,10 @@ ec response current [--self <aid>] [--peer <X>]
|
|
|
17
17
|
# 查看单个模式详情(场景/配置参数)
|
|
18
18
|
ec response info <mode-id>
|
|
19
19
|
|
|
20
|
-
#
|
|
21
|
-
ec response set <mode-id> --self <aid> [--peer <X>]
|
|
20
|
+
# 设置当前作用域的响应模式
|
|
21
|
+
ec response set <mode-id> --self <aid> [--peer <X>]
|
|
22
22
|
|
|
23
|
-
# 清除指定作用域的
|
|
23
|
+
# 清除指定作用域的 responseMode 和 responseModeParams 设置
|
|
24
24
|
ec response reset --self <aid> [--peer <X>]
|
|
25
25
|
|
|
26
26
|
# 查看模式配置参数
|
|
@@ -30,39 +30,34 @@ ec response config [<mode-id>] [--self <aid>] [--peer <X>]
|
|
|
30
30
|
ec response config set <key> <value> --mode <mode-id> --self <aid> [--peer <X>]
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
##
|
|
33
|
+
## 内置模式
|
|
34
34
|
|
|
35
35
|
| 模式 id | 显示名 | 场景 | 用途 |
|
|
36
36
|
|---------|--------|------|------|
|
|
37
|
-
| `
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
| `workflow` | 工作流模式 | 群聊 | 顺序处理任务,任务群 |
|
|
42
|
-
| `context-enhanced` | 上下文增强 | 群聊 | 注入群规则文档,工作群 |
|
|
43
|
-
| `batch-processing` | 批量处理 | 群聊 | 攒批节省资源,低优先级群 |
|
|
44
|
-
| `selective-response` | 选择性响应 | 群聊 | 白名单/关键词过滤 |
|
|
45
|
-
| `rate-limited` | 速率限制 | 私聊/群聊 | 控制响应频率,防刷屏 |
|
|
46
|
-
| `autonomous` | 自主模式 | 私聊/群聊 | 触发器驱动,定时任务 |
|
|
37
|
+
| `single-session` | 单会话模式 | 私聊/群聊 | 单会话直接处理;具体投递方式由 `chatmode` 的 `interactive` / `proactive` 决定 |
|
|
38
|
+
|
|
39
|
+
当前注册表只内置 `single-session`。历史的 `interactive` / `proactive` 已合并为该模式下的
|
|
40
|
+
`chatmode` 流程,不再是可传给 `ec response set` 的 mode id。
|
|
47
41
|
|
|
48
42
|
## 作用域(越具体越优先:关系 > agent > 全局)
|
|
49
43
|
|
|
50
44
|
| 参数 | 作用域 | 落盘 |
|
|
51
45
|
|------|--------|------|
|
|
52
|
-
| `--self <aid>` | agent 级 | `config.json` 的
|
|
53
|
-
| `--self <aid> --peer <X>` | 关系级 | `relations/<peerKey>/config.json` 的
|
|
46
|
+
| `--self <aid>` | agent 级 | `config.json` 的 `responseMode` / `responseModeParams` |
|
|
47
|
+
| `--self <aid> --peer <X>` | 关系级 | `relations/<peerKey>/config.json` 的 `responseMode` / `responseModeParams` |
|
|
54
48
|
|
|
55
49
|
`--peer` 取 `channelType#channelId` 或裸 aid(裸 aid 视为 `aun#<aid>`)。
|
|
56
50
|
|
|
57
|
-
> **写操作必须 --self
|
|
51
|
+
> **写操作必须 --self**:响应模式是行为参数,从 agent 级起步,全局默认(defaults)不承载。
|
|
58
52
|
> 读操作(list/info/current/config 查看)无此限制。
|
|
59
53
|
|
|
60
54
|
## 解析优先级
|
|
61
55
|
|
|
62
56
|
```
|
|
63
|
-
1.
|
|
64
|
-
2.
|
|
65
|
-
3.
|
|
57
|
+
1. relation `responseMode`
|
|
58
|
+
2. agent `responseMode`
|
|
59
|
+
3. defaults `responseMode`
|
|
60
|
+
4. 注册表首选模式
|
|
66
61
|
```
|
|
67
62
|
|
|
68
63
|
## 权限
|
|
@@ -15,6 +15,8 @@ ec rpc --as <aid> --params <params>
|
|
|
15
15
|
- 单行 JSON(以 `{` 开头)→ 单次调用
|
|
16
16
|
- 多行 JSONL → 逐行执行,失败即停
|
|
17
17
|
- 文件路径(文件存在)→ 读取文件内容作为 JSONL
|
|
18
|
+
- `--app <name>` — 指定独立消费 slot,仅对 `message.pull` / `group.pull` 等消费类方法有意义
|
|
19
|
+
- `--aun-path <path>` — 指定 AUN keystore 根
|
|
18
20
|
|
|
19
21
|
每行 JSON 格式:`{"method":"<namespace.method>","params":{...}}`
|
|
20
22
|
|
|
@@ -15,7 +15,7 @@ ec stats --today
|
|
|
15
15
|
ec stats --hour # 最近 24h,按小时分组
|
|
16
16
|
ec stats --week # 本周
|
|
17
17
|
ec stats --month # 本月
|
|
18
|
-
ec stats --
|
|
18
|
+
ec stats --from 2026-05-01 --to 2026-06-01 # 任意区间
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
## 按维度过滤(可组合)
|
|
@@ -51,6 +51,19 @@ ec stats --traffic --by peer # 按对端分组流量
|
|
|
51
51
|
ec stats --traffic --week # 本周流量
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
+
## 运维与结构化视图
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
ec stats --peers [--limit 50]
|
|
58
|
+
ec stats --groups [--limit 50]
|
|
59
|
+
ec stats --summary
|
|
60
|
+
ec stats --peer-detail <aid|peer-key>
|
|
61
|
+
ec stats --task-calls <task-id>
|
|
62
|
+
ec stats --session-calls <session-id>
|
|
63
|
+
ec stats --session <session-id> --last
|
|
64
|
+
ec stats --rebuild
|
|
65
|
+
```
|
|
66
|
+
|
|
54
67
|
## 直接 SQL 查询
|
|
55
68
|
|
|
56
69
|
```bash
|
|
@@ -67,4 +80,4 @@ ec stats --sql "SELECT model, COUNT(*) AS cnt FROM usage_events GROUP BY model"
|
|
|
67
80
|
## 通用选项
|
|
68
81
|
|
|
69
82
|
- `--help`, `-h`:显示帮助
|
|
70
|
-
- `--format json
|
|
83
|
+
- `--format json`:本命令的 JSON 输出
|