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.
- package/CHANGELOG.md +607 -565
- package/LICENSE +21 -21
- package/README.md +455 -455
- package/bin/codex-managed-acl.ps1 +160 -160
- package/bin/codex-managed-hook.mjs +208 -208
- package/bin/ec-safe-output.js +327 -327
- package/bin/ec.js +40 -29
- package/bin/install-codex-managed-hooks.mjs +582 -555
- package/dist/agents/baseagent.js +96 -46
- package/dist/agents/claude-runner.js +50 -12
- package/dist/agents/codex/app-server-client.js +13 -5
- package/dist/agents/codex/catalog.js +1 -1
- package/dist/agents/codex/diagnostics.js +34 -1
- package/dist/agents/codex-runner.js +121 -38
- package/dist/agents/ecagent-runner.js +4 -9
- package/dist/agents/gemini-runner.js +2 -7
- package/dist/agents/runner-types.js +25 -17
- package/dist/aun/aid/agentmd.js +81 -8
- package/dist/aun/aid/client.js +1 -1
- package/dist/aun/aid/identity.js +1 -1
- package/dist/aun/aid/index.js +1 -1
- package/dist/aun/aid/store.js +17 -13
- package/dist/aun/menu-client.js +74 -0
- package/dist/aun/msg/group.js +1 -1
- package/dist/aun/msg/managed-operation.js +1 -1
- package/dist/aun/msg/p2p.js +6 -1
- package/dist/aun/msg/upload.js +30 -22
- package/dist/channels/aun.js +329 -94
- package/dist/cli/agent-command.js +105 -84
- package/dist/cli/agent-create.js +112 -10
- package/dist/cli/agent.js +16 -5
- package/dist/cli/aun-commands.js +297 -296
- package/dist/cli/bench.js +20 -20
- package/dist/cli/config.js +47 -28
- package/dist/cli/contact.js +70 -13
- package/dist/cli/ctl-command.js +22 -22
- package/dist/cli/daemon-commands.js +105 -40
- package/dist/cli/diag.js +31 -0
- package/dist/cli/fs-command.js +67 -67
- package/dist/cli/handoff-command.js +41 -9
- package/dist/cli/index.js +83 -77
- package/dist/cli/link-rules.js +21 -21
- package/dist/cli/managed-command-guard.js +3 -0
- package/dist/cli/menu-client.js +46 -31
- package/dist/cli/net-check.js +22 -22
- package/dist/cli/queue-command.js +29 -29
- package/dist/cli/response.js +30 -30
- package/dist/cli/restart-monitor.js +87 -40
- package/dist/cli/stats.js +51 -51
- package/dist/cli/trigger-command.js +56 -56
- package/dist/config/builtin-roles.js +1 -0
- package/dist/config/config-operation-service.js +145 -0
- package/dist/config/contact-operation-service.js +96 -7
- package/dist/config/resolved-config-op.js +27 -7
- package/dist/core/agent-application-service.js +2 -1
- package/dist/core/auth/authorization-audit.js +20 -12
- package/dist/core/auth/operation-authorizer.js +25 -4
- package/dist/core/auth/operation-catalog.js +35 -4
- package/dist/core/auth/remote-access-store.js +40 -1
- package/dist/core/bootstrap-service.js +1 -1
- package/dist/core/command/command-handler.js +83 -26
- package/dist/core/command/diag-service.js +118 -0
- package/dist/core/command/menu-catalog.js +12 -3
- package/dist/core/command/menu-handler.js +47 -26
- package/dist/core/command/menu-protocol.js +5 -0
- package/dist/core/command/menu-token-store.js +41 -8
- package/dist/core/command/slash-gate.js +34 -4
- package/dist/core/command/slash-handler.js +86 -21
- package/dist/core/handoff/runtime.js +205 -27
- package/dist/core/handoff/store.js +193 -4
- package/dist/core/message/im-renderer.js +72 -21
- package/dist/core/message/message-bridge.js +69 -9
- package/dist/core/message/message-queue.js +26 -0
- package/dist/core/message/message-utils.js +1 -0
- package/dist/core/message/response-engine.js +47 -28
- package/dist/core/model/catalog-service.js +79 -49
- package/dist/core/model/context-window-suffix.js +33 -0
- package/dist/core/model/model-catalog.js +1 -1
- package/dist/core/model/model-permission.js +12 -3
- package/dist/core/permission/ec-command-parser.js +51 -12
- package/dist/core/permission/sandbox-runtime.js +36 -14
- package/dist/core/permission/tool-policy.js +2 -1
- package/dist/index.js +280 -163
- package/dist/ipc.js +54 -2
- package/dist/response-system/engines/v1/proactive-flow.js +59 -2
- package/dist/stats/billing.js +41 -15
- package/dist/stats/db.js +159 -159
- package/dist/stats/eck-vars.js +9 -9
- package/dist/stats/price-resolver.js +28 -10
- package/dist/stats/query.js +139 -139
- package/dist/stats/role-budget.js +6 -6
- package/dist/stats/writer.js +51 -51
- package/dist/utils/cross-platform.js +30 -1
- package/dist/utils/error-dict.json +160 -160
- package/dist/utils/error-utils.js +21 -0
- package/dist/utils/evolcore-version.js +129 -0
- package/dist/utils/logger.js +3 -1
- package/dist/utils/macos-autostart.js +22 -22
- package/dist/utils/model-prices.jsonl +23 -23
- package/dist/utils/npm-ops.js +176 -35
- package/dist/utils/welcome.js +22 -22
- package/ecagent/LICENSE +21 -21
- package/ecagent/NOTICE +11 -11
- package/ecagent/README.md +61 -61
- package/ecagent/dist/harness/compaction/branch-summarization.js +30 -30
- package/ecagent/dist/harness/compaction/compaction.js +83 -83
- package/ecagent/dist/harness/messages.js +7 -7
- package/kits/docs/GUIDE.md +20 -20
- package/kits/docs/INDEX.md +66 -66
- package/kits/docs/aun/CHEATSHEET.md +19 -19
- package/kits/docs/aun/SYNC_PROTOCOL.md +15 -15
- package/kits/docs/channels/aun.md +56 -56
- package/kits/docs/channels/feishu.md +56 -56
- package/kits/docs/context-assembly.md +364 -364
- package/kits/docs/eck_templates/GUIDE.template.md +22 -22
- package/kits/docs/eck_templates/INDEX.template.md +28 -28
- package/kits/docs/eck_templates/path-registry.template.md +33 -33
- package/kits/docs/eck_templates/runtime.template.md +19 -19
- package/kits/docs/evolcore/INDEX.md +71 -71
- package/kits/docs/evolcore/agent-create.md +170 -165
- package/kits/docs/evolcore/agent.md +66 -66
- package/kits/docs/evolcore/aid.md +60 -60
- package/kits/docs/evolcore/codex-windows-sandbox.md +146 -146
- package/kits/docs/evolcore/config.md +202 -195
- package/kits/docs/evolcore/contact.md +75 -68
- package/kits/docs/evolcore/ctl.md +46 -46
- package/kits/docs/evolcore/event.md +216 -216
- package/kits/docs/evolcore/fs-architecture.md +1215 -1215
- package/kits/docs/evolcore/fs.md +110 -110
- package/kits/docs/evolcore/group-collaboration.md +243 -243
- package/kits/docs/evolcore/group-fs.md +17 -17
- package/kits/docs/evolcore/group-rules.md +251 -251
- package/kits/docs/evolcore/group.md +152 -152
- package/kits/docs/evolcore/menu-client.md +42 -34
- package/kits/docs/evolcore/model.md +50 -50
- package/kits/docs/evolcore/msg.md +166 -165
- package/kits/docs/evolcore/response.md +75 -75
- package/kits/docs/evolcore/rpc.md +37 -37
- package/kits/docs/evolcore/self-summary.md +29 -29
- package/kits/docs/evolcore/stats.md +83 -83
- package/kits/docs/evolcore/storage.md +50 -50
- package/kits/docs/evolcore/trigger.md +575 -575
- package/kits/docs/identity/AID_PROFILE_SPEC.md +26 -26
- package/kits/docs/identity/PATH_OPS.md +16 -16
- package/kits/docs/identity/ROLE_DETAIL.md +25 -25
- package/kits/docs/identity/identity-tools.md +26 -26
- package/kits/docs/path-registry.md +62 -62
- package/kits/docs/prompt-loading-architecture.md +269 -269
- package/kits/docs/venues/aun-group.md +45 -45
- package/kits/docs/venues/aun-private.md +10 -10
- package/kits/docs/venues/client-desktop.md +10 -10
- package/kits/docs/venues/client-mobile.md +10 -10
- package/kits/docs/venues/feishu-group.md +13 -13
- package/kits/docs/venues/feishu-private.md +9 -9
- package/kits/docs/venues/group.md +37 -25
- package/kits/docs/venues/private.md +10 -10
- package/kits/eck_manifest.auxiliary.json +43 -43
- package/kits/eck_manifest.json +190 -190
- package/kits/eck_message_manifest.json +74 -74
- package/kits/migrations/README-role-config-v4.md +32 -32
- package/kits/migrations/migrate-contact-book-v2.mjs +748 -748
- package/kits/migrations/migrate-role-config-v4.mjs +614 -614
- package/kits/migrations/migrate-role-config-v5.mjs +365 -365
- package/kits/migrations/rename-config-file.mjs +99 -99
- package/kits/rules/01-overview.md +162 -162
- package/kits/rules/02-navigation.md +96 -96
- package/kits/rules/03-identity.md +36 -36
- package/kits/rules/04-relation.md +75 -75
- package/kits/rules/05-venue.md +60 -60
- package/kits/rules/06-channel.md +63 -63
- package/kits/schemas/_meta.json +53 -53
- package/kits/schemas/agent-config.schema.1.json +177 -177
- package/kits/schemas/agent-config.schema.10.json +395 -395
- package/kits/schemas/agent-config.schema.11.json +421 -421
- package/kits/schemas/agent-config.schema.12.json +427 -427
- package/kits/schemas/agent-config.schema.2.json +239 -239
- package/kits/schemas/agent-config.schema.3.json +119 -119
- package/kits/schemas/agent-config.schema.4.json +208 -208
- package/kits/schemas/agent-config.schema.5.json +326 -326
- package/kits/schemas/agent-config.schema.6.json +322 -322
- package/kits/schemas/agent-config.schema.7.json +303 -303
- package/kits/schemas/agent-config.schema.8.json +304 -304
- package/kits/schemas/agent-config.schema.9.json +364 -364
- package/kits/schemas/contact-book.schema.1.json +36 -36
- package/kits/schemas/contact-book.schema.2.json +43 -43
- package/kits/schemas/contact-book.schema.3.json +67 -67
- package/kits/schemas/daemon.schema.1.json +91 -91
- package/kits/schemas/daemon.schema.2.json +101 -101
- package/kits/schemas/daemon.schema.3.json +123 -123
- package/kits/schemas/daemon.schema.4.json +136 -136
- package/kits/schemas/daemon.schema.5.json +135 -135
- package/kits/schemas/daemon.schema.6.json +131 -131
- package/kits/schemas/defaults.schema.1.json +81 -81
- package/kits/schemas/defaults.schema.2.json +85 -85
- package/kits/schemas/defaults.schema.3.json +73 -73
- package/kits/schemas/defaults.schema.4.json +107 -107
- package/kits/schemas/defaults.schema.5.json +119 -119
- package/kits/schemas/menu-exec-schema-commands.md +208 -208
- package/kits/schemas/migrations/README.md +30 -30
- package/kits/schemas/relation-config.schema.1.json +158 -158
- package/kits/schemas/relation-config.schema.2.json +73 -73
- package/kits/schemas/relation-config.schema.3.json +50 -50
- package/kits/schemas/relation-config.schema.4.json +47 -47
- package/kits/schemas/relation-config.schema.5.json +47 -47
- package/kits/schemas/relation-config.schema.6.json +46 -46
- package/kits/schemas/relation-config.schema.7.json +59 -59
- package/kits/schemas/relation-config.schema.8.json +103 -103
- package/kits/schemas/role-config.schema.1.json +201 -201
- package/kits/schemas/role-registry.schema.1.json +35 -35
- package/kits/schemas/single-session.schema.1.json +31 -31
- package/kits/schemas/single-session.schema.2.json +57 -57
- package/kits/schemas/single-session.schema.3.json +32 -32
- package/kits/templates/bootstrap-welcome.md +17 -17
- package/kits/templates/message-fragments/handoff-context-to-target.md +9 -9
- package/kits/templates/message-fragments/handoff-request-to-target.md +19 -19
- package/kits/templates/message-fragments/handoff-response-to-origin.md +9 -9
- package/kits/templates/message-fragments/inject-default.md +2 -2
- package/kits/templates/message-fragments/item.md +2 -2
- package/kits/templates/roles/admin.json +92 -92
- package/kits/templates/roles/member.json +96 -96
- package/kits/templates/roles/owner.json +9 -9
- package/kits/templates/roles/visitor.json +85 -85
- package/kits/templates/system-fragments/baseagent.md +14 -14
- package/kits/templates/system-fragments/bootstrap.md +31 -29
- package/kits/templates/system-fragments/channel.md +64 -64
- package/kits/templates/system-fragments/commands.md +28 -28
- package/kits/templates/system-fragments/identity.md +13 -13
- package/kits/templates/system-fragments/relation.md +19 -19
- package/kits/templates/system-fragments/session.md +59 -59
- package/kits/templates/system-fragments/venue.md +31 -31
- package/package.json +100 -98
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
# 导航:怎么找到我需要的信息
|
|
2
|
-
|
|
3
|
-
## 路径体系
|
|
4
|
-
|
|
5
|
-
### 三个基础路径
|
|
6
|
-
|
|
7
|
-
| 路径 | 含义 |
|
|
8
|
-
|------|------|
|
|
9
|
-
| `$EVOLCORE_HOME` | 用户数据根。解析顺序:`EVOLCORE_HOME` 环境变量 → `~/.evolcore` |
|
|
10
|
-
| `$PACKAGE_ROOT` | evolcore 包根目录(由 `getPackageRoot()` 从 `import.meta` 推出) |
|
|
11
|
-
| `$CURRENT_PROJECT` | 当前工作目录 |
|
|
12
|
-
|
|
13
|
-
### 派生路径
|
|
14
|
-
|
|
15
|
-
以下是 ECK 真正认识的别名(`src/eck/manifest-engine.ts` 的 `buildPathMappings`):
|
|
16
|
-
|
|
17
|
-
| 名称 | 派生自 | 含义 |
|
|
18
|
-
|------|--------|------|
|
|
19
|
-
| `$KITS` | `$PACKAGE_ROOT/kits` | ECK 知识包根 |
|
|
20
|
-
| `$KITS_RULES` | `$KITS/rules` | 自动载入部分(本目录) |
|
|
21
|
-
| `$KITS_DOCS` | `$KITS/docs` | 按需载入文档 |
|
|
22
|
-
| `$KITS_TEMPLATES` | `$KITS/templates` | prompt 模板 |
|
|
23
|
-
| `$KITS_FRAGMENTS` | `$KITS_TEMPLATES/system-fragments` | system prompt fragment 模板 |
|
|
24
|
-
| `$KITS_MESSAGE_FRAGMENTS` | `$KITS_TEMPLATES/message-fragments` | 逐条消息渲染的 fragment 模板 |
|
|
25
|
-
| `$PERSONAL_DIR` | `$AGENT_DIR/personal` | 个人数据层(身份层) |
|
|
26
|
-
| `$RELATIONS_DIR` | `$AGENT_DIR/relations` | 关系层 |
|
|
27
|
-
| `$VENUES_DIR` | `$AGENT_DIR/venues` | 环境层(当前是死目录,见 `05-venue.md`) |
|
|
28
|
-
| `$AGENT_DIR` | `$EVOLCORE_HOME/agents/<selfAid>` | 当前 agent 根(`selfAid` 为空时这四个别名都不注册) |
|
|
29
|
-
|
|
30
|
-
> ⚠️ **只有上表这些别名能在 manifest 的 `path` 字段里用**。写成 `$SELF_DIR`(旧名)、
|
|
31
|
-
> `$PEER_DIR`、`$AGENTS_DIR`、`$AGENT_INDEX`、`$ECK` 会被判为未解析变量,**整段静默丢弃**。
|
|
32
|
-
|
|
33
|
-
下面这些只是**文档里的书写约定**,不是 ECK 能解析的别名,引用时要么写全路径要么当散文读:
|
|
34
|
-
|
|
35
|
-
| 名称 | 实际位置 | 含义 |
|
|
36
|
-
|------|----------|------|
|
|
37
|
-
| `$ECK` | `$EVOLCORE_HOME/eck` | 运行时配置实例(见下文 Bootstrap 的告警) |
|
|
38
|
-
| `$AGENTS_DIR` | `$EVOLCORE_HOME/agents` | per-agent 数据根 |
|
|
39
|
-
| `$AGENT_INDEX` | `$AGENT_DIR/index` | agent 级文档索引 |
|
|
40
|
-
| `$PEER_DIR` | `$RELATIONS_DIR/<peerKey>` | 当前对端的关系目录 |
|
|
41
|
-
|
|
42
|
-
## 路径注册表机制
|
|
43
|
-
|
|
44
|
-
路径用 `$名称` 引用,不写死实际路径。
|
|
45
|
-
|
|
46
|
-
### 三层结构
|
|
47
|
-
|
|
48
|
-
| 层 | 位置 | 性质 | 内容 |
|
|
49
|
-
|----|------|------|------|
|
|
50
|
-
| 机制描述 | 本文件 | 只读 | 语法、规则 |
|
|
51
|
-
| 路径定义 | `$KITS_DOCS/path-registry.md` | 只读,按需加载 | 所有路径的派生规则或寻找规则 |
|
|
52
|
-
| 路径实例 | `$ECK/path-registry.md` | 可变,按需加载 | 已解析的真实值 + 用户自定义路径 |
|
|
53
|
-
|
|
54
|
-
### 两类路径
|
|
55
|
-
|
|
56
|
-
- **可直接派生**:从基础路径按固定规则算出(如 `$KITS = $PACKAGE_ROOT/kits`)
|
|
57
|
-
- **不可直接派生**:需按寻找规则搜索。例如:
|
|
58
|
-
- `$AUN_SDK`:`node -e "console.log(require.resolve('@agentunion/fastaun/package.json'))"`
|
|
59
|
-
—— 本机是**本地依赖** `$PACKAGE_ROOT/node_modules/@agentunion/fastaun`,不是全局包,
|
|
60
|
-
`npm ls -g` 查不到
|
|
61
|
-
- `$AUN_PROTOCOL_DOCS`:`$AUN_SDK/_packed_docs/protocol`
|
|
62
|
-
—— 注意是 `_packed_docs/`,**该包没有 `docs/` 目录**
|
|
63
|
-
|
|
64
|
-
### 按需加载时机
|
|
65
|
-
|
|
66
|
-
路径定义和实例文件**不自动加载**,仅在以下场景 Read:
|
|
67
|
-
- 需要访问某个 `$名称` 但当前上下文中没有真实值
|
|
68
|
-
- 需要寻找外部依赖位置
|
|
69
|
-
- 用户要求注册或查看路径
|
|
70
|
-
|
|
71
|
-
## 索引机制
|
|
72
|
-
|
|
73
|
-
| 层 | 位置 | 维护者 | 写入权限 |
|
|
74
|
-
|----|------|--------|----------|
|
|
75
|
-
| evolcore 级 | `$KITS_DOCS/INDEX.md` | 开发时维护 | 只读,过时时呈报用户 |
|
|
76
|
-
| agent 级 | `$AGENT_INDEX/INDEX.md` | agent 会话 | 可写,直接更新 |
|
|
77
|
-
|
|
78
|
-
agent 级索引范围:`$CURRENT_PROJECT` + `$AGENT_DIR`。
|
|
79
|
-
|
|
80
|
-
触发时机:上述范围内有文档新增或较大幅度修改时,主动重建索引。
|
|
81
|
-
|
|
82
|
-
## Bootstrap(独立使用 ECK 时)
|
|
83
|
-
|
|
84
|
-
无 evolcore 动态注入时,路径确定顺序:
|
|
85
|
-
1. `$EVOLCORE_HOME`:环境变量 → `~/.evolcore`
|
|
86
|
-
2. `$PACKAGE_ROOT`:evolcore 安装目录(dev 模式下可能与上一步同一个目录)
|
|
87
|
-
3. 按上面的派生规则构造其余路径
|
|
88
|
-
|
|
89
|
-
> ⚠️ **不要指望 `$ECK/runtime.md` 和 `$ECK/path-registry.md`**。这两个文件由
|
|
90
|
-
> `src/eck/init.ts` **写一次就不再更新**(`if (fs.existsSync(file)) return`),而且只渲染
|
|
91
|
-
> `EVOLCORE_HOME` / `PACKAGE_ROOT` 两个变量,其余 `{{...}}` 占位符会原样留在文件里;
|
|
92
|
-
> 源码中也**没有任何地方读回它们**。本机这两个文件仍是 evolclaw 时代生成的,
|
|
93
|
-
> 里面写着 `$EVOLCLAW_HOME | /home/evolclaw`。要真实路径就按上面 1-3 步自己算,
|
|
94
|
-
> 或直接读 `src/paths.ts`。
|
|
95
|
-
|
|
96
|
-
参数加载优先级:evolcore 动态注入 > 环境变量 > 硬编码默认值。
|
|
1
|
+
# 导航:怎么找到我需要的信息
|
|
2
|
+
|
|
3
|
+
## 路径体系
|
|
4
|
+
|
|
5
|
+
### 三个基础路径
|
|
6
|
+
|
|
7
|
+
| 路径 | 含义 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| `$EVOLCORE_HOME` | 用户数据根。解析顺序:`EVOLCORE_HOME` 环境变量 → `~/.evolcore` |
|
|
10
|
+
| `$PACKAGE_ROOT` | evolcore 包根目录(由 `getPackageRoot()` 从 `import.meta` 推出) |
|
|
11
|
+
| `$CURRENT_PROJECT` | 当前工作目录 |
|
|
12
|
+
|
|
13
|
+
### 派生路径
|
|
14
|
+
|
|
15
|
+
以下是 ECK 真正认识的别名(`src/eck/manifest-engine.ts` 的 `buildPathMappings`):
|
|
16
|
+
|
|
17
|
+
| 名称 | 派生自 | 含义 |
|
|
18
|
+
|------|--------|------|
|
|
19
|
+
| `$KITS` | `$PACKAGE_ROOT/kits` | ECK 知识包根 |
|
|
20
|
+
| `$KITS_RULES` | `$KITS/rules` | 自动载入部分(本目录) |
|
|
21
|
+
| `$KITS_DOCS` | `$KITS/docs` | 按需载入文档 |
|
|
22
|
+
| `$KITS_TEMPLATES` | `$KITS/templates` | prompt 模板 |
|
|
23
|
+
| `$KITS_FRAGMENTS` | `$KITS_TEMPLATES/system-fragments` | system prompt fragment 模板 |
|
|
24
|
+
| `$KITS_MESSAGE_FRAGMENTS` | `$KITS_TEMPLATES/message-fragments` | 逐条消息渲染的 fragment 模板 |
|
|
25
|
+
| `$PERSONAL_DIR` | `$AGENT_DIR/personal` | 个人数据层(身份层) |
|
|
26
|
+
| `$RELATIONS_DIR` | `$AGENT_DIR/relations` | 关系层 |
|
|
27
|
+
| `$VENUES_DIR` | `$AGENT_DIR/venues` | 环境层(当前是死目录,见 `05-venue.md`) |
|
|
28
|
+
| `$AGENT_DIR` | `$EVOLCORE_HOME/agents/<selfAid>` | 当前 agent 根(`selfAid` 为空时这四个别名都不注册) |
|
|
29
|
+
|
|
30
|
+
> ⚠️ **只有上表这些别名能在 manifest 的 `path` 字段里用**。写成 `$SELF_DIR`(旧名)、
|
|
31
|
+
> `$PEER_DIR`、`$AGENTS_DIR`、`$AGENT_INDEX`、`$ECK` 会被判为未解析变量,**整段静默丢弃**。
|
|
32
|
+
|
|
33
|
+
下面这些只是**文档里的书写约定**,不是 ECK 能解析的别名,引用时要么写全路径要么当散文读:
|
|
34
|
+
|
|
35
|
+
| 名称 | 实际位置 | 含义 |
|
|
36
|
+
|------|----------|------|
|
|
37
|
+
| `$ECK` | `$EVOLCORE_HOME/eck` | 运行时配置实例(见下文 Bootstrap 的告警) |
|
|
38
|
+
| `$AGENTS_DIR` | `$EVOLCORE_HOME/agents` | per-agent 数据根 |
|
|
39
|
+
| `$AGENT_INDEX` | `$AGENT_DIR/index` | agent 级文档索引 |
|
|
40
|
+
| `$PEER_DIR` | `$RELATIONS_DIR/<peerKey>` | 当前对端的关系目录 |
|
|
41
|
+
|
|
42
|
+
## 路径注册表机制
|
|
43
|
+
|
|
44
|
+
路径用 `$名称` 引用,不写死实际路径。
|
|
45
|
+
|
|
46
|
+
### 三层结构
|
|
47
|
+
|
|
48
|
+
| 层 | 位置 | 性质 | 内容 |
|
|
49
|
+
|----|------|------|------|
|
|
50
|
+
| 机制描述 | 本文件 | 只读 | 语法、规则 |
|
|
51
|
+
| 路径定义 | `$KITS_DOCS/path-registry.md` | 只读,按需加载 | 所有路径的派生规则或寻找规则 |
|
|
52
|
+
| 路径实例 | `$ECK/path-registry.md` | 可变,按需加载 | 已解析的真实值 + 用户自定义路径 |
|
|
53
|
+
|
|
54
|
+
### 两类路径
|
|
55
|
+
|
|
56
|
+
- **可直接派生**:从基础路径按固定规则算出(如 `$KITS = $PACKAGE_ROOT/kits`)
|
|
57
|
+
- **不可直接派生**:需按寻找规则搜索。例如:
|
|
58
|
+
- `$AUN_SDK`:`node -e "console.log(require.resolve('@agentunion/fastaun/package.json'))"`
|
|
59
|
+
—— 本机是**本地依赖** `$PACKAGE_ROOT/node_modules/@agentunion/fastaun`,不是全局包,
|
|
60
|
+
`npm ls -g` 查不到
|
|
61
|
+
- `$AUN_PROTOCOL_DOCS`:`$AUN_SDK/_packed_docs/protocol`
|
|
62
|
+
—— 注意是 `_packed_docs/`,**该包没有 `docs/` 目录**
|
|
63
|
+
|
|
64
|
+
### 按需加载时机
|
|
65
|
+
|
|
66
|
+
路径定义和实例文件**不自动加载**,仅在以下场景 Read:
|
|
67
|
+
- 需要访问某个 `$名称` 但当前上下文中没有真实值
|
|
68
|
+
- 需要寻找外部依赖位置
|
|
69
|
+
- 用户要求注册或查看路径
|
|
70
|
+
|
|
71
|
+
## 索引机制
|
|
72
|
+
|
|
73
|
+
| 层 | 位置 | 维护者 | 写入权限 |
|
|
74
|
+
|----|------|--------|----------|
|
|
75
|
+
| evolcore 级 | `$KITS_DOCS/INDEX.md` | 开发时维护 | 只读,过时时呈报用户 |
|
|
76
|
+
| agent 级 | `$AGENT_INDEX/INDEX.md` | agent 会话 | 可写,直接更新 |
|
|
77
|
+
|
|
78
|
+
agent 级索引范围:`$CURRENT_PROJECT` + `$AGENT_DIR`。
|
|
79
|
+
|
|
80
|
+
触发时机:上述范围内有文档新增或较大幅度修改时,主动重建索引。
|
|
81
|
+
|
|
82
|
+
## Bootstrap(独立使用 ECK 时)
|
|
83
|
+
|
|
84
|
+
无 evolcore 动态注入时,路径确定顺序:
|
|
85
|
+
1. `$EVOLCORE_HOME`:环境变量 → `~/.evolcore`
|
|
86
|
+
2. `$PACKAGE_ROOT`:evolcore 安装目录(dev 模式下可能与上一步同一个目录)
|
|
87
|
+
3. 按上面的派生规则构造其余路径
|
|
88
|
+
|
|
89
|
+
> ⚠️ **不要指望 `$ECK/runtime.md` 和 `$ECK/path-registry.md`**。这两个文件由
|
|
90
|
+
> `src/eck/init.ts` **写一次就不再更新**(`if (fs.existsSync(file)) return`),而且只渲染
|
|
91
|
+
> `EVOLCORE_HOME` / `PACKAGE_ROOT` 两个变量,其余 `{{...}}` 占位符会原样留在文件里;
|
|
92
|
+
> 源码中也**没有任何地方读回它们**。本机这两个文件仍是 evolclaw 时代生成的,
|
|
93
|
+
> 里面写着 `$EVOLCLAW_HOME | /home/evolclaw`。要真实路径就按上面 1-3 步自己算,
|
|
94
|
+
> 或直接读 `src/paths.ts`。
|
|
95
|
+
|
|
96
|
+
参数加载优先级:evolcore 动态注入 > 环境变量 > 硬编码默认值。
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
# 身份层:我是谁
|
|
2
|
-
|
|
3
|
-
身份层是当前 agent 的自我认知。ECK 在 identity fragment 注入 `selfAid`(当前 AID),
|
|
4
|
-
并把 `$EVOLCORE_HOME/AIDs/<aid>/agent.md` frontmatter 的 `name` 投影为 `selfName`。
|
|
5
|
-
`selfName` 仅用于展示,名片缺失或尚未拉取完成时可能为空;身份与授权判断必须使用 `selfAid`。
|
|
6
|
-
|
|
7
|
-
## 数据位置
|
|
8
|
-
|
|
9
|
-
| 位置 | 内容 |
|
|
10
|
-
|------|------|
|
|
11
|
-
| `$PERSONAL_DIR`(`$AGENT_DIR/personal/`) | 个人数据(可写) |
|
|
12
|
-
| `$KITS_DOCS/identity/` | 身份层详细规则(只读,按需加载) |
|
|
13
|
-
|
|
14
|
-
> manifest 模板里只认 `$PERSONAL_DIR` / `$RELATIONS_DIR` / `$VENUES_DIR` / `$AGENT_DIR` 这几个路径别名。
|
|
15
|
-
> 写成 `$SELF_DIR` 会被判为未解析变量,**整段静默丢弃**。
|
|
16
|
-
|
|
17
|
-
## 数据结构(以源码实际读写为准)
|
|
18
|
-
|
|
19
|
-
| 路径 | 用途 | 实际状态 |
|
|
20
|
-
|------|------|----------|
|
|
1
|
+
# 身份层:我是谁
|
|
2
|
+
|
|
3
|
+
身份层是当前 agent 的自我认知。ECK 在 identity fragment 注入 `selfAid`(当前 AID),
|
|
4
|
+
并把 `$EVOLCORE_HOME/AIDs/<aid>/agent.md` frontmatter 的 `name` 投影为 `selfName`。
|
|
5
|
+
`selfName` 仅用于展示,名片缺失或尚未拉取完成时可能为空;身份与授权判断必须使用 `selfAid`。
|
|
6
|
+
|
|
7
|
+
## 数据位置
|
|
8
|
+
|
|
9
|
+
| 位置 | 内容 |
|
|
10
|
+
|------|------|
|
|
11
|
+
| `$PERSONAL_DIR`(`$AGENT_DIR/personal/`) | 个人数据(可写) |
|
|
12
|
+
| `$KITS_DOCS/identity/` | 身份层详细规则(只读,按需加载) |
|
|
13
|
+
|
|
14
|
+
> manifest 模板里只认 `$PERSONAL_DIR` / `$RELATIONS_DIR` / `$VENUES_DIR` / `$AGENT_DIR` 这几个路径别名。
|
|
15
|
+
> 写成 `$SELF_DIR` 会被判为未解析变量,**整段静默丢弃**。
|
|
16
|
+
|
|
17
|
+
## 数据结构(以源码实际读写为准)
|
|
18
|
+
|
|
19
|
+
| 路径 | 用途 | 实际状态 |
|
|
20
|
+
|------|------|----------|
|
|
21
21
|
| `persona.md` | 人格(行为规范、身份认知) | evolcore 自动注入;通过 `ec agent persona` 读写 |
|
|
22
22
|
| `personal.md` | 个人资料与工作背景 | evolcore 自动注入;当前 Agent 在 owner 权限下可直接编辑 |
|
|
23
|
-
| `memory/working.md` | 当前关注(短期) | evolcore 自动注入 |
|
|
24
|
-
| `preferences/active-preferences.md` | 已确认的稳定用户偏好 | **仅私聊**注入;由用户态 trigger 维护 |
|
|
25
|
-
| `preferences/stats.json`、`preferences/preferences-conflicts.md` | 偏好计分状态与冲突记录 | trigger 私有,无 schema 保证 |
|
|
26
|
-
| `memory/`、`skills/` 目录 | 预留 | 会被创建,但目前无人读写 |
|
|
27
|
-
|
|
28
|
-
`memory/episodic.jsonl`、`memory/semantic.md`、`style.md`、`preferences.json`、`goals.md`、`journal.jsonl`
|
|
29
|
-
是早期设计稿里的约定,**源码尚未实现读写**——不要假设写了就会生效。
|
|
30
|
-
|
|
31
|
-
## 人格与行为规范怎么生效
|
|
32
|
-
|
|
33
|
-
- **注入条件**是 `chatType ≠ null` 且 `lifecycle = active`(即处于正常运行阶段的渠道会话),不是"有没有注入 AID"。生命周期变量缺失时按 `active` 处理;非法生命周期仍失败关闭。本地 coding 模式也不注入。
|
|
34
|
-
- persona.md 由 evolcore **自动前置**进 system prompt,你不需要主动 Read。
|
|
23
|
+
| `memory/working.md` | 当前关注(短期) | evolcore 自动注入 |
|
|
24
|
+
| `preferences/active-preferences.md` | 已确认的稳定用户偏好 | **仅私聊**注入;由用户态 trigger 维护 |
|
|
25
|
+
| `preferences/stats.json`、`preferences/preferences-conflicts.md` | 偏好计分状态与冲突记录 | trigger 私有,无 schema 保证 |
|
|
26
|
+
| `memory/`、`skills/` 目录 | 预留 | 会被创建,但目前无人读写 |
|
|
27
|
+
|
|
28
|
+
`memory/episodic.jsonl`、`memory/semantic.md`、`style.md`、`preferences.json`、`goals.md`、`journal.jsonl`
|
|
29
|
+
是早期设计稿里的约定,**源码尚未实现读写**——不要假设写了就会生效。
|
|
30
|
+
|
|
31
|
+
## 人格与行为规范怎么生效
|
|
32
|
+
|
|
33
|
+
- **注入条件**是 `chatType ≠ null` 且 `lifecycle = active`(即处于正常运行阶段的渠道会话),不是"有没有注入 AID"。生命周期变量缺失时按 `active` 处理;非法生命周期仍失败关闭。本地 coding 模式也不注入。
|
|
34
|
+
- persona.md 由 evolcore **自动前置**进 system prompt,你不需要主动 Read。
|
|
35
35
|
- persona.md 缺失时**没有默认人格兜底**,只是这一段不出现;行为约束改由 `kits/rules/` + `roles/` 权限定义承担。
|
|
36
36
|
- personal.md 缺失时跳过注入;文件位于 `$PERSONAL_DIR/personal.md`。人格文件 `persona.md` 通过 `ec agent persona show`、`ec agent persona --text <text>` 或 `ec agent persona --file <path>` 管理,修改后按 mtime 自动刷新(必要时可 `ec agent reload`)。
|
|
37
|
-
- 改完 persona.md 后 `ec agent reload` 生效(mtime 门控缓存)。
|
|
38
|
-
- `agents/<aid>/behavior.json` 是**已废弃**的旧配置(基座/模型/权限模式已并入 `config.json`),与人格无关。
|
|
39
|
-
|
|
40
|
-
不同 AID 可以有不同 persona——切换身份即切换人格。
|
|
37
|
+
- 改完 persona.md 后 `ec agent reload` 生效(mtime 门控缓存)。
|
|
38
|
+
- `agents/<aid>/behavior.json` 是**已废弃**的旧配置(基座/模型/权限模式已并入 `config.json`),与人格无关。
|
|
39
|
+
|
|
40
|
+
不同 AID 可以有不同 persona——切换身份即切换人格。
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
# 关系层:跟我聊天的是谁
|
|
2
|
-
|
|
3
|
-
关系层管理你对所有对端的认知。动态注入的 `peerKey`(`<channel>#<urlEncode(peerId)>`)是对端在所有渠道中的稳定标识。`peerId` 是对端在当前渠道的原生 ID(AUN 是 AID,飞书是 user_id 等),`channel` 是当前渠道类型。
|
|
4
|
-
|
|
5
|
-
**对端包括群**:AID 四类型(human/agent/group/service,见 `01-overview.md`)对你而言都是对端,数据都在关系层。
|
|
6
|
-
- 私聊:`peerId` = 对端 ID,`peerKey` = `<channel>#<对端ID>`。
|
|
7
|
-
- 群聊:`peerId` = **群 ID**(群本身的 AID / 渠道群 ID),群内所有发言者共用同一个 `peerKey`(群的键)。群规则、群 profile 等**具体群实例数据**落 `$RELATIONS_DIR/<peerKey>/`(如群规则物化到 `relations/<peerKey>/rules.md`)。
|
|
8
|
-
|
|
9
|
-
> 为什么用 `peerId` 而非直接用 AID:非 AUN 渠道的对端(飞书群、微信)没有 AID,用 `<channel>#<peerId>` 才能统一覆盖所有渠道的对端。
|
|
10
|
-
|
|
11
|
-
relation fragment 注入的全部变量:`peerKey`、`peerId`、`peerName`、`peerRole`、`peerType`,
|
|
12
|
-
群聊另有 `groupId`、`groupRulesStatus`、`groupRulesError`。`groupRulesStatus=ignored` 表示本轮由
|
|
13
|
-
本地 `groupRules.mode=ignore` 主动跳过,不是远端缺失、无权限或同步失败。
|
|
14
|
-
|
|
15
|
-
## 数据位置
|
|
16
|
-
|
|
17
|
-
关系数据(可写)在 `$RELATIONS_DIR`(= `$AGENT_DIR/relations/`)。
|
|
18
|
-
|
|
19
|
-
## 数据结构(以源码实际读写为准)
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
relations/
|
|
23
|
-
└── <channel>#<urlEncode(peerId)>/ 每个对端一个目录
|
|
24
|
-
├── peer-identity.json 身份快照缓存(PeerIdentityCache 唯一的写入方)
|
|
25
|
-
├── config.json 关系级配置——**对端角色 config.role 就存在这里**;群可覆盖 groupRules.mode
|
|
26
|
-
└── rules.md 仅群目录:校验通过后物化的群规则字节
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
群规则加载策略按 Agent `config.json` → 当前群 relation `config.json` 覆盖,缺省为 `load`。当有效值为
|
|
30
|
-
`ignore` 时,本轮不访问远端规则、不读取本地 `rules.md`、不暴露 `groupRulesPath`;旧文件保留但不
|
|
31
|
-
作为回退来源。该字段仅当前 Agent 的实际 `owner` 关系角色可修改,其他角色可读取当前 relation 的有效值。
|
|
32
|
-
|
|
33
|
-
**例子**:
|
|
34
|
-
- AUN 对端:`relations/aun#alice.agentid.pub/`
|
|
35
|
-
- 飞书对端:`relations/feishu#ou_xxx/`
|
|
36
|
-
- 微信对端:`relations/wechat#wxid_xxx/`
|
|
37
|
-
|
|
38
|
-
**下列条目只是设计稿,源码尚未实现——不要假设读了/写了会生效**:
|
|
39
|
-
|
|
40
|
-
| 条目 | 真实状态 |
|
|
41
|
-
|------|----------|
|
|
42
|
-
| `<peerKey>/profile.md` | manifest 通过统一的 `peer-profile` 槽加载(缺失即跳过),群聊和私聊不再重复声明;目前**没有任何代码写它**,可以手写一份供上下文加载 |
|
|
43
|
-
| `_index/name_<name>.json` 名字反查索引 | 目录会被创建,但**无任何读写代码**,磁盘上全是空目录。"已知 name 反查 peerKey" 这条路走不通 |
|
|
44
|
-
| `<peerKey>/history.jsonl` | 关系层无此实现(同名文件都属于 handoff / trigger / CC 自己的历史) |
|
|
45
|
-
| `_trash/` | 只创建目录,没有 merge/split 重定向逻辑 |
|
|
46
|
-
| `relations/contacts/`、`relations/_observed/` | 目录骨架仍在创建这两个旧结构(`ensureAgentDirSkeleton`),但已不再使用,都是空的 |
|
|
47
|
-
| `<peerKey>/behavior.json` | 旧配置残留,已并入 `config.json` |
|
|
48
|
-
|
|
49
|
-
## 查找逻辑
|
|
50
|
-
|
|
51
|
-
已知 channel + peerId → 直接拼 `relations/<channel>#<urlEncode(peerId)>/`。这是**唯一可用的查找路径**;
|
|
52
|
-
只知道名字("给王老板发消息")时没有索引可查,用 `ec aid`/联系人命令或直接问用户。
|
|
53
|
-
|
|
54
|
-
## 对端身份与权限
|
|
55
|
-
|
|
56
|
-
四个内置角色(rank 从高到低)+ 自定义角色 + `none`:
|
|
57
|
-
|
|
58
|
-
| 身份 | rank | 默认 permissionMode | 权限 |
|
|
59
|
-
|------|------|--------------------|------|
|
|
60
|
-
| owner | 900 | `bypass` | agent 级最高关系权限,可执行 agent 管理和 owner 审批 |
|
|
61
|
-
| admin | 700 | `request` | agent 管理权限,不能修改 owner,危险操作向 owner 申请审批 |
|
|
62
|
-
| member | 300 | `auto` | 任务型普通成员 |
|
|
63
|
-
| visitor | 100 | `readonly` | 只读角色,且是**强制保留角色**(兜底用) |
|
|
64
|
-
| 自定义角色 | 按配置 | 缺失/非法时安全兜底 **`readonly`** | 按 agent 角色模板定义 |
|
|
65
|
-
| none | — | — | 无有效关系角色,拒绝访问 |
|
|
66
|
-
|
|
67
|
-
角色实际存储在 `relations/<peerKey>/config.json` 的 `role` 字段。进程级 `daemon-owner` 与这里的
|
|
68
|
-
Agent/relation 角色正交,不会在 auth 层提升为 `owner`;只有 Agent 自身的 owner 配置和关系解析
|
|
69
|
-
结果可以授予 `owner`。DaemonOwner 仅获得明确列入进程控制面的操作权限。
|
|
70
|
-
|
|
71
|
-
**兜底链**:无匹配角色 → 回落内置 `visitor`(即 `readonly`);只有角色注册表本身缺失、
|
|
72
|
-
或 `visitor` 未注册时才落到 `none` 拒绝访问。所以正常配置下几乎总是降权到只读,而不是拒绝。
|
|
73
|
-
|
|
74
|
-
> permissionMode 的合法取值只有 `readonly` / `auto` / `request` / `bypass` 四个。
|
|
75
|
-
> "coding" 是**场景**名(无渠道的本地会话,见 `05-venue.md`),**不是** permissionMode。
|
|
1
|
+
# 关系层:跟我聊天的是谁
|
|
2
|
+
|
|
3
|
+
关系层管理你对所有对端的认知。动态注入的 `peerKey`(`<channel>#<urlEncode(peerId)>`)是对端在所有渠道中的稳定标识。`peerId` 是对端在当前渠道的原生 ID(AUN 是 AID,飞书是 user_id 等),`channel` 是当前渠道类型。
|
|
4
|
+
|
|
5
|
+
**对端包括群**:AID 四类型(human/agent/group/service,见 `01-overview.md`)对你而言都是对端,数据都在关系层。
|
|
6
|
+
- 私聊:`peerId` = 对端 ID,`peerKey` = `<channel>#<对端ID>`。
|
|
7
|
+
- 群聊:`peerId` = **群 ID**(群本身的 AID / 渠道群 ID),群内所有发言者共用同一个 `peerKey`(群的键)。群规则、群 profile 等**具体群实例数据**落 `$RELATIONS_DIR/<peerKey>/`(如群规则物化到 `relations/<peerKey>/rules.md`)。
|
|
8
|
+
|
|
9
|
+
> 为什么用 `peerId` 而非直接用 AID:非 AUN 渠道的对端(飞书群、微信)没有 AID,用 `<channel>#<peerId>` 才能统一覆盖所有渠道的对端。
|
|
10
|
+
|
|
11
|
+
relation fragment 注入的全部变量:`peerKey`、`peerId`、`peerName`、`peerRole`、`peerType`,
|
|
12
|
+
群聊另有 `groupId`、`groupRulesStatus`、`groupRulesError`。`groupRulesStatus=ignored` 表示本轮由
|
|
13
|
+
本地 `groupRules.mode=ignore` 主动跳过,不是远端缺失、无权限或同步失败。
|
|
14
|
+
|
|
15
|
+
## 数据位置
|
|
16
|
+
|
|
17
|
+
关系数据(可写)在 `$RELATIONS_DIR`(= `$AGENT_DIR/relations/`)。
|
|
18
|
+
|
|
19
|
+
## 数据结构(以源码实际读写为准)
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
relations/
|
|
23
|
+
└── <channel>#<urlEncode(peerId)>/ 每个对端一个目录
|
|
24
|
+
├── peer-identity.json 身份快照缓存(PeerIdentityCache 唯一的写入方)
|
|
25
|
+
├── config.json 关系级配置——**对端角色 config.role 就存在这里**;群可覆盖 groupRules.mode
|
|
26
|
+
└── rules.md 仅群目录:校验通过后物化的群规则字节
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
群规则加载策略按 Agent `config.json` → 当前群 relation `config.json` 覆盖,缺省为 `load`。当有效值为
|
|
30
|
+
`ignore` 时,本轮不访问远端规则、不读取本地 `rules.md`、不暴露 `groupRulesPath`;旧文件保留但不
|
|
31
|
+
作为回退来源。该字段仅当前 Agent 的实际 `owner` 关系角色可修改,其他角色可读取当前 relation 的有效值。
|
|
32
|
+
|
|
33
|
+
**例子**:
|
|
34
|
+
- AUN 对端:`relations/aun#alice.agentid.pub/`
|
|
35
|
+
- 飞书对端:`relations/feishu#ou_xxx/`
|
|
36
|
+
- 微信对端:`relations/wechat#wxid_xxx/`
|
|
37
|
+
|
|
38
|
+
**下列条目只是设计稿,源码尚未实现——不要假设读了/写了会生效**:
|
|
39
|
+
|
|
40
|
+
| 条目 | 真实状态 |
|
|
41
|
+
|------|----------|
|
|
42
|
+
| `<peerKey>/profile.md` | manifest 通过统一的 `peer-profile` 槽加载(缺失即跳过),群聊和私聊不再重复声明;目前**没有任何代码写它**,可以手写一份供上下文加载 |
|
|
43
|
+
| `_index/name_<name>.json` 名字反查索引 | 目录会被创建,但**无任何读写代码**,磁盘上全是空目录。"已知 name 反查 peerKey" 这条路走不通 |
|
|
44
|
+
| `<peerKey>/history.jsonl` | 关系层无此实现(同名文件都属于 handoff / trigger / CC 自己的历史) |
|
|
45
|
+
| `_trash/` | 只创建目录,没有 merge/split 重定向逻辑 |
|
|
46
|
+
| `relations/contacts/`、`relations/_observed/` | 目录骨架仍在创建这两个旧结构(`ensureAgentDirSkeleton`),但已不再使用,都是空的 |
|
|
47
|
+
| `<peerKey>/behavior.json` | 旧配置残留,已并入 `config.json` |
|
|
48
|
+
|
|
49
|
+
## 查找逻辑
|
|
50
|
+
|
|
51
|
+
已知 channel + peerId → 直接拼 `relations/<channel>#<urlEncode(peerId)>/`。这是**唯一可用的查找路径**;
|
|
52
|
+
只知道名字("给王老板发消息")时没有索引可查,用 `ec aid`/联系人命令或直接问用户。
|
|
53
|
+
|
|
54
|
+
## 对端身份与权限
|
|
55
|
+
|
|
56
|
+
四个内置角色(rank 从高到低)+ 自定义角色 + `none`:
|
|
57
|
+
|
|
58
|
+
| 身份 | rank | 默认 permissionMode | 权限 |
|
|
59
|
+
|------|------|--------------------|------|
|
|
60
|
+
| owner | 900 | `bypass` | agent 级最高关系权限,可执行 agent 管理和 owner 审批 |
|
|
61
|
+
| admin | 700 | `request` | agent 管理权限,不能修改 owner,危险操作向 owner 申请审批 |
|
|
62
|
+
| member | 300 | `auto` | 任务型普通成员 |
|
|
63
|
+
| visitor | 100 | `readonly` | 只读角色,且是**强制保留角色**(兜底用) |
|
|
64
|
+
| 自定义角色 | 按配置 | 缺失/非法时安全兜底 **`readonly`** | 按 agent 角色模板定义 |
|
|
65
|
+
| none | — | — | 无有效关系角色,拒绝访问 |
|
|
66
|
+
|
|
67
|
+
角色实际存储在 `relations/<peerKey>/config.json` 的 `role` 字段。进程级 `daemon-owner` 与这里的
|
|
68
|
+
Agent/relation 角色正交,不会在 auth 层提升为 `owner`;只有 Agent 自身的 owner 配置和关系解析
|
|
69
|
+
结果可以授予 `owner`。DaemonOwner 仅获得明确列入进程控制面的操作权限。
|
|
70
|
+
|
|
71
|
+
**兜底链**:无匹配角色 → 回落内置 `visitor`(即 `readonly`);只有角色注册表本身缺失、
|
|
72
|
+
或 `visitor` 未注册时才落到 `none` 拒绝访问。所以正常配置下几乎总是降权到只读,而不是拒绝。
|
|
73
|
+
|
|
74
|
+
> permissionMode 的合法取值只有 `readonly` / `auto` / `request` / `bypass` 四个。
|
|
75
|
+
> "coding" 是**场景**名(无渠道的本地会话,见 `05-venue.md`),**不是** permissionMode。
|
package/kits/rules/05-venue.md
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
# 环境层:当前对话场景
|
|
2
|
-
|
|
3
|
-
环境层决定当前会话加载哪些信息。ECK 在 venue fragment 注入的环境层变量:
|
|
4
|
-
|
|
5
|
-
| 变量 | 取值 | 说明 |
|
|
6
|
-
|------|------|------|
|
|
7
|
-
| `chatType` | `private` / `group` / null | null = 无渠道的本地 coding 会话 |
|
|
8
|
-
| `mentionMode` | `mention-only` / `disabled` | 群内响应策略;取 agent/relation 配置,缺省时使用群服务器下发的 `mention_mode` |
|
|
9
|
-
| `clientType` | `desktop` / `web` / `mobile` | 有值时额外加载客户端场景文档 |
|
|
10
|
-
| `permissionMode` | readonly/auto/request/bypass | 当前生效权限模式 |
|
|
11
|
-
| `venueUid` | 恒为 undefined | 声明了但源码固定不填,模板有 `{{?}}` 守卫所以永不渲染——**不要依赖它** |
|
|
12
|
-
|
|
13
|
-
## 场景判定
|
|
14
|
-
|
|
15
|
-
命中哪些段由 `kits/eck_manifest.json` 的 `when` 条件决定,不是写死的分支:
|
|
16
|
-
|
|
17
|
-
| 场景 | 条件 | 加载的段 | 你的行为 |
|
|
18
|
-
|------|------|----------|----------|
|
|
19
|
-
| coding | `chatType = null` 且 `lifecycle = active` | rules + 会话层 + baseagent | 本地模式,每条消息都响应 |
|
|
20
|
-
| private | `chatType = private` 且 `lifecycle = active` | 上述 + 身份层(含 persona/working-memory/**preferences**)+ 关系层(对端 profile)+ 环境层 + 渠道层 + commands | 自主模式,回复方式随 `chatMode` |
|
|
21
|
-
| group | `chatType = group` 且 `lifecycle = active` | 同 private,但**无 preferences**;`groupId` 有值加群 profile,`groupRulesPath` 有值加群规则 | 自主模式,`mentionMode` 决定是否响应 |
|
|
22
|
-
| bootstrapping | `lifecycle = bootstrapping` | 仅 bootstrap 引导(所有常规段均落选) | 初始化引导 |
|
|
23
|
-
|
|
24
|
-
> coding 场景在 agent `active` 时加载 `session` 与 `baseagent`;生命周期缺失按 `active` 处理,非法时按 fail-closed 处理。
|
|
25
|
-
|
|
26
|
-
## 数据位置
|
|
27
|
-
|
|
28
|
-
| 位置 | 内容 |
|
|
29
|
-
|------|------|
|
|
30
|
-
| `$KITS_DOCS/venues/` | 环境层场景文档(只读,按需加载):`private.md` `group.md` `<channel>-<chatType>.md` `client-*.md` |
|
|
31
|
-
| `$VENUES_DIR`(`$AGENT_DIR/venues/`) | **目前是死目录**:会被创建(含 `_index/` `_trash/`),但源码里 `agentVenuesDir()` 零调用点,无人读写 |
|
|
32
|
-
|
|
33
|
-
> `venues/` 下若有 `aun#<group-aid>` 之类的实例目录,是已删除模块 `group-venue-sync.ts` 的历史残留,
|
|
34
|
-
> 不再有效——群规则现在走关系层(见下文)。
|
|
35
|
-
|
|
36
|
-
> **重要**:环境层承载比"单个群/私聊实例"更高的抽象(如组织、类型级共性),**不为具体群/私聊实例建目录**。
|
|
37
|
-
> 具体群实例的数据(如群规则 `rules.md`、群 profile)落**关系层** `$RELATIONS_DIR/<peerKey>/`。
|
|
38
|
-
|
|
39
|
-
## Venue 类型抽象
|
|
40
|
-
|
|
41
|
-
环境层关注的是**类型**,而非具体实例。类型只有 `private` 和 `group` 两种(即 `chatType` 的两个非空取值)——
|
|
42
|
-
没有 `broadcast` 这个 venue 类型;群响应策略统一由 `mentionMode` 表达。
|
|
43
|
-
|
|
44
|
-
"张三所在的 team-alpha 这个**具体群**"不属于环境层,它是关系层的对端实例,数据落 `relations/<peerKey>/`。
|
|
45
|
-
|
|
46
|
-
## 群规则(关系层数据)
|
|
47
|
-
|
|
48
|
-
AUN 群规则文件固定来自 `<group-aid>:/rules.md`。EvolCore 先读取 signed `rules.content`
|
|
49
|
-
元信息并用远端 stat 的 `size + mtimeMs` 校验 `/rules.md`,一致后把远端字节原样物化到
|
|
50
|
-
**`$RELATIONS_DIR/<peerKey>/rules.md`**(群的 peerKey = `aun#<group-aid>`)并通过 manifest 注入。
|
|
51
|
-
群规则可定义本群特有的工作流程、职责分工、交付格式、禁区和升级路径;当群规则与通用规则冲突时,
|
|
52
|
-
优先遵守群规则,但不能越过系统安全、权限和用户明确指令。
|
|
53
|
-
|
|
54
|
-
其它群资源不预先注入,需要时用 `ec fs ls/find/stat/cat <group-aid>:/...` 查询。
|
|
55
|
-
不要把本地残留的 `rules.md` 当作权威源;只有本轮校验通过并暴露 `groupRulesPath` 时才使用。
|
|
56
|
-
|
|
57
|
-
本地有效配置 `groupRules.mode` 决定是否进入上述流程:relation 值覆盖 Agent 值,缺省为 `load`。
|
|
58
|
-
`ignore` 时返回 `groupRulesStatus=ignored`,且不访问远端规则、不读取本地物化文件、不设置
|
|
59
|
-
`groupRulesPath`,因此不会注入正文。切换配置不会自动清空或新建 base agent 会话;配置提交后开始
|
|
60
|
-
处理的新 turn 使用新策略。
|
|
1
|
+
# 环境层:当前对话场景
|
|
2
|
+
|
|
3
|
+
环境层决定当前会话加载哪些信息。ECK 在 venue fragment 注入的环境层变量:
|
|
4
|
+
|
|
5
|
+
| 变量 | 取值 | 说明 |
|
|
6
|
+
|------|------|------|
|
|
7
|
+
| `chatType` | `private` / `group` / null | null = 无渠道的本地 coding 会话 |
|
|
8
|
+
| `mentionMode` | `mention-only` / `disabled` | 群内响应策略;取 agent/relation 配置,缺省时使用群服务器下发的 `mention_mode` |
|
|
9
|
+
| `clientType` | `desktop` / `web` / `mobile` | 有值时额外加载客户端场景文档 |
|
|
10
|
+
| `permissionMode` | readonly/auto/request/bypass | 当前生效权限模式 |
|
|
11
|
+
| `venueUid` | 恒为 undefined | 声明了但源码固定不填,模板有 `{{?}}` 守卫所以永不渲染——**不要依赖它** |
|
|
12
|
+
|
|
13
|
+
## 场景判定
|
|
14
|
+
|
|
15
|
+
命中哪些段由 `kits/eck_manifest.json` 的 `when` 条件决定,不是写死的分支:
|
|
16
|
+
|
|
17
|
+
| 场景 | 条件 | 加载的段 | 你的行为 |
|
|
18
|
+
|------|------|----------|----------|
|
|
19
|
+
| coding | `chatType = null` 且 `lifecycle = active` | rules + 会话层 + baseagent | 本地模式,每条消息都响应 |
|
|
20
|
+
| private | `chatType = private` 且 `lifecycle = active` | 上述 + 身份层(含 persona/working-memory/**preferences**)+ 关系层(对端 profile)+ 环境层 + 渠道层 + commands | 自主模式,回复方式随 `chatMode` |
|
|
21
|
+
| group | `chatType = group` 且 `lifecycle = active` | 同 private,但**无 preferences**;`groupId` 有值加群 profile,`groupRulesPath` 有值加群规则 | 自主模式,`mentionMode` 决定是否响应 |
|
|
22
|
+
| bootstrapping | `lifecycle = bootstrapping` | 仅 bootstrap 引导(所有常规段均落选) | 初始化引导 |
|
|
23
|
+
|
|
24
|
+
> coding 场景在 agent `active` 时加载 `session` 与 `baseagent`;生命周期缺失按 `active` 处理,非法时按 fail-closed 处理。
|
|
25
|
+
|
|
26
|
+
## 数据位置
|
|
27
|
+
|
|
28
|
+
| 位置 | 内容 |
|
|
29
|
+
|------|------|
|
|
30
|
+
| `$KITS_DOCS/venues/` | 环境层场景文档(只读,按需加载):`private.md` `group.md` `<channel>-<chatType>.md` `client-*.md` |
|
|
31
|
+
| `$VENUES_DIR`(`$AGENT_DIR/venues/`) | **目前是死目录**:会被创建(含 `_index/` `_trash/`),但源码里 `agentVenuesDir()` 零调用点,无人读写 |
|
|
32
|
+
|
|
33
|
+
> `venues/` 下若有 `aun#<group-aid>` 之类的实例目录,是已删除模块 `group-venue-sync.ts` 的历史残留,
|
|
34
|
+
> 不再有效——群规则现在走关系层(见下文)。
|
|
35
|
+
|
|
36
|
+
> **重要**:环境层承载比"单个群/私聊实例"更高的抽象(如组织、类型级共性),**不为具体群/私聊实例建目录**。
|
|
37
|
+
> 具体群实例的数据(如群规则 `rules.md`、群 profile)落**关系层** `$RELATIONS_DIR/<peerKey>/`。
|
|
38
|
+
|
|
39
|
+
## Venue 类型抽象
|
|
40
|
+
|
|
41
|
+
环境层关注的是**类型**,而非具体实例。类型只有 `private` 和 `group` 两种(即 `chatType` 的两个非空取值)——
|
|
42
|
+
没有 `broadcast` 这个 venue 类型;群响应策略统一由 `mentionMode` 表达。
|
|
43
|
+
|
|
44
|
+
"张三所在的 team-alpha 这个**具体群**"不属于环境层,它是关系层的对端实例,数据落 `relations/<peerKey>/`。
|
|
45
|
+
|
|
46
|
+
## 群规则(关系层数据)
|
|
47
|
+
|
|
48
|
+
AUN 群规则文件固定来自 `<group-aid>:/rules.md`。EvolCore 先读取 signed `rules.content`
|
|
49
|
+
元信息并用远端 stat 的 `size + mtimeMs` 校验 `/rules.md`,一致后把远端字节原样物化到
|
|
50
|
+
**`$RELATIONS_DIR/<peerKey>/rules.md`**(群的 peerKey = `aun#<group-aid>`)并通过 manifest 注入。
|
|
51
|
+
群规则可定义本群特有的工作流程、职责分工、交付格式、禁区和升级路径;当群规则与通用规则冲突时,
|
|
52
|
+
优先遵守群规则,但不能越过系统安全、权限和用户明确指令。
|
|
53
|
+
|
|
54
|
+
其它群资源不预先注入,需要时用 `ec fs ls/find/stat/cat <group-aid>:/...` 查询。
|
|
55
|
+
不要把本地残留的 `rules.md` 当作权威源;只有本轮校验通过并暴露 `groupRulesPath` 时才使用。
|
|
56
|
+
|
|
57
|
+
本地有效配置 `groupRules.mode` 决定是否进入上述流程:relation 值覆盖 Agent 值,缺省为 `load`。
|
|
58
|
+
`ignore` 时返回 `groupRulesStatus=ignored`,且不访问远端规则、不读取本地物化文件、不设置
|
|
59
|
+
`groupRulesPath`,因此不会注入正文。切换配置不会自动清空或新建 base agent 会话;配置提交后开始
|
|
60
|
+
处理的新 turn 使用新策略。
|