evolcore 0.0.33 → 0.0.35-test.0
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 +59 -0
- package/bin/ec.js +3 -2
- package/bin/install-codex-managed-hooks.mjs +38 -4
- package/dist/agents/baseagent-availability.js +20 -36
- package/dist/agents/claude-runner.js +93 -14
- package/dist/agents/codex/diagnostics.js +79 -22
- package/dist/agents/codex-runner.js +245 -47
- package/dist/agents/ecagent-runner.js +90 -27
- package/dist/agents/runner-types.js +5 -6
- package/dist/aun/aid/agentmd.js +13 -2
- package/dist/aun/aid/client.js +1 -1
- package/dist/aun/aid/identity.js +1 -1
- package/dist/aun/msg/managed-operation.js +16 -0
- package/dist/aun/msg/p2p.js +18 -2
- package/dist/channels/aun.js +123 -7
- package/dist/channels/daemon.js +6 -3
- package/dist/cli/aun-commands.js +39 -14
- package/dist/cli/ctl-command.js +3 -1
- package/dist/cli/daemon-commands.js +130 -23
- package/dist/cli/fs-command.js +2 -1
- package/dist/cli/getmeta-command.js +211 -0
- package/dist/cli/index.js +26 -6
- package/dist/cli/integrity-command.js +196 -0
- package/dist/cli/managed-command-guard.js +3 -0
- package/dist/cli/memory-command.js +200 -156
- package/dist/cli/thread-command.js +17 -7
- package/dist/cli/trigger-command.js +6 -1
- package/dist/config/config-field-policy.js +4 -0
- package/dist/config/config-manager.js +19 -0
- package/dist/config/contact-book-store.js +5 -0
- package/dist/config/resolved-config-op.js +25 -8
- package/dist/config/role-service.js +13 -0
- package/dist/config/runtime-env.js +16 -0
- package/dist/config-store.js +30 -0
- package/dist/core/audit/log-integrity.js +3 -1
- package/dist/core/auth/agent-delegation.js +108 -35
- package/dist/core/auth/delegation-diagnostics.js +414 -0
- package/dist/core/auth/operation-authorizer.js +22 -3
- package/dist/core/auth/operation-catalog.js +16 -0
- package/dist/core/channel-runtime.js +1 -1
- package/dist/core/command/agent-control.js +18 -26
- package/dist/core/command/command-handler.js +145 -5
- package/dist/core/command/daemon-diagnostics.js +1 -0
- package/dist/core/command/menu-catalog.js +3 -0
- package/dist/core/command/menu-handler.js +24 -7
- package/dist/core/command/menu-protocol.js +1 -0
- package/dist/core/command/slash-handler.js +2 -0
- package/dist/core/command/topic-slash.js +4 -7
- package/dist/core/daemon-bootstrap.js +4 -7
- package/dist/core/event-catalog.js +14 -0
- package/dist/core/file-integrity/read.js +61 -0
- package/dist/core/file-integrity/store.js +262 -0
- package/dist/core/ipc-registration.js +47 -2
- package/dist/core/memory/batch-meta.js +133 -0
- package/dist/core/memory/consolidation-context.js +132 -28
- package/dist/core/memory/consolidation-ops-records.js +14 -16
- package/dist/core/memory/consolidation-trigger.js +15 -7
- package/dist/core/memory/consolidation.js +146 -26
- package/dist/core/memory/index-manager.js +19 -28
- package/dist/core/memory/memory-admin.js +19 -14
- package/dist/core/memory/memory-document.js +53 -9
- package/dist/core/memory/memory-writer.js +50 -19
- package/dist/core/message/aun-ipc-sender.js +19 -1
- package/dist/core/message/im-renderer.js +20 -4
- package/dist/core/message/message-bridge.js +5 -4
- package/dist/core/message/message-log.js +1 -0
- package/dist/core/message/peer-mode.js +17 -0
- package/dist/core/message/response-engine.js +598 -50
- package/dist/core/permission/ec-command-parser.js +169 -44
- package/dist/core/permission/protected-paths.js +5 -1
- package/dist/core/permission/readonly-shell-query.js +43 -5
- package/dist/core/permission/session-path-grants.js +334 -0
- package/dist/core/permission/tool-canonical.js +226 -0
- package/dist/core/permission/tool-policy.js +60 -62
- package/dist/core/relation/peer-identity.js +87 -12
- package/dist/core/role/runtime-policy.js +21 -10
- package/dist/core/session/session-fs-store.js +123 -8
- package/dist/core/session/session-manager.js +131 -6
- package/dist/core/session/session-title.js +26 -1
- package/dist/core/skill/index-generator.js +17 -3
- package/dist/core/system-session/grants.js +40 -0
- package/dist/core/system-session/memory.js +289 -0
- package/dist/core/system-session/registry.js +74 -0
- package/dist/core/system-session/types.js +14 -0
- package/dist/core/thread/command-parser.js +6 -1
- package/dist/core/thread/ipc-operation.js +33 -16
- package/dist/core/thread/thread-operation.js +62 -24
- package/dist/core/thread/thread-service.js +258 -51
- package/dist/eck/kit-renderer.js +7 -2
- package/dist/eck/manifest-engine.js +24 -4
- package/dist/index.js +11 -2
- package/dist/ipc.js +51 -40
- package/dist/paths.js +70 -0
- package/dist/stats/billing.js +20 -8
- package/dist/trigger/feedback.js +6 -1
- package/dist/trigger/parser.js +8 -1
- package/dist/trigger/system-definitions.js +3 -3
- package/dist/utils/cross-platform.js +17 -5
- package/dist/utils/error-dict.json +18 -4
- package/dist/utils/error-utils.js +121 -0
- package/dist/utils/instance-registry.js +13 -8
- package/dist/utils/log-writer.js +12 -0
- package/dist/utils/process-introspect.js +11 -0
- package/kits/docs/context-assembly.md +0 -1
- package/kits/docs/evolcore/agent-create.md +5 -4
- package/kits/docs/evolcore/agent.md +2 -2
- package/kits/docs/evolcore/config.md +2 -2
- package/kits/docs/evolcore/ctl.md +2 -2
- package/kits/docs/evolcore/ec-capabilities.md +1 -1
- package/kits/docs/evolcore/fs-architecture.md +9 -10
- package/kits/docs/evolcore/fs.md +2 -2
- package/kits/docs/evolcore/group-collaboration.md +3 -3
- package/kits/docs/evolcore/group.md +14 -12
- package/kits/docs/evolcore/memory-architecture.md +4 -5
- package/kits/docs/evolcore/memory-consolidation.md +19 -16
- package/kits/docs/evolcore/memory-tags.md +3 -1
- package/kits/docs/evolcore/memory.md +24 -12
- package/kits/docs/evolcore/model.md +16 -0
- package/kits/docs/evolcore/msg.md +7 -7
- package/kits/docs/evolcore/stats.md +1 -1
- package/kits/docs/evolcore/thread-chain.md +30 -14
- package/kits/docs/prompt-loading-architecture.md +0 -1
- package/kits/eck_manifest.auxiliary.json +9 -0
- package/kits/eck_manifest.json +20 -20
- package/kits/eck_manifest.memory.json +20 -12
- package/kits/rules/01-overview.md +11 -0
- package/kits/rules/03-identity.md +6 -3
- package/kits/rules/06-channel.md +1 -1
- package/kits/rules/07-memory-and-thread.md +13 -16
- package/kits/schemas/_meta.json +7 -1
- package/kits/schemas/agent-config.schema.13.json +1 -1
- package/kits/schemas/daemon.schema.7.json +140 -0
- package/kits/skills/ec-group/SKILL.md +8 -5
- package/kits/skills/ec-skill/scripts/cli.mjs +1 -1
- package/kits/skills/ec-skill/scripts/skill.mjs +1 -1
- package/kits/skills/thread-ops/SKILL.md +18 -18
- package/kits/templates/memory-consolidation/forget.md +2 -2
- package/kits/templates/memory-consolidation/generalize.md +4 -4
- package/kits/templates/memory-consolidation/notes.md +12 -12
- package/kits/templates/memory-consolidation/profile.md +3 -3
- package/kits/templates/memory-consolidation/promote.md +3 -3
- package/kits/templates/memory-consolidation/workflow.md +42 -7
- package/kits/templates/message-fragments/handoff-request-to-target.md +1 -1
- package/kits/templates/system-fragments/bash-description.md +9 -0
- package/kits/templates/system-fragments/bootstrap.md +4 -3
- package/kits/templates/system-fragments/channel.md +2 -2
- package/kits/templates/system-fragments/memory.md +16 -9
- package/kits/templates/system-fragments/reply.md +6 -6
- package/kits/templates/system-fragments/session.md +1 -1
- package/package.json +4 -3
- package/dist/core/memory/memory-session-policy.js +0 -41
- package/dist/core/memory/memory-signature.js +0 -257
|
@@ -39,13 +39,13 @@ license: MIT
|
|
|
39
39
|
命令语法只在此处完整写一遍,别处引用本节:
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
ec group send <selfAid> <groupId>
|
|
42
|
+
ec group send <selfAid> <groupId> '<text>' [选项]
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
| 选项 | 说明 |
|
|
46
46
|
|---|---|
|
|
47
47
|
| `--encrypt` / `--no-encrypt` | 必选一个,跟随收到消息的加密状态;不得省略后依赖默认 |
|
|
48
|
-
| `--mention <
|
|
48
|
+
| `--mention '<aid1>,<aid2>'` | @ 成员。单引号包住、逗号分隔多个 aid,可重复传入 |
|
|
49
49
|
| `--mention-all` | @ 所有人 |
|
|
50
50
|
| `--file <path> [--as image\|video\|voice\|file]` | 发文件 |
|
|
51
51
|
| `--payload '<json>'` | 附加结构化数据 |
|
|
@@ -53,7 +53,7 @@ ec group send <selfAid> <groupId> "<text>" [选项]
|
|
|
53
53
|
其它硬约束(同见 `[reply]` 段):
|
|
54
54
|
|
|
55
55
|
- 一次 shell 调用只跑一条完整的 `ec` 命令,不拼接管道、重定向或子 shell。
|
|
56
|
-
-
|
|
56
|
+
- 正文用单引号包住;正文含单引号时改用 `$'…'` 语法(支持 `\'` `\n` `\t` `\\`)。
|
|
57
57
|
- **正文必须以引号包住**。正文以 `/` 开头时尤其要注意——Git Bash 会把裸的 `/effort` 当成路径做 MSYS 转换,
|
|
58
58
|
实际发出去的是 `C:/Program Files/Git/effort`。这不是命令没生效,是正文被 shell 改了。
|
|
59
59
|
- 一轮任务可能发 0 到多条消息。发成功就继续做剩下的,不要重复发同一条。
|
|
@@ -132,6 +132,9 @@ ec group history <selfAid> <groupId> --limit 50 --format json
|
|
|
132
132
|
|
|
133
133
|
**群结构和角色**:
|
|
134
134
|
|
|
135
|
+
所有 `ec group` 子命令的参数顺序固定为「先发送方 AID,后群 AID」:群 ID 永远在第 2 个位置
|
|
136
|
+
(`ec group members <selfAid> <groupId>`)。写成「群 ID 在前」时命令会报错并给出正确写法。
|
|
137
|
+
|
|
135
138
|
| 想知道 | 命令 |
|
|
136
139
|
|---|---|
|
|
137
140
|
| 群名、群主、成员数、描述 | `ec group info <selfAid> <groupId>` |
|
|
@@ -150,7 +153,7 @@ ec group history <selfAid> <groupId> --limit 50 --format json
|
|
|
150
153
|
ec fs ls <groupId>:/
|
|
151
154
|
ec fs stat <groupId>:/path/to/file --format json
|
|
152
155
|
ec fs cat <groupId>:/path/to/file
|
|
153
|
-
ec fs find <groupId>:/ -name
|
|
156
|
+
ec fs find <groupId>:/ -name '*.md'
|
|
154
157
|
```
|
|
155
158
|
|
|
156
159
|
**先 `ls` 再动别的**。新建的群空间可能是空的,`find` 返回 `[]` 是正常结果,不是命令出错;
|
|
@@ -211,7 +214,7 @@ ec group rules <selfAid> <groupId> get [--format json]
|
|
|
211
214
|
|
|
212
215
|
```bash
|
|
213
216
|
# 发消息(唯一完整语法在第二节)
|
|
214
|
-
ec group send <selfAid> <groupId>
|
|
217
|
+
ec group send <selfAid> <groupId> '<text>' [--encrypt|--no-encrypt] [--mention '<aid1>,<aid2>']
|
|
215
218
|
|
|
216
219
|
# 查上下文
|
|
217
220
|
ec group history <selfAid> <groupId> --limit 50 --format json
|
|
@@ -15,7 +15,7 @@ const USAGE = `ec skill —— EC 技能管理
|
|
|
15
15
|
用法:
|
|
16
16
|
ec skill list [--json] 列出所有技能
|
|
17
17
|
ec skill info <name> [--json] 查看单个技能详情
|
|
18
|
-
ec skill create <name> [--desc
|
|
18
|
+
ec skill create <name> [--desc '...'] [--force] [--enable]
|
|
19
19
|
新建技能骨架(默认禁用)
|
|
20
20
|
ec skill install <源> [--force] [--enable] 安装技能(目录 / .zip / .md,默认禁用)
|
|
21
21
|
ec skill remove <name> 删除本机技能
|
|
@@ -367,7 +367,7 @@ export function resolveSkillDirArg(target) {
|
|
|
367
367
|
|
|
368
368
|
export function cmdCreate(name, { desc = '', force = false, enable = false, json = false } = {}) {
|
|
369
369
|
assertPermission('local'); // 骨架固定建在本机级,与 install 同档
|
|
370
|
-
if (!name) throw new Error(
|
|
370
|
+
if (!name) throw new Error(`缺少技能名。用法:ec skill create <name> --desc '...'`);
|
|
371
371
|
if (!NAME_RE.test(name)) {
|
|
372
372
|
throw new Error(`技能名「${name}」不符合 kebab-case(小写字母/数字/连字符,如 my-skill)`);
|
|
373
373
|
}
|
|
@@ -113,11 +113,11 @@ ec thread history <peer>/<threadId> --self <selfAid> --after $SINCE --limit 100
|
|
|
113
113
|
ec thread list <C的AID>
|
|
114
114
|
# 如果有合适的话题(如 T2),记下 threadId
|
|
115
115
|
# 如果没有,新建:
|
|
116
|
-
ec thread create <C的AID> --name
|
|
116
|
+
ec thread create <C的AID> --name '项目进度查询'
|
|
117
117
|
# 返回:{ threadId: "thread-xxx", ... }
|
|
118
118
|
|
|
119
119
|
# 步骤 2:发消息(--check-every 一步搞定复查)
|
|
120
|
-
ec msg send
|
|
120
|
+
ec msg send '项目当前进度如何?' --thread <T2的threadId> --check-every 5m
|
|
121
121
|
# --check-every 跨话题时必填(如 5m / 30m / 2h),周期唤醒直到显式 cancel
|
|
122
122
|
# 返回:{ message_id: "m-yyy", ... }
|
|
123
123
|
# 副作用:本端写入 thread-inbox + 创建周期复查 Trigger(kind=thread-check)
|
|
@@ -148,7 +148,7 @@ ec msg send "项目当前进度如何?" --thread <T2的threadId> --check-every
|
|
|
148
148
|
|
|
149
149
|
# 步骤 2:决定是否回复
|
|
150
150
|
# 情况 A:直接回复 B(在当前话题 T2 上)
|
|
151
|
-
ec msg send
|
|
151
|
+
ec msg send '进度 70%,预计下周完成'
|
|
152
152
|
# 不带 --thread,消息发在当前话题上
|
|
153
153
|
# 托管会话中不需要指定 from 和 to,系统推断
|
|
154
154
|
|
|
@@ -169,14 +169,14 @@ ec thread history current --limit 10
|
|
|
169
169
|
# 或从上下文直接判断
|
|
170
170
|
|
|
171
171
|
# 步骤 2A:C 已回复 → 处理回复,汇报回 A
|
|
172
|
-
ec msg send
|
|
172
|
+
ec msg send 'C 回复:进度 70%' --thread <T1的threadId> --check-every 30m
|
|
173
173
|
# 汇报回 A 也是跨话题发送,同样必填 --check-every
|
|
174
174
|
|
|
175
175
|
# 步骤 2B:C 还没回 → 决定下一步
|
|
176
176
|
# 选项 1:继续等 → 什么都不做,原 Trigger 下个周期会再次唤醒
|
|
177
177
|
# (如需调整频率:ec trigger update <triggerId> --every 5m)
|
|
178
178
|
# 选项 2:放弃等待,直接回 A
|
|
179
|
-
ec msg send
|
|
179
|
+
ec msg send 'C 暂无回复' --thread <T1的threadId> --check-every 30m
|
|
180
180
|
|
|
181
181
|
# 选项 3:什么都不做,turn 结束
|
|
182
182
|
```
|
|
@@ -191,8 +191,8 @@ ec msg send "C 暂无回复" --thread <T1的threadId> --check-every 30m
|
|
|
191
191
|
|
|
192
192
|
```bash
|
|
193
193
|
# 步骤 1:同时发出两条委托,各自创建周期复查 Trigger(--check-every 一步搞定)
|
|
194
|
-
ec msg send
|
|
195
|
-
ec msg send
|
|
194
|
+
ec msg send '技术评估' --thread <T2> --check-every 10m
|
|
195
|
+
ec msg send '产品评估' --thread <T3> --check-every 10m
|
|
196
196
|
# turn 结束
|
|
197
197
|
|
|
198
198
|
# 10 分钟后,T2 和 T3 各自触发新 turn
|
|
@@ -206,7 +206,7 @@ ec thread history <D的AID>/<T3> --limit 5
|
|
|
206
206
|
# 检查 C 是否也回了
|
|
207
207
|
ec thread history <C的AID>/<T2> --limit 5
|
|
208
208
|
# C 也回了,合并结果
|
|
209
|
-
ec msg send
|
|
209
|
+
ec msg send '综合评估:技术……产品……' --thread <T1> --check-every 30m
|
|
210
210
|
```
|
|
211
211
|
|
|
212
212
|
**关键点**:没有"等齐"原语。想合并就在后到的 turn 里主动读另一话题,手动判断是否齐全。
|
|
@@ -221,13 +221,13 @@ ec msg send "综合评估:技术……产品……" --thread <T1> --check-ever
|
|
|
221
221
|
# S2B 收到 C 的第一次回复:"卡在 Redis 并发问题"
|
|
222
222
|
# B 判断需要更多细节
|
|
223
223
|
|
|
224
|
-
ec msg send
|
|
224
|
+
ec msg send 'Redis 并发问题影响范围多大?'
|
|
225
225
|
# 不带 --thread,继续在当前话题上
|
|
226
226
|
# 同话题追问无需 --check-every(不跨话题,不创建复查 Trigger)
|
|
227
227
|
|
|
228
228
|
# C 再次回复后,触发新 turn
|
|
229
229
|
# B 整合两轮对话,回 A
|
|
230
|
-
ec msg send
|
|
230
|
+
ec msg send 'C 反馈:Redis 问题影响……' --thread <T1>
|
|
231
231
|
```
|
|
232
232
|
|
|
233
233
|
---
|
|
@@ -256,8 +256,8 @@ ec thread history <peer>/<threadId> --after <timestamp>
|
|
|
256
256
|
### 流程 G:修改话题属性
|
|
257
257
|
|
|
258
258
|
```bash
|
|
259
|
-
ec thread rename current
|
|
260
|
-
ec thread label current
|
|
259
|
+
ec thread rename current '新名称'
|
|
260
|
+
ec thread label current '开发'
|
|
261
261
|
ec thread status current in_progress
|
|
262
262
|
# 状态值:pending | in_progress | completed | archived
|
|
263
263
|
```
|
|
@@ -363,10 +363,10 @@ ec thread summary show current
|
|
|
363
363
|
# 2. 自己写摘要(100 字以内,见下方规范)。
|
|
364
364
|
# 增量就是本轮对话,无需再读历史;游标自动推进。
|
|
365
365
|
# --name 必填:一次写完摘要 + 标题。不想改名就显式传 `-`。
|
|
366
|
-
ec thread summary set current
|
|
367
|
-
ec thread summary set current
|
|
366
|
+
ec thread summary set current '写好的摘要内容' --name '动词短语描述的核心动作'
|
|
367
|
+
ec thread summary set current '写好的摘要内容' --name - # 保持原话题名
|
|
368
368
|
# 多人协作同一话题时带 CAS 防覆盖
|
|
369
|
-
ec thread summary set current
|
|
369
|
+
ec thread summary set current '写好的摘要内容' --name '标题' --if-rev <步骤1的rev>
|
|
370
370
|
```
|
|
371
371
|
|
|
372
372
|
**情形 B:从别的话题(或别处)总结某话题**(需要读增量)
|
|
@@ -384,7 +384,7 @@ ec thread history <peer>/<threadId> --before <本页最早一条的ts> --limit 5
|
|
|
384
384
|
# 翻到覆盖游标之前即可停;注意 before 是闭区间,用 <最早ts - 1> 避免边界重复
|
|
385
385
|
|
|
386
386
|
# 4. 读完增量后写摘要(游标自动推进到现在);--name 必填,不改名传 -
|
|
387
|
-
ec thread summary set <peer>/<threadId>
|
|
387
|
+
ec thread summary set <peer>/<threadId> '写好的摘要内容' --name '新名称'
|
|
388
388
|
```
|
|
389
389
|
|
|
390
390
|
**关键约束**:`summary set` 把游标设为**当时话题的最新一条**,所以跨话题总结**必须先把增量读完再写**。
|
|
@@ -470,7 +470,7 @@ ec thread summary show $PEER/<threadId> --self $SELF
|
|
|
470
470
|
|
|
471
471
|
2. **不要忘记创建 Trigger**:如果不创建,对端不回复时你永远不会知道。分支合并场景必须用 Trigger。
|
|
472
472
|
|
|
473
|
-
3. **不要在托管会话中手动指定 from 和 to**:`ec msg send
|
|
473
|
+
3. **不要在托管会话中手动指定 from 和 to**:`ec msg send '文本' --thread T2` 就够了。
|
|
474
474
|
|
|
475
475
|
4. **不要把 Trigger 当作"强制回复"或"执行脚本"**:Trigger 只是唤醒信号,到期后 agent 自主决定下一步。
|
|
476
476
|
|
|
@@ -487,6 +487,6 @@ ec thread summary show $PEER/<threadId> --self $SELF
|
|
|
487
487
|
3. **Trigger 是唤醒信号,不是执行脚本**:到期时提醒检查,不指示执行任何操作,不保证对端已回复。
|
|
488
488
|
4. **决策权在自己**:收到委托要不要回、何时回、回什么,完全自主判断。
|
|
489
489
|
5. **分支合并靠主动查询**:想等多个对端都回,就在各自 turn 里用 `ec thread history` 读另一话题。
|
|
490
|
-
6. **from/to 托管会话中不需要**:会话唯一确定对端,命令简化为 `ec msg send
|
|
490
|
+
6. **from/to 托管会话中不需要**:会话唯一确定对端,命令简化为 `ec msg send '文本' --thread T`。
|
|
491
491
|
7. **话题名是本端的**:对端可能改名,threadId 才是跨端统一标识。
|
|
492
492
|
|
|
@@ -63,9 +63,9 @@ ec memory archive <路径>
|
|
|
63
63
|
若干条超期记忆**单独每一条都不值得续期,但合起来值得留一条**时,产出一条合并版:
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
|
-
ec memory create --scope <本次会话的 scope> --slug <slug> --desc
|
|
66
|
+
ec memory create --scope <本次会话的 scope> --slug <slug> --desc '一句话描述' \
|
|
67
67
|
--tags <...> [--keywords <...>] \
|
|
68
|
-
--replaces
|
|
68
|
+
--replaces '<旧文件1>,<旧文件2>,...' \
|
|
69
69
|
"<合并后的完整内容>"
|
|
70
70
|
```
|
|
71
71
|
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
**评估后认为不该泛化的,用 `update` 把 `to-generalize` 标签去掉。** 否则每次定时检查都会重新扫到它,反复评估同一条。
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
-
ec memory update <关系级记忆路径> --tags
|
|
45
|
+
ec memory update <关系级记忆路径> --tags '<去掉 to-generalize 后的标签>'
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
### 已经存在同类 agent 级记忆
|
|
@@ -50,9 +50,9 @@ ec memory update <关系级记忆路径> --tags "<去掉 to-generalize 后的标
|
|
|
50
50
|
如果 agent 级里已经有讲同一件事的记忆,**用 `--replaces` 同时替换两边**,产出合并后的版本:
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
ec memory create --scope agent --slug commit-chinese --desc
|
|
54
|
-
--tags
|
|
55
|
-
--replaces
|
|
53
|
+
ec memory create --scope agent --slug commit-chinese --desc 'commit 消息用中文' \
|
|
54
|
+
--tags 'rule,long-term' --keywords 'commit,git' \
|
|
55
|
+
--replaces 'consolidated/20260901-120000-commit.md,$RELATIONS_DIR/<peerKey>/memory/consolidated/20261002-103100-commit-chinese.md' \
|
|
56
56
|
"(合并后的完整内容)"
|
|
57
57
|
```
|
|
58
58
|
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
### ① 是新的稳定结论 → create
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
ec memory create --scope relation --slug commit-chinese --desc
|
|
29
|
-
--tags
|
|
28
|
+
ec memory create --scope relation --slug commit-chinese --desc '对端要求 commit 消息用中文' \
|
|
29
|
+
--tags 'rule,long-term,verified' --keywords 'commit,git' \
|
|
30
30
|
"对端明确要求:commit message 必须用中文,并列出所有功能改动点。"
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
### ② 和已有记忆是同一条,但内容更全或更准 → create --replaces
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
-
ec memory create --scope relation --slug commit-chinese --desc
|
|
37
|
-
--tags
|
|
38
|
-
--replaces
|
|
36
|
+
ec memory create --scope relation --slug commit-chinese --desc '对端要求 commit 用中文,注释不限' \
|
|
37
|
+
--tags 'rule,long-term,verified' --keywords 'commit,git' \
|
|
38
|
+
--replaces 'consolidated/20261001-103100-commit-chinese.md' \
|
|
39
39
|
"对端要求 commit message 用中文;代码注释可以是英文。"
|
|
40
40
|
```
|
|
41
41
|
|
|
@@ -44,12 +44,12 @@ ec memory create --scope relation --slug commit-chinese --desc "对端要求 com
|
|
|
44
44
|
### ③ 已有记忆还成立,只是状态变了 → update
|
|
45
45
|
|
|
46
46
|
```bash
|
|
47
|
-
ec memory update consolidated/20261002-090000-refactor-plan.md --tags
|
|
47
|
+
ec memory update consolidated/20261002-090000-refactor-plan.md --tags 'rule,done'
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
### ④ 不值得长期保留 → 丢弃
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
一次性任务的进展、临时状态、闲聊内容。不写记忆,在反馈里列出丢弃了哪几条、为什么丢弃。
|
|
53
53
|
|
|
54
54
|
## 什么时候打升级标记
|
|
55
55
|
|
|
@@ -70,9 +70,9 @@ ec memory update consolidated/20261002-090000-refactor-plan.md --tags "rule,done
|
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
72
|
ec memory create --scope relation --slug commit-convention \
|
|
73
|
-
--desc
|
|
74
|
-
--tags
|
|
75
|
-
--replaces
|
|
73
|
+
--desc '对端要求 commit 用中文、按功能列出改动' \
|
|
74
|
+
--tags 'rule,long-term,verified' --keywords 'commit,git' \
|
|
75
|
+
--replaces 'consolidated/a.md,consolidated/b.md' \
|
|
76
76
|
"(合并后的完整内容)"
|
|
77
77
|
```
|
|
78
78
|
|
|
@@ -92,13 +92,13 @@ note 的 frontmatter 里如果有 `chatType: group`,整理时需要按信息
|
|
|
92
92
|
```bash
|
|
93
93
|
# 关于群本身的记忆(默认路由,不加 --peer)
|
|
94
94
|
ec memory create --scope relation --slug group-meeting-schedule \
|
|
95
|
-
--desc
|
|
95
|
+
--desc '群每周一开技术会' --tags 'rule,verified' \
|
|
96
96
|
"该群约定每周一 10:00 召开技术同步会。"
|
|
97
97
|
|
|
98
98
|
# 关于发言人自身的记忆(指定发言人的 relation)
|
|
99
99
|
ec memory create --scope relation --peer aun#alice.agentid.pub \
|
|
100
100
|
--slug alice-ts-preference \
|
|
101
|
-
--desc
|
|
101
|
+
--desc 'Alice 偏好 TypeScript,不喜欢注释' --tags 'preference,verified' \
|
|
102
102
|
"Alice 明确表示偏好 TypeScript,认为代码自解释,不需要额外注释。"
|
|
103
103
|
```
|
|
104
104
|
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
ec memory create --scope relation --slug profile \
|
|
26
|
-
--desc
|
|
27
|
-
--tags
|
|
28
|
-
--replaces
|
|
26
|
+
--desc '对端画像:沟通风格与协作习惯' \
|
|
27
|
+
--tags 'profile,long-term' --keywords '画像' \
|
|
28
|
+
--replaces 'consolidated/profile.md' \
|
|
29
29
|
"(画像正文)"
|
|
30
30
|
```
|
|
31
31
|
|
|
@@ -56,9 +56,9 @@ daemon 会检查:
|
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
58
|
ec memory create --scope owner --slug no-self-commit \
|
|
59
|
-
--desc
|
|
60
|
-
--tags
|
|
61
|
-
--replaces
|
|
59
|
+
--desc '任何 agent 都不许自己提交代码' \
|
|
60
|
+
--tags 'prohibition,important,long-term' --keywords 'commit,权限' \
|
|
61
|
+
--replaces '$RELATIONS_DIR/<ownerPeerKey>/memory/consolidated/20261002-153000-no-self-commit.md' \
|
|
62
62
|
"owner 明确要求:所有 agent 都不许自己执行 git commit,必须由 owner 确认后才能提交。"
|
|
63
63
|
```
|
|
64
64
|
|
|
@@ -8,8 +8,42 @@
|
|
|
8
8
|
2. **读候选内容**。`notes` 模式读 `processing/` 里的 note;其余模式读上下文文件里列出的候选记忆(先只读描述,按需读正文)。
|
|
9
9
|
3. **查重**(见下)。
|
|
10
10
|
4. **写**。用 `create` / `update` / `archive`。索引由程序在会话结束后统一重建。
|
|
11
|
-
5.
|
|
12
|
-
6.
|
|
11
|
+
5. **反馈**。结束前必须把本次整理的结果写到任务书给出的反馈文件路径(见下)。
|
|
12
|
+
6. **结束**。写完直接结束,不需要在会话里汇报「已完成」——反馈由程序读取反馈文件后投递。
|
|
13
|
+
|
|
14
|
+
## 工具使用约束
|
|
15
|
+
|
|
16
|
+
整理会话的读取范围限于:**批次目录**、**关系记忆目录**(processing/、consolidated/、MEMORY.md)、**本次会话消息流水**。当前工作目录(cwd)本身不可读。
|
|
17
|
+
|
|
18
|
+
**只读工具的正确用法:**
|
|
19
|
+
|
|
20
|
+
- **Read**:传绝对路径,路径必须在可读范围内
|
|
21
|
+
```
|
|
22
|
+
Read file_path=<任务书里给出的 consolidatedDir>/xxx.md
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- **Glob**:`path` 参数必填且必须是绝对路径(不传时起点是 cwd,会被拒绝)
|
|
26
|
+
```
|
|
27
|
+
Glob path=<任务书里的 processingDir> pattern=*.md
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
- **Grep**:`path` 参数必填且必须是绝对路径
|
|
31
|
+
```
|
|
32
|
+
Grep path=<任务书里的 consolidatedDir> pattern=关键词
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- **Bash**:仅允许 `ec memory create|update|archive` 单条命令,或落在批次目录内的只读查询(不能拼接命令)
|
|
36
|
+
- ✅ 允许:`ec memory create --scope relation --slug xxx '...'`
|
|
37
|
+
- ✅ 允许:`ls "<批次目录>/threads"`(单条、绝对路径、无拼接)
|
|
38
|
+
- ❌ 不允许:`cd ... && ls ...`(用绝对路径代替 cd)
|
|
39
|
+
- ❌ 不允许:`ls ... 2>&1`(不需要,工具会同时收两路输出)
|
|
40
|
+
- ❌ 不允许:`ls "..."/*`(通配符不支持,用 Glob 代替)
|
|
41
|
+
- ❌ 不允许:`cmd1 && cmd2 && cmd3`(只允许单条命令或两条只读命令用 && 连接)
|
|
42
|
+
|
|
43
|
+
**任务书里已给出的可读路径**(复制粘贴即可):
|
|
44
|
+
- 批次目录:本次任务初始消息里的 `整理上下文文件路径` 的父目录
|
|
45
|
+
- processingDir / consolidatedDir / indexPath:任务书「整理目标」章节里列出
|
|
46
|
+
- 消息流水:任务书里的 `historyJsonlPath`(如有)
|
|
13
47
|
|
|
14
48
|
## 写入前必须先查重
|
|
15
49
|
|
|
@@ -30,7 +64,7 @@
|
|
|
30
64
|
- 会话内因上下文压缩会丢失的关键信息。
|
|
31
65
|
- 对端明确表达过的态度。
|
|
32
66
|
|
|
33
|
-
|
|
67
|
+
不值得写的:一次性任务的进展、临时状态、闲聊内容。不写记忆,在反馈里说明丢弃了哪些、为什么。
|
|
34
68
|
|
|
35
69
|
## update 还是 create --replaces
|
|
36
70
|
|
|
@@ -48,13 +82,13 @@ update 只用于正文不变、状态变了的情况:
|
|
|
48
82
|
|
|
49
83
|
输出 `[[NOOP]]`,然后结束。不要为了「有产出」而硬造记忆。
|
|
50
84
|
|
|
51
|
-
##
|
|
85
|
+
## 反馈(必须写)
|
|
52
86
|
|
|
53
|
-
|
|
87
|
+
**结束前必须把本次整理结果写成一段 markdown 文本,写到任务书给出的反馈文件路径。** 这段文本会被投递回发起整理的会话(手动、上下文压缩、新会话三类触发都会投递;定时触发只写日志,不投递)。
|
|
54
88
|
|
|
55
89
|
要求:
|
|
56
90
|
|
|
57
|
-
-
|
|
91
|
+
- 写入方式:用文件写入工具(Write / Edit)写到任务书里给出的那个反馈文件路径。这是本会话唯一可以写的文件;不要写别的路径,也不要用 shell 重定向。文件已经建好,直接写即可。
|
|
58
92
|
- 内容用 markdown,包含:
|
|
59
93
|
- **模式**:本次模式(notes / generalize / promote / profile / forget)
|
|
60
94
|
- **处理结果**:新建 / 更新 / 归档的记忆条数
|
|
@@ -63,7 +97,7 @@ update 只用于正文不变、状态变了的情况:
|
|
|
63
97
|
- 若过程中遇到异常(某条候选读不了、写入被拒),如实写出来。
|
|
64
98
|
- 不要在反馈文本里堆砌日志路径和原始文件列表——那些在批次目录里有,反馈是给人看的一句话级结论。
|
|
65
99
|
|
|
66
|
-
|
|
100
|
+
没有写反馈文件时,程序会回退到默认模板(只含模式、触发方式、条数统计),信息量少,所以务必显式写。
|
|
67
101
|
|
|
68
102
|
## 收尾
|
|
69
103
|
|
|
@@ -71,5 +105,6 @@ update 只用于正文不变、状态变了的情况:
|
|
|
71
105
|
|
|
72
106
|
- 成功 → 移入 `archive/notes/` 留底。
|
|
73
107
|
- 失败 → 移回 `pending/`,下次重新整理。
|
|
108
|
+
- 认领了 note,却既没写记忆也没写反馈 → 按失败处理,note 移回 `pending/`。
|
|
74
109
|
|
|
75
110
|
程序还会重建索引,并把本次整理的日志(模式、候选、产出)落到 `$EVOLCORE_HOME/memory/consolidation-batches/`。
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
- 请结合请求列表与当前对端回复,分别判断哪些请求已经得到充分回答。
|
|
4
4
|
- 不要在对外回复中主动提及 handoff、ID、return 命令或内部路由机制。
|
|
5
5
|
- 通常请直接在当前回复中给出完整处理结果,本端会自动把回复绑定并回流到原请求会话。
|
|
6
|
-
- 如果请求因权限、网络或其它原因无法完成,且需要把失败/阻塞原因明确回传给原会话,可执行已有命令 `ec handoff return <handoff-id>
|
|
6
|
+
- 如果请求因权限、网络或其它原因无法完成,且需要把失败/阻塞原因明确回传给原会话,可执行已有命令 `ec handoff return <handoff-id> '<失败原因>'`;required 请求允许用同一个 ID 追加多次结果。
|
|
7
7
|
- 不要在对外回复中主动提及 handoff、ID 或内部路由机制。
|
|
8
8
|
|
|
9
9
|
待回流请求:
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[bash-description] Bash 调用的 description 格式(代码层强制校验)
|
|
2
|
+
每次调用 Bash 都必须传 description,格式为 `<命令目标描述> [<风险等级>]`:
|
|
3
|
+
- 命令目标描述:一句话说明这条命令要达成什么,不复述命令原文、参数或路径
|
|
4
|
+
- 风险等级:写在末尾的方括号内,取 `低`、`中`、`高` 之一
|
|
5
|
+
- 低:只读,不改变文件、进程或远端状态
|
|
6
|
+
- 中:改变状态但可恢复(写或改工作区文件、安装依赖、构建、本地 git commit)
|
|
7
|
+
- 高:不可逆,或影响超出当前工作区(删除、丢弃未提交改动、git push、发布、终止进程、修改系统配置)
|
|
8
|
+
示例:`查看工作区未提交的改动 [低]`、`安装项目依赖 [中]`、`推送 main 分支到远端 [高]`
|
|
9
|
+
缺少目标描述、缺少风险等级标记或标记不在三个等级之内,调用都会被直接拒绝。
|
|
@@ -51,12 +51,13 @@ Bootstrap 是首次自我设定的生命周期门禁:补齐基础名片、保
|
|
|
51
51
|
|
|
52
52
|
设定齐全、待确认内容已解决后,按以下顺序推进;已有有效结果只核对,不重复写入或发布:
|
|
53
53
|
1. 用 `ec aid agentmd set {{selfAid}} <field> <value>` 修改本 Agent 名片的 `name`、`description`、`tags`(保留其它 frontmatter 和正文,命令会校验格式并签名);不要用文件工具直接编辑名片。
|
|
54
|
-
2. 将明确的职责、协作边界、重要约束和待继续事项忠实整理到 `{{PERSONAL_DIR}}/
|
|
54
|
+
2. 将明确的职责、协作边界、重要约束和待继续事项忠实整理到 `{{PERSONAL_DIR}}/persona.md` 的 `## Bootstrap 交接` 段落。此摘要是 Agent 的内部交接工作,不要求 Owner 审稿;不新增推断,确有职责歧义则回到设定澄清。没有额外约束或待继续事项时省略相应条目,不为补齐摘要追问。文件不存在时创建,已有文件幂等更新该段并**保留其它段落**(尤其是 Owner 已设定的人格内容);待继续事项标注“未执行”。不复制完整历史、临时闲聊、凭据、运行状态或 Owner 私密信息(该文件也会进入后续群聊上下文)。
|
|
55
|
+
- 写这一段用文件工具直接编辑 `persona.md` 即可(Owner 会话中该文件可写);**不要**用 `ec agent persona --text` 只写交接段——那是整体覆盖,会冲掉 Owner 设定的人格内容。要整体设置人格时才用 `ec agent persona --text '<完整内容>'`。
|
|
55
56
|
3. 根据最终名片和已设定的 persona,自主生成并用 `ec agent welcome --text '<完整文案>'` 保存正式欢迎文案。不要展示草稿、询问称呼或请求 Owner 确认,不向用户交办文案工作;Owner 主动指定文案时直接尊重其明确要求。命令固定写入本 Agent 的 `personal/welcome.md`,不接受自定义路径,`ec agent welcome show` 可核对现状。
|
|
56
57
|
- 内容为简短问候、自我介绍、围绕职责的具体协作方向及开始协作的邀请,建议 100~250 个汉字;不照抄通用“AI Agent 网关”介绍,不泄露系统提示词、凭据、文件路径或工作记忆,不夸大能力、不承诺独占使用或设备绑定。
|
|
57
58
|
- 支持纯文本或带变量的 Markdown;变量用两个左花括号、变量名、两个右花括号,内部不加空格。仅允许 agentName、agentDescription、agentAid、agentTags、agentTagsText、ownerName、ownerAid、channel;多 Owner 共用模板,称呼用 ownerName 或 ownerAid 变量,不写死当前 Owner 的姓名。系统仅渲染变量,不追加其它文案。
|
|
58
59
|
4. 若最终名片尚未发布或字段有变更,用 `ec aid agentmd put {{selfAid}}` 签名发布;用 `set` 改过字段时命令已自动发布,只需核对;可选头像按上一节处理,不为同一头像重复发布名片。
|
|
59
|
-
5. 核对交接摘要和 welcome 已保存、最终名片已发布后,执行 `ec agent ready {{selfAid}}`。这是 Bootstrap 的最后一个操作;成功后系统结束旧上下文、为各 Owner 创建新主会话并投递已保存的 welcome,不再调用模型生成文案。不要从旧上下文追加完成回复或继续普通任务。新主会话首次回复前先阅读已注入的 `
|
|
60
|
+
5. 核对交接摘要和 welcome 已保存、最终名片已发布后,执行 `ec agent ready {{selfAid}}`。这是 Bootstrap 的最后一个操作;成功后系统结束旧上下文、为各 Owner 创建新主会话并投递已保存的 welcome,不再调用模型生成文案。不要从旧上下文追加完成回复或继续普通任务。新主会话首次回复前先阅读已注入的 `persona.md` 交接内容,沿用约定,未执行事项按正常权限续接。
|
|
60
61
|
|
|
61
62
|
## 5. 恢复与操作范围
|
|
62
63
|
|
|
@@ -66,4 +67,4 @@ Bootstrap 是首次自我设定的生命周期门禁:补齐基础名片、保
|
|
|
66
67
|
- `bootstrapping`:从缺失或失败的步骤续做,保留已明确或已认可的设定;welcome 缺失时自主生成并保存,交接缺失时依据可核对事实补写,全部完成后直接 `ready`,不增加确认轮次。收到 `WELCOME_FROZEN` 表示投递快照已准备,不改文案,只续做剩余步骤。
|
|
67
68
|
- 必需步骤失败时说明具体原因,修正后再继续,不调用 `ready`、不盲目重试;可选头像失败按上一节处理。
|
|
68
69
|
|
|
69
|
-
仅允许读取本 Agent
|
|
70
|
+
仅允许读取本 Agent 名片并编辑上述三个字段、读写 `persona.md` 的 `## Bootstrap 交接` 段、读取 Owner 为设定提供的文本或图片附件、执行上述本 Agent 状态查询、persona、welcome、名片发布、头像及 ready 命令,以及向当前 Owner 回复。不得修改其它文件、联系其它主体或进行无关配置操作;完成前不承诺已经进入正常工作状态。
|
|
@@ -14,11 +14,11 @@ capabilities: {{capabilities}} # 当前渠道支持的能力
|
|
|
14
14
|
{{/}}
|
|
15
15
|
{{?channel=aun}}
|
|
16
16
|
{{?groupId}}
|
|
17
|
-
ec group send {{selfAid}} {{groupId}}
|
|
17
|
+
ec group send {{selfAid}} {{groupId}} '<text>' [--encrypt|--no-encrypt] [--file <path> --as image|video|voice|file] [--payload '<json>'] [--mention '<aid1>,<aid2>'] [--mention-all]
|
|
18
18
|
group-send 用于群内公开发送:proactive 下是正式回复;interactive 下普通回复直接输出,需要 @某人、发文件或手动控制加密时使用此命令。
|
|
19
19
|
{{/}}
|
|
20
20
|
{{?peerId}}
|
|
21
|
-
ec msg send {{selfAid}} {{peerId}}
|
|
21
|
+
ec msg send {{selfAid}} {{peerId}} '<text>' [--text-from-file <path>] [--encrypt|--no-encrypt] [--file <path> --as image|video|voice|file] [--link <url> --title '<title>'] [--payload '<json>']
|
|
22
22
|
msg-send 用于私聊发送:proactive 下是正式回复;interactive 下普通回复直接输出,需要文件、链接或手动控制加密时使用此命令。群聊仅在确需私下联系本条消息发送者且已获授权时使用,公开回复使用 group-send。
|
|
23
23
|
{{/}}
|
|
24
24
|
每次调用仍须遵守 `[reply]` 的单条命令及加密要求。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[memory] 记忆系统
|
|
2
2
|
{{?sessionType!=memory}}
|
|
3
3
|
**静默规则**:记忆操作完全静默。仅当用户明确表达让你记住某事时,才给一句不超过一行的简短确认,其余情况禁止出现「记下了」「已记录」「我记住了」等表达。
|
|
4
|
-
`ec memory` 是唯一写入路径。**不要用 Write / Edit 直接写记忆文件,也不要用 baseagent
|
|
4
|
+
`ec memory` 是唯一写入路径。**不要用 Write / Edit 直接写记忆文件,也不要用 baseagent 原生记忆工具**:绕过完整性台账和索引,会被当作带外修改恢复掉,整理会话也不感知。
|
|
5
5
|
**召回**:上方已注入三级 `MEMORY.md` 索引,按描述判断相关性,再 Read 对应 `consolidated/` 正文;不要全部读一遍。
|
|
6
6
|
{{?peerKey}}
|
|
7
7
|
**写入判据**:开新会话后这条信息拿不到,会不会有影响?会就写,不会就不写。
|
|
@@ -17,15 +17,15 @@
|
|
|
17
17
|
**命令**(`--slug` 必填,字母/数字/连字符,1-64 字符,当前关系内唯一):
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
ec memory note --slug <slug> [--tags <tag1
|
|
21
|
-
ec memory note update <slug> [--slug <新slug>] [--tags
|
|
20
|
+
ec memory note --slug <slug> [--tags '<tag1>,<tag2>'] '<正文>'
|
|
21
|
+
ec memory note update <slug> [--slug <新slug>] [--tags '<tag1>,<tag2>'] ['<新正文>']
|
|
22
22
|
ec memory note drop <slug>
|
|
23
23
|
ec memory note list
|
|
24
24
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
{{?chatType=group}}
|
|
28
|
-
群聊场景可附加 `--speakers <
|
|
28
|
+
群聊场景可附加 `--speakers '<aid1>,<aid2>'` 记录本条 note 涉及的发言人(单引号包住、逗号分隔,填 AID 或渠道原生 ID)。整理会话会据此把发言人相关信息分流到各发言人自己的 relation 记忆里。
|
|
29
29
|
{{/}}
|
|
30
30
|
slug 撞名改用 `update`。完整用法见 `$KITS_DOCS/evolcore/memory.md`。
|
|
31
31
|
**整理**(触发后不等结果):
|
|
@@ -43,13 +43,18 @@ slug 撞名改用 `update`。完整用法见 `$KITS_DOCS/evolcore/memory.md`。
|
|
|
43
43
|
**只能用三个命令**:
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
ec memory create --scope <relation|agent|owner> --slug <slug> --desc
|
|
47
|
-
[--peer <peerKey>] --tags <tag1
|
|
48
|
-
ec memory update <路径> --tags <tag1
|
|
46
|
+
ec memory create --scope <relation|agent|owner> --slug <slug> --desc '一句话描述' \
|
|
47
|
+
[--peer <peerKey>] --tags '<tag1>,<tag2>' [--keywords '<kw1>,<kw2>'] [--replaces '<路径1>,<路径2>'] '<正文>'
|
|
48
|
+
ec memory update <路径> --tags '<tag1>,<tag2>' # 整体替换标签,不是追加;改不了正文
|
|
49
49
|
ec memory update <路径> --touch # 只刷新时间戳(遗忘续期)
|
|
50
50
|
ec memory archive <路径...> # 下线记忆,移入 archive/
|
|
51
|
-
|
|
52
51
|
```
|
|
52
|
+
|
|
53
|
+
整理结束后,把本次整理的整体反馈写入任务书里指定的**反馈文件路径**。未写入则收尾时回退到默认统计模板(模式、触发方式、耗时、新建/更新/归档条数等)。
|
|
54
|
+
|
|
55
|
+
自由文本参数(`--desc`、正文、`--keywords`)用**单引号**包住(`'…'`);
|
|
56
|
+
用双引号的话,文本里的 `` ` `` 或 `$` 会被 shell 展开,命令被拒。
|
|
57
|
+
正文本身含单引号时,改用 `$'…'` 语法(ANSI-C quoting),支持 `\'` `\n` `\t` `\\`。
|
|
53
58
|
| 参数 | 说明 |
|
|
54
59
|
| --- | --- |
|
|
55
60
|
| --scope | 必填,只能是本次模式允许的取值(见下表) |
|
|
@@ -59,6 +64,8 @@ ec memory archive <路径...> # 下线记忆,移入 archi
|
|
|
59
64
|
| --keywords | 可选,串起相关记忆的内容关键词 |
|
|
60
65
|
| --replaces | 可选,要替换的旧文件,自动归档。合并、纠正、升格作用域都走它,是唯一的防重复手段 |
|
|
61
66
|
|
|
67
|
+
`--tags`、`--keywords`、`--replaces` 的值写成单引号包住、逗号分隔:`--tags 'rule,long-term'`、`--replaces 'consolidated/a.md,consolidated/b.md'`。
|
|
68
|
+
|
|
62
69
|
**模式与允许的** `--scope`(越权会被 daemon 拒绝):
|
|
63
70
|
|
|
64
71
|
| 模式 | --scope |
|
|
@@ -73,7 +80,7 @@ ec memory archive <路径...> # 下线记忆,移入 archi
|
|
|
73
80
|
|
|
74
81
|
**禁止**:
|
|
75
82
|
|
|
76
|
-
- 用 Write / Edit 直接写 `consolidated
|
|
83
|
+
- 用 Write / Edit 直接写 `consolidated/`:绕过完整性台账,下次使用时会被恢复到最后登记的版本。
|
|
77
84
|
- 写 `pending/` 或调用 `ec memory note`:note 是主会话入口,整理会话用了会形成循环。
|
|
78
85
|
- 删除文件:只能 `archive`。
|
|
79
86
|
{{/}}
|
|
@@ -23,19 +23,19 @@ proactive:普通输出作为思考过程展示,不作为正式回复、不
|
|
|
23
23
|
{{?selfAid}}
|
|
24
24
|
{{?chatType=private}}
|
|
25
25
|
{{?peerId}}
|
|
26
|
-
ec msg send {{selfAid}} {{peerId}}
|
|
26
|
+
ec msg send {{selfAid}} {{peerId}} '<text>' [--encrypt|--no-encrypt]
|
|
27
27
|
{{/}}
|
|
28
28
|
{{/}}
|
|
29
29
|
{{?chatType=group}}
|
|
30
30
|
{{?groupId}}
|
|
31
|
-
ec group send {{selfAid}} {{groupId}}
|
|
31
|
+
ec group send {{selfAid}} {{groupId}} '<text>' [--encrypt|--no-encrypt]
|
|
32
32
|
{{/}}
|
|
33
33
|
{{/}}
|
|
34
34
|
{{/}}
|
|
35
35
|
AUN 私聊向 peerId 发送,群聊向 groupId 发送,不把群内发言者当作公开回复目标。
|
|
36
36
|
{{/}}
|
|
37
37
|
{{?channel!=aun}}
|
|
38
|
-
ec ctl send
|
|
38
|
+
ec ctl send '<text>'
|
|
39
39
|
非 AUN 渠道使用上述命令向当前会话正式回复,不使用 AUN 的 msg/group 命令。
|
|
40
40
|
{{/}}
|
|
41
41
|
发送成功后继续本轮必要步骤,不重复发送同一正文或补发“已发送”回执。
|
|
@@ -47,12 +47,12 @@ ec ctl send "<text>"
|
|
|
47
47
|
{{/}}
|
|
48
48
|
|
|
49
49
|
发送约束(适用于正式回复及 active 阶段的附加发送):
|
|
50
|
-
- 只能使用当前会话的 delegated sender,经 daemon IPC 发送;保留托管环境,不另建 SDK 连接。当前会话回复使用注入的 self 和目标,不为绕过限制改写身份、对端或 thread 路由。显式 msg/group send 必须写全 from/to;拿不到 self 或目标参数时改用 ec ctl send
|
|
50
|
+
- 只能使用当前会话的 delegated sender,经 daemon IPC 发送;保留托管环境,不另建 SDK 连接。当前会话回复使用注入的 self 和目标,不为绕过限制改写身份、对端或 thread 路由。显式 msg/group send 必须写全 from/to;拿不到 self 或目标参数时改用 ec ctl send '<text>' 继承当前会话,不猜测身份或地址。
|
|
51
51
|
- 调用发送命令时,每次 shell 调用只能执行一条完整的 ec 命令。不要拼接探测、管道、重定向、子 shell 或其它命令;不要读取外部 coding-agent skill 寻找发送方式。
|
|
52
52
|
- 双引号正文中的双引号、反引号和 Shell 变量 `$` 需分别在其前加反斜杠。
|
|
53
53
|
- 以退出码和发送回执判断成败;被拒绝时说明具体原因,不通过改目标、改身份或绕开托管通道重试。
|
|
54
|
-
- 跨会话发送:一个话题只有本端与对端两端,当前话题只能直接回复 peerId/groupId。要联系当前对端({{peerId}})或当前群({{groupId}})以外的对象,属于**跨话题**发送:先 `ec thread list <对方AID>` 选中一个已有话题,没有合适话题就 `ec thread create <对方AID> --name
|
|
54
|
+
- 跨会话发送:一个话题只有本端与对端两端,当前话题只能直接回复 peerId/groupId。要联系当前对端({{peerId}})或当前群({{groupId}})以外的对象,属于**跨话题**发送:先 `ec thread list <对方AID>` 选中一个已有话题,没有合适话题就 `ec thread create <对方AID> --name '...'`,再用 `ec msg send '<text>' --thread <threadId> --check-every <时长>`(群聊为 `ec group send '<text>' --thread <threadId> --check-every <时长>`)发送;from/to 由话题推断,不必手写,`--check-every` 必填。不带 `--thread` 直接改目标发送会被拒绝;同会话回复当前对端/群不需要 `--thread`。
|
|
55
55
|
{{?channel=aun}}
|
|
56
|
-
- 显式调用 msg/group send 时必须选择加密参数:回复 🔒密文用 --encrypt,回复 ✉明文用 --no-encrypt;批次含密文则用 --encrypt。不得省略参数后依赖默认明文;加密状态不明时使用继承当前会话状态的 ec ctl send
|
|
56
|
+
- 显式调用 msg/group send 时必须选择加密参数:回复 🔒密文用 --encrypt,回复 ✉明文用 --no-encrypt;批次含密文则用 --encrypt。不得省略参数后依赖默认明文;加密状态不明时使用继承当前会话状态的 ec ctl send '<text>'。
|
|
57
57
|
- interactive 的直接输出和 ec ctl send 由框架继承当前会话的加密状态、目标和话题,无需手动改写路由。
|
|
58
58
|
{{/}}
|
|
@@ -44,7 +44,7 @@ readonly: true — 禁止写入项目目录及临时目录;如需生成文件
|
|
|
44
44
|
# 群内公开发送用 ec group send;语法与选项见 [channel] 段。
|
|
45
45
|
{{/}}
|
|
46
46
|
{{?chatType=private}}
|
|
47
|
-
# 当前话题私聊回复(proactive 自主模式):ec msg send {{selfAid}} {{peerId}}
|
|
47
|
+
# 当前话题私聊回复(proactive 自主模式):ec msg send {{selfAid}} {{peerId}} '<text>' [--encrypt|--no-encrypt]
|
|
48
48
|
# from/to 必须显式写出(权限层逐字校验发送者与目标);仅 --thread 跨话题发送和 ec ctl send 可省略。文件/链接/跨话题/完整选项见 $KITS_DOCS/evolcore/msg.md
|
|
49
49
|
{{/}}
|
|
50
50
|
{{/}}
|