evolcore 0.0.38 → 0.0.40
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 +64 -0
- package/README.md +31 -20
- package/bin/ec-safe-output.js +14 -2
- package/dist/agents/baseagent-availability.js +1 -0
- package/dist/agents/claude-runner.js +32 -46
- package/dist/agents/codex-runner.js +54 -30
- package/dist/agents/ecagent-runner.js +18 -7
- package/dist/agents/gemini-runner.js +1 -2
- package/dist/agents/runner-types.js +28 -6
- package/dist/aun/aid/agentmd.js +21 -0
- package/dist/aun/aid/client.js +1 -1
- package/dist/aun/aid/control-aid.js +23 -98
- package/dist/aun/aid/ownership-operation.js +35 -12
- package/dist/aun/group/invite-service.js +6 -0
- package/dist/aun/msg/p2p.js +8 -12
- package/dist/channels/aun.js +66 -48
- package/dist/channels/dingtalk.js +8 -2
- package/dist/channels/feishu.js +6 -1
- package/dist/channels/wecom.js +7 -3
- package/dist/cli/agent-create.js +30 -6
- package/dist/cli/agent.js +30 -37
- package/dist/cli/aid-bind-command.js +16 -2
- package/dist/cli/aun-commands.js +31 -23
- package/dist/cli/config.js +15 -18
- package/dist/cli/contact.js +9 -12
- package/dist/cli/ctl-command.js +3 -3
- package/dist/cli/daemon-commands.js +242 -17
- package/dist/cli/diag.js +7 -3
- package/dist/cli/fs-command.js +5 -4
- package/dist/cli/handoff-command.js +11 -11
- package/dist/cli/help.js +18 -0
- package/dist/cli/index.js +25 -13
- package/dist/cli/init-channel.js +2 -1
- package/dist/cli/memory-command.js +47 -27
- package/dist/cli/model.js +5 -4
- package/dist/cli/queue-command.js +3 -3
- package/dist/cli/response.js +5 -4
- package/dist/cli/restart-monitor.js +35 -13
- package/dist/cli/skill-command.js +13 -13
- package/dist/cli/task-command.js +3 -3
- package/dist/cli/task-context.js +1 -0
- package/dist/cli/thread-command.js +5 -3
- package/dist/cli/trigger-command.js +3 -3
- package/dist/cli/version.js +6 -2
- package/dist/config/config-field-policy.js +1 -0
- package/dist/contracts/ecweb-service-protocol.js +44 -0
- package/dist/core/agent-runtime.js +6 -0
- package/dist/core/auth/agent-delegation.js +7 -4
- package/dist/core/auth/auth-gateway.js +3 -1
- package/dist/core/auth/authorization-audit.js +5 -1
- package/dist/core/auth/debug-context.js +5 -1
- package/dist/core/auth/operation-catalog.js +17 -1
- package/dist/core/bootstrap-service.js +20 -12
- package/dist/core/command/cli-intent-parser.js +5 -2
- package/dist/core/command/command-handler.js +20 -5
- package/dist/core/command/menu-catalog.js +48 -12
- package/dist/core/command/menu-handler.js +74 -6
- package/dist/core/command/menu-protocol.js +20 -1
- package/dist/core/command/slash-gate.js +17 -3
- package/dist/core/command/slash-handler.js +90 -7
- package/dist/core/event-catalog.js +2 -0
- package/dist/core/interaction-router.js +2 -1
- package/dist/core/ipc-registration.js +26 -7
- package/dist/core/memory/batch-meta.js +2 -0
- package/dist/core/memory/consolidation-context.js +42 -51
- package/dist/core/memory/consolidation-ops-records.js +39 -7
- package/dist/core/memory/consolidation-trigger.js +71 -64
- package/dist/core/memory/consolidation.js +226 -20
- package/dist/core/memory/memory-writer.js +160 -34
- package/dist/core/memory/relation-idle-monitor.js +287 -0
- package/dist/core/memory/relation-sweep.js +206 -0
- package/dist/core/message/aun-ipc-sender.js +5 -0
- package/dist/core/message/message-bridge.js +64 -55
- package/dist/core/message/message-log.js +17 -0
- package/dist/core/message/message-queue.js +6 -0
- package/dist/core/message/outbound.js +70 -0
- package/dist/core/message/peer-mode.js +7 -2
- package/dist/core/message/response-engine.js +341 -73
- package/dist/core/ownership/owner-resolver.js +465 -140
- package/dist/core/permission/ec-command-parser.js +19 -3
- package/dist/core/permission/protected-paths.js +51 -0
- package/dist/core/permission/tool-policy.js +7 -7
- package/dist/core/role/runtime-policy.js +64 -0
- package/dist/core/session/session-manager.js +25 -5
- package/dist/core/system-session/memory.js +3 -18
- package/dist/ecweb/basic-settings-service.js +709 -0
- package/dist/ecweb/providers-service.js +172 -0
- package/dist/index.js +92 -4
- package/dist/ipc.js +78 -11
- package/dist/stats/db.js +33 -0
- package/dist/stats/index.js +2 -2
- package/dist/stats/query.js +246 -0
- package/dist/stats/writer.js +41 -1
- package/dist/trigger/application-service.js +12 -0
- package/dist/trigger/authorization.js +2 -2
- package/dist/trigger/history.js +36 -0
- package/dist/trigger/scheduler.js +3 -0
- package/dist/utils/ecweb-supervisor.js +31 -10
- package/dist/utils/error-utils.js +8 -4
- package/dist/utils/evolcore-version.js +3 -2
- package/dist/utils/host-info.js +52 -0
- package/dist/utils/welcome.js +18 -24
- package/ecagent/dist/harness/agent-harness.js +4 -1
- package/kits/docs/evolcore/INDEX.md +1 -1
- package/kits/docs/evolcore/agent.md +1 -1
- package/kits/docs/evolcore/aid.md +58 -8
- package/kits/docs/evolcore/config.md +9 -7
- package/kits/docs/evolcore/memory-architecture.md +3 -4
- package/kits/docs/evolcore/memory-consolidation.md +28 -7
- package/kits/docs/evolcore/memory-tags.md +1 -1
- package/kits/docs/evolcore/memory.md +1 -1
- package/kits/docs/evolcore/menu-client.md +1 -1
- package/kits/docs/evolcore/menu-protocol.md +6 -0
- package/kits/docs/evolcore/msg.md +1 -1
- package/kits/eck_manifest.json +3 -3
- package/kits/rules/04-relation.md +3 -2
- package/kits/schemas/agent-config.schema.13.json +5 -1
- package/kits/templates/memory-consolidation/generalize.md +32 -4
- package/kits/templates/memory-consolidation/notes.md +2 -2
- package/kits/templates/memory-consolidation/promote.md +10 -2
- package/kits/templates/system-fragments/baseagent.md +5 -0
- package/kits/templates/system-fragments/memory.md +12 -3
- package/kits/templates/system-fragments/session.md +1 -1
- package/kits/{rules/07-memory-and-thread.md → templates/system-fragments/thread.md} +17 -80
- package/package.json +3 -3
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
- 偏好/习惯:我喜欢、我不喜欢、我偏好、我习惯
|
|
12
12
|
- 约束/禁止:不要、禁止、避免、别再、不允许
|
|
13
13
|
- 规则/注意:注意、当心、以后、每次、必须、务必
|
|
14
|
-
- 纠错反馈:错了、不对、应该是、你搞错了
|
|
15
|
-
|
|
14
|
+
- 纠错反馈:错了、不对、应该是、你搞错了
|
|
15
|
+
- 自己发现的规律:对端的工作方式、反馈模式等跨会话有用的观察
|
|
16
|
+
不写:会话内临时信息;隐私信息;当前话题的进展(写话题摘要,见 `[thread]` 段);代码结构、文件路径、git 历史(代码库本身就记录了)。
|
|
16
17
|
**每轮审查(静默)**:每轮结束前扫描完整会话上下文(含历史轮次),检查有无通过判据但未记录的信息,或已有 note 需更新。
|
|
17
18
|
**命令**(`--slug` 必填,字母/数字/连字符,1-64 字符,当前关系内唯一):
|
|
18
19
|
|
|
@@ -44,12 +45,17 @@ slug 撞名改用 `update`。完整用法见 `$KITS_DOCS/evolcore/memory.md`。
|
|
|
44
45
|
|
|
45
46
|
```bash
|
|
46
47
|
ec memory create --scope <relation|agent|owner> --slug <slug> --desc '一句话描述' \
|
|
47
|
-
[--peer <peerKey>] --tags '<tag1>,<tag2>' [--keywords '<kw1>,<kw2>'] [--replaces '<路径1>,<路径2>']
|
|
48
|
+
[--peer <peerKey>] --tags '<tag1>,<tag2>' [--keywords '<kw1>,<kw2>'] [--replaces '<路径1>,<路径2>'] \
|
|
49
|
+
[--reason '为什么'] [--generalized-from '<路径>'] [--promoted-from '<路径>'] '<正文>'
|
|
48
50
|
ec memory update <路径> --tags '<tag1>,<tag2>' # 整体替换标签,不是追加;改不了正文
|
|
49
51
|
ec memory update <路径> --touch # 只刷新时间戳(遗忘续期)
|
|
50
52
|
ec memory archive <路径...> # 下线记忆,移入 archive/
|
|
51
53
|
```
|
|
52
54
|
|
|
55
|
+
泛化 / 提升专用:`--generalized-from <路径>`(scope=agent)、`--promoted-from <路径>`(scope=owner)记录来源,供 `ec memory demote` 回退。值为相对 `agents/<selfAid>/` 的路径。
|
|
56
|
+
|
|
57
|
+
**跨层路径**:候选清单里的路径形如 `<peerKey>/consolidated/xxx.md`,直接照抄即可——它解析到本次会话所属关系的记忆,归档也落在该关系自己的 `archive/`。peerKey 只能是本次会话所属关系。不带前缀的 `consolidated/xxx.md` 一律指本次产出所在层。
|
|
58
|
+
|
|
53
59
|
整理结束后,把本次整理的整体反馈写入任务书里指定的**反馈文件路径**。未写入则收尾时回退到默认统计模板(模式、触发方式、耗时、新建/更新/归档条数等)。
|
|
54
60
|
|
|
55
61
|
自由文本参数(`--desc`、正文、`--keywords`)用**单引号**包住(`'…'`);
|
|
@@ -63,6 +69,9 @@ ec memory archive <路径...> # 下线记忆,移入 archi
|
|
|
63
69
|
| --tags | 必填,取值见 $KITS_DOCS/evolcore/memory-tags.md |
|
|
64
70
|
| --keywords | 可选,串起相关记忆的内容关键词 |
|
|
65
71
|
| --replaces | 可选,要替换的旧文件,自动归档。合并、纠正、升格作用域都走它,是唯一的防重复手段 |
|
|
72
|
+
| --reason | 可选但应当写:一句话说明为什么做这个操作。进 ops.jsonl 的操作流水,不写进记忆正文 |
|
|
73
|
+
| --generalized-from | 仅 scope=agent:泛化来源,相对 `agents/<selfAid>/` 的路径,供 demote 回退 |
|
|
74
|
+
| --promoted-from | 仅 scope=owner:提升来源,相对 `agents/<selfAid>/` 的路径,供 demote 回退 |
|
|
66
75
|
|
|
67
76
|
`--tags`、`--keywords`、`--replaces` 的值写成单引号包住、逗号分隔:`--tags 'rule,long-term'`、`--replaces 'consolidated/a.md,consolidated/b.md'`。
|
|
68
77
|
|
|
@@ -38,7 +38,7 @@ readonly: true — 禁止写入项目目录及临时目录;如需生成文件
|
|
|
38
38
|
{{/}}
|
|
39
39
|
# 决定响应后:
|
|
40
40
|
# 命令速查:
|
|
41
|
-
# 每次工具调用只执行一条完整的 ec 命令;禁止 command -v。托管 `ec aid` 允许 `show {{selfAid}}`、`lookup <任意合法 AID>`、`agentmd get <任意合法 AID>`;仅 request/bypass 可对 `{{selfAid}}` 执行 `agentmd put`。可选后缀仅限 --format json;禁止
|
|
41
|
+
# 每次工具调用只执行一条完整的 ec 命令;禁止 command -v。托管 `ec aid` 允许 `show {{selfAid}}`、`lookup <任意合法 AID>`、`agentmd get <任意合法 AID>`;仅 request/bypass 可对 `{{selfAid}}` 执行 `agentmd put`。可选后缀仅限 --format json;禁止 &&、||、;、子 shell、bash -lc/sh -c 或其它脚本与其串联。Bash 下输出过长时,可在 ec 后接只读 stdin 的过滤管道收窄输出,或用 `> $TMPDIR/<新文件>` 存盘后另行处理;PowerShell/cmd 下两者都不支持。
|
|
42
42
|
# 审批拒绝时原样报告并停止;必须收到包含 message_id/status 的成功回执后才能声称已发送。
|
|
43
43
|
{{?chatType=group}}
|
|
44
44
|
# 群内公开发送用 ec group send;语法与选项见 [channel] 段。
|
|
@@ -1,59 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
[thread] 话题系统(ec thread)
|
|
2
|
+
触发词:话题/thread/summary/摘要/ec thread/话题名/工作报告
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
话题摘要是**话题级**的进展快照:这条任务线做了什么、结果如何,供下次激活时快速恢复。
|
|
5
|
+
对端的长期事实(偏好、角色、背景)不写这里,写记忆(见 `[memory]` 段)。
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
`ec thread` 的 `<peer>` 参数是对端**裸 AID**(取 `peerId`,如 `alice.agentid.cn`),
|
|
8
|
+
不是 `aun#…` 形态的 peerKey;传 peerKey 会静默返回 0 条。
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
|------|------|------|----------|
|
|
9
|
-
| 记忆(memory) | 对端级 / agent 级 / owner 级 | 跨所有话题持久化的长期事实 | 每轮对话中识别到值得保留的事实时 |
|
|
10
|
-
| 话题摘要(summary) | 话题级 | 这个话题的进展快照,供下次激活时快速恢复 | 阶段完成时、离开话题前 |
|
|
11
|
-
|
|
12
|
-
两者不冲突,按粒度分工:对端的基本信息(偏好、角色、背景)写进记忆;这个任务线做了什么、结果如何写进话题摘要。
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## 一、记忆系统(ec memory)
|
|
17
|
-
|
|
18
|
-
记忆是写给自己、跨会话持久的事实。不要依赖会话上下文来记住用户说过的事,用记忆系统写下来。
|
|
19
|
-
|
|
20
|
-
### 什么时候写记忆
|
|
21
|
-
|
|
22
|
-
**必须写的情况**:
|
|
23
|
-
- 用户告知了关于自己的事实(姓名、职业、偏好、背景)
|
|
24
|
-
- 用户明确要求"记住"某件事
|
|
25
|
-
- 发现了跨会话有用的规律(用户的工作方式、反馈模式)
|
|
26
|
-
|
|
27
|
-
**不要写的情况**:
|
|
28
|
-
- 当前话题的具体进展(写话题摘要,不写记忆)
|
|
29
|
-
- 只在本会话有意义的临时状态
|
|
30
|
-
- 代码结构、文件路径、git 历史(代码库本身就记录了)
|
|
31
|
-
|
|
32
|
-
### 记忆命令
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
# 写入新 note
|
|
36
|
-
ec memory note --slug <slug> [--tags '<tag1>,<tag2>'] '<正文>'
|
|
37
|
-
|
|
38
|
-
# 修改已有 note
|
|
39
|
-
ec memory note update <slug> '<新正文>'
|
|
40
|
-
|
|
41
|
-
# 查看待整理 notes
|
|
42
|
-
ec memory note list
|
|
43
|
-
|
|
44
|
-
# 触发整理会话(将 notes 归档为正式记忆)
|
|
45
|
-
ec memory consolidate
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### 默认行为
|
|
49
|
-
|
|
50
|
-
记忆写入动作默认**静默**,不打断对话。用户明确要求记住某事时,给一句简短确认("已记下"),然后继续。
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## 二、话题系统(ec thread)
|
|
55
|
-
|
|
56
|
-
### 标准工作流
|
|
10
|
+
## 标准工作流
|
|
57
11
|
|
|
58
12
|
```bash
|
|
59
13
|
# 1. 列出本机所有 agent
|
|
@@ -71,11 +25,11 @@ ec thread list <peer> --self <selfAid> --page 2 --limit 10 --sort recent
|
|
|
71
25
|
# 5. 查看某话题的历史消息
|
|
72
26
|
ec thread history <peer>/<threadId> --self <selfAid> --limit 20
|
|
73
27
|
|
|
74
|
-
# 6.
|
|
28
|
+
# 6. 查看话题摘要(写摘要见下文「话题摘要维护」)
|
|
75
29
|
ec thread summary show <peer>/<threadId> --self <selfAid>
|
|
76
30
|
```
|
|
77
31
|
|
|
78
|
-
|
|
32
|
+
## 跨话题发送(联系当前对端以外的对象)
|
|
79
33
|
|
|
80
34
|
一个话题只有本端与对端两端。当前话题能直接回复的只有本话题的对端;要联系**其他**对象,必须换到与该对象的话题上发送:
|
|
81
35
|
|
|
@@ -95,7 +49,7 @@ ec group send '<text>' --thread <threadId> --check-every 5m # 群对端
|
|
|
95
49
|
- `--check-every` 会创建周期复查 Trigger(每次发送各新建一个,名称 `check-<目标>-from-<来源>-<唯一后缀>`),
|
|
96
50
|
需显式 `ec trigger delete <trigger_id>` 结束(不要用 `cancel`,那只是 disable,会留下挂起的死 Trigger);定位用返回的 `trigger_id`(`trig_…`),**不是名称**
|
|
97
51
|
|
|
98
|
-
|
|
52
|
+
## 话题名称维护
|
|
99
53
|
|
|
100
54
|
**何时更新名称**(主动触发,不等对端问):
|
|
101
55
|
|
|
@@ -115,7 +69,7 @@ ec thread rename current '<新名称>' # 托管会
|
|
|
115
69
|
ec thread rename <peer>/<threadId> '<新名称>' --self <selfAid> # 宿主终端
|
|
116
70
|
```
|
|
117
71
|
|
|
118
|
-
|
|
72
|
+
## 话题摘要维护
|
|
119
73
|
|
|
120
74
|
摘要是话题的进展快照,**daemon 不自动总结**,需要主动写入。
|
|
121
75
|
|
|
@@ -134,8 +88,7 @@ ec thread summary set current '<摘要内容>' --name '<新标题>' # 2. 写
|
|
|
134
88
|
ec thread summary show <peer>/<threadId> # 1. 拿 coveredThroughTs
|
|
135
89
|
ec thread history <peer>/<threadId> --after <coveredThroughTs> --limit 50 # 2. 读增量
|
|
136
90
|
ec thread history <peer>/<threadId> --before <最早ts-1> --limit 50 # 3. 增量多则往回翻页
|
|
137
|
-
ec thread summary set <peer>/<threadId> '<摘要内容>'
|
|
138
|
-
ec thread rename <peer>/<threadId> '<新名称>' # 5. 必要时改名
|
|
91
|
+
ec thread summary set <peer>/<threadId> '<摘要内容>' --name '<新标题>' # 4. 读完再写(游标自动推进)
|
|
139
92
|
```
|
|
140
93
|
|
|
141
94
|
**关键约束**:`summary set` 把游标设为**当时话题的最新一条**,所以跨话题总结**必须先把增量读完再写**——
|
|
@@ -164,22 +117,15 @@ ec thread rename <peer>/<threadId> '<新名称>' # 5.
|
|
|
164
117
|
- summary 是本端私有的(keyed by 本地 sessionId),只写"我下次该知道什么",不写给对端的话
|
|
165
118
|
|
|
166
119
|
```bash
|
|
167
|
-
#
|
|
168
|
-
ec thread summary
|
|
169
|
-
|
|
170
|
-
# 写入摘要(单 agent)
|
|
171
|
-
ec thread summary set current '<摘要内容>'
|
|
172
|
-
|
|
173
|
-
# 写入摘要(多 agent 协作,用 CAS 防覆盖)
|
|
174
|
-
ec thread summary set current '<摘要内容>' --if-rev <当前rev>
|
|
175
|
-
|
|
176
|
-
# 查看摘要历史
|
|
177
|
-
ec thread summary log current
|
|
120
|
+
ec thread summary set current '<摘要内容>' --name - --if-rev <当前rev> # 多 agent 协作,CAS 防覆盖
|
|
121
|
+
ec thread summary log current # 查看摘要历史
|
|
178
122
|
```
|
|
179
123
|
|
|
180
124
|
`ec thread list` 输出里摘要显示"未总结"就是行动信号。
|
|
181
125
|
|
|
182
|
-
|
|
126
|
+
**不要**:每条消息后都更新摘要(只在阶段完成时);把摘要写成会议纪要;因为对端没问就不更新。
|
|
127
|
+
|
|
128
|
+
## 话题状态管理
|
|
183
129
|
|
|
184
130
|
```bash
|
|
185
131
|
ec thread status current in_progress # 开始处理
|
|
@@ -188,12 +134,3 @@ ec thread status current completed # 任务完成
|
|
|
188
134
|
```
|
|
189
135
|
|
|
190
136
|
状态改为 `completed` 前,先写入最终摘要。
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
## 三、不需要做的事
|
|
195
|
-
|
|
196
|
-
- 不要在每条消息后都更新摘要——只在阶段完成时
|
|
197
|
-
- 不要把话题摘要当成会议纪要——简短的进展摘记即可
|
|
198
|
-
- 不要把当前话题的进展写进记忆——那是话题摘要的工作
|
|
199
|
-
- 不要因为对端没问就不更新——摘要和记忆都是给自己的
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "evolcore",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.40",
|
|
4
4
|
"description": "AI Agent gateway connecting Claude, Codex, Gemini, and the bundled ecagent runner to messaging channels with multi-project session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
"prepublishOnly": "npm test"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@agentunion/fastaun": "0.5.
|
|
57
|
+
"@agentunion/fastaun": "0.5.25",
|
|
58
58
|
"@anthropic-ai/claude-agent-sdk": "0.3.300",
|
|
59
59
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
60
60
|
"ajv": "^8.20.0",
|
|
61
61
|
"chokidar": "^5.0.0",
|
|
62
62
|
"cron-parser": "^5.5.0",
|
|
63
63
|
"dotenv": "^17.4.2",
|
|
64
|
-
"ec-web": "0.0.
|
|
64
|
+
"ec-web": "0.0.40",
|
|
65
65
|
"ignore": "7.0.5",
|
|
66
66
|
"image-type": "^6.0.0",
|
|
67
67
|
"partial-json": "0.1.7",
|