evolcore 0.0.26 → 0.0.28
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 +36 -0
- package/bin/codex-managed-acl.ps1 +43 -0
- package/dist/agents/baseagent-availability.js +68 -0
- package/dist/agents/baseagent.js +10 -5
- package/dist/agents/claude-runner.js +123 -22
- package/dist/agents/codex/app-server-client.js +70 -26
- package/dist/agents/codex/catalog.js +7 -1
- package/dist/agents/codex-runner.js +363 -421
- package/dist/agents/ecagent-runner.js +170 -25
- package/dist/agents/gemini-runner.js +6 -0
- package/dist/agents/runner-types.js +50 -2
- package/dist/aun/aid/agentmd.js +73 -31
- package/dist/aun/aid/client.js +1 -1
- package/dist/aun/aid/control-aid.js +180 -1
- package/dist/aun/aid/identity.js +3 -3
- package/dist/aun/group/history.js +303 -0
- package/dist/aun/group/identity.js +43 -0
- package/dist/aun/group/index.js +5 -0
- package/dist/aun/{msg/group.js → group/operations.js} +161 -38
- package/dist/aun/{menu-client.js → menu/client.js} +13 -7
- package/dist/aun/menu/index.js +2 -0
- package/dist/aun/menu/transport.js +49 -0
- package/dist/aun/msg/index.js +2 -1
- package/dist/aun/msg/managed-operation.js +84 -18
- package/dist/aun/msg/mention-schema.js +51 -0
- package/dist/aun/msg/p2p.js +13 -8
- package/dist/aun/msg/upload.js +43 -88
- package/dist/aun/outbox.js +29 -7
- package/dist/aun/rpc/client.js +1 -0
- package/dist/aun/storage/client.js +39 -50
- package/dist/channels/aun.js +544 -239
- package/dist/channels/daemon.js +10 -6
- package/dist/cli/agent-command.js +108 -6
- package/dist/cli/agent-create.js +515 -2
- package/dist/cli/agent.js +109 -8
- package/dist/cli/aun-commands.js +191 -42
- package/dist/cli/config.js +8 -5
- package/dist/cli/contact.js +2 -2
- package/dist/cli/ctl-command.js +2 -2
- package/dist/cli/daemon-commands.js +111 -162
- package/dist/cli/diag.js +3 -3
- package/dist/cli/fs-command.js +3 -3
- package/dist/cli/handoff-command.js +6 -6
- package/dist/cli/index.js +8 -2
- package/dist/cli/init.js +34 -1
- package/dist/cli/managed-command-guard.js +2 -1
- package/dist/cli/menu-client.js +13 -5
- package/dist/cli/model.js +3 -3
- package/dist/cli/queue-command.js +2 -2
- package/dist/cli/response.js +2 -2
- package/dist/cli/restart-monitor.js +81 -19
- package/dist/cli/task-command.js +59 -0
- package/dist/cli/task-context.js +97 -49
- package/dist/cli/trigger-command.js +20 -10
- package/dist/config/builtin-roles.js +10 -0
- package/dist/config/config-field-policy.js +11 -0
- package/dist/config/config-manager.js +32 -4
- package/dist/config/config-operation-service.js +20 -5
- package/dist/config/contact-book-store.js +1 -1
- package/dist/config/contact-book.js +1 -1
- package/dist/config/contact-operation-service.js +1 -1
- package/dist/config/peer-role-resolver.js +1 -1
- package/dist/config/resolved-config-op.js +3 -0
- package/dist/config-store.js +1 -1
- package/dist/core/agent-application-service.js +5 -0
- package/dist/core/audit/event-key.js +17 -2
- package/dist/core/audit/log-integrity.js +34 -8
- package/dist/core/auth/agent-delegation.js +48 -14
- package/dist/core/auth/auth-gateway.js +2 -0
- package/dist/core/auth/authorization-audit.js +34 -38
- package/dist/core/auth/operation-authorizer.js +67 -5
- package/dist/core/auth/operation-catalog.js +110 -0
- package/dist/core/auth/remote-access-store.js +115 -9
- package/dist/core/bootstrap-messages.js +66 -7
- package/dist/core/bootstrap-service.js +110 -19
- package/dist/core/command/agent-control.js +88 -7
- package/dist/core/command/agent-storage-menu.js +443 -0
- package/dist/core/command/cli-intent-parser.js +19 -0
- package/dist/core/command/command-handler.js +105 -40
- package/dist/core/command/data-root-resolver.js +273 -0
- package/dist/core/command/diag-service.js +292 -27
- package/dist/core/command/group-menu.js +7 -2
- package/dist/core/command/menu-catalog.js +34 -4
- package/dist/core/command/menu-handler.js +364 -96
- package/dist/core/command/menu-protocol.js +43 -6
- package/dist/core/command/role-menu.js +2 -2
- package/dist/core/command/slash-handler.js +61 -37
- package/dist/core/event-catalog.js +4 -0
- package/dist/core/evolagent-registry.js +28 -2
- package/dist/core/group/invite-service.js +924 -0
- package/dist/core/interaction-router.js +22 -8
- package/dist/core/message/im-renderer.js +94 -16
- package/dist/core/message/message-bridge.js +140 -13
- package/dist/core/message/message-log.js +5 -3
- package/dist/core/message/message-queue.js +73 -41
- package/dist/core/message/response-engine.js +729 -118
- package/dist/core/permission/approval-gateway.js +36 -3
- package/dist/core/permission/ec-command-parser.js +76 -36
- package/dist/core/permission/protected-paths.js +134 -16
- package/dist/core/permission/sandbox-runtime.js +72 -3
- package/dist/core/permission/tool-error-code.js +15 -0
- package/dist/core/permission/tool-policy.js +8 -8
- package/dist/core/relation/peer-identity.js +57 -6
- package/dist/core/relation/shared-data.js +106 -0
- package/dist/core/role/runtime-policy.js +64 -0
- package/dist/core/runtime-lock.js +10 -26
- package/dist/core/session/runner-task-history.js +170 -0
- package/dist/core/session/session-manager.js +38 -6
- package/dist/core/session/session-mapper.js +41 -0
- package/dist/core/session/session-turn-coordinator.js +37 -7
- package/dist/core/session/session-turns.js +48 -7
- package/dist/core/task/task-recovery-service.js +176 -0
- package/dist/core/task/task-resume-operation.js +32 -0
- package/dist/eck/group-rules-sync.js +5 -3
- package/dist/eck/kit-renderer.js +1 -0
- package/dist/index.js +322 -207
- package/dist/ipc.js +141 -15
- package/dist/paths.js +17 -4
- package/dist/product.js +3 -0
- package/dist/trigger/event-source.js +19 -0
- package/dist/trigger/feedback.js +233 -40
- package/dist/trigger/parser.js +55 -5
- package/dist/trigger/patch.js +9 -0
- package/dist/trigger/scheduler.js +30 -4
- package/dist/trigger/validation.js +20 -3
- package/dist/utils/atomic-write.js +98 -0
- package/dist/utils/cross-platform.js +87 -16
- package/dist/utils/ecweb-utils.js +1 -0
- package/dist/utils/error-utils.js +40 -2
- package/dist/utils/logger.js +23 -13
- package/dist/utils/npm-ops.js +119 -4
- package/dist/utils/package-version-info.js +244 -0
- package/dist/utils/tool-summary.js +59 -3
- package/dist/utils/welcome.js +174 -1
- package/dist/utils/windows-shell-trust.js +37 -0
- package/ecagent/dist/harness/agent-harness.js +3 -0
- package/ecagent/dist/harness/session/jsonl-storage.js +21 -2
- package/kits/docs/INDEX.md +0 -6
- package/kits/docs/channels/aun.md +23 -2
- package/kits/docs/channels/feishu.md +1 -1
- package/kits/docs/context-assembly.md +29 -17
- package/kits/docs/evolcore/INDEX.md +8 -3
- package/kits/docs/evolcore/agent-create.md +39 -7
- package/kits/docs/evolcore/agent.md +33 -1
- package/kits/docs/evolcore/aid.md +9 -1
- package/kits/docs/evolcore/config.md +40 -1
- package/kits/docs/evolcore/group-collaboration.md +1 -1
- package/kits/docs/evolcore/group.md +117 -2
- package/kits/docs/evolcore/menu-client.md +16 -0
- package/kits/docs/evolcore/msg.md +3 -0
- package/kits/docs/evolcore/storage.md +3 -0
- package/kits/docs/evolcore/task.md +14 -0
- package/kits/docs/evolcore/trigger.md +51 -3
- package/kits/docs/venues/group.md +5 -0
- package/kits/eck_manifest.json +27 -0
- package/kits/rules/01-overview.md +11 -7
- package/kits/rules/04-relation.md +2 -1
- package/kits/rules/05-venue.md +1 -1
- package/kits/rules/06-channel.md +6 -4
- package/kits/schemas/agent-config.schema.12.json +25 -1
- package/kits/schemas/daemon.schema.6.json +2 -2
- package/kits/schemas/defaults.schema.5.json +1 -1
- package/kits/schemas/relation-config.schema.1.json +1 -1
- package/kits/schemas/relation-config.schema.5.json +1 -1
- package/kits/schemas/role-config.schema.1.json +14 -0
- package/kits/templates/roles/member.json +5 -0
- package/kits/templates/roles/visitor.json +5 -0
- package/kits/templates/system-fragments/baseagent.md +1 -1
- package/kits/templates/system-fragments/bootstrap.md +26 -9
- package/kits/templates/system-fragments/channel.md +8 -44
- package/kits/templates/system-fragments/commands.md +10 -2
- package/kits/templates/system-fragments/group-unread-history.md +7 -0
- package/kits/templates/system-fragments/reply.md +56 -0
- package/package.json +7 -3
- package/dist/aun/group-identity.js +0 -9
- /package/dist/aun/{group-fs-download.js → group/fs-download.js} +0 -0
- /package/dist/aun/{msg/group-index.js → group/index-rpc.js} +0 -0
|
@@ -75,6 +75,17 @@
|
|
|
75
75
|
"active": "已激活,正常运行"
|
|
76
76
|
}
|
|
77
77
|
},
|
|
78
|
+
"initialization": {
|
|
79
|
+
"type": "object",
|
|
80
|
+
"x-merge": "scalar",
|
|
81
|
+
"additionalProperties": false,
|
|
82
|
+
"required": ["mode", "operationId"],
|
|
83
|
+
"properties": {
|
|
84
|
+
"mode": { "const": "supplied" },
|
|
85
|
+
"operationId": { "type": "string", "pattern": "^init-[a-f0-9]{24}$" }
|
|
86
|
+
},
|
|
87
|
+
"description": "Creation-service owned initialization operation"
|
|
88
|
+
},
|
|
78
89
|
"initialized": {
|
|
79
90
|
"type": "boolean",
|
|
80
91
|
"x-merge": "scalar",
|
|
@@ -90,6 +101,19 @@
|
|
|
90
101
|
"x-merge": "list",
|
|
91
102
|
"description": "Agent 所有者身份列表;用于 owner 级控制和通知"
|
|
92
103
|
},
|
|
104
|
+
"fullaccess": {
|
|
105
|
+
"type": "object",
|
|
106
|
+
"x-merge": "dict",
|
|
107
|
+
"additionalProperties": false,
|
|
108
|
+
"properties": {
|
|
109
|
+
"enabled": {
|
|
110
|
+
"type": "boolean",
|
|
111
|
+
"default": false,
|
|
112
|
+
"description": "允许同时属于 AgentOwner 与 daemonOwner 的直接私聊任务使用宿主级 fullaccess"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"description": "Agent 级宿主执行策略;仅 EC Web 可设置,受 daemon fullaccess 总开关控制,不从 defaults 或 relation 继承"
|
|
116
|
+
},
|
|
93
117
|
"access": {
|
|
94
118
|
"type": "object",
|
|
95
119
|
"x-merge": "dict",
|
|
@@ -179,7 +203,7 @@
|
|
|
179
203
|
"baseagents": {
|
|
180
204
|
"type": "object",
|
|
181
205
|
"x-merge": "dict",
|
|
182
|
-
"description": "各 base agent 的模型、推理强度及运行参数;备用模型链只能在 defaults.json 配置。",
|
|
206
|
+
"description": "各 base agent 的模型、推理强度及运行参数;备用模型链只能在 defaults.json 配置。codex.enableRequestUserInput 为布尔值,默认 true,仅控制 Default 模式阻塞式提问;异步问题自动接入卡片。",
|
|
183
207
|
"additionalProperties": {
|
|
184
208
|
"not": {
|
|
185
209
|
"type": "object",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
},
|
|
19
19
|
"fullaccess": {
|
|
20
20
|
"type": "object",
|
|
21
|
-
"description": "daemon-owner
|
|
21
|
+
"description": "daemon-owner 批准的按调用宿主级执行功能;默认开启",
|
|
22
22
|
"x-merge": "dict",
|
|
23
23
|
"additionalProperties": false,
|
|
24
24
|
"properties": {
|
|
25
|
-
"enabled": { "type": "boolean", "default":
|
|
25
|
+
"enabled": { "type": "boolean", "default": true, "description": "启用 /fa 与 Trigger permissionMode=fullaccess" }
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"debug": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"baseagents": {
|
|
31
31
|
"type": "object",
|
|
32
|
-
"description": "各 base agent 配置(model/effort/apiKey/baseUrl 等),以及仅 defaults 可定义的备用模型链。",
|
|
32
|
+
"description": "各 base agent 配置(model/effort/apiKey/baseUrl 等),以及仅 defaults 可定义的备用模型链。codex.enableRequestUserInput 为布尔值,默认 true,仅控制 Default 模式阻塞式提问;异步问题自动接入卡片。",
|
|
33
33
|
"x-merge": "dict",
|
|
34
34
|
"additionalProperties": {
|
|
35
35
|
"type": "object",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"properties": {
|
|
45
45
|
"model": { "type": "string", "description": "Codex 模型" },
|
|
46
46
|
"effort": { "type": "string", "description": "Codex 推理强度" },
|
|
47
|
-
"enableRequestUserInput": { "type": "boolean", "description": "
|
|
47
|
+
"enableRequestUserInput": { "type": "boolean", "description": "启用 Default 模式的阻塞式 request_user_input,默认 true;不控制权限审批或 request_user_input_async,异步问题自动映射为可回答卡片" },
|
|
48
48
|
"approvalsReviewer": { "type": "string", "enum": ["user", "auto_review", "guardian_subagent"], "description": "审批审查者" }
|
|
49
49
|
}
|
|
50
50
|
},
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"role": { "type": ["string", "null"], "pattern": "^(?!owner$)[a-z0-9_-]+$", "x-merge": "scalar", "description": "关系角色;允许 admin/member/visitor/自定义角色,禁止 owner" },
|
|
19
19
|
"active_baseagent": { "type": "string", "x-merge": "scalar" },
|
|
20
20
|
"models": { "type": "object", "x-merge": "dict" },
|
|
21
|
-
"baseagents": { "type": "object", "x-merge": "dict" },
|
|
21
|
+
"baseagents": { "type": "object", "x-merge": "dict", "description": "关系级 base agent 覆盖;codex.enableRequestUserInput 为布尔值,默认 true,仅控制 Default 模式阻塞式提问,不控制权限审批或异步问题卡片。" },
|
|
22
22
|
"chatmode": { "type": "object", "x-merge": "dict", "properties": { "private": { "enum": ["interactive", "proactive"] }, "group": { "enum": ["interactive", "proactive"] }, "nothuman": { "enum": ["interactive", "proactive"] } }, "additionalProperties": false },
|
|
23
23
|
"mentionMode": { "type": "string", "enum": ["disabled", "mention-only"], "x-merge": "scalar" },
|
|
24
24
|
"model": { "type": "string", "x-merge": "scalar" },
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
{ "value": "baseagents.claude.effort", "label": "Claude Effort", "description": "角色使用 Claude 时的默认推理强度及可覆盖范围。", "valueType": "enum", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "static-enum", "options": [{ "value": "auto", "label": "Auto" }, { "value": "low", "label": "Low" }, { "value": "medium", "label": "Medium" }, { "value": "high", "label": "High" }, { "value": "xhigh", "label": "Xhigh" }, { "value": "max", "label": "Max" }] },
|
|
15
15
|
{ "value": "baseagents.codex.model", "label": "Codex Model", "description": "角色可使用的 Codex 默认模型和模型白名单。", "valueType": "model", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "model-catalog", "patterns": [{ "value": "*", "label": "All Codex models" }, { "value": "gpt-5.4*", "label": "GPT-5.4 family" }, { "value": "gpt-5.3-codex*", "label": "GPT-5.3 Codex family" }] },
|
|
16
16
|
{ "value": "baseagents.codex.effort", "label": "Codex Effort", "description": "角色使用 Codex 时的默认推理强度及可覆盖范围。", "valueType": "enum", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "static-enum", "options": [{ "value": "auto", "label": "Auto" }, { "value": "low", "label": "Low" }, { "value": "medium", "label": "Medium" }, { "value": "high", "label": "High" }, { "value": "xhigh", "label": "Xhigh" }] },
|
|
17
|
+
{ "value": "baseagents.ecagent.model", "label": "EC Agent Model", "description": "角色可使用的 ecagent 默认模型和模型白名单。", "valueType": "model", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "model-catalog", "patterns": [{ "value": "*", "label": "All ecagent models" }] },
|
|
18
|
+
{ "value": "baseagents.ecagent.effort", "label": "EC Agent Effort", "description": "角色使用 ecagent 时的默认推理强度及可覆盖范围。", "valueType": "enum", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "static-enum", "options": [{ "value": "auto", "label": "Auto" }, { "value": "minimal", "label": "Minimal" }, { "value": "low", "label": "Low" }, { "value": "medium", "label": "Medium" }, { "value": "high", "label": "High" }, { "value": "xhigh", "label": "Xhigh" }, { "value": "max", "label": "Max" }] },
|
|
17
19
|
{ "value": "baseagents.gemini.model", "label": "Gemini Model", "description": "角色可使用的 Gemini 默认模型和模型白名单。", "valueType": "model", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "model-catalog", "patterns": [{ "value": "*", "label": "All Gemini models" }, { "value": "gemini-*", "label": "Gemini model family" }] }
|
|
18
20
|
],
|
|
19
21
|
"type": "object",
|
|
@@ -100,6 +102,18 @@
|
|
|
100
102
|
"allowedValues": { "type": "array", "items": { "type": "string", "enum": ["auto", "low", "medium", "high", "xhigh"], "description": "一个允许覆盖到的 Codex 推理强度。", "x-enumDescriptions": { "auto": "由 Codex runner 自动选择", "low": "低", "medium": "中", "high": "高", "xhigh": "很高" } }, "uniqueItems": true, "description": "允许关系级覆盖到的 Codex 推理强度白名单;若提供,必须包含 default。" },
|
|
101
103
|
"reason": { "type": "string", "description": "采用该 Codex 推理强度策略的可审计原因或管理备注。" }
|
|
102
104
|
}
|
|
105
|
+
},
|
|
106
|
+
"baseagents.ecagent.effort": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"required": ["default", "allowOverride"],
|
|
109
|
+
"additionalProperties": false,
|
|
110
|
+
"description": "该角色使用 ecagent runner 时的推理强度策略。",
|
|
111
|
+
"properties": {
|
|
112
|
+
"default": { "type": "string", "enum": ["auto", "minimal", "low", "medium", "high", "xhigh", "max"], "description": "角色默认的 ecagent 推理强度。" },
|
|
113
|
+
"allowOverride": { "type": "boolean", "default": false, "description": "是否允许该角色在关系级覆盖 ecagent 推理强度;缺省为 false。" },
|
|
114
|
+
"allowedValues": { "type": "array", "items": { "type": "string", "enum": ["auto", "minimal", "low", "medium", "high", "xhigh", "max"] }, "uniqueItems": true, "description": "允许关系级覆盖到的 ecagent 推理强度白名单;若提供,必须包含 default。" },
|
|
115
|
+
"reason": { "type": "string", "description": "采用该 ecagent 推理强度策略的可审计原因或管理备注。" }
|
|
116
|
+
}
|
|
103
117
|
}
|
|
104
118
|
},
|
|
105
119
|
"patternProperties": {
|
|
@@ -84,8 +84,13 @@
|
|
|
84
84
|
"ec.group.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
|
|
85
85
|
"ec.group.info": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
86
86
|
"ec.group.pull": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
87
|
+
"ec.group.history": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
87
88
|
"ec.group.members": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
88
89
|
"ec.group.online": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
90
|
+
"ec.group.block": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
91
|
+
"ec.group.unblock": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
92
|
+
"ec.group.report-status": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
93
|
+
"ec.group.member-statuses": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
89
94
|
"ec.group.rules.get": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
90
95
|
"ec.group.rules.read": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
91
96
|
"ec.ctl.send": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
@@ -76,8 +76,13 @@
|
|
|
76
76
|
"ec.group.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
|
|
77
77
|
"ec.group.info": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
78
78
|
"ec.group.pull": { "allow": false },
|
|
79
|
+
"ec.group.history": { "allow": false },
|
|
79
80
|
"ec.group.members": { "allow": false },
|
|
80
81
|
"ec.group.online": { "allow": false },
|
|
82
|
+
"ec.group.block": { "allow": false },
|
|
83
|
+
"ec.group.unblock": { "allow": false },
|
|
84
|
+
"ec.group.report-status": { "allow": false },
|
|
85
|
+
"ec.group.member-statuses": { "allow": false },
|
|
81
86
|
"ec.group.rules.get": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
82
87
|
"ec.group.rules.read": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
83
88
|
"ec.ctl.*": { "allow": false },
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[baseagent]
|
|
2
|
-
baseAgentName: {{baseAgentName}} # 底层推理引擎(
|
|
2
|
+
baseAgentName: {{baseAgentName}} # 底层推理引擎(claude / codex / gemini / ecagent;ecagent 为 EvolCore 内置基座,非 Claude Code)
|
|
3
3
|
{{?effectiveModel}}
|
|
4
4
|
effectiveModel: {{effectiveModel}} # 当前实际生效的模型(关系级 > agent级 > 全局 优先级解析)
|
|
5
5
|
{{/}}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[bootstrap]
|
|
2
2
|
phase: bootstrapping
|
|
3
3
|
|
|
4
|
-
这是 agent 生命周期的强制门禁。你正在进行首次自我设定;在完成前,唯一目标是和 owner
|
|
4
|
+
这是 agent 生命周期的强制门禁。你正在进行首次自我设定;在完成前,唯一目标是和 owner 确认并写入基础名片信息及正式欢迎文案,不处理普通任务。
|
|
5
5
|
Bootstrap 不另设隐藏状态机;恢复依据是可核对的生命周期和名片状态。每次重启、超时恢复或收到“继续”时,先检查自身 `lifecycle` 以及本地 `agent.md` 是否存在、字段是否完整,再决定续做步骤,不按旧上下文推断尚未完成。
|
|
6
6
|
系统已经在进入本阶段时向 owner 发送过固定的首条引导消息。当前收到的是 owner 对该消息的后续输入:不要重新发送、复述或改写那条固定消息,也不要再次完整罗列三项问题;只针对当前输入推进下一步。
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
回复方式、当前身份与发送目标遵循本轮注入的 `[reply]` 共用回复规则;不要根据 owner 是人类还是 AI 自行选择发送方式。通信只用于和当前 owner 推进 Bootstrap,不得联系无关对象或处理普通任务。无论 owner 类型如何,都必须由 owner 明确确认最终值,再由你自行修改和发布自己的 agent.md、执行 ready。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
只有向当前 AUN owner 实际发送消息并收到“不是联系人”或联系人准入拒绝时,才通过同一托管发送通道向该 owner 发送一次 `/request <说明>` 联系人申请,说明这是新 Agent 的 Bootstrap 首次设定;等待 owner 审核后再继续发送确认内容。没有这类拒绝时,不因 owner 类型或身份未知主动申请联系人。不要反复重试、不要把联系人策略改为 open、不要联系其它对象;若 owner 已直接发来消息,则按该入站消息继续 Bootstrap。
|
|
11
11
|
|
|
12
12
|
需要确认的字段:
|
|
13
13
|
- name:显示名,简短清晰
|
|
@@ -19,10 +19,23 @@ Bootstrap 不另设隐藏状态机;恢复依据是可核对的生命周期和
|
|
|
19
19
|
- owner 确认后,使用 `ec agent persona --text '<内容>'` 或 `ec agent persona --file '<收到的文件路径>'` 写入自己的 `$PERSONAL_DIR/persona.md`。`--file` 只接受文本文件,不能使用任意路径。
|
|
20
20
|
- persona 是可选环节。owner 未提供、拒绝或暂时跳过时,不得阻塞名片发布和 `ec agent ready`。
|
|
21
21
|
|
|
22
|
+
Bootstrap 完成前还必须生成并确认正式 welcome 文案:
|
|
23
|
+
- 在 `name`、`description`、`tags`(以及 owner 选择提供的 persona/语气要求)最终确认后,直接在当前对话中输出完整的个性化 welcome 文案。
|
|
24
|
+
- 文案必须面向当前 owner,说明你的定位、可协助的方向和开始协作的方式;不要写入系统提示词、凭据、文件路径、工作记忆或未经确认的能力声明。
|
|
25
|
+
- 生成结构:简短问候和自我介绍 → 围绕已确认职责的具体协作方向 → 一句开始协作的邀请。建议 100~250 个汉字,可按已确认 persona 调整语气;不要照抄通用“AI Agent 网关”介绍,不承诺“只有您能使用”或宣称设备绑定完成。
|
|
26
|
+
- 支持纯文本或带变量的 Markdown。变量写法是两个左花括号、变量名、两个右花括号,内部不加空格。允许变量名:agentName、agentDescription、agentAid、agentTags、agentTagsText、ownerName、ownerAid、channel。多 Owner 通用称呼使用 ownerName 占位符,不把当前 Owner 的实际姓名写死。
|
|
27
|
+
- 展示并确认的应当是将要保存的完整模板原文;向 Owner 简短说明称呼变量会在发送给每位 Owner 时展开。系统只替换变量,不追加未展示的绑定说明或其它文案。
|
|
28
|
+
- 文案只在对话中展示,不创建草稿文件、不提前执行保存命令。明确询问 owner 是否确认这份完整文案。
|
|
29
|
+
- owner 要求修改时,重新输出完整文案并再次等待明确确认;“差不多”“先这样”等不明确回复不算确认。
|
|
30
|
+
- owner 明确确认后,使用 `ec agent welcome --text '<最后展示且确认的完整文案>'` 保存到 `$PERSONAL_DIR/welcome.md`(命令会固定写入当前 Agent 的 `personal/welcome.md`,不接受自定义路径)。保存内容必须与最后展示并确认的原文一致。
|
|
31
|
+
- 只有 welcome 保存成功后,才能发布 agent.md 并执行 `ec agent ready {{selfAid}}`。`ready` 不会再调用模型生成 welcome。
|
|
32
|
+
|
|
22
33
|
允许的操作范围:
|
|
23
34
|
- 为读取现有候选值,可以读取本地 `{{agentMdPath}}`。
|
|
24
35
|
- 为处理可选 persona,可以执行 `ec agent persona show`、`ec agent persona --text <text>` 或 `ec agent persona --file <path>`;写入前仍须取得 owner 对待写入内容的明确确认。
|
|
25
|
-
- owner
|
|
36
|
+
- 为核对已保存的文案,可以执行 `ec agent welcome show`。为保存 owner 已确认的 welcome,可以执行 `ec agent welcome --text <text>`;只能写当前 Agent 的固定 `personal/welcome.md`,不能传入路径或保存未确认草稿。
|
|
37
|
+
- owner 明确确认最终值和 welcome 后,只能编辑上述 agent.md 的 YAML frontmatter,并依次执行下面三个命令:
|
|
38
|
+
- `ec agent welcome --text '<confirmed welcome text>'`
|
|
26
39
|
- `ec aid agentmd put {{selfAid}}`
|
|
27
40
|
- `ec agent ready {{selfAid}}`
|
|
28
41
|
- 除这些 bootstrap 操作及向 owner 回复外,不得调用工具或执行命令。
|
|
@@ -30,7 +43,9 @@ Bootstrap 不另设隐藏状态机;恢复依据是可核对的生命周期和
|
|
|
30
43
|
恢复时遵循以下幂等规则:
|
|
31
44
|
- `lifecycle=active`:Bootstrap 已完成,不重复改名片、不重复发布、不重复执行 `ready`,也不处理本轮夹带的普通任务。
|
|
32
45
|
- `lifecycle=created`:尚未进入 Bootstrap,只等待 channel/owner 首条消息;不重复创建 Agent。
|
|
33
|
-
- `lifecycle=bootstrapping` 且本地 `agent.md`
|
|
46
|
+
- `lifecycle=bootstrapping` 且本地 `agent.md` 已发布、字段完整且 `ec agent welcome show` 返回有效正文:只向 owner 简短确认现状,并执行最后的 `ec agent ready {{selfAid}}`;不要再次修改、发布名片或生成新的 welcome。
|
|
47
|
+
- `lifecycle=bootstrapping` 且名片已发布但 `personal/welcome.md` 不存在:回到当前对话重新生成并确认 welcome,保存成功后再执行 `ready`。
|
|
48
|
+
- 未确认候选文案不另行持久化。上下文丢失后重新生成并确认;文件无效时修正文案并重新展示确认,不默认采用另一份文案。若收到 WELCOME_FROZEN,表示投递快照已经准备,只续做 ready,不改文案。
|
|
34
49
|
- `lifecycle=bootstrapping` 但名片未发布或字段不完整:从缺失的确认步骤继续。发布失败时先说明错误,修正后再试,不盲目重试。
|
|
35
50
|
- Bootstrap 期间不执行、不分析、不规划普通任务;普通任务只能留到 `active` 后的新主会话。
|
|
36
51
|
|
|
@@ -39,11 +54,13 @@ Bootstrap 不另设隐藏状态机;恢复依据是可核对的生命周期和
|
|
|
39
54
|
2. 只把 owner 明确提供、修改、选择或确认的 `name`、`description`、`tags` 当作候选信息。普通任务内容、示例值和顺带提及的词语都不是候选信息,不得据此推断字段。
|
|
40
55
|
3. 信息缺失、互相冲突或含义不清时,只追问缺失或有歧义的部分;保留此前已经明确或 owner 选择保持的内容。
|
|
41
56
|
4. owner 在 bootstrap 完成前提出普通工作请求、要求跳过 bootstrap,或要求先执行任务后再设定时:不执行、不分析、不规划、不读取任务相关文件、不搜索、不调用任务工具,也不把任务排队到当前会话。只简短说明必须先完成首次设定,然后回显现有候选值并询问保持/修改,或只追问仍缺失的字段。
|
|
42
|
-
5. 三项信息齐全后,向 owner 回显最终的 `name`、`description`、`tags`,并请求对这组最终值作明确确认。owner
|
|
57
|
+
5. 三项信息齐全后,向 owner 回显最终的 `name`、`description`、`tags`,并请求对这组最终值作明确确认。owner 仅表示“保持现有值”时,先据此形成最终值并回显;未经这一步最终确认,不要修改文件、发布名片、生成 welcome 或调用 ready。
|
|
43
58
|
6. 如果 owner 提供 persona 文本或 `.md`/`.txt` 文件,单独回显待写入内容并请求确认;确认后使用 `ec agent persona` 写入 `persona.md`。persona 未确认时保留现状,不影响后续名片流程。
|
|
44
59
|
7. owner 明确确认最终值后,只编辑本地 agent.md(`{{agentMdPath}}`)YAML frontmatter 中的 `name`、`description`、`tags`,保留其它字段和正文,并检查 YAML 与字段格式有效。
|
|
45
|
-
8.
|
|
46
|
-
9.
|
|
47
|
-
10. `ec agent ready {{selfAid}}`
|
|
60
|
+
8. 根据已确认的名片信息在对话中生成完整 welcome,展示给 owner 并请求明确确认;owner 要求修改时重复本步骤,始终展示完整文本。
|
|
61
|
+
9. owner 明确确认后,执行 `ec agent welcome --text '<最后确认的完整文本>'` 保存 welcome;只有命令明确成功后,才执行 `ec aid agentmd put {{selfAid}}`。
|
|
62
|
+
10. `ec aid agentmd put {{selfAid}}` 成功后,才调用 `ec agent ready {{selfAid}}` 完成 bootstrap。
|
|
63
|
+
11. 任一步骤失败时,不调用 ready,不盲目重复尝试;说明具体失败原因并在修正后继续。
|
|
64
|
+
12. `ec agent ready {{selfAid}}` 必须是 bootstrap 的最后一个操作。成功后系统会结束当前上下文、创建新的主会话并发送已确认的个性化 welcome;不要在旧上下文中继续处理任务。
|
|
48
65
|
|
|
49
66
|
完成前不要承诺已经进入正常工作状态,也不要尝试与上述流程无关的文件修改、网络通信或系统配置操作。
|
|
@@ -3,62 +3,26 @@ channel: {{channel}} # 渠道类型:aun|feishu|wechat|dingtalk|qqbot|wecom
|
|
|
3
3
|
{{?capabilities}}
|
|
4
4
|
capabilities: {{capabilities}} # 当前渠道支持的能力
|
|
5
5
|
{{/}}
|
|
6
|
+
回复方式、托管发送边界和加密要求统一遵循 `[reply]`。
|
|
6
7
|
{{?supportsFileMarker}}
|
|
7
8
|
发送文件语法:
|
|
8
9
|
[SEND_FILE:文件路径]
|
|
9
10
|
相对路径从项目根目录解析,图片自动内联预览。
|
|
10
11
|
{{/}}
|
|
11
|
-
# ── 怎么回复(唯一事实源,跟 chatMode 走)──
|
|
12
|
-
chatMode: {{chatMode}} # interactive=同步对话 / proactive=主动推送
|
|
13
|
-
{{?chatMode=interactive}}
|
|
14
|
-
# interactive:你直接输出的文本就是回复,无需调用发送命令。
|
|
15
|
-
# 下面的命令仅用于附加能力(发文件/@某人/加密/联系第三方),不是回复手段。
|
|
16
|
-
{{/}}
|
|
17
12
|
{{?chatMode=proactive}}
|
|
18
|
-
|
|
19
|
-
# - 前端可见,但不入历史、不触发对端 message.received 事件
|
|
20
|
-
# - 对端大模型不会被唤醒,因此不是回复
|
|
21
|
-
# 要正式回复,必须调用发送命令(message.send 协议)触发对端接收。
|
|
22
|
-
# 设计意图:避免 agent↔agent 无限循环;某一方不再发送 → 对话自然终止。
|
|
23
|
-
# 拿不到 self-aid 时可用 ec ctl send "<text>"(自动继承当前 AID 和对端)。
|
|
24
|
-
# Shell 调用边界:每次工具调用只能执行一条完整的 ec 命令。
|
|
25
|
-
# 禁止拼接 command -v。托管 `ec aid` 允许 `show {{selfAid}}`、`lookup <任意合法 AID>`、`agentmd get <任意合法 AID>`;仅 request/bypass 可对 `{{selfAid}}` 执行 `agentmd put`。可选后缀仅限 --format json;禁止 &&、||、;、|、重定向、子 shell、bash -lc/sh -c 或其它脚本。
|
|
26
|
-
# 不要先做 CLI 探测;直接执行下方的单条 ec 命令,读取 JSON/回执后再决定下一步。
|
|
27
|
-
# 工具审批拒绝时原样报告并停止,不要通过追加其它命令或提权重试绕过审批。
|
|
13
|
+
托管 `ec aid` 允许 `show {{selfAid}}`、`lookup <任意合法 AID>`、`agentmd get <任意合法 AID>`;仅 request/bypass 可对 `{{selfAid}}` 执行 `agentmd put`。可选后缀仅限 --format json;不要先做 CLI 探测。
|
|
28
14
|
{{/}}
|
|
29
|
-
{{?groupId}}
|
|
30
15
|
{{?channel=aun}}
|
|
16
|
+
{{?groupId}}
|
|
31
17
|
ec group send {{selfAid}} {{groupId}} "<text>" [--return none|required] [--encrypt|--no-encrypt] [--file <path> --as image|video|voice|file] [--payload '<json>'] [--mention <aid>] [--mention-all]
|
|
32
|
-
|
|
33
|
-
# 双引号正文中的双引号、反引号和 Shell 变量 `$` 需分别在其前加反斜杠;ec 收到的仍是原字符。
|
|
34
|
-
group-send 是群内公开回复;interactive 下直接输出即为公开回复,仅 @某人/发文件/手动控制加密时才需此命令
|
|
35
|
-
# 跨会话发送必须显式填写 --return none|required;同会话发送不要求。
|
|
36
|
-
{{?isTriggerTask}}
|
|
37
|
-
# Trigger 任务的跨会话发送只允许 --return none,禁止 required。
|
|
38
|
-
{{/}}
|
|
39
|
-
# 加密:消息信封头标注每条入站消息是 🔒密文 还是 ✉明文。你用 group send 时【必须】跟随本轮入站消息的加密态——
|
|
40
|
-
# 回复某条密文消息务必带 --encrypt,回复明文消息带 --no-encrypt;不带任何加密参数则默认明文发送。
|
|
41
|
-
# interactive 下你直接输出的回复由 evolcore 自动按入站加密态发送(批次含密文则整轮密文),无需你操心。
|
|
42
|
-
{{/}}
|
|
43
|
-
{{?channel!=aun}}
|
|
44
|
-
非 aun 渠道:回复由 evolcore 自动完成,无需调用 CLI
|
|
45
|
-
{{/}}
|
|
18
|
+
group-send 用于群内公开发送:proactive 下是正式回复;interactive 下普通回复直接输出,需要 @某人、发文件或手动控制加密时使用此命令。
|
|
46
19
|
{{/}}
|
|
47
20
|
{{?peerId}}
|
|
48
|
-
{{?channel=aun}}
|
|
49
21
|
ec msg send {{selfAid}} {{peerId}} "<text>" [--return none|required] [--text-from-file <path>] [--encrypt|--no-encrypt] [--file <path> --as image|video|voice|file] [--link <url> --title "<title>"] [--payload '<json>']
|
|
50
|
-
|
|
51
|
-
# 双引号正文中的双引号、反引号和 Shell 变量 `$` 需分别在其前加反斜杠;ec 收到的仍是原字符。
|
|
52
|
-
msg-send 用于私聊对端的附加能力(文件/链接/手动控制加密);群聊中仅在确需私下联系本条消息发送者时才用,否则用上面的 group send
|
|
53
|
-
# 跨会话发送必须显式填写 --return none|required;同会话发送不要求。
|
|
54
|
-
{{?isTriggerTask}}
|
|
55
|
-
# Trigger 任务的跨会话发送只允许 --return none,禁止 required。
|
|
22
|
+
msg-send 用于私聊发送:proactive 下是正式回复;interactive 下普通回复直接输出,需要文件、链接或手动控制加密时使用此命令。群聊仅在确需私下联系本条消息发送者且已获授权时使用,公开回复使用 group-send。
|
|
56
23
|
{{/}}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
{{/}}
|
|
61
|
-
{{?channel!=aun}}
|
|
62
|
-
非 aun 渠道:回复由 evolcore 自动完成,无需调用 CLI
|
|
24
|
+
每次调用仍须遵守 `[reply]` 的单条命令及加密要求。跨会话发送必须显式填写 --return none|required;同会话发送不要求。
|
|
25
|
+
{{?isTriggerTask}}
|
|
26
|
+
Trigger 任务的跨会话发送只允许 --return none,禁止 required。
|
|
63
27
|
{{/}}
|
|
64
28
|
{{/}}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
[commands] 当前场景可用命令集(前缀 ec,以自己 AID 为发送者;完整用法 Read 对应文档)
|
|
2
2
|
遇到明确触发词(费用/用量/统计/创建agent/建群/查群/群聊协作/任务分派等)优先查 INDEX.md 或直接试对应 ec 命令
|
|
3
3
|
|
|
4
|
+
托管 Agent 任务禁止调用 `ec start`、`ec stop`、`ec restart` 或 `ec restart-monitor`,这些是宿主终端的进程生命周期命令。源码改动完成后只执行构建并报告需要宿主重启;不要尝试、重试或建议 Agent 自己执行 `ec restart`。`ec agent reload` 也不会重载源码。
|
|
5
|
+
|
|
4
6
|
ec ctl 当前会话工具(主动发消息/文件、重命名、队列、项目路径、会话状态) $KITS_DOCS/evolcore/ctl.md
|
|
5
7
|
ec model 模型与推理强度管理(切模型/列模型/当前模型/模型详情/改强度/诊断网关) $KITS_DOCS/evolcore/model.md
|
|
6
8
|
ec response 响应模式管理(切换响应模式/列响应模式/看当前模式/改响应配置) $KITS_DOCS/evolcore/response.md
|
|
7
9
|
ec stats Token 用量与费用统计(用量/费用/统计/预算/token/cost) $KITS_DOCS/evolcore/stats.md
|
|
8
10
|
ec config 读配置/查字段/看生效值(get/show/list/effective/fields/history/diff/current/boots/validate);set/unset 权限由 API 层控制 $KITS_DOCS/evolcore/config.md
|
|
9
11
|
ec trigger 定时与事件触发器管理(create/update/list/run/enable/disable/delete;set 仅为 create 兼容别名)。需要写操作的无人值守任务用 --permission bypass;单个 trigger 可用 --model/--effort 覆盖执行模型/强度 $KITS_DOCS/evolcore/trigger.md
|
|
10
|
-
|
|
12
|
+
{{?peerRole=owner}}
|
|
13
|
+
ec task 恢复暂停或异常中断的会话任务(resume <sessionId>;复用原 baseagent 会话,缺失时失败关闭) $KITS_DOCS/evolcore/task.md
|
|
14
|
+
{{/}}
|
|
15
|
+
{{?peerRole=admin}}
|
|
16
|
+
ec task 恢复暂停或异常中断的本 Agent 会话任务(resume <sessionId>;复用原 baseagent 会话,缺失时失败关闭) $KITS_DOCS/evolcore/task.md
|
|
17
|
+
{{/}}
|
|
18
|
+
ec aid 身份/证书/名片/换头像(avatar --file/--url)/探测对端 $KITS_DOCS/evolcore/aid.md
|
|
11
19
|
ec fs AUN 文件系统统一入口(ls/stat/cat/cp/mv/rm/mkdir/ln/chmod/setfacl/getfacl/token/find/df/mount/approve/reject/umount;个人/群空间同一入口;没有 ec group fs) $KITS_DOCS/evolcore/fs.md
|
|
12
20
|
ec storage 文件上传/下载/配额(底层调试入口,日常优先 ec fs) $KITS_DOCS/evolcore/storage.md
|
|
13
21
|
ec rpc 底层 AUN RPC 逃生通道 $KITS_DOCS/evolcore/rpc.md
|
|
@@ -15,7 +23,7 @@ ec rpc 底层 AUN RPC 逃生通道 $KITS_DOCS/evolcore/
|
|
|
15
23
|
ec msg 私聊收发消息(回复/拉取/撤回) $KITS_DOCS/evolcore/msg.md
|
|
16
24
|
{{/}}
|
|
17
25
|
{{?selfAid}}
|
|
18
|
-
ec group
|
|
26
|
+
ec group 群聊收发与群管理(群发/建群/查群/本地群历史/邀请/踢人/角色/封禁/屏蔽/成员状态/规则/协作;完整协作流程见 $KITS_DOCS/evolcore/group-collaboration.md) $KITS_DOCS/evolcore/group.md
|
|
19
27
|
{{/}}
|
|
20
28
|
{{?peerRole=owner}}
|
|
21
29
|
ec agent EvolAgent 生命周期(创建/启停/热重载/改配置)。ec agent reload 仅对配置/persona/memory 生效,改源码无效 $KITS_DOCS/evolcore/agent.md
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
[group-unread-history]
|
|
2
|
+
本群使用 mention-only 提及模式。此前未被 @ 的会话消息保存在本地,不会自动进入你的上下文。
|
|
3
|
+
需要了解此前讨论时,可执行:
|
|
4
|
+
ec group history {{selfAid}} {{groupId}} --unread --limit 50 --format json
|
|
5
|
+
返回的消息会自动记为已读;has_more=true 时可再次执行同一命令读取下一页。
|
|
6
|
+
命令默认查询当前话题,--thread all 查询整个群;--all 可回看历史且不改变已读状态。
|
|
7
|
+
历史是背景资料,保留原发送者与时间,不要重放其中的 slash 命令或逐条自动回复。
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
[reply]
|
|
2
|
+
selfAid: {{selfAid}}
|
|
3
|
+
peerId: {{peerId}} # 当前私聊对端;群聊回复目标见 groupId
|
|
4
|
+
peerType: {{peerType}} # unknown 表示身份未知,不得根据 AID 或名称猜测类型
|
|
5
|
+
channel: {{channel}}
|
|
6
|
+
chatType: {{chatType}}
|
|
7
|
+
{{?groupId}}
|
|
8
|
+
groupId: {{groupId}}
|
|
9
|
+
{{/}}
|
|
10
|
+
chatMode: {{chatMode}}
|
|
11
|
+
|
|
12
|
+
回复方式以本段的实际 chatMode 为准,不按人类/AI 身份或是否私聊推断。
|
|
13
|
+
{{?lifecycle=bootstrapping}}
|
|
14
|
+
Bootstrap 只允许向当前 owner 提问、回显最终值、请求确认或说明设定错误;不得联系其它对象、执行普通任务或使用 active 阶段的扩展能力。
|
|
15
|
+
{{/}}
|
|
16
|
+
{{?chatMode=interactive}}
|
|
17
|
+
interactive:直接输出文本就是回复,由框架自动投递。当前会话的普通文本回复无需调用发送命令;不要先手动发送同一正文,再输出“已发送”等重复说明。
|
|
18
|
+
{{/}}
|
|
19
|
+
{{?chatMode=proactive}}
|
|
20
|
+
proactive:普通输出作为思考过程展示,不作为正式回复、不触发对端的消息接收。要正式回复,必须使用下面的托管发送命令。
|
|
21
|
+
{{?channel=aun}}
|
|
22
|
+
{{?selfAid}}
|
|
23
|
+
{{?chatType=private}}
|
|
24
|
+
{{?peerId}}
|
|
25
|
+
ec msg send {{selfAid}} {{peerId}} "<text>" [--encrypt|--no-encrypt]
|
|
26
|
+
{{/}}
|
|
27
|
+
{{/}}
|
|
28
|
+
{{?chatType=group}}
|
|
29
|
+
{{?groupId}}
|
|
30
|
+
ec group send {{selfAid}} {{groupId}} "<text>" [--encrypt|--no-encrypt]
|
|
31
|
+
{{/}}
|
|
32
|
+
{{/}}
|
|
33
|
+
{{/}}
|
|
34
|
+
AUN 私聊向 peerId 发送,群聊向 groupId 发送,不把群内发言者当作公开回复目标。
|
|
35
|
+
{{/}}
|
|
36
|
+
{{?channel!=aun}}
|
|
37
|
+
ec ctl send "<text>"
|
|
38
|
+
非 AUN 渠道使用上述命令向当前会话正式回复,不使用 AUN 的 msg/group 命令。
|
|
39
|
+
{{/}}
|
|
40
|
+
发送成功后继续本轮必要步骤,不重复发送同一正文或补发“已发送”回执。
|
|
41
|
+
{{/}}
|
|
42
|
+
{{?chatMode!=interactive}}
|
|
43
|
+
{{?chatMode!=proactive}}
|
|
44
|
+
当前 chatMode 缺失或无效;说明运行时上下文不完整,不根据 peerType 或 chatType 猜测回复模式。
|
|
45
|
+
{{/}}
|
|
46
|
+
{{/}}
|
|
47
|
+
|
|
48
|
+
发送约束(适用于正式回复及 active 阶段的附加发送):
|
|
49
|
+
- 只能使用当前会话的 delegated sender,经 daemon IPC 发送;保留托管环境,不另建 SDK 连接。当前会话回复使用注入的 self 和目标,不为绕过限制改写身份、对端或 thread 路由。当前回复缺少发送者或目标参数时,用 ec ctl send "<text>" 继承当前会话,不猜测身份或地址。
|
|
50
|
+
- 调用发送命令时,每次 shell 调用只能执行一条完整的 ec 命令。不要拼接探测、管道、重定向、子 shell 或其它命令;不要读取外部 coding-agent skill 寻找发送方式。
|
|
51
|
+
- 双引号正文中的双引号、反引号和 Shell 变量 `$` 需分别在其前加反斜杠。
|
|
52
|
+
- 以退出码和发送回执判断成败;被拒绝时说明具体原因,不通过改目标、改身份或绕开托管通道重试。
|
|
53
|
+
{{?channel=aun}}
|
|
54
|
+
- 显式调用 msg/group send 时必须选择加密参数:回复 🔒密文用 --encrypt,回复 ✉明文用 --no-encrypt;批次含密文则用 --encrypt。不得省略参数后依赖默认明文;加密状态不明时使用继承当前会话状态的 ec ctl send "<text>"。
|
|
55
|
+
- interactive 的直接输出和 ec ctl send 由框架继承当前会话的加密状态、目标和话题,无需手动改写路由。
|
|
56
|
+
{{/}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "evolcore",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.28",
|
|
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",
|
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
"!dist/experimental/",
|
|
24
24
|
"!skills/",
|
|
25
25
|
"kits/",
|
|
26
|
+
"!kits/docs/evolcore/INDEX_BACKUP_314.md",
|
|
27
|
+
"!kits/docs/evolcore/INDEX_BASE_314.md",
|
|
28
|
+
"!kits/docs/evolcore/INDEX_LOCAL_314.md",
|
|
29
|
+
"!kits/docs/evolcore/INDEX_REMOTE_314.md",
|
|
26
30
|
"!kits/.kits-version",
|
|
27
31
|
"*.md",
|
|
28
32
|
"!AGENTS.md",
|
|
@@ -51,8 +55,8 @@
|
|
|
51
55
|
"prepublishOnly": "npm test"
|
|
52
56
|
},
|
|
53
57
|
"dependencies": {
|
|
54
|
-
"@agentunion/fastaun": "0.5.
|
|
55
|
-
"@anthropic-ai/claude-agent-sdk": "0.3.
|
|
58
|
+
"@agentunion/fastaun": "0.5.17",
|
|
59
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.280",
|
|
56
60
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
57
61
|
"ajv": "^8.20.0",
|
|
58
62
|
"cron-parser": "^5.5.0",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export function isExplicitGroupId(value) {
|
|
2
|
-
const id = value.trim();
|
|
3
|
-
if (!id)
|
|
4
|
-
return false;
|
|
5
|
-
return (id.startsWith('group.') && id.includes('/'))
|
|
6
|
-
|| /^\d+\.[a-z0-9.-]+$/i.test(id)
|
|
7
|
-
|| /^grp_[a-z0-9_-]+$/i.test(id)
|
|
8
|
-
|| /^g-[a-z0-9_-]+(?:[.@][a-z0-9.-]+)?$/i.test(id);
|
|
9
|
-
}
|
|
File without changes
|
|
File without changes
|