evolcore 0.0.32 → 0.0.34
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 +61 -0
- package/bin/ec.js +3 -2
- package/bin/install-codex-managed-hooks.mjs +135 -37
- package/dist/agents/baseagent-availability.js +20 -36
- package/dist/agents/claude-runner.js +111 -15
- package/dist/agents/codex/app-server-client.js +3 -0
- package/dist/agents/codex/diagnostics.js +112 -54
- package/dist/agents/codex-runner.js +241 -63
- package/dist/agents/ecagent-runner.js +78 -33
- package/dist/agents/runner-types.js +5 -6
- package/dist/aun/aid/identity.js +1 -1
- package/dist/aun/group/operations.js +0 -1
- package/dist/aun/msg/history.js +1 -0
- package/dist/aun/msg/p2p.js +0 -1
- package/dist/aun/outbox.js +50 -1
- package/dist/channels/aun.js +44 -8
- package/dist/channels/daemon.js +261 -3
- package/dist/cli/agent-command.js +58 -24
- package/dist/cli/agent.js +1 -1
- package/dist/cli/aun-commands.js +368 -31
- package/dist/cli/contact.js +8 -2
- package/dist/cli/ctl-command.js +3 -1
- package/dist/cli/daemon-commands.js +197 -27
- package/dist/cli/debug-mode.js +154 -0
- package/dist/cli/fs-command.js +2 -1
- package/dist/cli/handoff-command.js +3 -0
- package/dist/cli/index.js +98 -67
- package/dist/cli/init.js +2 -2
- package/dist/cli/integrity-command.js +196 -0
- package/dist/cli/managed-command-guard.js +5 -0
- package/dist/cli/memory-command.js +166 -146
- package/dist/cli/queue-command.js +9 -4
- package/dist/cli/session-command.js +194 -0
- package/dist/cli/skill-command.js +78 -2
- package/dist/cli/task-context.js +1 -0
- package/dist/cli/thread-command.js +622 -0
- package/dist/cli/trigger-command.js +10 -3
- package/dist/config/builtin-roles.js +1 -0
- package/dist/config/config-field-policy.js +6 -3
- package/dist/config/config-manager.js +26 -2
- package/dist/config/contact-book-store.js +5 -0
- package/dist/config/resolved-config-op.js +3 -0
- package/dist/config/role-service.js +13 -0
- package/dist/config/runtime-env.js +16 -0
- package/dist/config-store.js +45 -0
- package/dist/core/audit/log-integrity.js +3 -1
- package/dist/core/auth/agent-delegation.js +133 -36
- package/dist/core/auth/debug-context.js +139 -0
- package/dist/core/auth/delegation-diagnostics.js +414 -0
- package/dist/core/auth/operation-authorizer.js +25 -2
- package/dist/core/auth/operation-catalog.js +49 -0
- package/dist/core/background-session/session-cleanup.js +212 -0
- package/dist/core/background-session/types.js +10 -0
- package/dist/core/bootstrap-messages.js +1 -1
- package/dist/core/bootstrap-service.js +6 -3
- package/dist/core/command/agent-control.js +18 -26
- package/dist/core/command/command-handler.js +197 -27
- package/dist/core/command/daemon-diagnostics.js +1 -0
- package/dist/core/command/memory-slash.js +6 -2
- package/dist/core/command/menu-catalog.js +51 -1
- package/dist/core/command/menu-handler.js +114 -23
- package/dist/core/command/menu-protocol.js +25 -1
- package/dist/core/command/skill-slash.js +322 -0
- package/dist/core/command/slash-gate.js +6 -4
- package/dist/core/command/slash-handler.js +195 -13
- package/dist/core/command/topic-slash.js +528 -0
- package/dist/core/daemon-bootstrap.js +4 -7
- package/dist/core/evolagent-registry.js +20 -5
- package/dist/core/file-integrity/read.js +61 -0
- package/dist/core/file-integrity/store.js +262 -0
- package/dist/core/handoff/runtime.js +5 -11
- package/dist/core/handoff/store.js +5 -0
- package/dist/core/ipc-registration.js +175 -3
- package/dist/core/memory/batch-meta.js +132 -0
- package/dist/core/memory/consolidation-context.js +83 -29
- package/dist/core/memory/consolidation-ops-records.js +49 -16
- package/dist/core/memory/consolidation-queue-format.js +21 -0
- package/dist/core/memory/consolidation.js +264 -205
- 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 +30 -15
- package/dist/core/message/aun-ipc-sender.js +161 -6
- package/dist/core/message/im-renderer.js +169 -10
- package/dist/core/message/message-bridge.js +15 -4
- package/dist/core/message/message-log.js +1 -0
- package/dist/core/message/peer-mode.js +6 -1
- package/dist/core/message/response-engine.js +929 -110
- package/dist/core/message/subtask-tool-projection.js +140 -0
- package/dist/core/model/catalog-service.js +17 -12
- package/dist/core/permission/ec-command-parser.js +217 -9
- 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 +30 -62
- package/dist/core/role/runtime-policy.js +21 -10
- package/dist/core/session/session-fs-store.js +123 -8
- package/dist/core/session/session-idle-monitor.js +249 -22
- package/dist/core/session/session-manager.js +129 -14
- package/dist/core/skill/command-parser.js +13 -0
- package/dist/core/skill/index-generator.js +21 -4
- package/dist/core/skill/startup.js +41 -0
- package/dist/core/skill/switch-resolver.js +55 -29
- package/dist/core/system-session/grants.js +40 -0
- package/dist/core/system-session/memory.js +222 -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 +125 -0
- package/dist/core/thread/index.js +1 -0
- package/dist/core/thread/ipc-operation.js +95 -0
- package/dist/core/thread/thread-context-storage.js +131 -0
- package/dist/core/thread/thread-operation.js +258 -0
- package/dist/core/thread/thread-route.js +33 -0
- package/dist/core/thread/thread-service.js +770 -0
- package/dist/core/thread/types.js +1 -0
- package/dist/eck/kit-renderer.js +7 -2
- package/dist/eck/manifest-engine.js +24 -4
- package/dist/eck/message-renderer.js +35 -0
- package/dist/index.js +19 -7
- package/dist/ipc.js +140 -50
- package/dist/paths.js +93 -0
- package/dist/response-system/engines/v1/proactive-flow.js +169 -80
- package/dist/stats/billing.js +20 -8
- package/dist/trigger/authorization.js +57 -28
- package/dist/trigger/feedback.js +13 -2
- package/dist/trigger/parser.js +70 -1
- package/dist/trigger/system-definitions.js +3 -3
- package/dist/trigger/validation.js +14 -0
- package/dist/utils/cross-platform.js +11 -2
- package/dist/utils/error-dict.json +18 -4
- package/dist/utils/error-utils.js +143 -1
- 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 +1 -1
- package/kits/docs/evolcore/INDEX.md +1 -0
- package/kits/docs/evolcore/agent-create.md +40 -28
- package/kits/docs/evolcore/agent.md +21 -6
- package/kits/docs/evolcore/config.md +2 -2
- package/kits/docs/evolcore/ctl.md +2 -2
- package/kits/docs/evolcore/ec-capabilities.md +5 -1
- package/kits/docs/evolcore/fs-architecture.md +4 -5
- package/kits/docs/evolcore/fs.md +1 -1
- package/kits/docs/evolcore/group-collaboration.md +4 -6
- package/kits/docs/evolcore/group.md +11 -12
- package/kits/docs/evolcore/memory-architecture.md +4 -5
- package/kits/docs/evolcore/memory-consolidation.md +19 -15
- package/kits/docs/evolcore/memory-tags.md +3 -1
- package/kits/docs/evolcore/memory.md +24 -12
- package/kits/docs/evolcore/menu-exec-schema-commands.md +2 -2
- package/kits/docs/evolcore/menu-protocol.md +7 -0
- package/kits/docs/evolcore/model.md +16 -0
- package/kits/docs/evolcore/msg.md +8 -11
- package/kits/docs/evolcore/thread-chain.md +267 -0
- package/kits/docs/prompt-loading-architecture.md +1 -1
- package/kits/eck_manifest.json +55 -40
- package/kits/eck_manifest.memory.json +0 -12
- package/kits/eck_message_manifest.json +169 -10
- package/kits/rules/01-overview.md +11 -0
- package/kits/rules/03-identity.md +6 -3
- package/kits/rules/05-venue.md +1 -1
- package/kits/rules/06-channel.md +1 -1
- package/kits/rules/07-memory-and-thread.md +199 -0
- 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/schemas/relation-config.schema.9.json +18 -3
- package/kits/schemas/role-config.schema.1.json +6 -6
- package/kits/schemas/single-session.schema.1.json +6 -6
- package/kits/schemas/single-session.schema.2.json +6 -6
- package/kits/schemas/single-session.schema.3.json +6 -6
- package/kits/skills/.switches.json +12 -1
- package/kits/skills/ec-group/SKILL.md +234 -0
- package/kits/skills/ec-skill/SKILL.md +10 -1
- package/kits/skills/ec-skill/scripts/cli.mjs +16 -2
- package/kits/skills/ec-skill/scripts/skill.mjs +1 -1
- package/kits/skills/scrapling-article-fetch/SKILL.md +128 -0
- package/kits/skills/scrapling-article-fetch/scripts/check_python_env.py +54 -0
- package/kits/skills/scrapling-article-fetch/scripts/render_markdown_reply.py +35 -0
- package/kits/skills/scrapling-article-fetch/scripts/run_pipeline.sh +16 -0
- package/kits/skills/scrapling-article-fetch/scripts/scrapling_fetch.py +344 -0
- package/kits/skills/thread-ops/SKILL.md +492 -0
- package/kits/skills/wechat-article-media-download/SKILL.md +65 -0
- package/kits/skills/wechat-article-media-download/scripts/download.py +163 -0
- package/kits/skills/wechat-article-reader/SKILL.md +97 -0
- package/kits/skills/wechat-article-reader/scripts/fetch.mjs +256 -0
- package/kits/templates/bootstrap-welcome.md +7 -7
- package/kits/templates/memory-consolidation/forget.md +7 -2
- package/kits/templates/memory-consolidation/generalize.md +9 -4
- package/kits/templates/memory-consolidation/notes.md +11 -11
- package/kits/templates/memory-consolidation/profile.md +8 -3
- package/kits/templates/memory-consolidation/promote.md +8 -3
- package/kits/templates/memory-consolidation/workflow.md +6 -6
- package/kits/templates/message-fragments/handoff-request-to-target.md +1 -1
- package/kits/templates/message-fragments/item.md +2 -1
- package/kits/templates/message-fragments/thread-context.md +6 -0
- package/kits/templates/message-fragments/trigger-session.md +2 -0
- package/kits/templates/message-fragments/trigger-thread-check.md +2 -0
- package/kits/templates/roles/member.json +2 -0
- package/kits/templates/roles/visitor.json +2 -0
- package/kits/templates/system-fragments/bootstrap.md +67 -72
- package/kits/templates/system-fragments/channel.md +3 -6
- package/kits/templates/system-fragments/commands.md +1 -0
- package/kits/templates/system-fragments/managed-runtime.md +15 -0
- package/kits/templates/system-fragments/memory.md +16 -9
- package/kits/templates/system-fragments/reply.md +7 -6
- package/kits/templates/system-fragments/session.md +5 -14
- package/package.json +6 -3
- package/dist/core/memory/memory-session-policy.js +0 -41
- package/dist/core/memory/memory-signature.js +0 -257
- package/kits/docs/evolcore/group-fs.md +0 -17
- package/kits/docs/venues/aun-group.md +0 -45
- package/kits/docs/venues/group.md +0 -43
package/kits/eck_manifest.json
CHANGED
|
@@ -45,46 +45,6 @@
|
|
|
45
45
|
},
|
|
46
46
|
"description": "身份层:我是谁"
|
|
47
47
|
},
|
|
48
|
-
{
|
|
49
|
-
"id": "persona",
|
|
50
|
-
"type": "file",
|
|
51
|
-
"file": "$PERSONAL_DIR/persona.md",
|
|
52
|
-
"order": 21,
|
|
53
|
-
"needsInjection": false,
|
|
54
|
-
"when": {
|
|
55
|
-
"and": [
|
|
56
|
-
{
|
|
57
|
-
"var": "chatType",
|
|
58
|
-
"neq": null
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"var": "lifecycle",
|
|
62
|
-
"eq": "active"
|
|
63
|
-
}
|
|
64
|
-
]
|
|
65
|
-
},
|
|
66
|
-
"description": "人格档案(persona.md)"
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"id": "personal-profile",
|
|
70
|
-
"type": "file",
|
|
71
|
-
"file": "$PERSONAL_DIR/personal.md",
|
|
72
|
-
"order": 21.5,
|
|
73
|
-
"needsInjection": false,
|
|
74
|
-
"when": {
|
|
75
|
-
"and": [
|
|
76
|
-
{
|
|
77
|
-
"var": "chatType",
|
|
78
|
-
"neq": null
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
"var": "lifecycle",
|
|
82
|
-
"eq": "active"
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
},
|
|
86
|
-
"description": "个人资料(personal.md)"
|
|
87
|
-
},
|
|
88
48
|
{
|
|
89
49
|
"id": "skills-builtin",
|
|
90
50
|
"type": "file",
|
|
@@ -111,6 +71,26 @@
|
|
|
111
71
|
},
|
|
112
72
|
"description": "本机技能索引"
|
|
113
73
|
},
|
|
74
|
+
{
|
|
75
|
+
"id": "persona",
|
|
76
|
+
"type": "file",
|
|
77
|
+
"file": "$PERSONAL_DIR/persona.md",
|
|
78
|
+
"order": 21,
|
|
79
|
+
"needsInjection": false,
|
|
80
|
+
"when": {
|
|
81
|
+
"and": [
|
|
82
|
+
{
|
|
83
|
+
"var": "chatType",
|
|
84
|
+
"neq": null
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"var": "lifecycle",
|
|
88
|
+
"eq": "active"
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"description": "人格档案(persona.md)"
|
|
93
|
+
},
|
|
114
94
|
{
|
|
115
95
|
"id": "relation-layer",
|
|
116
96
|
"type": "file",
|
|
@@ -346,6 +326,29 @@
|
|
|
346
326
|
},
|
|
347
327
|
"description": "客户端环境文档"
|
|
348
328
|
},
|
|
329
|
+
{
|
|
330
|
+
"id": "memory-and-thread",
|
|
331
|
+
"type": "file",
|
|
332
|
+
"file": "$KITS_RULES/07-memory-and-thread.md",
|
|
333
|
+
"order": 46,
|
|
334
|
+
"needsInjection": false,
|
|
335
|
+
"when": {
|
|
336
|
+
"and": [
|
|
337
|
+
{
|
|
338
|
+
"var": "chatType",
|
|
339
|
+
"in": [
|
|
340
|
+
"private",
|
|
341
|
+
"group"
|
|
342
|
+
]
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"var": "lifecycle",
|
|
346
|
+
"eq": "active"
|
|
347
|
+
}
|
|
348
|
+
]
|
|
349
|
+
},
|
|
350
|
+
"description": "记忆与话题:持久化上下文的两套机制(memory + thread)"
|
|
351
|
+
},
|
|
349
352
|
{
|
|
350
353
|
"id": "reply-contract",
|
|
351
354
|
"type": "file",
|
|
@@ -440,6 +443,18 @@
|
|
|
440
443
|
]
|
|
441
444
|
},
|
|
442
445
|
"description": "Base Agent 特定配置"
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"id": "managed-runtime-notice",
|
|
449
|
+
"type": "file",
|
|
450
|
+
"file": "$KITS_FRAGMENTS/managed-runtime.md",
|
|
451
|
+
"order": 80,
|
|
452
|
+
"needsInjection": true,
|
|
453
|
+
"when": {
|
|
454
|
+
"var": "lifecycle",
|
|
455
|
+
"eq": "active"
|
|
456
|
+
},
|
|
457
|
+
"description": "托管运行时提示:上下文已就绪,勿重复读取"
|
|
443
458
|
}
|
|
444
459
|
]
|
|
445
460
|
}
|
|
@@ -45,18 +45,6 @@
|
|
|
45
45
|
},
|
|
46
46
|
"description": "人格档案(判断记忆取舍时的行为准则参考)"
|
|
47
47
|
},
|
|
48
|
-
{
|
|
49
|
-
"id": "personal-profile",
|
|
50
|
-
"type": "file",
|
|
51
|
-
"file": "$PERSONAL_DIR/personal.md",
|
|
52
|
-
"order": 26,
|
|
53
|
-
"needsInjection": false,
|
|
54
|
-
"when": {
|
|
55
|
-
"var": "lifecycle",
|
|
56
|
-
"eq": "active"
|
|
57
|
-
},
|
|
58
|
-
"description": "个人资料与工作背景(判断记忆取舍时的自身定位参考)"
|
|
59
|
-
},
|
|
60
48
|
{
|
|
61
49
|
"id": "peer-profile",
|
|
62
50
|
"type": "file",
|
|
@@ -10,7 +10,18 @@
|
|
|
10
10
|
"modeType": "inject",
|
|
11
11
|
"modeName": "default",
|
|
12
12
|
"isDefault": true,
|
|
13
|
-
"when": {
|
|
13
|
+
"when": {
|
|
14
|
+
"and": [
|
|
15
|
+
{
|
|
16
|
+
"var": "isOwnerHint",
|
|
17
|
+
"eq": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"var": "renderMode_inject",
|
|
21
|
+
"eq": "default"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
14
25
|
"description": "观察者插话提示渲染(owner 信封头·default 模式)"
|
|
15
26
|
},
|
|
16
27
|
{
|
|
@@ -21,8 +32,23 @@
|
|
|
21
32
|
"needsInjection": true,
|
|
22
33
|
"modeType": "handoff",
|
|
23
34
|
"modeName": "request_to_target",
|
|
24
|
-
"when": {
|
|
25
|
-
|
|
35
|
+
"when": {
|
|
36
|
+
"and": [
|
|
37
|
+
{
|
|
38
|
+
"var": "isHandoff",
|
|
39
|
+
"eq": true
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"var": "handoffKind",
|
|
43
|
+
"eq": "request_to_target"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"var": "handoffReturnPolicy",
|
|
47
|
+
"eq": "required"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"description": "[DEPRECATED] msg send 跨会话请求回复上下文渲染(handoff 已被 Thread Context 取代,见 docs/thread-chain/handoff-deprecation.md)"
|
|
26
52
|
},
|
|
27
53
|
{
|
|
28
54
|
"id": "msg-handoff-context-to-target",
|
|
@@ -32,8 +58,23 @@
|
|
|
32
58
|
"needsInjection": true,
|
|
33
59
|
"modeType": "handoff",
|
|
34
60
|
"modeName": "request_to_target",
|
|
35
|
-
"when": {
|
|
36
|
-
|
|
61
|
+
"when": {
|
|
62
|
+
"and": [
|
|
63
|
+
{
|
|
64
|
+
"var": "isHandoff",
|
|
65
|
+
"eq": true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"var": "handoffKind",
|
|
69
|
+
"eq": "request_to_target"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"var": "handoffReturnPolicy",
|
|
73
|
+
"eq": "none"
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
},
|
|
77
|
+
"description": "[DEPRECATED] msg send 跨会话单次本地上下文渲染(handoff 已被 Thread Context 取代,见 docs/thread-chain/handoff-deprecation.md)"
|
|
37
78
|
},
|
|
38
79
|
{
|
|
39
80
|
"id": "msg-handoff-response-to-origin",
|
|
@@ -43,8 +84,80 @@
|
|
|
43
84
|
"needsInjection": true,
|
|
44
85
|
"modeType": "handoff",
|
|
45
86
|
"modeName": "response_to_origin",
|
|
46
|
-
"when": {
|
|
47
|
-
|
|
87
|
+
"when": {
|
|
88
|
+
"and": [
|
|
89
|
+
{
|
|
90
|
+
"var": "isHandoff",
|
|
91
|
+
"eq": true
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"var": "handoffKind",
|
|
95
|
+
"eq": "response_to_origin"
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
"description": "[DEPRECATED] msg send 跨会话结果回流上下文渲染(handoff 已被 Thread Context 取代,见 docs/thread-chain/handoff-deprecation.md)"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "msg-trigger-thread-check",
|
|
103
|
+
"type": "file",
|
|
104
|
+
"file": "$KITS_MESSAGE_FRAGMENTS/trigger-thread-check.md",
|
|
105
|
+
"order": 5,
|
|
106
|
+
"needsInjection": true,
|
|
107
|
+
"modeType": "trigger-thread-check",
|
|
108
|
+
"modeName": "default",
|
|
109
|
+
"isDefault": true,
|
|
110
|
+
"when": {
|
|
111
|
+
"and": [
|
|
112
|
+
{
|
|
113
|
+
"var": "isTriggerMsg",
|
|
114
|
+
"eq": true
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"var": "triggerMsgKind",
|
|
118
|
+
"eq": "thread-check"
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
"description": "跨话题复查 Trigger 专属渲染(kind=thread-check:来源话题 + 目标话题 + 周期)"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"id": "msg-trigger-session",
|
|
126
|
+
"type": "file",
|
|
127
|
+
"file": "$KITS_MESSAGE_FRAGMENTS/trigger-session.md",
|
|
128
|
+
"order": 6,
|
|
129
|
+
"needsInjection": true,
|
|
130
|
+
"modeType": "trigger-session",
|
|
131
|
+
"modeName": "default",
|
|
132
|
+
"isDefault": true,
|
|
133
|
+
"when": {
|
|
134
|
+
"and": [
|
|
135
|
+
{
|
|
136
|
+
"var": "isTriggerMsg",
|
|
137
|
+
"eq": true
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"var": "triggerMsgKind",
|
|
141
|
+
"neq": "thread-check"
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
"description": "Trigger 唤醒消息渲染(trigger 信封头 + 触发时间 + 正文)"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "msg-thread-context",
|
|
149
|
+
"type": "file",
|
|
150
|
+
"file": "$KITS_MESSAGE_FRAGMENTS/thread-context.md",
|
|
151
|
+
"order": 8,
|
|
152
|
+
"needsInjection": true,
|
|
153
|
+
"modeType": "thread-context",
|
|
154
|
+
"modeName": "default",
|
|
155
|
+
"isDefault": true,
|
|
156
|
+
"when": {
|
|
157
|
+
"var": "isThreadContext",
|
|
158
|
+
"eq": true
|
|
159
|
+
},
|
|
160
|
+
"description": "跨会话上下文注入(来源话题 + 空洞提示 + 复查 Trigger)"
|
|
48
161
|
},
|
|
49
162
|
{
|
|
50
163
|
"id": "msg-private-default",
|
|
@@ -55,7 +168,30 @@
|
|
|
55
168
|
"modeType": "private",
|
|
56
169
|
"modeName": "default",
|
|
57
170
|
"isDefault": true,
|
|
58
|
-
"when": {
|
|
171
|
+
"when": {
|
|
172
|
+
"and": [
|
|
173
|
+
{
|
|
174
|
+
"var": "isOwnerHint",
|
|
175
|
+
"neq": true
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"var": "isThreadContext",
|
|
179
|
+
"neq": true
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"var": "isTriggerMsg",
|
|
183
|
+
"neq": true
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"var": "chatType",
|
|
187
|
+
"neq": "group"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"var": "renderMode_private",
|
|
191
|
+
"eq": "default"
|
|
192
|
+
}
|
|
193
|
+
]
|
|
194
|
+
},
|
|
59
195
|
"description": "对端私聊消息渲染(default 模式;chatType 非 group 的非插话消息,含 handoff/coding/null 兜底)"
|
|
60
196
|
},
|
|
61
197
|
{
|
|
@@ -67,8 +203,31 @@
|
|
|
67
203
|
"modeType": "group",
|
|
68
204
|
"modeName": "default",
|
|
69
205
|
"isDefault": true,
|
|
70
|
-
"when": {
|
|
206
|
+
"when": {
|
|
207
|
+
"and": [
|
|
208
|
+
{
|
|
209
|
+
"var": "isOwnerHint",
|
|
210
|
+
"neq": true
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"var": "isThreadContext",
|
|
214
|
+
"neq": true
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"var": "isTriggerMsg",
|
|
218
|
+
"neq": true
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"var": "chatType",
|
|
222
|
+
"eq": "group"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"var": "renderMode_group",
|
|
226
|
+
"eq": "default"
|
|
227
|
+
}
|
|
228
|
+
]
|
|
229
|
+
},
|
|
71
230
|
"description": "群聊消息渲染(default 模式)"
|
|
72
231
|
}
|
|
73
232
|
]
|
|
74
|
-
}
|
|
233
|
+
}
|
|
@@ -148,6 +148,17 @@ manifest schema、when 条件、合并覆盖、模板渲染、运行时变量目
|
|
|
148
148
|
开启后落 `$EVOLCORE_HOME/data/eck-debug/`,文件名带时间戳:`vars-<ts>.json`、`context-<ts>.md`、
|
|
149
149
|
`fragments-<ts>.md`、`manifest-<ts>.md`(逐条消息渲染另有 `msg-render-<ts>.md`),保留 24 小时。
|
|
150
150
|
|
|
151
|
+
## 命令行的引号写法
|
|
152
|
+
|
|
153
|
+
`ec` 命令里的自由文本参数(消息正文、`--desc`、`--prompt`、`--name`、`--question`、
|
|
154
|
+
`--reason` 等)**一律用单引号包住**(`'…'`)。
|
|
155
|
+
|
|
156
|
+
用双引号的话,正文里的反引号(`` ` ``)和 `$` 会被 shell 当作命令替换或变量展开,
|
|
157
|
+
命令会被拒绝——`ec` 只接受能确认为字面量的命令。
|
|
158
|
+
|
|
159
|
+
正文里不要出现半角撇号本身(会提前闭合引号);需要时用 `ʼ`(U+02BC)或 `'`(U+FF07)代替。
|
|
160
|
+
单引号内无法转义单引号,改写措辞也是一种办法。
|
|
161
|
+
|
|
151
162
|
## 术语
|
|
152
163
|
|
|
153
164
|
- **主体(Principal)**:通信参与者——人或 agent。AUN 网络上的主体持有 AID;非 AUN 渠道(飞书/微信等)的对端以该渠道的账号标识,同样是主体
|
|
@@ -17,8 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
| 路径 | 用途 | 实际状态 |
|
|
19
19
|
|------|------|----------|
|
|
20
|
-
| `persona.md` |
|
|
21
|
-
| `personal.md` | 个人资料与工作背景 | evolcore 自动注入;当前 Agent 在 owner 权限下可直接编辑 |
|
|
20
|
+
| `persona.md` | 人格(行为规范、身份认知)+ 个人资料与工作背景 + `## Bootstrap 交接` | evolcore 自动注入;通过 `ec agent persona` 读写,owner 会话中也可用文件工具直接编辑 |
|
|
22
21
|
| `memory/MEMORY.md` | agent 级 consolidated 记忆索引 | manifest order 36 注入(受 `memory.enableAgent` 开关控制) |
|
|
23
22
|
| `memory/pending/` | 待整理记忆(note) | 主会话写入,不注入 |
|
|
24
23
|
| `memory/consolidated/` | 正式记忆文件(签名) | 整理会话产出,通过 MEMORY.md 索引按需读取 |
|
|
@@ -26,6 +25,10 @@
|
|
|
26
25
|
| `$EVOLCORE_HOME/memory/owner/<ownerAid>/MEMORY.md` | owner 级 consolidated 记忆索引 | manifest order 37 注入(受 `memory.enableOwner` 开关控制) |
|
|
27
26
|
| `skills/` 目录 | 预留 | 会被创建,但目前无人读写 |
|
|
28
27
|
|
|
28
|
+
> `persona.md` 是**唯一**的人格/资料文件(`personal.md` 已废弃并入)。整体设置用
|
|
29
|
+
> `ec agent persona --text`(**整体覆盖**);只改其中某一段(如 `## Bootstrap 交接`)
|
|
30
|
+
> 用文件工具直接编辑,**不要**用 `--text` 单写一段,否则会冲掉其它段落。
|
|
31
|
+
|
|
29
32
|
`memory/episodic.jsonl`、`memory/semantic.md`、`style.md`、`goals.md`、`journal.jsonl`
|
|
30
33
|
是早期设计稿里的约定,**源码尚未实现读写**——不要假设写了就会生效。
|
|
31
34
|
|
|
@@ -34,7 +37,7 @@
|
|
|
34
37
|
- **注入条件**是 `chatType ≠ null` 且 `lifecycle = active`(即处于正常运行阶段的渠道会话),不是"有没有注入 AID"。生命周期变量缺失时按 `active` 处理;非法生命周期仍失败关闭。本地 coding 模式也不注入。
|
|
35
38
|
- persona.md 由 evolcore **自动前置**进 system prompt,你不需要主动 Read。
|
|
36
39
|
- persona.md 缺失时**没有默认人格兜底**,只是这一段不出现;行为约束改由 `kits/rules/` + `roles/` 权限定义承担。
|
|
37
|
-
-
|
|
40
|
+
- `persona.md` 缺失时跳过注入;文件位于 `$PERSONAL_DIR/persona.md`。通过 `ec agent persona show`、`ec agent persona --text <text>` 或 `ec agent persona --file <path>` 管理,修改后按 mtime 自动刷新(必要时可 `ec agent reload`)。
|
|
38
41
|
- 改完 persona.md 后 `ec agent reload` 生效(mtime 门控缓存)。
|
|
39
42
|
|
|
40
43
|
不同 AID 可以有不同 persona——切换身份即切换人格。
|
package/kits/rules/05-venue.md
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
| 位置 | 内容 |
|
|
31
31
|
|------|------|
|
|
32
|
-
| `$KITS_DOCS/venues/` | 环境层场景文档(只读,按需加载):`private.md`
|
|
32
|
+
| `$KITS_DOCS/venues/` | 环境层场景文档(只读,按需加载):`private.md` `<channel>-<chatType>.md` `client-*.md`。群聊场景的完整指引已抽离为内置技能 `ec-group`,不再有 `venues/group.md` |
|
|
33
33
|
| `$VENUES_DIR`(`$AGENT_DIR/venues/`) | **目前是死目录**:会被创建(含 `_index/` `_trash/`),但源码里 `agentVenuesDir()` 零调用点,无人读写 |
|
|
34
34
|
|
|
35
35
|
> `venues/` 下若有 `aun#<group-aid>` 之类的实例目录,是已删除模块 `group-venue-sync.ts` 的历史残留,
|
package/kits/rules/06-channel.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
- interactive:直接输出即回复
|
|
25
25
|
- proactive:通过托管发送通道正式回复,见 `[reply]` 段(thought.put vs message.send)
|
|
26
26
|
- **附加能力与模式无关、始终需要 CLI**:发文件/图片/语音、@某人、加密、联系第三方
|
|
27
|
-
- **以自己的 AID 为发送者**;拿不到时退回 `ec ctl send
|
|
27
|
+
- **以自己的 AID 为发送者**;拿不到时退回 `ec ctl send '<text>'`
|
|
28
28
|
|
|
29
29
|
### 命令返回值
|
|
30
30
|
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# 记忆与话题:持久化上下文的两套机制
|
|
2
|
+
|
|
3
|
+
触发词:记忆/memory/话题/thread/summary/摘要/ec memory/ec thread/话题名/工作报告
|
|
4
|
+
|
|
5
|
+
这两套机制共同解决"跨会话上下文丢失"的问题,但定位不同:
|
|
6
|
+
|
|
7
|
+
| 机制 | 粒度 | 作用 | 写入时机 |
|
|
8
|
+
|------|------|------|----------|
|
|
9
|
+
| 记忆(memory) | 对端级 / agent 级 / owner 级 | 跨所有话题持久化的长期事实 | 每轮对话中识别到值得保留的事实时 |
|
|
10
|
+
| 话题摘要(summary) | 话题级 | 这个话题的进展快照,供下次激活时快速恢复 | 阶段完成时、离开话题前 |
|
|
11
|
+
|
|
12
|
+
两者不冲突,按粒度分工:对端的基本信息(偏好、角色、背景)写进记忆;这个任务线做了什么、结果如何写进话题摘要。
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 一、记忆系统(ec memory)
|
|
17
|
+
|
|
18
|
+
记忆是写给自己、跨会话持久的事实。不要依赖会话上下文来记住用户说过的事,用记忆系统写下来。
|
|
19
|
+
|
|
20
|
+
### 什么时候写记忆
|
|
21
|
+
|
|
22
|
+
**必须写的情况**:
|
|
23
|
+
- 用户告知了关于自己的事实(姓名、职业、偏好、背景)
|
|
24
|
+
- 用户明确要求"记住"某件事
|
|
25
|
+
- 发现了跨会话有用的规律(用户的工作方式、反馈模式)
|
|
26
|
+
|
|
27
|
+
**不要写的情况**:
|
|
28
|
+
- 当前话题的具体进展(写话题摘要,不写记忆)
|
|
29
|
+
- 只在本会话有意义的临时状态
|
|
30
|
+
- 代码结构、文件路径、git 历史(代码库本身就记录了)
|
|
31
|
+
|
|
32
|
+
### 记忆命令
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# 写入新 note
|
|
36
|
+
ec memory note --slug <slug> [--tags '<tag1>,<tag2>'] '<正文>'
|
|
37
|
+
|
|
38
|
+
# 修改已有 note
|
|
39
|
+
ec memory note update <slug> '<新正文>'
|
|
40
|
+
|
|
41
|
+
# 查看待整理 notes
|
|
42
|
+
ec memory note list
|
|
43
|
+
|
|
44
|
+
# 触发整理会话(将 notes 归档为正式记忆)
|
|
45
|
+
ec memory consolidate
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 默认行为
|
|
49
|
+
|
|
50
|
+
记忆写入动作默认**静默**,不打断对话。用户明确要求记住某事时,给一句简短确认("已记下"),然后继续。
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 二、话题系统(ec thread)
|
|
55
|
+
|
|
56
|
+
### 标准工作流
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# 1. 列出本机所有 agent
|
|
60
|
+
ec agent list
|
|
61
|
+
|
|
62
|
+
# 2. 列出某 agent 有话题记录的所有对端
|
|
63
|
+
ec thread peers --self <selfAid>
|
|
64
|
+
|
|
65
|
+
# 3. 列出与某对端的所有话题(默认10条/页,含消息统计和摘要)
|
|
66
|
+
ec thread list <peer> --self <selfAid>
|
|
67
|
+
|
|
68
|
+
# 4. 翻页(页脚自动给出完整翻页命令,含真实 peer 和 selfAid)
|
|
69
|
+
ec thread list <peer> --self <selfAid> --page 2 --limit 10 --sort recent
|
|
70
|
+
|
|
71
|
+
# 5. 查看某话题的历史消息
|
|
72
|
+
ec thread history <peer>/<threadId> --self <selfAid> --limit 20
|
|
73
|
+
|
|
74
|
+
# 6. 查看/更新话题摘要
|
|
75
|
+
ec thread summary show <peer>/<threadId> --self <selfAid>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 跨话题发送(联系当前对端以外的对象)
|
|
79
|
+
|
|
80
|
+
一个话题只有本端与对端两端。当前话题能直接回复的只有本话题的对端;要联系**其他**对象,必须换到与该对象的话题上发送:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# 1. 选中目标话题(没有就新建)
|
|
84
|
+
ec thread list <对方AID> --self <selfAid>
|
|
85
|
+
ec thread create <对方AID> --name "问题跟踪" --self <selfAid> # 返回 threadId
|
|
86
|
+
|
|
87
|
+
# 2. 带上话题发送;托管会话中 from/to 由话题推断,--check-every 必填
|
|
88
|
+
ec msg send '<text>' --thread <threadId> --check-every 5m
|
|
89
|
+
ec group send '<text>' --thread <threadId> --check-every 5m # 群对端
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
- 不带 `--thread` 而直接把目标换成第三方,会被运行时拒绝(只能联系当前对端/群)
|
|
93
|
+
- `--thread` 指定的话题必须已存在于本端索引,否则报 `TOPIC_NOT_FOUND`
|
|
94
|
+
- 发送成功后本端写入 thread-inbox:目标话题下次被唤醒时注入一次来源话题上下文,然后删除
|
|
95
|
+
- `--check-every` 会创建周期复查 Trigger(每次发送各新建一个,名称 `check-<目标>-from-<来源>-<唯一后缀>`),
|
|
96
|
+
需显式 `ec trigger cancel <trigger_id>` 结束;定位用返回的 `trigger_id`(`trig_…`),**不是名称**
|
|
97
|
+
|
|
98
|
+
### 话题名称维护
|
|
99
|
+
|
|
100
|
+
**何时更新名称**(主动触发,不等对端问):
|
|
101
|
+
|
|
102
|
+
| 情况 | 操作 |
|
|
103
|
+
|------|------|
|
|
104
|
+
| 名称是"话题会话"、"你好"等无意义短语 | 立即改名 |
|
|
105
|
+
| 话题方向已明确,名称仍未反映内容 | 改名 |
|
|
106
|
+
| 话题完成,名称与成果不符 | 改名 |
|
|
107
|
+
|
|
108
|
+
**命名规范**:
|
|
109
|
+
- 不超过 20 字,用动词短语描述核心动作
|
|
110
|
+
- 好的示例:`skill 索引热更新 bug 修复`、`manifest 注入与 CLAUDE.md 冗余问题`
|
|
111
|
+
- 避免:日期、轮次序号、"话题会话"等占位词
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
ec thread rename current '<新名称>' # 托管会话
|
|
115
|
+
ec thread rename <peer>/<threadId> '<新名称>' --self <selfAid> # 宿主终端
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 话题摘要维护
|
|
119
|
+
|
|
120
|
+
摘要是话题的进展快照,**daemon 不自动总结**,需要主动写入。
|
|
121
|
+
|
|
122
|
+
**用户说"总结一下话题"时**(触发词:总结一下话题 / 总结话题 / 给这个话题写个总结 / 更新一下摘要):
|
|
123
|
+
|
|
124
|
+
核心:`summary show` 打印 `coveredThroughTs`(上次覆盖到的时间戳)→ 用它作起点读增量 → 写新摘要。
|
|
125
|
+
`summary set` 自动把游标推进到当时话题最新一条。
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# 情形 A:就在当前话题里总结(对话在上下文,增量就是本轮对话,不用读历史)
|
|
129
|
+
ec thread summary show current # 1. 看上次摘要 + coveredThroughTs
|
|
130
|
+
ec thread summary set current '<摘要内容>' --name '<新标题>' # 2. 写摘要 + 标题(--name 必填)
|
|
131
|
+
# 游标自动推进;不想改名就传 --name -
|
|
132
|
+
|
|
133
|
+
# 情形 B:从别的话题/别处总结(必须读增量)
|
|
134
|
+
ec thread summary show <peer>/<threadId> # 1. 拿 coveredThroughTs
|
|
135
|
+
ec thread history <peer>/<threadId> --after <coveredThroughTs> --limit 50 # 2. 读增量
|
|
136
|
+
ec thread history <peer>/<threadId> --before <最早ts-1> --limit 50 # 3. 增量多则往回翻页
|
|
137
|
+
ec thread summary set <peer>/<threadId> '<摘要内容>' # 4. 读完再写(游标自动推进)
|
|
138
|
+
ec thread rename <peer>/<threadId> '<新名称>' # 5. 必要时改名
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**关键约束**:`summary set` 把游标设为**当时话题的最新一条**,所以跨话题总结**必须先把增量读完再写**——
|
|
142
|
+
没读完就写,游标越过未读消息,它们下次不会再返回。
|
|
143
|
+
|
|
144
|
+
**改名**:`summary set --name "<新标题>"` 一次完成写摘要 + 改名(比单独跑 `rename` 省一步)。
|
|
145
|
+
`--name` 必填;要保留原标题就显式传 `--name -`。
|
|
146
|
+
|
|
147
|
+
**首次总结**:`summary show` 没有 `coveredThroughTs`(从未总结过,或是只带 `updatedAt` 的旧记录),
|
|
148
|
+
此时从最新往回翻到你认为已覆盖的开头再写。
|
|
149
|
+
|
|
150
|
+
**必须写摘要的时机**:
|
|
151
|
+
|
|
152
|
+
| 时机 | 操作 |
|
|
153
|
+
|------|------|
|
|
154
|
+
| 用户明确说"总结一下" | 按上面的情形 A / B 序列执行 |
|
|
155
|
+
| 一个明确的阶段或任务完成 | 写入/更新摘要 |
|
|
156
|
+
| 即将跨话题路由(去问另一个 agent)之前 | 写入当前状态 |
|
|
157
|
+
| 话题状态改为 `completed` 之前 | 写入最终成果摘要 |
|
|
158
|
+
| 被唤醒时发现摘要显示"未总结" | 回顾历史后补写 |
|
|
159
|
+
|
|
160
|
+
**摘要规范**:
|
|
161
|
+
- 100 字以内,写给自己下次看,不是给对端展示
|
|
162
|
+
- 格式:`[谁]做了[什么],结果是[什么],遗留[什么]`
|
|
163
|
+
- 示例:`leiliang 要求把 skill 开关从默认开改为默认关。tl3 完成 switch-resolver.ts 修改并验证,107 个开关记录对应,daemon 已重启。`
|
|
164
|
+
- summary 是本端私有的(keyed by 本地 sessionId),只写"我下次该知道什么",不写给对端的话
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# 查看当前摘要和版本号
|
|
168
|
+
ec thread summary show current
|
|
169
|
+
|
|
170
|
+
# 写入摘要(单 agent)
|
|
171
|
+
ec thread summary set current '<摘要内容>'
|
|
172
|
+
|
|
173
|
+
# 写入摘要(多 agent 协作,用 CAS 防覆盖)
|
|
174
|
+
ec thread summary set current '<摘要内容>' --if-rev <当前rev>
|
|
175
|
+
|
|
176
|
+
# 查看摘要历史
|
|
177
|
+
ec thread summary log current
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
`ec thread list` 输出里摘要显示"未总结"就是行动信号。
|
|
181
|
+
|
|
182
|
+
### 话题状态管理
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
ec thread status current in_progress # 开始处理
|
|
186
|
+
ec thread status current completed # 任务完成
|
|
187
|
+
# 状态值:pending | in_progress | completed | archived
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
状态改为 `completed` 前,先写入最终摘要。
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 三、不需要做的事
|
|
195
|
+
|
|
196
|
+
- 不要在每条消息后都更新摘要——只在阶段完成时
|
|
197
|
+
- 不要把话题摘要当成会议纪要——简短的进展摘记即可
|
|
198
|
+
- 不要把当前话题的进展写进记忆——那是话题摘要的工作
|
|
199
|
+
- 不要因为对端没问就不更新——摘要和记忆都是给自己的
|
package/kits/schemas/_meta.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemas": {
|
|
3
3
|
"daemon": {
|
|
4
|
-
"currentVersion":
|
|
4
|
+
"currentVersion": 7
|
|
5
5
|
},
|
|
6
6
|
"defaults": {
|
|
7
7
|
"currentVersion": 5
|
|
@@ -26,6 +26,12 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"history": [
|
|
29
|
+
{
|
|
30
|
+
"schema": "daemon",
|
|
31
|
+
"version": 7,
|
|
32
|
+
"date": "2026-10-16",
|
|
33
|
+
"description": "add hot-reloadable delegated authorization diagnostic persistence switch"
|
|
34
|
+
},
|
|
29
35
|
{
|
|
30
36
|
"schema": "daemon",
|
|
31
37
|
"version": 1,
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"description": "允许同时属于 AgentOwner 与 daemonOwner 的直接私聊任务使用宿主级 fullaccess"
|
|
121
121
|
}
|
|
122
122
|
},
|
|
123
|
-
"description": "Agent
|
|
123
|
+
"description": "Agent 级宿主执行策略;已认证 EC Web 或目标 Agent 与 daemon 的双 Owner 直接 Menu 可设置,不从 defaults 或 relation 继承"
|
|
124
124
|
},
|
|
125
125
|
"access": {
|
|
126
126
|
"type": "object",
|