evolcore 0.0.23 → 0.0.25
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 +583 -516
- package/LICENSE +21 -21
- package/README.md +455 -453
- package/bin/codex-managed-acl.ps1 +160 -155
- package/bin/codex-managed-hook.mjs +209 -92
- package/bin/ec-safe-output.js +327 -245
- package/bin/ec.js +29 -29
- package/bin/install-codex-managed-hooks.mjs +555 -544
- package/dist/agents/baseagent-availability.js +4 -4
- package/dist/agents/baseagent.js +29 -1
- package/dist/agents/claude-runner.js +152 -14
- package/dist/agents/codex/app-server-client.js +18 -8
- package/dist/agents/codex/catalog.js +1 -1
- package/dist/agents/codex/diagnostics.js +215 -0
- package/dist/agents/codex-runner.js +445 -63
- package/dist/agents/ecagent-runner.js +31 -16
- package/dist/agents/gemini-runner.js +82 -4
- package/dist/agents/runner-types.js +1 -1
- package/dist/aun/aid/agentmd.js +56 -4
- package/dist/aun/aid/index.js +1 -0
- package/dist/aun/aid/managed-operation.js +80 -6
- package/dist/aun/aid/store.js +41 -0
- package/dist/aun/msg/managed-operation.js +6 -1
- package/dist/aun/outbox.js +56 -18
- package/dist/aun/rpc/client.js +4 -5
- package/dist/aun/storage/client.js +4 -1
- package/dist/aun/storage/index.js +1 -1
- package/dist/channels/aun.js +147 -76
- package/dist/channels/daemon.js +7 -1
- package/dist/channels/dingtalk.js +1 -0
- package/dist/channels/feishu.js +10 -4
- package/dist/channels/wecom.js +2 -1
- package/dist/cli/agent-command.js +214 -89
- package/dist/cli/agent-create.js +576 -0
- package/dist/cli/agent.js +129 -676
- package/dist/cli/aun-commands.js +419 -313
- package/dist/cli/bench.js +20 -20
- package/dist/cli/config.js +20 -20
- package/dist/cli/contact.js +10 -10
- package/dist/cli/ctl-command.js +22 -20
- package/dist/cli/daemon-commands.js +163 -32
- package/dist/cli/fs-command.js +67 -67
- package/dist/cli/handoff-command.js +7 -7
- package/dist/cli/index.js +79 -79
- package/dist/cli/link-rules.js +21 -21
- package/dist/cli/managed-command-guard.js +3 -0
- package/dist/cli/menu-client.js +11 -11
- 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 +462 -38
- package/dist/cli/stats.js +161 -51
- package/dist/cli/trigger-command.js +56 -56
- package/dist/config/builtin-roles.js +3 -0
- package/dist/config/config-manager.js +15 -0
- package/dist/config/config-operation-service.js +20 -3
- package/dist/config/resolved-config-op.js +39 -1
- package/dist/core/auth/auth-gateway.js +3 -2
- package/dist/core/auth/authorization-audit.js +72 -19
- package/dist/core/auth/operation-authorizer.js +125 -7
- package/dist/core/auth/operation-catalog.js +26 -2
- package/dist/core/auth/remote-access-store.js +3 -2
- package/dist/core/baseagent-loader.js +4 -4
- package/dist/core/bootstrap-messages.js +39 -18
- package/dist/core/bootstrap-service.js +32 -26
- package/dist/core/capability/capability-manager.js +8 -4
- package/dist/core/capability/providers/codex-capability-provider.js +1 -1
- package/dist/core/command/agent-control.js +60 -26
- package/dist/core/command/cli-intent-parser.js +18 -0
- package/dist/core/command/command-handler.js +173 -36
- package/dist/core/command/menu-catalog.js +4 -1
- package/dist/core/command/menu-handler.js +315 -75
- package/dist/core/command/menu-protocol.js +7 -2
- package/dist/core/command/slash-gate.js +1 -3
- package/dist/core/command/slash-handler.js +166 -57
- package/dist/core/data-migration.js +5 -15
- package/dist/core/event-catalog.js +8 -0
- package/dist/core/evolagent.js +3 -3
- package/dist/core/handoff/runtime.js +3 -1
- package/dist/core/handoff/store.js +7 -1
- package/dist/core/message/im-renderer.js +13 -6
- package/dist/core/message/message-bridge.js +5 -36
- package/dist/core/message/message-utils.js +6 -3
- package/dist/core/message/response-engine.js +85 -27
- package/dist/core/model/catalog-service.js +3 -1
- package/dist/core/model/model-catalog.js +10 -0
- package/dist/core/model/model-permission.js +4 -1
- package/dist/core/permission/approval-gateway.js +169 -33
- package/dist/core/permission/tool-policy.js +56 -10
- package/dist/core/session/adapters/codex-session-file-adapter.js +71 -3
- package/dist/core/session/session-manager.js +49 -13
- package/dist/core/session/session-renew.js +1 -0
- package/dist/index.js +327 -134
- package/dist/ipc.js +68 -21
- package/dist/paths.js +23 -1
- package/dist/stats/billing.js +18 -4
- package/dist/stats/db.js +159 -159
- package/dist/stats/eck-vars.js +9 -9
- 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/atomic-write.js +26 -2
- package/dist/utils/avatar-upload.js +282 -23
- package/dist/utils/cross-platform.js +436 -1
- package/dist/utils/error-dict.json +160 -160
- package/dist/utils/error-utils.js +11 -4
- package/dist/utils/macos-autostart.js +22 -22
- package/dist/utils/model-prices.jsonl +23 -20
- package/dist/utils/npm-ops.js +24 -1
- package/dist/utils/welcome.js +22 -22
- package/dist/utils/windows-autostart.js +1 -1
- 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 +365 -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 -69
- package/kits/docs/evolcore/agent-create.md +170 -156
- package/kits/docs/evolcore/agent.md +83 -73
- package/kits/docs/evolcore/aid.md +64 -62
- package/kits/docs/evolcore/codex-windows-sandbox.md +146 -0
- package/kits/docs/evolcore/config.md +195 -195
- package/kits/docs/evolcore/contact.md +68 -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 +34 -34
- package/kits/docs/evolcore/model.md +50 -50
- package/kits/docs/evolcore/msg.md +165 -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 +270 -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 +25 -25
- package/kits/docs/venues/private.md +10 -10
- package/kits/eck_manifest.auxiliary.json +43 -43
- package/kits/eck_manifest.json +195 -183
- 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 +39 -37
- 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 +96 -82
- package/kits/templates/roles/member.json +97 -96
- package/kits/templates/roles/owner.json +9 -9
- package/kits/templates/roles/visitor.json +86 -85
- package/kits/templates/system-fragments/baseagent.md +14 -14
- package/kits/templates/system-fragments/bootstrap.md +38 -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 +98 -94
- package/AGENTS.md +0 -62
- package/dist/utils/codex-cli.js +0 -43
- package/skills/eclink/SKILL.md +0 -84
- package/skills/eclink/agents/openai.yaml +0 -4
|
@@ -1,251 +1,251 @@
|
|
|
1
|
-
# ec group rules — 群规则文件
|
|
2
|
-
|
|
3
|
-
管理 AUN 群空间中的 `/rules.md`。群规则文件用于定义本群特有的工作流程、职责分工、交付格式、限制条件和升级路径;发布后,EvolCore 默认会在该群的对话上下文中加载,本地 Agent 也可用 `groupRules.mode` 选择忽略。
|
|
4
|
-
|
|
5
|
-
以自己的 AID 为操作者 `<from>`,群 AID 为 `<group-id>`。
|
|
6
|
-
|
|
7
|
-
## 与入群规则的区别
|
|
8
|
-
|
|
9
|
-
`ec group rules` 同时承载两类不同能力:
|
|
10
|
-
|
|
11
|
-
| 能力 | 命令 | 用途 |
|
|
12
|
-
|------|------|------|
|
|
13
|
-
| 群规则文件 | `get/set/publish` | 管理注入上下文的群空间 `/rules.md` |
|
|
14
|
-
| 入群规则 | 无动作或 `--mode` 等选项 | 管理 open、approval、invite_only、closed 等加入策略 |
|
|
15
|
-
|
|
16
|
-
本文只说明群规则文件。入群规则的用法见 `group.md`。
|
|
17
|
-
|
|
18
|
-
## 常用命令
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
# 查看当前已发布且有效的群规则
|
|
22
|
-
ec group rules <from> <group-id> get
|
|
23
|
-
|
|
24
|
-
# 上传本地文件到 /rules.md 并立即发布
|
|
25
|
-
ec group rules <from> <group-id> set <file>
|
|
26
|
-
|
|
27
|
-
# 发布群空间中当前已有的 /rules.md
|
|
28
|
-
ec group rules <from> <group-id> publish
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
所有命令均支持 `--format json`。
|
|
32
|
-
|
|
33
|
-
## 本地加载策略
|
|
34
|
-
|
|
35
|
-
`ec group rules get/set/publish` 管理远端群规则;`groupRules.mode` 管理当前 Agent 是否把远端规则
|
|
36
|
-
读取并注入上下文。两者互不替代。策略支持 Agent 默认值和当前群 relation 覆盖,优先级为:
|
|
37
|
-
|
|
38
|
-
```text
|
|
39
|
-
Agent groupRules.mode -> 当前群 relation groupRules.mode -> 缺省 load
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
# 当前群的有效策略与来源
|
|
44
|
-
ec config get groupRules.mode \
|
|
45
|
-
--self bot.agentid.pub --peer aun#g-team.agentid.pub --format json
|
|
46
|
-
|
|
47
|
-
# 只忽略当前群;重新设为 load 可恢复
|
|
48
|
-
ec config set groupRules.mode ignore \
|
|
49
|
-
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
50
|
-
ec config set groupRules.mode load \
|
|
51
|
-
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
52
|
-
|
|
53
|
-
# 删除当前群覆盖,回落 Agent 默认值或缺省 load
|
|
54
|
-
ec config unset groupRules.mode \
|
|
55
|
-
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
56
|
-
|
|
57
|
-
# 设置 Agent 默认策略;只能从允许 Agent 级写入的私聊或控制面执行
|
|
58
|
-
ec config set groupRules.mode ignore --self bot.agentid.pub
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
`groupRules.mode` 只能由当前 Agent 的实际 owner 修改;DaemonOwner 不会仅因进程角色而获得该权限,
|
|
62
|
-
其他角色仍可读取当前 relation 的有效值。
|
|
63
|
-
在群聊中,即使 owner 也只能修改当前群 relation,不能修改 Agent 默认值。命令沿用既有
|
|
64
|
-
`ec config set/unset` 的授权、selector 和输出语义,不新增 Menu 协议。
|
|
65
|
-
|
|
66
|
-
`ignore` 从配置提交后开始处理的新 turn 生效,并保证不访问远端规则、不读取本地
|
|
67
|
-
`rules.md`、不注入规则正文;旧物化文件会保留,但不能作为回退来源。切回 `load` 后仍须重新完成
|
|
68
|
-
远端元数据校验。配置切换不会清空、新建或 fork 会话,也不会删除已进入恢复会话历史的旧内容。
|
|
69
|
-
Claude/Codex 的后续 turn 会按新策略重新组装上下文;其他 runner 仍保存配置,但 Menu 成功输出会
|
|
70
|
-
提示新建或清空该群会话后生效。
|
|
71
|
-
|
|
72
|
-
## 更新规则
|
|
73
|
-
|
|
74
|
-
日常更新直接使用 `set`:
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
ec group rules admin.agentid.pub g-team.agentid.pub set ./rules.md
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
成功后会依次完成:
|
|
81
|
-
|
|
82
|
-
1. 检查本地文件是普通文件、有效 UTF-8,且不超过 4KB。
|
|
83
|
-
2. 原样上传到 `<group-id>:/rules.md`。
|
|
84
|
-
3. 读取远端文件的 `size + mtimeMs`。
|
|
85
|
-
4. 更新 signed `rules.content`,使该文件版本成为当前有效群规则。
|
|
86
|
-
5. 再次检查远端 `size + mtimeMs`,防止发布期间文件被并发覆盖。
|
|
87
|
-
6. 由发布者发送 `group.rules.updated` 群通知。
|
|
88
|
-
|
|
89
|
-
命令不会规范化换行或重写正文。
|
|
90
|
-
|
|
91
|
-
## 查看规则
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
ec group rules bot.agentid.pub g-team.agentid.pub get
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
普通输出在校验通过后直接打印 Markdown 正文。需要查看状态和元信息时使用:
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
ec group rules bot.agentid.pub g-team.agentid.pub get --format json
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
示例:
|
|
104
|
-
|
|
105
|
-
```json
|
|
106
|
-
{
|
|
107
|
-
"ok": true,
|
|
108
|
-
"group_id": "g-team.agentid.pub",
|
|
109
|
-
"status": "ok",
|
|
110
|
-
"path": "/rules.md",
|
|
111
|
-
"metadata": {
|
|
112
|
-
"path": "/rules.md",
|
|
113
|
-
"size": 1024,
|
|
114
|
-
"mtimeMs": 1780000000000
|
|
115
|
-
},
|
|
116
|
-
"content": "# 群规则\n..."
|
|
117
|
-
}
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
`get` 不是简单执行 `ec fs cat`。它会先验证 signed `rules.content`,再确认远端 `/rules.md` 的 `size + mtimeMs` 与已发布元信息一致。
|
|
121
|
-
|
|
122
|
-
## 规则文件建议
|
|
123
|
-
|
|
124
|
-
`/rules.md` 是入口规则文档,不是群知识库。文件上限为 4KB,建议只写需要稳定注入每轮上下文的内容:
|
|
125
|
-
|
|
126
|
-
```markdown
|
|
127
|
-
# 群规则
|
|
128
|
-
|
|
129
|
-
## 工作流程
|
|
130
|
-
- 需求先明确负责人、截止时间和验收条件。
|
|
131
|
-
- 涉及生产变更时必须先给出回滚方案。
|
|
132
|
-
|
|
133
|
-
## 职责分工
|
|
134
|
-
- owner:最终决策与权限管理。
|
|
135
|
-
- reviewer:检查风险、测试和兼容性。
|
|
136
|
-
- executor:实现、验证并报告结果。
|
|
137
|
-
|
|
138
|
-
## 交付要求
|
|
139
|
-
- 结论先行,附关键证据。
|
|
140
|
-
- 未完成验证时必须明确说明。
|
|
141
|
-
|
|
142
|
-
## 升级路径
|
|
143
|
-
- 权限不足或规则冲突时 @owner。
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
较大的规范、资料和附件应存放在群空间其它路径,需要时用 `ec fs ls/find/stat/cat` 查询,不要全部塞进 `/rules.md`。
|
|
147
|
-
|
|
148
|
-
## 发布权限
|
|
149
|
-
|
|
150
|
-
发布涉及两层权限:
|
|
151
|
-
|
|
152
|
-
- 群文件权限:允许覆盖 `<group-id>:/rules.md`。
|
|
153
|
-
- 群索引权限:允许通过 `updateRules` 更新当前有效版本。
|
|
154
|
-
|
|
155
|
-
通常应由 owner/admin 写入和发布,普通成员只读。某人即使能覆盖文件,但不能更新群索引,该次修改也不会成为有效群规则,并会导致 `file_mismatch`。
|
|
156
|
-
|
|
157
|
-
## 更新通知
|
|
158
|
-
|
|
159
|
-
只有成功执行 `set` 或 `publish` 的发布者发送通知。读取方发现更新、自动同步或收到通知后刷新规则时,不会再次广播。
|
|
160
|
-
|
|
161
|
-
通知 payload:
|
|
162
|
-
|
|
163
|
-
```json
|
|
164
|
-
{
|
|
165
|
-
"type": "notice",
|
|
166
|
-
"subtype": "group.rules.updated",
|
|
167
|
-
"text": "群规则已发布:g-team.agentid.pub:/rules.md\n操作者:admin.agentid.pub",
|
|
168
|
-
"actor_aid": "admin.agentid.pub",
|
|
169
|
-
"group_id": "g-team.agentid.pub",
|
|
170
|
-
"path": "/rules.md",
|
|
171
|
-
"group_index_etag": "\"sha256:...\"",
|
|
172
|
-
"size": 1024,
|
|
173
|
-
"mtimeMs": 1780000000000
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
通知只是刷新提示。接收方仍以 signed `rules.content` 和远端文件校验结果为准。
|
|
178
|
-
|
|
179
|
-
## 状态说明
|
|
180
|
-
|
|
181
|
-
| status | 含义 | 是否加载 |
|
|
182
|
-
|--------|------|----------|
|
|
183
|
-
| `ok` | `get/set/publish` 校验或发布成功 | 是 |
|
|
184
|
-
| `ignored` | 当前 Agent 的 `groupRules.mode=ignore`,本轮未访问远端或本地规则 | 否 |
|
|
185
|
-
| `synced` | 运行时已刷新并物化本地规则 | 是 |
|
|
186
|
-
| `cached` | 本地物化文件仍与已发布元信息一致 | 是 |
|
|
187
|
-
| `missing` | 未发布规则,或 `/rules.md` 不存在 | 否 |
|
|
188
|
-
| `forbidden` | 当前身份无读取或发布权限 | 否 |
|
|
189
|
-
| `invalid_metadata` | signed `rules.content` 格式或签名无效 | 否 |
|
|
190
|
-
| `file_mismatch` | `/rules.md` 与当前已发布元信息不一致 | 否 |
|
|
191
|
-
| `too_large` | 文件超过 4KB | 否 |
|
|
192
|
-
| `unreadable` | 文件、编码、网络或远端服务暂时不可读 | 否 |
|
|
193
|
-
| `error` | 其它错误 | 否 |
|
|
194
|
-
|
|
195
|
-
## 本地物化与上下文加载
|
|
196
|
-
|
|
197
|
-
远端权威文件固定为:
|
|
198
|
-
|
|
199
|
-
```text
|
|
200
|
-
<group-id>:/rules.md
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
校验成功后,本地物化为:
|
|
204
|
-
|
|
205
|
-
```text
|
|
206
|
-
$RELATIONS_DIR/<channel>#<urlEncode(groupId)>/rules.md
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
AUN 示例:
|
|
210
|
-
|
|
211
|
-
```text
|
|
212
|
-
$AGENT_DIR/relations/aun#g-team.agentid.pub/rules.md
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
该本地文件属于**关系层**(群是对端的一种,见 `kits/rules/04-relation.md`),落在
|
|
216
|
-
`agentRelationsDir(selfAid)/<peerKey>/rules.md`(`src/eck/group-rules-sync.ts` 的 `relationPaths`)。
|
|
217
|
-
`$VENUES_DIR` 下的同名文件是已删除模块 `group-venue-sync.ts` 的历史残留,不再有效。
|
|
218
|
-
它只是远端规则的物化副本,不应直接编辑。只有当前处理轮次验证通过并设置 `groupRulesPath` 时,ECK manifest 才会把它注入 system context。
|
|
219
|
-
|
|
220
|
-
## 排障
|
|
221
|
-
|
|
222
|
-
### `set` 提示文件过大或编码无效
|
|
223
|
-
|
|
224
|
-
将入口规则压缩到 4KB 以内,并保存为 UTF-8 Markdown。详细资料移到群空间其它文件。
|
|
225
|
-
|
|
226
|
-
### `get` 返回 `file_mismatch`
|
|
227
|
-
|
|
228
|
-
有人通过 `ec fs` 或其它低层入口修改了 `/rules.md`,但尚未发布。由有权限的发布者执行:
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
ec group rules <from> <group-id> publish
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
### 收到通知但规则没有加载
|
|
235
|
-
|
|
236
|
-
通知不代表文件一定有效。检查:
|
|
237
|
-
|
|
238
|
-
```bash
|
|
239
|
-
ec group rules <from> <group-id> get --format json
|
|
240
|
-
ec fs stat <group-id>:/rules.md --format json
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
重点查看 `status`、已发布 `metadata` 和远端 `size/mtimeMs` 是否一致。
|
|
244
|
-
|
|
245
|
-
### 只想查看远端原始文件
|
|
246
|
-
|
|
247
|
-
```bash
|
|
248
|
-
ec fs cat <group-id>:/rules.md
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
这只能查看当前文件内容,不能证明它是当前已签名发布的有效版本。判断有效性仍应使用 `ec group rules ... get`。
|
|
1
|
+
# ec group rules — 群规则文件
|
|
2
|
+
|
|
3
|
+
管理 AUN 群空间中的 `/rules.md`。群规则文件用于定义本群特有的工作流程、职责分工、交付格式、限制条件和升级路径;发布后,EvolCore 默认会在该群的对话上下文中加载,本地 Agent 也可用 `groupRules.mode` 选择忽略。
|
|
4
|
+
|
|
5
|
+
以自己的 AID 为操作者 `<from>`,群 AID 为 `<group-id>`。
|
|
6
|
+
|
|
7
|
+
## 与入群规则的区别
|
|
8
|
+
|
|
9
|
+
`ec group rules` 同时承载两类不同能力:
|
|
10
|
+
|
|
11
|
+
| 能力 | 命令 | 用途 |
|
|
12
|
+
|------|------|------|
|
|
13
|
+
| 群规则文件 | `get/set/publish` | 管理注入上下文的群空间 `/rules.md` |
|
|
14
|
+
| 入群规则 | 无动作或 `--mode` 等选项 | 管理 open、approval、invite_only、closed 等加入策略 |
|
|
15
|
+
|
|
16
|
+
本文只说明群规则文件。入群规则的用法见 `group.md`。
|
|
17
|
+
|
|
18
|
+
## 常用命令
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# 查看当前已发布且有效的群规则
|
|
22
|
+
ec group rules <from> <group-id> get
|
|
23
|
+
|
|
24
|
+
# 上传本地文件到 /rules.md 并立即发布
|
|
25
|
+
ec group rules <from> <group-id> set <file>
|
|
26
|
+
|
|
27
|
+
# 发布群空间中当前已有的 /rules.md
|
|
28
|
+
ec group rules <from> <group-id> publish
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
所有命令均支持 `--format json`。
|
|
32
|
+
|
|
33
|
+
## 本地加载策略
|
|
34
|
+
|
|
35
|
+
`ec group rules get/set/publish` 管理远端群规则;`groupRules.mode` 管理当前 Agent 是否把远端规则
|
|
36
|
+
读取并注入上下文。两者互不替代。策略支持 Agent 默认值和当前群 relation 覆盖,优先级为:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
Agent groupRules.mode -> 当前群 relation groupRules.mode -> 缺省 load
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# 当前群的有效策略与来源
|
|
44
|
+
ec config get groupRules.mode \
|
|
45
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub --format json
|
|
46
|
+
|
|
47
|
+
# 只忽略当前群;重新设为 load 可恢复
|
|
48
|
+
ec config set groupRules.mode ignore \
|
|
49
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
50
|
+
ec config set groupRules.mode load \
|
|
51
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
52
|
+
|
|
53
|
+
# 删除当前群覆盖,回落 Agent 默认值或缺省 load
|
|
54
|
+
ec config unset groupRules.mode \
|
|
55
|
+
--self bot.agentid.pub --peer aun#g-team.agentid.pub
|
|
56
|
+
|
|
57
|
+
# 设置 Agent 默认策略;只能从允许 Agent 级写入的私聊或控制面执行
|
|
58
|
+
ec config set groupRules.mode ignore --self bot.agentid.pub
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
`groupRules.mode` 只能由当前 Agent 的实际 owner 修改;DaemonOwner 不会仅因进程角色而获得该权限,
|
|
62
|
+
其他角色仍可读取当前 relation 的有效值。
|
|
63
|
+
在群聊中,即使 owner 也只能修改当前群 relation,不能修改 Agent 默认值。命令沿用既有
|
|
64
|
+
`ec config set/unset` 的授权、selector 和输出语义,不新增 Menu 协议。
|
|
65
|
+
|
|
66
|
+
`ignore` 从配置提交后开始处理的新 turn 生效,并保证不访问远端规则、不读取本地
|
|
67
|
+
`rules.md`、不注入规则正文;旧物化文件会保留,但不能作为回退来源。切回 `load` 后仍须重新完成
|
|
68
|
+
远端元数据校验。配置切换不会清空、新建或 fork 会话,也不会删除已进入恢复会话历史的旧内容。
|
|
69
|
+
Claude/Codex 的后续 turn 会按新策略重新组装上下文;其他 runner 仍保存配置,但 Menu 成功输出会
|
|
70
|
+
提示新建或清空该群会话后生效。
|
|
71
|
+
|
|
72
|
+
## 更新规则
|
|
73
|
+
|
|
74
|
+
日常更新直接使用 `set`:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
ec group rules admin.agentid.pub g-team.agentid.pub set ./rules.md
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
成功后会依次完成:
|
|
81
|
+
|
|
82
|
+
1. 检查本地文件是普通文件、有效 UTF-8,且不超过 4KB。
|
|
83
|
+
2. 原样上传到 `<group-id>:/rules.md`。
|
|
84
|
+
3. 读取远端文件的 `size + mtimeMs`。
|
|
85
|
+
4. 更新 signed `rules.content`,使该文件版本成为当前有效群规则。
|
|
86
|
+
5. 再次检查远端 `size + mtimeMs`,防止发布期间文件被并发覆盖。
|
|
87
|
+
6. 由发布者发送 `group.rules.updated` 群通知。
|
|
88
|
+
|
|
89
|
+
命令不会规范化换行或重写正文。
|
|
90
|
+
|
|
91
|
+
## 查看规则
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
ec group rules bot.agentid.pub g-team.agentid.pub get
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
普通输出在校验通过后直接打印 Markdown 正文。需要查看状态和元信息时使用:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
ec group rules bot.agentid.pub g-team.agentid.pub get --format json
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
示例:
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"ok": true,
|
|
108
|
+
"group_id": "g-team.agentid.pub",
|
|
109
|
+
"status": "ok",
|
|
110
|
+
"path": "/rules.md",
|
|
111
|
+
"metadata": {
|
|
112
|
+
"path": "/rules.md",
|
|
113
|
+
"size": 1024,
|
|
114
|
+
"mtimeMs": 1780000000000
|
|
115
|
+
},
|
|
116
|
+
"content": "# 群规则\n..."
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
`get` 不是简单执行 `ec fs cat`。它会先验证 signed `rules.content`,再确认远端 `/rules.md` 的 `size + mtimeMs` 与已发布元信息一致。
|
|
121
|
+
|
|
122
|
+
## 规则文件建议
|
|
123
|
+
|
|
124
|
+
`/rules.md` 是入口规则文档,不是群知识库。文件上限为 4KB,建议只写需要稳定注入每轮上下文的内容:
|
|
125
|
+
|
|
126
|
+
```markdown
|
|
127
|
+
# 群规则
|
|
128
|
+
|
|
129
|
+
## 工作流程
|
|
130
|
+
- 需求先明确负责人、截止时间和验收条件。
|
|
131
|
+
- 涉及生产变更时必须先给出回滚方案。
|
|
132
|
+
|
|
133
|
+
## 职责分工
|
|
134
|
+
- owner:最终决策与权限管理。
|
|
135
|
+
- reviewer:检查风险、测试和兼容性。
|
|
136
|
+
- executor:实现、验证并报告结果。
|
|
137
|
+
|
|
138
|
+
## 交付要求
|
|
139
|
+
- 结论先行,附关键证据。
|
|
140
|
+
- 未完成验证时必须明确说明。
|
|
141
|
+
|
|
142
|
+
## 升级路径
|
|
143
|
+
- 权限不足或规则冲突时 @owner。
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
较大的规范、资料和附件应存放在群空间其它路径,需要时用 `ec fs ls/find/stat/cat` 查询,不要全部塞进 `/rules.md`。
|
|
147
|
+
|
|
148
|
+
## 发布权限
|
|
149
|
+
|
|
150
|
+
发布涉及两层权限:
|
|
151
|
+
|
|
152
|
+
- 群文件权限:允许覆盖 `<group-id>:/rules.md`。
|
|
153
|
+
- 群索引权限:允许通过 `updateRules` 更新当前有效版本。
|
|
154
|
+
|
|
155
|
+
通常应由 owner/admin 写入和发布,普通成员只读。某人即使能覆盖文件,但不能更新群索引,该次修改也不会成为有效群规则,并会导致 `file_mismatch`。
|
|
156
|
+
|
|
157
|
+
## 更新通知
|
|
158
|
+
|
|
159
|
+
只有成功执行 `set` 或 `publish` 的发布者发送通知。读取方发现更新、自动同步或收到通知后刷新规则时,不会再次广播。
|
|
160
|
+
|
|
161
|
+
通知 payload:
|
|
162
|
+
|
|
163
|
+
```json
|
|
164
|
+
{
|
|
165
|
+
"type": "notice",
|
|
166
|
+
"subtype": "group.rules.updated",
|
|
167
|
+
"text": "群规则已发布:g-team.agentid.pub:/rules.md\n操作者:admin.agentid.pub",
|
|
168
|
+
"actor_aid": "admin.agentid.pub",
|
|
169
|
+
"group_id": "g-team.agentid.pub",
|
|
170
|
+
"path": "/rules.md",
|
|
171
|
+
"group_index_etag": "\"sha256:...\"",
|
|
172
|
+
"size": 1024,
|
|
173
|
+
"mtimeMs": 1780000000000
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
通知只是刷新提示。接收方仍以 signed `rules.content` 和远端文件校验结果为准。
|
|
178
|
+
|
|
179
|
+
## 状态说明
|
|
180
|
+
|
|
181
|
+
| status | 含义 | 是否加载 |
|
|
182
|
+
|--------|------|----------|
|
|
183
|
+
| `ok` | `get/set/publish` 校验或发布成功 | 是 |
|
|
184
|
+
| `ignored` | 当前 Agent 的 `groupRules.mode=ignore`,本轮未访问远端或本地规则 | 否 |
|
|
185
|
+
| `synced` | 运行时已刷新并物化本地规则 | 是 |
|
|
186
|
+
| `cached` | 本地物化文件仍与已发布元信息一致 | 是 |
|
|
187
|
+
| `missing` | 未发布规则,或 `/rules.md` 不存在 | 否 |
|
|
188
|
+
| `forbidden` | 当前身份无读取或发布权限 | 否 |
|
|
189
|
+
| `invalid_metadata` | signed `rules.content` 格式或签名无效 | 否 |
|
|
190
|
+
| `file_mismatch` | `/rules.md` 与当前已发布元信息不一致 | 否 |
|
|
191
|
+
| `too_large` | 文件超过 4KB | 否 |
|
|
192
|
+
| `unreadable` | 文件、编码、网络或远端服务暂时不可读 | 否 |
|
|
193
|
+
| `error` | 其它错误 | 否 |
|
|
194
|
+
|
|
195
|
+
## 本地物化与上下文加载
|
|
196
|
+
|
|
197
|
+
远端权威文件固定为:
|
|
198
|
+
|
|
199
|
+
```text
|
|
200
|
+
<group-id>:/rules.md
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
校验成功后,本地物化为:
|
|
204
|
+
|
|
205
|
+
```text
|
|
206
|
+
$RELATIONS_DIR/<channel>#<urlEncode(groupId)>/rules.md
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
AUN 示例:
|
|
210
|
+
|
|
211
|
+
```text
|
|
212
|
+
$AGENT_DIR/relations/aun#g-team.agentid.pub/rules.md
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
该本地文件属于**关系层**(群是对端的一种,见 `kits/rules/04-relation.md`),落在
|
|
216
|
+
`agentRelationsDir(selfAid)/<peerKey>/rules.md`(`src/eck/group-rules-sync.ts` 的 `relationPaths`)。
|
|
217
|
+
`$VENUES_DIR` 下的同名文件是已删除模块 `group-venue-sync.ts` 的历史残留,不再有效。
|
|
218
|
+
它只是远端规则的物化副本,不应直接编辑。只有当前处理轮次验证通过并设置 `groupRulesPath` 时,ECK manifest 才会把它注入 system context。
|
|
219
|
+
|
|
220
|
+
## 排障
|
|
221
|
+
|
|
222
|
+
### `set` 提示文件过大或编码无效
|
|
223
|
+
|
|
224
|
+
将入口规则压缩到 4KB 以内,并保存为 UTF-8 Markdown。详细资料移到群空间其它文件。
|
|
225
|
+
|
|
226
|
+
### `get` 返回 `file_mismatch`
|
|
227
|
+
|
|
228
|
+
有人通过 `ec fs` 或其它低层入口修改了 `/rules.md`,但尚未发布。由有权限的发布者执行:
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
ec group rules <from> <group-id> publish
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### 收到通知但规则没有加载
|
|
235
|
+
|
|
236
|
+
通知不代表文件一定有效。检查:
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
ec group rules <from> <group-id> get --format json
|
|
240
|
+
ec fs stat <group-id>:/rules.md --format json
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
重点查看 `status`、已发布 `metadata` 和远端 `size/mtimeMs` 是否一致。
|
|
244
|
+
|
|
245
|
+
### 只想查看远端原始文件
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
ec fs cat <group-id>:/rules.md
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
这只能查看当前文件内容,不能证明它是当前已签名发布的有效版本。判断有效性仍应使用 `ec group rules ... get`。
|