evolcore 0.0.28 → 0.0.29
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 +12 -0
- package/bin/ec-safe-output.js +270 -54
- package/dist/agents/baseagent-availability.js +37 -1
- package/dist/agents/baseagent.js +19 -9
- package/dist/agents/claude-runner.js +171 -13
- package/dist/agents/codex/app-server-client.js +6 -2
- package/dist/agents/codex/diagnostics.js +4 -3
- package/dist/agents/codex-runner.js +396 -95
- package/dist/agents/gemini-runner.js +35 -17
- package/dist/aun/group/history.js +130 -90
- package/dist/aun/group/operations.js +1 -3
- package/dist/aun/menu/transport.js +5 -3
- package/dist/aun/msg/managed-operation.js +70 -0
- package/dist/aun/msg/p2p.js +1 -3
- package/dist/aun/msg/upload.js +2 -2
- package/dist/aun/outbox.js +1 -37
- package/dist/channels/aun.js +249 -89
- package/dist/channels/daemon.js +18 -1
- package/dist/channels/feishu.js +1 -2
- package/dist/cli/agent-command.js +23 -3
- package/dist/cli/agent-create.js +68 -2
- package/dist/cli/agent.js +12 -2
- package/dist/cli/aun-commands.js +87 -13
- package/dist/cli/cli-argv.js +26 -0
- package/dist/cli/daemon-commands.js +40 -10
- package/dist/cli/data-command.js +4 -4
- package/dist/cli/handoff-command.js +2 -0
- package/dist/cli/index.js +18 -1
- package/dist/cli/managed-command-guard.js +10 -0
- package/dist/cli/memory-command.js +441 -0
- package/dist/cli/restart-monitor.js +62 -6
- package/dist/cli/skill-command.js +41 -0
- package/dist/cli/task-context.js +2 -23
- package/dist/cli/trigger-command.js +9 -1
- package/dist/cli/watch-msg-diag.js +209 -0
- package/dist/config/config-field-policy.js +52 -3
- package/dist/config/config-manager.js +17 -4
- package/dist/config/contact-book-store.js +2 -2
- package/dist/config/mention-mode.js +7 -2
- package/dist/config/merge.js +28 -9
- package/dist/config/resolved-config-op.js +1 -1
- package/dist/config/runtime-env.js +137 -0
- package/dist/config/schema-registry.js +11 -1
- package/dist/config-store.js +10 -10
- package/dist/core/audit/event-key.js +3 -1
- package/dist/core/audit/log-integrity.js +4 -0
- package/dist/core/auth/agent-delegation.js +2 -1
- package/dist/core/auth/auth-gateway.js +13 -6
- package/dist/core/auth/authorization-audit.js +54 -19
- package/dist/core/auth/operation-authorizer.js +17 -0
- package/dist/core/auth/operation-catalog.js +9 -0
- package/dist/core/causation/context.js +5 -1
- package/dist/core/command/agent-control.js +1 -2
- package/dist/core/command/command-handler.js +51 -23
- package/dist/core/command/memory-slash.js +270 -0
- package/dist/core/command/menu-catalog.js +1 -0
- package/dist/core/command/menu-handler.js +315 -60
- package/dist/core/command/menu-protocol.js +42 -4
- package/dist/core/command/slash-gate.js +10 -10
- package/dist/core/command/slash-handler.js +206 -64
- package/dist/core/data-migration.js +282 -505
- package/dist/core/event-catalog.js +26 -0
- package/dist/core/evolagent-registry.js +6 -0
- package/dist/core/evolagent.js +0 -10
- package/dist/core/handoff/store.js +1 -20
- package/dist/core/inference/text-inference.js +57 -1
- package/dist/core/memory/consolidation-context.js +505 -0
- package/dist/core/memory/consolidation-ops-records.js +124 -0
- package/dist/core/memory/consolidation-trigger.js +394 -0
- package/dist/core/memory/index-manager.js +308 -0
- package/dist/core/memory/launch-consolidation.js +395 -0
- package/dist/core/memory/memory-admin.js +234 -0
- package/dist/core/memory/memory-document.js +100 -0
- package/dist/core/memory/memory-session-policy.js +41 -0
- package/dist/core/memory/memory-signature.js +257 -0
- package/dist/core/memory/memory-writer.js +432 -0
- package/dist/core/memory/staleness.js +117 -0
- package/dist/core/message/auto-mention-gate.js +454 -0
- package/dist/core/message/im-renderer.js +69 -16
- package/dist/core/message/message-bridge.js +287 -21
- package/dist/core/message/message-log.js +1 -0
- package/dist/core/message/message-queue.js +114 -27
- package/dist/core/message/pending-hints.js +329 -161
- package/dist/core/message/response-engine.js +567 -80
- package/dist/core/permission/ec-command-parser.js +1029 -80
- package/dist/core/permission/protected-paths.js +376 -126
- package/dist/core/permission/sandbox-runtime.js +40 -12
- package/dist/core/permission/tool-error-code.js +96 -13
- package/dist/core/permission/tool-policy.js +276 -23
- package/dist/core/role/runtime-policy.js +3 -7
- package/dist/core/session/{runner-task-history.js → runner-event-summary.js} +1 -1
- package/dist/core/session/session-fs-store.js +0 -76
- package/dist/core/session/session-idle-monitor.js +355 -0
- package/dist/core/session/session-manager.js +478 -17
- package/dist/core/session/session-mapper.js +33 -16
- package/dist/core/session/session-renew.js +217 -155
- package/dist/core/session/{session-turns.js → session-transcript.js} +35 -6
- package/dist/core/skill/global-watcher.js +282 -0
- package/dist/core/skill/index-generator.js +84 -0
- package/dist/core/skill/startup.js +73 -0
- package/dist/core/skill/switch-resolver.js +115 -0
- package/dist/core/task/task-activity-store.js +219 -0
- package/dist/eck/kit-renderer.js +30 -3
- package/dist/eck/manifest-engine.js +26 -4
- package/dist/index.js +708 -18
- package/dist/ipc.js +564 -2
- package/dist/paths.js +30 -9
- package/dist/response-system/engines/v1/proactive-flow.js +116 -15
- package/dist/response-system/modes/single-session/index.js +3 -0
- package/dist/trigger/feedback.js +1 -0
- package/dist/trigger/manager.js +0 -10
- package/dist/trigger/scheduler.js +11 -0
- package/dist/trigger/validation.js +22 -0
- package/dist/utils/avatar-upload.js +59 -18
- package/dist/utils/error-dict.json +6 -3
- package/dist/utils/error-utils.js +27 -0
- package/dist/utils/logger.js +32 -10
- package/dist/utils/media-cache.js +84 -0
- package/dist/utils/msg-diag.js +97 -0
- package/dist/utils/welcome.js +37 -8
- package/kits/docs/AUTHORING.md +314 -0
- package/kits/docs/GUIDE.md +2 -0
- package/kits/docs/INDEX.md +2 -0
- package/kits/docs/aun/CHEATSHEET.md +4 -0
- package/kits/docs/aun/SDK.md +60 -0
- package/kits/docs/context-assembly.md +10 -6
- package/kits/docs/evolcore/INDEX.md +17 -3
- package/kits/docs/evolcore/agent-create.md +24 -0
- package/kits/docs/evolcore/agent.md +5 -2
- package/kits/docs/evolcore/config.md +1 -1
- package/kits/docs/evolcore/ec-capabilities.md +364 -0
- package/kits/docs/evolcore/group.md +34 -18
- package/kits/docs/evolcore/memory-architecture.md +78 -0
- package/kits/docs/evolcore/memory-consolidation-batches.md +133 -0
- package/kits/docs/evolcore/memory-consolidation.md +263 -0
- package/kits/docs/evolcore/memory-tags.md +63 -0
- package/kits/docs/evolcore/memory.md +110 -0
- package/kits/docs/evolcore/menu-client.md +27 -11
- package/kits/{schemas → docs/evolcore}/menu-exec-schema-commands.md +12 -6
- package/kits/docs/evolcore/menu-protocol.md +213 -0
- package/kits/docs/evolcore/msg.md +2 -0
- package/kits/docs/evolcore/trigger.md +7 -5
- package/kits/docs/path-registry.md +6 -8
- package/kits/docs/prompt-loading-architecture.md +5 -3
- package/kits/docs/venues/group.md +5 -4
- package/kits/eck_manifest.json +294 -88
- package/kits/eck_manifest.memory.json +257 -0
- package/kits/rules/03-identity.md +8 -8
- package/kits/rules/05-venue.md +4 -2
- package/kits/rules/06-channel.md +1 -1
- package/kits/schemas/_meta.json +276 -47
- package/kits/schemas/agent-config.schema.12.json +38 -2
- package/kits/schemas/agent-config.schema.13.json +591 -0
- package/kits/schemas/daemon.schema.6.json +9 -9
- package/kits/schemas/defaults.schema.5.json +29 -0
- package/kits/schemas/relation-config.schema.8.json +14 -1
- package/kits/schemas/relation-config.schema.9.json +129 -0
- package/kits/schemas/role-config.schema.1.json +3 -3
- package/kits/skills/.switches.json +3 -0
- package/kits/skills/ec-skill/SKILL.md +217 -0
- package/kits/skills/ec-skill/scripts/cli.mjs +128 -0
- package/kits/skills/ec-skill/scripts/deps.mjs +107 -0
- package/kits/skills/ec-skill/scripts/frontmatter.mjs +104 -0
- package/kits/skills/ec-skill/scripts/skill.mjs +629 -0
- package/kits/skills/ec-skill/scripts/template/SKILL.md.tmpl +30 -0
- package/kits/templates/decision/auto-mention.md +25 -0
- package/kits/templates/decision/session-renew.md +22 -0
- package/kits/templates/memory-consolidation/forget.md +104 -0
- package/kits/templates/memory-consolidation/generalize.md +76 -0
- package/kits/templates/memory-consolidation/notes.md +133 -0
- package/kits/templates/memory-consolidation/profile.md +58 -0
- package/kits/templates/memory-consolidation/promote.md +72 -0
- package/kits/templates/memory-consolidation/workflow.md +75 -0
- package/kits/templates/system-fragments/bootstrap.md +14 -5
- package/kits/templates/system-fragments/commands.md +1 -0
- package/kits/templates/system-fragments/group-history.md +6 -0
- package/kits/templates/system-fragments/identity.md +0 -3
- package/kits/templates/system-fragments/memory.md +79 -0
- package/kits/templates/system-fragments/reply.md +1 -0
- package/kits/templates/system-fragments/venue.md +1 -1
- package/package.json +4 -6
- package/dist/trigger/legacy-session-history.js +0 -19
- package/kits/templates/system-fragments/group-unread-history.md +0 -7
package/kits/docs/INDEX.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
| 文档 | 路径 | 说明 |
|
|
8
8
|
|------|------|------|
|
|
9
9
|
| 查阅指南 | `GUIDE.md` | 文档查阅流程 |
|
|
10
|
+
| 写作与维护指南 | `AUTHORING.md` | 增改 ECK 文档时的规则:放哪、怎么正交、如何接入可发现链路、示例一致性、检查清单 |
|
|
10
11
|
| 路径定义 | `path-registry.md` | 所有预定义路径及派生规则 |
|
|
11
12
|
| 上下文组装机制 | `context-assembly.md` | manifest 装配机制:when 条件/合并覆盖/模板渲染/运行时变量/调试输出 |
|
|
12
13
|
|
|
@@ -15,6 +16,7 @@
|
|
|
15
16
|
| 文档 | 路径 | 说明 |
|
|
16
17
|
|------|------|------|
|
|
17
18
|
| 速查表 | `aun/CHEATSHEET.md` | AUN 协议命名空间与常用操作速查 |
|
|
19
|
+
| SDK 文档指引 | `aun/SDK.md` | AUN SDK 文档位置(`$AUN_SDK_DOCS`)、结构与常用入口;四语言版本共用同一份协议文档 |
|
|
18
20
|
| 同步协议 | `aun/SYNC_PROTOCOL.md` | 上游协议同步 SOP |
|
|
19
21
|
|
|
20
22
|
## EvolCore 命令
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# AUN SDK 文档指引
|
|
2
|
+
|
|
3
|
+
AUN SDK 有四个语言版本:TypeScript、Python、Go、JavaScript。协议文档是四个版本共用的,
|
|
4
|
+
统一打包在 `@agentunion/fastaun`(TypeScript SDK)的 `_packed_docs/` 目录下。
|
|
5
|
+
|
|
6
|
+
## 文档位置
|
|
7
|
+
|
|
8
|
+
文档位于 `$AUN_SDK_DOCS`,即 `$AUN_SDK/_packed_docs`。
|
|
9
|
+
|
|
10
|
+
`$AUN_SDK` 是 npm 包 `@agentunion/fastaun` 的安装目录,在 evolcore 项目中作为本地依赖安装,
|
|
11
|
+
通常路径为 `$PACKAGE_ROOT/node_modules/@agentunion/fastaun`。路径别名定义见
|
|
12
|
+
`$KITS_DOCS/path-registry.md`。
|
|
13
|
+
|
|
14
|
+
该目录不存在时,说明当前环境未安装此包,不要凭记忆推断协议细节。
|
|
15
|
+
|
|
16
|
+
## 文档结构
|
|
17
|
+
|
|
18
|
+
找到 `$AUN_SDK_DOCS` 后,内容按三个维度组织:
|
|
19
|
+
|
|
20
|
+
### 协议规范(`protocol/` 目录)
|
|
21
|
+
|
|
22
|
+
| 文件 | 内容 |
|
|
23
|
+
|------|------|
|
|
24
|
+
| `00-总览与分层.md` | 协议目标、四层架构、三种连接模式(gateway/peer/relay)、文档导航 |
|
|
25
|
+
| `00A-设计原则-为Agent而生.md` | 元原则:Agent 优先、主体对等、自主至上 |
|
|
26
|
+
| `01-身份与凭证协议-auth.md` | auth.* 方法、AID/证书/私钥/token 关系 |
|
|
27
|
+
| `02-证书与信任体系.md` | AID 体系、四级证书链、信任模型、吊销机制 |
|
|
28
|
+
| `03-Gateway-连接模式.md` | Gateway 连接流程、auth.connect、心跳重连 |
|
|
29
|
+
| `06-服务协议.md` | 业务层方法:group/message/storage/meta/search 等服务的 RPC 定义 |
|
|
30
|
+
| `08-AUN-E2EE-Group.md` | 群端到端加密 |
|
|
31
|
+
| `10-Group-子协议.md` | group.* 完整协议规范 |
|
|
32
|
+
| `11-Storage-子协议.md` | storage.* 完整协议规范 |
|
|
33
|
+
| `13-Agent行为规范.md` | Agent 自主模式行为规范、收发方义务 |
|
|
34
|
+
| `附录A-术语表.md` | 协议术语定义 |
|
|
35
|
+
|
|
36
|
+
### SDK 使用手册(`sdk/` 目录)
|
|
37
|
+
|
|
38
|
+
| 文件 | 内容 |
|
|
39
|
+
|------|------|
|
|
40
|
+
| `INDEX.md` | SDK 手册总索引 |
|
|
41
|
+
| `04-连接与认证.md` | 连接建立、access token getter |
|
|
42
|
+
| `06-API手册.md` | SDK API 完整手册 |
|
|
43
|
+
| `09-group-rpc-manual.md` | group RPC 手册 |
|
|
44
|
+
| `09-message-rpc-manual.md` | message RPC 手册 |
|
|
45
|
+
| `09-storage-rpc-manual.md` | storage RPC 手册 |
|
|
46
|
+
| `09-stream-rpc-manual.md` | stream RPC 手册 |
|
|
47
|
+
| `09-proxy-rpc-manual.md` | proxy RPC 手册 |
|
|
48
|
+
| `09-payload-reference.md` | payload 类型参考 |
|
|
49
|
+
| `E2EE_V2消息通信时序图.md` | E2EE V2 主链路时序 |
|
|
50
|
+
| `Notify通知方案.md` | client.notify() 在线轻量通知 |
|
|
51
|
+
|
|
52
|
+
### agent.md 名片规范
|
|
53
|
+
|
|
54
|
+
| 文件 | 内容 |
|
|
55
|
+
|------|------|
|
|
56
|
+
| `agent.md/SCHEMA.md` | agent.md 名片完整字段规范 |
|
|
57
|
+
|
|
58
|
+
### 总索引
|
|
59
|
+
|
|
60
|
+
`INDEX.md`(文档根目录下)是完整的三层索引,覆盖所有设计文档、测试指南、架构方案等。
|
|
@@ -31,9 +31,10 @@ evolcore 收到消息 → 构造一份 **vars**(运行时变量,见下)→
|
|
|
31
31
|
|------|------|------|
|
|
32
32
|
| `main`(默认) | `eck_manifest.json` | 主会话,完整上下文 |
|
|
33
33
|
| `auxiliary` | `eck_manifest.auxiliary.json` | 辅助会话(双会话模式),精简上下文 |
|
|
34
|
+
| `memory` | `eck_manifest.memory.json` | 记忆整理会话(由触发器拉起) |
|
|
34
35
|
| 未来:`approval` / `goal` / ... | `eck_manifest.<type>.json` | 权限审批 / 目标管理等专用会话 |
|
|
35
36
|
|
|
36
|
-
|
|
37
|
+
**上表映射内置在代码里**(`src/eck/kit-renderer.ts` 的 `BUILTIN_SESSION_MANIFESTS`),不依赖任何 config。agent config 的 `sessionManifests` 字段只作**可选覆盖**(走 config 分级覆盖:关系/环境/agent 级):
|
|
37
38
|
|
|
38
39
|
```jsonc
|
|
39
40
|
// $AGENT_DIR/config.json
|
|
@@ -45,7 +46,7 @@ evolcore 收到消息 → 构造一份 **vars**(运行时变量,见下)→
|
|
|
45
46
|
}
|
|
46
47
|
```
|
|
47
48
|
|
|
48
|
-
渲染时按 `session.sessionType`(缺省 `'main'
|
|
49
|
+
渲染时按 `session.sessionType`(缺省 `'main'`)依次查:`sessionManifests` 覆盖 → 内置映射 → `eck_manifest.json`(`resolveSessionManifest`)。bootstrapping 阶段固定用 `eck_manifest.json`。
|
|
49
50
|
**每个 manifest 文件各自两级合并**(`$KITS/<file>` + `$ECK/<file>`),互不干扰。
|
|
50
51
|
|
|
51
52
|
## section 字段
|
|
@@ -256,7 +257,7 @@ vars 由 evolcore 在 `message-processor.ts` 按当前会话构造。分两类
|
|
|
256
257
|
| 变量 | 含义 |
|
|
257
258
|
|------|------|
|
|
258
259
|
| `selfAid` / `selfName` | 当前 agent 身份 |
|
|
259
|
-
| `hasPersona`
|
|
260
|
+
| `hasPersona` | 是否有人格 |
|
|
260
261
|
| `peerId` / `peerKey` / `peerName` | 对端原生 ID / 跨渠道键 / 显示名 |
|
|
261
262
|
| `peerRole` / `peerType` | 对端角色(owner/admin/member/visitor/自定义角色/none)/ 类型(human/agent) |
|
|
262
263
|
| `groupId` | 群 ID(群聊时) |
|
|
@@ -295,10 +296,11 @@ coding 场景(无 channel/无身份)下,`chatType`、`channel`、`selfAid`
|
|
|
295
296
|
| 20 | identity-layer | fragment | active 且 chatType≠null | ✓ |
|
|
296
297
|
| 21 | persona | `$PERSONAL_DIR/persona.md` | active 且 chatType≠null | ✗ |
|
|
297
298
|
| 21.5 | personal-profile | `$PERSONAL_DIR/personal.md` | active 且 chatType≠null | ✗ |
|
|
298
|
-
| 22 | working-memory | `$PERSONAL_DIR/memory/working.md` | active 且 chatType≠null | ✗ |
|
|
299
|
-
| 23 | preferences | `$PERSONAL_DIR/preferences/active-preferences.md` | active 且 chatType=private | ✗ |
|
|
300
299
|
| 30 | relation-layer | fragment | active 且 chatType∈{private,group} | ✓ |
|
|
301
|
-
| 35 |
|
|
300
|
+
| 35 | memory | `$KITS_FRAGMENTS/memory.md` | active 且 memoryEnableRelation≠false | ✓ |
|
|
301
|
+
| 36 | agent-memory | `$PERSONAL_DIR/memory/MEMORY.md` | active 且 memoryEnableAgent≠false | ✗ |
|
|
302
|
+
| 37 | owner-memory | `$EVOLCORE_HOME/memory/owner/{{ownerAid}}/MEMORY.md` | active 且 ownerAid≠null 且 memoryEnableOwner≠false | ✗ |
|
|
303
|
+
| 38 | relation-memory | `$RELATIONS_DIR/{{peerKey}}/memory/MEMORY.md` | active 且 peerKey≠null | ✗ |
|
|
302
304
|
| 40 | venue-fragment | fragment | active 且 chatType≠null | ✓ |
|
|
303
305
|
| 41 | venue-chattype | `$KITS_DOCS/venues/{{chatType}}.md` | active 且 chatType≠null | ✗ |
|
|
304
306
|
| 42 | venue-channel-chattype | `$KITS_DOCS/venues/{{channel}}-{{chatType}}.md` | active 且 chatType≠null | ✗ |
|
|
@@ -314,6 +316,8 @@ Bootstrap 只加载引导与有渠道时的最小通信上下文 `[reply]`,不
|
|
|
314
316
|
`[reply]` 展示 selfAid、peerId、peerType、channel、chatType、chatMode;未知身份显示 unknown,回复方式只取运行时已解析的 chatMode,不从身份或私聊场景重新推断。命令经当前会话 delegated sender / daemon IPC 发送,遵守现有身份、目标、话题与加密约束。
|
|
315
317
|
`needsInjection` 仅是是否进行模板渲染的布尔开关,不是变量白名单;上述变量原本已存在于运行时 vars。
|
|
316
318
|
|
|
319
|
+
> **v3 移除的段**:`order 22` working-memory、`23` preferences、`34` relation-working-memory、`35` peer-profile、`36.5` owner-working-memory 已从 manifest 删除。这些内容分别由 `memory-tags.md` 里的状态标签与 `profile` 标签的记忆取代。详见 `docs/memory/memory-system-v3.md`。
|
|
320
|
+
|
|
317
321
|
`session` 与 `baseagent` 不依赖 chatType,因此 active 的 coding 场景仍命中 rules + session + baseagent;无渠道时不加载共用回复段。
|
|
318
322
|
生命周期缺失兼容 active;created 与显式非法生命周期不命中主 manifest 的引导、回复或常规段。
|
|
319
323
|
|
|
@@ -33,7 +33,7 @@ Windows 上 Codex 托管任务出现 `helper_sandbox_lock_failed`、`SetNamedSec
|
|
|
33
33
|
| 命令集 | 用途 | 触发词 | 适用场景 | 文档 |
|
|
34
34
|
|--------|------|--------|----------|------|
|
|
35
35
|
| `ec msg` | 私聊收发消息 | 回复/发消息/拉取/撤回/查在线 | 有对端(peerId) | `msg.md` |
|
|
36
|
-
| `ec group` | 群聊收发与群管理 |
|
|
36
|
+
| `ec group` | 群聊收发与群管理 | 群发/建群/本地群历史/邀请/踢人/退群/群成员/角色/封禁/屏蔽/成员状态/规则/@提及模式/协作 | 群聊(groupId) | `group.md`;完整协作流程见 `group-collaboration.md` |
|
|
37
37
|
| `/invites` / `ec group invites` | 收到群邀请、Owner 卡片审核与恢复 | 入群邀请/接受邀请/拒绝邀请/审核卡片/待处理邀请 | 当前 Agent Owner 的 AUN 私聊 | `group.md` |
|
|
38
38
|
| `ec group rules` | 群规则文件发布与上下文注入 | 群规则/工作流程/职责分工/rules.md/发布规则 | AUN 群聊(groupId) | `group-rules.md` |
|
|
39
39
|
| `ec aid` | AID 身份管理 | 身份/证书/名片/探测对端 | 任意有渠道场景 | `aid.md` |
|
|
@@ -43,13 +43,14 @@ Windows 上 Codex 托管任务出现 `helper_sandbox_lock_failed`、`SetNamedSec
|
|
|
43
43
|
| `ec agent` | EvolAgent 生命周期 | 创建/启停/热重载/改配置 | 管理员(owner/admin) | `agent.md`;完整创建与 Bootstrap 见 `agent-create.md` |
|
|
44
44
|
| `ec contact` | Contact Book 与访问控制 | 申请添加、拉黑/解除拉黑、查拉黑 | Agent 当前私聊可申请添加;管理写操作按角色限制 | `contact.md` |
|
|
45
45
|
| `ec rpc` | 底层 AUN RPC(逃生通道) | 直接调协议方法 | 高级/兜底 | `rpc.md` |
|
|
46
|
-
| `ec menu-client` | 远程 Daemon Menu 请求 |
|
|
46
|
+
| `ec menu-client` | 远程 Daemon Menu 请求 | 远程诊断/远程 daemon 操作/daemon 日志/监控/原始配置/跨主机 | 运维主机或具备 `ec.menu.request` 权限的托管 Agent | `menu-client.md` |
|
|
47
47
|
|
|
48
48
|
## 会话自管理类(不连 AUN,操作当前会话)
|
|
49
49
|
|
|
50
50
|
| 命令集 | 用途 | 触发词 | 文档 |
|
|
51
51
|
|--------|------|--------|------|
|
|
52
52
|
| `ec ctl` | 当前会话工具 | 主动发消息/文件、重命名、队列、项目路径、会话状态 | `ctl.md` |
|
|
53
|
+
| `ec memory` | 记忆写入与整理 | 记住/记一下/mark it/这很重要/保存/记忆/memory/整理记忆 | `memory.md` |
|
|
53
54
|
|
|
54
55
|
## 本地工具类(不连 AUN,操作本地配置)
|
|
55
56
|
|
|
@@ -62,6 +63,7 @@ Windows 上 Codex 托管任务出现 `helper_sandbox_lock_failed`、`SetNamedSec
|
|
|
62
63
|
| `ec trigger` | 定时与事件触发器管理(创建用 `create`,`set` 为兼容别名) | 触发器/定时任务/cron/提醒/定时检查/自动执行/巡检/禁用 trigger/删除 trigger | `trigger.md` |
|
|
63
64
|
| `ec trigger event` | EventBus 事件目录 | 事件触发/事件目录/EventBus/source.type=event/filter.match | `event.md` |
|
|
64
65
|
| `ec task` | 恢复暂停或异常中断的会话任务 | 任务恢复/异常中断/继续任务/resume | `task.md` |
|
|
66
|
+
| `ec skill` | EC 技能管理(新建/安装/删除/启用/禁用/校验/查路径) | 创建技能/新建 skill/安装技能/装个 skill/删除技能/禁用技能/启用技能/看看有哪些技能/技能为什么没生效 | `ec-capabilities.md` |
|
|
65
67
|
|
|
66
68
|
## 开发者工具(非 agent 会话能力)
|
|
67
69
|
|
|
@@ -69,8 +71,20 @@ Windows 上 Codex 托管任务出现 `helper_sandbox_lock_failed`、`SetNamedSec
|
|
|
69
71
|
|------|------|------|
|
|
70
72
|
| `ec bench` | AUN 消息系统性能基准测试 | CLI 工具,agent 一般不主动调用;`ec bench --help` 查看用法 |
|
|
71
73
|
|
|
74
|
+
## 协议与集成文档(非命令集)
|
|
75
|
+
|
|
76
|
+
按需 Read。这些文档描述机制与格式,不对应某个 `ec` 子命令。
|
|
77
|
+
|
|
78
|
+
| 文档 | 用途 | 触发词 |
|
|
79
|
+
|------|------|--------|
|
|
80
|
+
| `menu-protocol.md` | Menu Protocol 规范(消息类型 / protected_headers / name→operation 映射 / 鉴权机制) | menu 消息格式/为什么被拒/服务端怎么读 menu/auth_method/凭证怎么带/Evol App 怎么调 daemon |
|
|
81
|
+
| `menu-exec-schema-commands.md` | 通过 `menu.action name=cli action=exec` 取配置 schema 的命令手册 | 配置 schema 版本/schema 内容/远程取 schema |
|
|
82
|
+
| `ec-capabilities.md` | EC Skill 系统机制概要(三级目录、开关覆盖链、渐进式披露、编写规范、权限) | 技能系统怎么工作/技能放在哪里/SKILL.md 怎么写/技能为什么没生效/description 怎么写 |
|
|
83
|
+
|
|
72
84
|
## 其他
|
|
73
85
|
|
|
74
86
|
| 文档 | 说明 |
|
|
75
87
|
|------|------|
|
|
76
|
-
| `self-summary.md` |
|
|
88
|
+
| `self-summary.md` | 自我总结流程指南(**早期设计稿,源码未实现,可删除**;记忆以 `memory-architecture.md` 为准) |
|
|
89
|
+
| `memory-architecture.md` | 记忆系统概述(作用域、流水线、开关、目录) |
|
|
90
|
+
| `memory-consolidation-batches.md` | 整理批次目录结构(整理批次目录、checkpoint、话题快照、产物目录) |
|
|
@@ -37,6 +37,7 @@ ec agent new helper.agentid.pub --initialize \
|
|
|
37
37
|
--owner owner.agentid.pub --name "Helper" \
|
|
38
38
|
--description "协助处理项目开发任务" \
|
|
39
39
|
--tags '["coding","maintenance","typescript"]' \
|
|
40
|
+
--avatar-file /home/user/helper-project/avatar.jpg \
|
|
40
41
|
--persona-file /home/user/helper-project/persona.md
|
|
41
42
|
```
|
|
42
43
|
|
|
@@ -44,6 +45,21 @@ ec agent new helper.agentid.pub --initialize \
|
|
|
44
45
|
|
|
45
46
|
初始化期间不处理目标 Agent 的普通入站消息。初始化失败或 daemon 重启后,使用 `ec agent initialize <aid> --resume` 恢复原操作;不要重复 `new` 或使用 `--force` 覆盖。`ec agent show <aid>` 会显示初始化阶段、错误和下一步,但不会暴露 persona 正文。
|
|
46
47
|
|
|
48
|
+
创建时可直接使用 `--avatar-file <path>` 或 `--avatar-url <HTTPS URL>` 提供头像。普通托管非交互创建还可将当前对端已经收到的图片附件写成 `--avatar-file 'attachment:<id>'`,由 daemon 在当前关系目录中解析;不要先把附件复制到项目目录或 `$TMPDIR`。两种来源互斥,并沿用 `ec aid avatar` 的公共头像处理管线;创建流程只负责把参数传给同一公共能力。
|
|
49
|
+
|
|
50
|
+
### 创建阶段的可选头像
|
|
51
|
+
|
|
52
|
+
头像是可选项,不提供不会阻塞创建或 Bootstrap。创建者应在执行普通非交互式 `ec agent new` 前询问 Owner 是否提供头像;若 Owner 已发送图片附件,直接把附件 ID 作为 `--avatar-file 'attachment:<id>'` 传给创建命令,不要读取、复制或改写附件路径。也可以传本地图片路径或 HTTPS 地址:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
ec agent new helper.agentid.pub --non-interactive \
|
|
56
|
+
--project /home/user/helper-project --baseagent codex \
|
|
57
|
+
--owner owner.agentid.pub \
|
|
58
|
+
--avatar-file 'attachment:<id>'
|
|
59
|
+
# 或使用本地文件:--avatar-file '/home/user/helper-project/avatar.jpg'
|
|
60
|
+
# 或使用 HTTPS:--avatar-url 'https://example.com/avatar.jpg'
|
|
61
|
+
```
|
|
62
|
+
|
|
47
63
|
没有得到创建者明确最终字段时,继续使用下方的普通非交互式创建,让目标 Agent 自己完成 Bootstrap。
|
|
48
64
|
|
|
49
65
|
多个 Agent 必须串行创建和观察。不要并行启动多个 `ec agent new`:证书、热加载和 Bootstrap 会竞争连接与资源,容易造成超时、锁等待或把失败误判为未创建。
|
|
@@ -61,6 +77,7 @@ ec agent new helper.agentid.pub --non-interactive \
|
|
|
61
77
|
--project /home/user/helper-project \
|
|
62
78
|
--baseagent codex \
|
|
63
79
|
--owners '["helper-creator.agentid.pub","owner.agentid.pub"]' \
|
|
80
|
+
--avatar-file 'attachment:<id>' \
|
|
64
81
|
--name "Helper" \
|
|
65
82
|
--description "协助处理项目开发任务" \
|
|
66
83
|
--tags '["coding","diagnostics","logs"]' \
|
|
@@ -132,6 +149,8 @@ ec agent show helper.agentid.pub
|
|
|
132
149
|
|
|
133
150
|
新 Agent 应回显这三个最终值并等待确认。Owner 再明确回复“确认”后,才能修改和发布名片。
|
|
134
151
|
|
|
152
|
+
如果创建命令已提供头像,创建流程会在初始 `agent.md` 发布成功后自动处理;Bootstrap 不重复询问或执行头像命令。头像支持 PNG、JPEG、WebP,创建流程会保持完整画面、补白边、缩放到头像尺寸并压缩到 500 KiB 内;原图不会被覆盖。若无法解码或规范化,创建会返回具体的可恢复错误。Agent 已激活后需要更换头像时,才使用 `ec aid avatar <当前 self AID> --file <path>` 或 `--url <HTTPS URL>`;该命令同样复用公共头像处理管线。
|
|
153
|
+
|
|
135
154
|
Bootstrap 完成前,新 Agent 不处理普通任务,也不执行与本流程无关的工具或命令。如果 Owner 要求跳过、先工作或同时交办普通任务,新 Agent 应说明必须先完成首次设定,并继续确认缺失字段。
|
|
136
155
|
|
|
137
156
|
## 4. 新 Agent 修改自己的 agent.md
|
|
@@ -162,6 +181,8 @@ ec aid agentmd put helper.agentid.pub
|
|
|
162
181
|
只有命令明确成功后才能继续。发布失败时保留已经确认的 welcome,修正发布问题后续做,不重复生成。
|
|
163
182
|
多 Owner 共用该模板;需要称呼时保留 `{{ownerName}}` / `{{ownerAid}}` 供逐人渲染。投递文本不再追加未确认内容。
|
|
164
183
|
|
|
184
|
+
如果头像是在创建命令中提供的,创建流程会在初始 `agent.md` 发布成功后自动上传并更新头像;不要在 Bootstrap 中再次执行 `ec aid avatar` 或 `agentmd put`。头像未提供时跳过;创建时已明确提供但规范化或上传失败时,按创建命令返回的可恢复错误处理。
|
|
185
|
+
|
|
165
186
|
## 6. 新 Agent 完成 Bootstrap
|
|
166
187
|
|
|
167
188
|
发布成功后,新 Agent 执行整个 Bootstrap 的最后一个操作:
|
|
@@ -196,11 +217,14 @@ Bootstrap 首条消息只发送给 `owners[0]`;`ready` 成功后,正式欢
|
|
|
196
217
|
|
|
197
218
|
使用 `--handoff` 代办创建时,创建 Agent 在与新 Agent 的会话中完成验收后,执行 `ec handoff return --content '<验收结果>'`,将结果回流至自己与原需求 Owner 的会话;该步骤不由新 Agent 执行。
|
|
198
219
|
|
|
220
|
+
代办交接的内联返回正文也支持单次 `\n` / `\r` / `\t` / `\\` 解码;从 `--text-from-file` 读取的文件字节保持原样。不要使用 PowerShell 反引号换行转义。
|
|
221
|
+
|
|
199
222
|
验收标准:
|
|
200
223
|
|
|
201
224
|
- `lifecycle` 为 `active`;`ec agent show` 的 `lifecycle` 字段也必须为 `active`。
|
|
202
225
|
- `agent.md` 已成功签名发布。
|
|
203
226
|
- 本地与远端 `agent.md` 的 `name`、`description`、`tags` 与 Owner 确认值一致;创建流程 skill 必须在发布后复读核验,不以初始上传响应代替。
|
|
227
|
+
- 如果 Owner 选择提供头像,远端 `agent.md` 的 `avatar` 已更新并发布;未提供时跳过,已明确提供但规范化或上传失败时创建进入可恢复失败状态。
|
|
204
228
|
- `personal/welcome.md` 是当前 Bootstrap 对话最后展示并经 Owner 确认的全文,未确认文案没有另存草稿。
|
|
205
229
|
- 系统已创建新的主会话并发送正式欢迎消息。
|
|
206
230
|
- 新 Agent 能在新主会话中处理普通任务。
|
|
@@ -65,6 +65,8 @@ ec agent delete <aid> [--purge]
|
|
|
65
65
|
|
|
66
66
|
## 非交互创建必填项
|
|
67
67
|
|
|
68
|
+
`welcome --text`、`persona --text`、创建时的 `--description` / `--persona-text` / `--handoff` 按一次 `\n` / `\r` / `\t` / `\\` 解码;已传入的物理换行保留。不要使用 PowerShell 反引号换行转义;Windows PowerShell 中直接使用命令名,不要用批处理入口传物理多行。文件、路径、`--tags` JSON 不解码;`--name` / `rename` 名称不允许换行。
|
|
69
|
+
|
|
68
70
|
`ec agent new <aid> --non-interactive` 时,只有 `<aid>` 必填:
|
|
69
71
|
- `--project` 缺省为当前目录,并自动转为绝对路径。
|
|
70
72
|
- `--baseagent` 优先使用 `agents/defaults.json`,否则检测本机可用基座。
|
|
@@ -73,13 +75,14 @@ ec agent delete <aid> [--purge]
|
|
|
73
75
|
- `--dry-run` 只输出最终创建计划,不注册 AID、不写配置、不上传 `agent.md`。
|
|
74
76
|
- `--force` 覆盖已有 `config.json`;AID 密钥保留。
|
|
75
77
|
- `--tags` 接受 3 到 6 个标签的 JSON 数组;每个标签只允许 Unicode 字母、数字和连字符(`-`),最长 50 字符。
|
|
78
|
+
- `ec agent new` 支持 `--avatar-file <path>`(托管当前对端附件可用 `attachment:<id>`)或 `--avatar-url <https-url>`;创建流程沿用 `ec aid avatar` 的公共头像管线。未提供头像时跳过;已明确提供但无法规范化或上传时,创建返回可恢复错误。
|
|
76
79
|
- `--initialize` 要求显式提供 `--name`、`--description`、`--tags` 和 Owner;它不从项目元数据推断名片,成功条件是目标 Agent 已进入 `active`。`--initialize` 自动包含 `--non-interactive`,不需要同时填写后者。
|
|
77
80
|
- `--persona-file` / `--persona-text` 可选;两者互斥。初始化失败可用 `ec agent initialize <aid> --resume` 按原计划恢复,不能用普通 `new --force` 覆盖。
|
|
78
81
|
- `ec agent persona show` 读取当前 Agent 的 `$PERSONAL_DIR/persona.md`;`--text` 或 `--file <path>` 可由当前 Agent 的 owner 写入。文件内容限制为 UTF-8 文本,`--file` 仅接受 `.md`/`.txt`。
|
|
79
82
|
- `ec agent welcome --text <text>` 只用于 Bootstrap 中 Owner 已明确确认的完整文案;命令固定写入当前 Agent 的 `$PERSONAL_DIR/welcome.md`,不接受自定义路径,也不保存未确认草稿。`welcome show` 读取该文件。
|
|
80
83
|
- welcome 托管写入要求当前 Agent 私聊 Owner;admin 仅可读。模板上限 4 KiB,渲染上限 8 KiB;变量为 `agentName`、`agentDescription`、`agentAid`、`agentTags`、`agentTagsText`、`ownerName`、`ownerAid`、`channel`,支持标签循环和真值条件。写入保留原始文本,投递不附加额外文案。
|
|
81
84
|
- `agent show <target-aid>` 与 `agent get <target-aid> <key>` 的跨 Agent 读取对 owner/admin 开放,但普通 Agent 角色只获得安全摘要;敏感配置值和物理路径仅对 DaemonOwner 返回原值。跨 Agent 写入、启停、删除和 reload 仍遵循各自的目标与 DaemonOwner 权限边界。
|
|
82
|
-
- Agent 配置可包含 `fullaccess.enabled`(默认关闭),仅可通过已认证的 EC Web Agent
|
|
85
|
+
- Agent 配置可包含 `fullaccess.enabled`(默认关闭),仅可通过已认证的 EC Web Agent 设置修改。实际运行时,只有同时属于该 Agent Owner 和当前 daemon Owner 的直接私聊任务才会按调用使用宿主级 fullaccess;群聊、普通 Owner、跨 Agent 和 Trigger 不会因该开关自动提权。`/fa`、`/fullaccess` 和 Fullaccess Trigger 是内置能力,仍分别要求经过认证的 daemon Owner / 持久授权来源。
|
|
83
86
|
|
|
84
87
|
## 创建 Agent
|
|
85
88
|
|
|
@@ -119,7 +122,7 @@ ec agent delete <aid> [--purge]
|
|
|
119
122
|
约束:
|
|
120
123
|
- 规范入口使用 `args.data`(data URL)或 `args.url`(HTTPS URL)二选一;控制面可用顶层 `agent` 或 `args.aid` 选择目标,Agent channel 只能修改当前 self AID。
|
|
121
124
|
- 新客户端使用 `name=aid action=avatar`。兼容旧版 App 的 `name=agent action=update` + `args.patch.avatar=<data URL>`:头像必须单独提交,复用相同图片校验、上传和名片发布流程,不写入 config.json,成功后同样发布头像更新事件。`patch.avatar_url` 仍不支持。
|
|
122
|
-
- 支持真实 MIME 为 PNG/JPEG/WebP
|
|
125
|
+
- 支持真实 MIME 为 PNG/JPEG/WebP 的图片;源文件不超过 10 MiB。若大小、尺寸或宽高比不符合最终头像规范,公共 avatar 管线会保持完整画面、补边、缩放并压缩到 500KB 内;无法规范化时返回具体原因。
|
|
123
126
|
- 成功后头像上传到该 agent 自己的 AUN storage,`agent.md` frontmatter 写入 AID 风格 URL,并重新签名发布。
|
|
124
127
|
- 托管会话中的 CLI 形式为 `ec aid avatar <当前 self AID> (--file <path> | --url <https-url>)`;仅允许 owner 在 `request`/`bypass` 模式下执行。`--file` 只能从项目目录或当前会话 `$TMPDIR` 读取,`--url` 由 daemon 下载并做 SSRF、重定向和大小校验。
|
|
125
128
|
- 成功响应包含 `sha256`、`mime`、`width`、`height` 和 `aspectRatio`,便于调用方核对实际上传内容。
|
|
@@ -221,7 +221,7 @@ Menu 批量请求遇到真实权限拒绝仍整体拒绝并停止执行,不会
|
|
|
221
221
|
`role` 由角色分配服务维护;`permissionMode` 仅在角色策略中维护
|
|
222
222
|
- **兼容字段**:`enable_rich_content` 仍可读取旧值,但已废弃且不再产生运行时效果
|
|
223
223
|
- **群规则策略**:`groupRules.mode` 仅当前 Agent 的实际 owner 可 set/unset;DaemonOwner 不继承群或 relation 写权限,其他角色可读取当前 relation 的有效值
|
|
224
|
-
- **Agent fullaccess 策略**:Agent 配置中的 `fullaccess.enabled` 缺失时关闭,仅可通过已认证的 EC Web Agent 设置修改;CLI、普通 Menu 和托管任务的 set/unset
|
|
224
|
+
- **Agent fullaccess 策略**:Agent 配置中的 `fullaccess.enabled` 缺失时关闭,仅可通过已认证的 EC Web Agent 设置修改;CLI、普通 Menu 和托管任务的 set/unset 均拒绝。双 Owner(Agent Owner + daemon Owner)条件在实际私聊任务执行时校验。`/fa`、`/fullaccess` 和 Fullaccess Trigger 不再依赖 daemon 级开关,而由各自的 daemon Owner 鉴权与批准链控制。
|
|
225
225
|
- **源码诊断白名单**:`readonlySourceDiagnostics` 默认关闭;开启后只读会话仅可在项目源码目录执行受限、可证明只读查询,配置/证书/快照/session/锁文件仍禁止访问
|
|
226
226
|
- **仅人可写**:channels / owners / admins / 凭证 / aid / enabled / projects / aun / models.allowed
|
|
227
227
|
- Agent 托管环境写仅人字段被拒
|