evolcore 0.0.25 → 0.0.27
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 +632 -565
- package/LICENSE +21 -21
- package/README.md +455 -455
- package/bin/codex-managed-acl.ps1 +203 -160
- package/bin/codex-managed-hook.mjs +208 -208
- package/bin/ec-safe-output.js +327 -327
- package/bin/ec.js +40 -29
- package/bin/install-codex-managed-hooks.mjs +582 -555
- package/dist/agents/baseagent-availability.js +68 -0
- package/dist/agents/baseagent.js +96 -46
- package/dist/agents/claude-runner.js +172 -33
- package/dist/agents/codex/app-server-client.js +76 -31
- package/dist/agents/codex/catalog.js +1 -1
- package/dist/agents/codex/diagnostics.js +34 -1
- package/dist/agents/codex-runner.js +434 -446
- package/dist/agents/ecagent-runner.js +174 -34
- package/dist/agents/gemini-runner.js +8 -7
- package/dist/agents/runner-types.js +75 -19
- package/dist/aun/aid/agentmd.js +151 -36
- package/dist/aun/aid/client.js +1 -1
- package/dist/aun/aid/control-aid.js +180 -1
- package/dist/aun/aid/identity.js +4 -4
- package/dist/aun/aid/index.js +1 -1
- package/dist/aun/aid/store.js +17 -13
- 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} +162 -39
- package/dist/aun/{menu-client.js → menu/client.js} +85 -6
- 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 +85 -19
- package/dist/aun/msg/mention-schema.js +51 -0
- package/dist/aun/msg/p2p.js +19 -9
- package/dist/aun/msg/upload.js +43 -80
- 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 +842 -318
- package/dist/channels/daemon.js +10 -6
- package/dist/cli/agent-command.js +212 -89
- package/dist/cli/agent-create.js +626 -11
- package/dist/cli/agent.js +125 -13
- package/dist/cli/aun-commands.js +487 -337
- package/dist/cli/bench.js +20 -20
- package/dist/cli/config.js +55 -33
- package/dist/cli/contact.js +72 -15
- package/dist/cli/ctl-command.js +24 -24
- package/dist/cli/daemon-commands.js +140 -63
- package/dist/cli/diag.js +31 -0
- package/dist/cli/fs-command.js +70 -70
- package/dist/cli/handoff-command.js +46 -14
- package/dist/cli/index.js +91 -79
- package/dist/cli/init.js +34 -1
- package/dist/cli/link-rules.js +21 -21
- package/dist/cli/managed-command-guard.js +5 -1
- package/dist/cli/menu-client.js +51 -32
- package/dist/cli/model.js +3 -3
- package/dist/cli/net-check.js +22 -22
- package/dist/cli/queue-command.js +31 -31
- package/dist/cli/response.js +32 -32
- package/dist/cli/restart-monitor.js +103 -42
- package/dist/cli/stats.js +51 -51
- package/dist/cli/task-command.js +59 -0
- package/dist/cli/task-context.js +97 -49
- package/dist/cli/trigger-command.js +74 -64
- package/dist/config/builtin-roles.js +11 -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 +160 -0
- package/dist/config/contact-book-store.js +1 -1
- package/dist/config/contact-book.js +1 -1
- package/dist/config/contact-operation-service.js +97 -8
- package/dist/config/peer-role-resolver.js +1 -1
- package/dist/config/resolved-config-op.js +30 -7
- package/dist/config-store.js +1 -1
- package/dist/core/agent-application-service.js +7 -1
- 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 +53 -49
- package/dist/core/auth/operation-authorizer.js +90 -7
- package/dist/core/auth/operation-catalog.js +145 -4
- package/dist/core/auth/remote-access-store.js +155 -10
- package/dist/core/bootstrap-messages.js +66 -7
- package/dist/core/bootstrap-service.js +111 -20
- 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 +159 -65
- package/dist/core/command/data-root-resolver.js +273 -0
- package/dist/core/command/diag-service.js +118 -0
- package/dist/core/command/group-menu.js +7 -2
- package/dist/core/command/menu-catalog.js +46 -7
- package/dist/core/command/menu-handler.js +392 -100
- package/dist/core/command/menu-protocol.js +45 -6
- package/dist/core/command/menu-token-store.js +41 -8
- package/dist/core/command/role-menu.js +2 -2
- package/dist/core/command/slash-gate.js +34 -4
- package/dist/core/command/slash-handler.js +123 -43
- 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/handoff/runtime.js +205 -27
- package/dist/core/handoff/store.js +193 -4
- package/dist/core/interaction-router.js +22 -8
- package/dist/core/message/im-renderer.js +146 -34
- package/dist/core/message/message-bridge.js +163 -20
- package/dist/core/message/message-log.js +5 -3
- package/dist/core/message/message-queue.js +99 -41
- package/dist/core/message/message-utils.js +1 -0
- package/dist/core/message/response-engine.js +755 -144
- package/dist/core/model/catalog-service.js +79 -49
- package/dist/core/model/context-window-suffix.js +33 -0
- package/dist/core/model/model-catalog.js +1 -1
- package/dist/core/model/model-permission.js +12 -3
- package/dist/core/permission/approval-gateway.js +36 -3
- package/dist/core/permission/ec-command-parser.js +112 -41
- package/dist/core/permission/protected-paths.js +134 -16
- package/dist/core/permission/sandbox-runtime.js +108 -17
- package/dist/core/permission/tool-error-code.js +15 -0
- package/dist/core/permission/tool-policy.js +9 -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 +34 -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 +588 -217
- package/dist/ipc.js +193 -15
- package/dist/paths.js +17 -4
- package/dist/product.js +2 -0
- package/dist/response-system/engines/v1/proactive-flow.js +59 -2
- package/dist/stats/billing.js +41 -15
- package/dist/stats/db.js +159 -159
- package/dist/stats/eck-vars.js +9 -9
- package/dist/stats/price-resolver.js +28 -10
- package/dist/stats/query.js +139 -139
- package/dist/stats/role-budget.js +6 -6
- package/dist/stats/writer.js +51 -51
- 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/cross-platform.js +30 -1
- package/dist/utils/ecweb-utils.js +1 -0
- package/dist/utils/error-dict.json +160 -160
- package/dist/utils/error-utils.js +61 -2
- package/dist/utils/evolcore-version.js +129 -0
- package/dist/utils/logger.js +26 -14
- package/dist/utils/macos-autostart.js +22 -22
- package/dist/utils/model-prices.jsonl +23 -23
- package/dist/utils/npm-ops.js +176 -35
- package/dist/utils/tool-summary.js +59 -3
- package/dist/utils/welcome.js +196 -23
- package/ecagent/LICENSE +21 -21
- package/ecagent/NOTICE +11 -11
- package/ecagent/README.md +61 -61
- package/ecagent/dist/harness/agent-harness.js +3 -0
- 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/ecagent/dist/harness/session/jsonl-storage.js +21 -2
- package/kits/docs/GUIDE.md +20 -20
- package/kits/docs/INDEX.md +60 -66
- package/kits/docs/aun/CHEATSHEET.md +19 -19
- package/kits/docs/aun/SYNC_PROTOCOL.md +15 -15
- package/kits/docs/channels/aun.md +69 -56
- package/kits/docs/channels/feishu.md +56 -56
- package/kits/docs/context-assembly.md +379 -367
- 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 +76 -71
- package/kits/docs/evolcore/agent-create.md +202 -165
- package/kits/docs/evolcore/agent.md +99 -67
- package/kits/docs/evolcore/aid.md +68 -60
- package/kits/docs/evolcore/codex-windows-sandbox.md +146 -146
- package/kits/docs/evolcore/config.md +241 -195
- package/kits/docs/evolcore/contact.md +75 -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 +244 -244
- package/kits/docs/evolcore/group-fs.md +17 -17
- package/kits/docs/evolcore/group-rules.md +251 -251
- package/kits/docs/evolcore/group.md +267 -152
- package/kits/docs/evolcore/menu-client.md +58 -34
- package/kits/docs/evolcore/model.md +50 -50
- package/kits/docs/evolcore/msg.md +169 -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 +53 -50
- package/kits/docs/evolcore/task.md +14 -0
- package/kits/docs/evolcore/trigger.md +623 -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 +269 -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 +42 -25
- package/kits/docs/venues/private.md +10 -10
- package/kits/eck_manifest.auxiliary.json +43 -43
- package/kits/eck_manifest.json +217 -190
- 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 +166 -162
- package/kits/rules/02-navigation.md +96 -96
- package/kits/rules/03-identity.md +36 -36
- package/kits/rules/04-relation.md +76 -75
- package/kits/rules/05-venue.md +60 -60
- package/kits/rules/06-channel.md +65 -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 +451 -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 +215 -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 +92 -92
- package/kits/templates/roles/member.json +101 -96
- package/kits/templates/roles/owner.json +9 -9
- package/kits/templates/roles/visitor.json +90 -85
- package/kits/templates/system-fragments/baseagent.md +14 -14
- package/kits/templates/system-fragments/bootstrap.md +53 -34
- package/kits/templates/system-fragments/channel.md +28 -64
- package/kits/templates/system-fragments/commands.md +36 -28
- package/kits/templates/system-fragments/group-unread-history.md +7 -0
- package/kits/templates/system-fragments/identity.md +13 -13
- package/kits/templates/system-fragments/relation.md +19 -19
- package/kits/templates/system-fragments/reply.md +56 -0
- package/kits/templates/system-fragments/session.md +59 -59
- package/kits/templates/system-fragments/venue.md +31 -31
- package/package.json +104 -98
- 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
|
@@ -1,68 +1,76 @@
|
|
|
1
|
-
# ec aid — AID 身份管理
|
|
2
|
-
|
|
3
|
-
管理本地 AID 身份(证书、私钥、agent.md
|
|
4
|
-
|
|
5
|
-
## 运行边界
|
|
6
|
-
|
|
7
|
-
本页列出独立终端中 `ec aid` 的完整 CLI 能力。在 EvolCore 托管 Agent 会话中,为防止会话枚举、创建、删除或切换本地身份,只允许以下精确命令:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
ec aid show <当前 self AID> [--format json]
|
|
11
|
-
ec aid lookup <任意合法 AID> [--format json]
|
|
1
|
+
# ec aid — AID 身份管理
|
|
2
|
+
|
|
3
|
+
管理本地 AID 身份(证书、私钥、agent.md 名片与头像),以及远程探测对端 AID。触发词:身份/证书/名片/头像/换头像/探测对端/创建身份。
|
|
4
|
+
|
|
5
|
+
## 运行边界
|
|
6
|
+
|
|
7
|
+
本页列出独立终端中 `ec aid` 的完整 CLI 能力。在 EvolCore 托管 Agent 会话中,为防止会话枚举、创建、删除或切换本地身份,只允许以下精确命令:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ec aid show <当前 self AID> [--format json]
|
|
11
|
+
ec aid lookup <任意合法 AID> [--format json]
|
|
12
12
|
ec aid agentmd get <任意合法 AID> [--format json]
|
|
13
13
|
# 仅 request / bypass
|
|
14
14
|
ec aid agentmd put <当前 self AID> [--format json]
|
|
15
15
|
ec aid avatar <当前 self AID> (--file <path> | --url <https-url>) [--format json]
|
|
16
|
-
```
|
|
17
|
-
|
|
16
|
+
```
|
|
17
|
+
|
|
18
18
|
仅允许不带选项的基本形式,或在末尾附加一组完整的 `--format json`;不能使用 `--aun-path`、未知选项、管道、重定向或其它命令。所有 `allowAccess=true` 的已认证角色(包括 visitor、member、admin、owner 及自定义角色)均开放 `lookup` 和 `agentmd get`,目标可以是任意合法 AID。`show` 只允许当前 self AID:owner/admin 返回完整本地身份诊断,visitor/member 及其它非管理角色返回不含私钥存在性、密钥匹配和签名能力的脱敏结果。三个查询可在所有 `permissionMode` 执行。`agentmd put` 和 `avatar` 会发布远端名片,属于写操作,仅允许针对当前 self AID 的 `request`、`bypass`,`readonly`、`auto` 和未知模式均拒绝。头像支持 PNG、JPEG、WebP,大小上限 500KB,分辨率 128–2048 像素,宽高比 0.8–1.25;`--url` 仅支持 HTTPS,下载由 daemon 执行并做 SSRF/重定向校验。成功 JSON 返回 `sha256`、MIME 和尺寸元数据。`lookup` 探测指定公开 AID;`get` 下载并验签指定公开名片,同时刷新本地 AID 缓存。`list`、其它 AID 的 `show/agentmd put/avatar` 以及 `new/delete` 均拒绝。独立终端不受此托管会话限制。
|
|
19
|
-
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
19
|
+
|
|
20
|
+
## 更换头像
|
|
21
|
+
|
|
22
|
+
`ec aid avatar <当前 self AID> --file <图片路径>` 从本地文件上传;`ec aid avatar <当前 self AID> --url <HTTPS 图片地址>` 下载图片后上传。两种来源必须二选一,可在末尾加 `--format json` 获取头像 URL、SHA-256、MIME 和尺寸。
|
|
23
|
+
|
|
24
|
+
托管会话中的本地图片必须位于当前会话项目目录或本会话的托管 `$TMPDIR`;相对路径以会话项目目录为基准。不能读取受保护的 EvolCore 路径、符号链接,或托管临时目录中的硬链接。
|
|
25
|
+
|
|
26
|
+
上传复用 menu 的头像处理流程:校验图片、上传到 AUN storage、更新并发布 `agent.md` 的 `avatar` 字段,成功后发出 `agent:avatar_updated` 事件。无需手动修改名片或再次执行 `agentmd put`。托管 Agent 只能修改自身头像,仍需通过角色与命令授权检查。
|
|
27
|
+
|
|
28
|
+
## 子命令
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# 列出本地所有 AID(实测 sign+verify)
|
|
32
|
+
ec aid list [筛选选项] [--no-verify]
|
|
33
|
+
|
|
34
|
+
# 查看本地 AID 详情(证书有效期、私钥状态、签名能力)
|
|
35
|
+
ec aid show <aid>
|
|
36
|
+
|
|
37
|
+
# 创建新 AID 身份
|
|
38
|
+
ec aid new <aid> [--force]
|
|
39
|
+
|
|
40
|
+
# 远程探测 AID(是否存在 + 网关 + agent.md)
|
|
41
|
+
ec aid lookup <aid>
|
|
42
|
+
|
|
43
|
+
# agent.md 名片:签名上传 / 下载验签
|
|
36
44
|
ec aid agentmd put <aid>
|
|
37
45
|
ec aid agentmd get <aid>
|
|
38
46
|
ec aid avatar <aid> (--file <path> | --url <https-url>)
|
|
39
|
-
|
|
40
|
-
# 删除指定本地 AID(无网络注销)
|
|
41
|
-
ec aid delete <aid>
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## list 筛选选项
|
|
45
|
-
|
|
46
|
-
不指定 = 列出 mine + broken + peer-cert(隐藏 no-cert)。可组合:
|
|
47
|
-
- `--mine` — 仅本地可用身份(实测可签名+验签通过)
|
|
48
|
-
- `--broken` — 仅有私钥但不可用(公钥不匹配 / 证书过期 / sign 失败)
|
|
49
|
-
- `--peer-cert` — 仅对端 AID(无私钥,有公钥证书)
|
|
50
|
-
- `--no-cert` — 仅无私钥无证书的孤儿目录
|
|
51
|
-
- `--no-verify` — 跳过 sign+verify 实测,仅静态扫描(更快)
|
|
52
|
-
|
|
53
|
-
输出图标:`🔑` 有私钥 · `✅` 实测可签名/验签 · `❌` 不可签名 · `⌛` 证书过期 · `📜` 有公钥证书 · `📄` 有 agent.md
|
|
54
|
-
|
|
55
|
-
## delete 批量清理
|
|
56
|
-
|
|
57
|
-
批量删除**默认 dry-run,加 `--yes` 才真正执行**:
|
|
58
|
-
- `ec aid delete --orphan` — 清理无私钥的外部 AID 缓存
|
|
59
|
-
- `ec aid delete --no-cert` — 清理无私钥也无公钥证书的孤儿目录
|
|
60
|
-
- `ec aid delete --unrecoverable` — 清理云端公钥已变更、本地不可恢复的 AID
|
|
61
|
-
- `--skip-pki` — 仅用于 `--unrecoverable`,跳过 PKI 探测并按本地自检结果判断;有误删风险
|
|
62
|
-
|
|
63
|
-
## 通用约定
|
|
64
|
-
|
|
65
|
-
- `--format json` — 对支持结构化结果的子命令输出 JSON
|
|
66
|
-
- `--aun-path <path>` — 指定 AUN keystore 根;未传时可由 `AUN_HOME` 提供
|
|
67
|
-
- `aid delete --orphan|--no-cert|--unrecoverable` 默认 dry-run,`--yes` 才执行删除
|
|
68
|
-
- `--help` / `-h` — 各子命令均支持
|
|
47
|
+
|
|
48
|
+
# 删除指定本地 AID(无网络注销)
|
|
49
|
+
ec aid delete <aid>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## list 筛选选项
|
|
53
|
+
|
|
54
|
+
不指定 = 列出 mine + broken + peer-cert(隐藏 no-cert)。可组合:
|
|
55
|
+
- `--mine` — 仅本地可用身份(实测可签名+验签通过)
|
|
56
|
+
- `--broken` — 仅有私钥但不可用(公钥不匹配 / 证书过期 / sign 失败)
|
|
57
|
+
- `--peer-cert` — 仅对端 AID(无私钥,有公钥证书)
|
|
58
|
+
- `--no-cert` — 仅无私钥无证书的孤儿目录
|
|
59
|
+
- `--no-verify` — 跳过 sign+verify 实测,仅静态扫描(更快)
|
|
60
|
+
|
|
61
|
+
输出图标:`🔑` 有私钥 · `✅` 实测可签名/验签 · `❌` 不可签名 · `⌛` 证书过期 · `📜` 有公钥证书 · `📄` 有 agent.md
|
|
62
|
+
|
|
63
|
+
## delete 批量清理
|
|
64
|
+
|
|
65
|
+
批量删除**默认 dry-run,加 `--yes` 才真正执行**:
|
|
66
|
+
- `ec aid delete --orphan` — 清理无私钥的外部 AID 缓存
|
|
67
|
+
- `ec aid delete --no-cert` — 清理无私钥也无公钥证书的孤儿目录
|
|
68
|
+
- `ec aid delete --unrecoverable` — 清理云端公钥已变更、本地不可恢复的 AID
|
|
69
|
+
- `--skip-pki` — 仅用于 `--unrecoverable`,跳过 PKI 探测并按本地自检结果判断;有误删风险
|
|
70
|
+
|
|
71
|
+
## 通用约定
|
|
72
|
+
|
|
73
|
+
- `--format json` — 对支持结构化结果的子命令输出 JSON
|
|
74
|
+
- `--aun-path <path>` — 指定 AUN keystore 根;未传时可由 `AUN_HOME` 提供
|
|
75
|
+
- `aid delete --orphan|--no-cert|--unrecoverable` 默认 dry-run,`--yes` 才执行删除
|
|
76
|
+
- `--help` / `-h` — 各子命令均支持
|
|
@@ -1,146 +1,146 @@
|
|
|
1
|
-
# Windows 上的 Codex Sandbox 权限排障
|
|
2
|
-
|
|
3
|
-
本文适用于 EvolCore 在 Windows 上调用 Codex 时,任务在启动阶段因 sandbox 权限失败的情况。目标运行方式是:Codex Desktop、EvolCore daemon 和 `ec` CLI 均以普通用户运行;只有 Codex sandbox 的安装或修复过程临时通过 UAC 提权。
|
|
4
|
-
|
|
5
|
-
不要为了绕过 sandbox 错误而长期以管理员身份运行全部组件。这样不仅扩大权限,还可能使高完整性 daemon 创建的命名管道拒绝普通权限 `ec` CLI 连接。
|
|
6
|
-
|
|
7
|
-
## 典型错误
|
|
8
|
-
|
|
9
|
-
### `.sandbox-bin` 无法锁定
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
helper_sandbox_lock_failed: lock sandbox bin dir C:\Users\<user>\.codex\.sandbox-bin failed:
|
|
13
|
-
SetNamedSecurityInfoW sandbox dir failed: 5
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
错误码 5 是 Windows `ACCESS_DENIED`。常见原因是 `.sandbox-bin` 归 `BUILTIN\Administrators` 所有,而当前普通用户只有 `Modify`,没有修改 DACL 所需的 `WRITE_DAC`。Codex 的日常 sandbox refresh 不会请求 UAC,因此无法自行修复这个状态。
|
|
17
|
-
|
|
18
|
-
### `unelevated` 无法执行 deny-read
|
|
19
|
-
|
|
20
|
-
```text
|
|
21
|
-
windows unelevated restricted-token sandbox cannot enforce deny-read restrictions directly;
|
|
22
|
-
refusing to run unsandboxed
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
这不是同一个错误。EvolCore 会为托管 Agent 注入 deny-read 限制;Windows 的 `unelevated` backend 无法实施这些限制并会 fail closed。因此不要把下面的配置当作修复:
|
|
26
|
-
|
|
27
|
-
```toml
|
|
28
|
-
[windows]
|
|
29
|
-
sandbox = "unelevated"
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
需要 deny-read 时应继续使用:
|
|
33
|
-
|
|
34
|
-
```toml
|
|
35
|
-
[windows]
|
|
36
|
-
sandbox = "elevated"
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
这里的 `elevated` 指 sandbox provisioning 能通过 UAC 建立受限账户和 ACL,不表示 Desktop 或 EvolCore 必须一直以管理员运行。
|
|
40
|
-
|
|
41
|
-
## 先确认错误属于哪一层
|
|
42
|
-
|
|
43
|
-
在普通 PowerShell 中执行:
|
|
44
|
-
|
|
45
|
-
```powershell
|
|
46
|
-
codex --version
|
|
47
|
-
codex doctor --json
|
|
48
|
-
whoami /groups
|
|
49
|
-
|
|
50
|
-
$sandboxBin = Join-Path $env:USERPROFILE '.codex\.sandbox-bin'
|
|
51
|
-
Get-Item -LiteralPath $sandboxBin -Force |
|
|
52
|
-
Select-Object FullName, Attributes, LinkType
|
|
53
|
-
Get-Acl -LiteralPath $sandboxBin |
|
|
54
|
-
Select-Object Owner, AreAccessRulesProtected, Sddl
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
同时检查:
|
|
58
|
-
|
|
59
|
-
```powershell
|
|
60
|
-
Get-Content (Join-Path $env:USERPROFILE '.codex\.sandbox\setup_error.json')
|
|
61
|
-
Get-Content (Join-Path $env:USERPROFILE '.codex\.sandbox\setup_marker.json')
|
|
62
|
-
Get-Content (Join-Path $env:USERPROFILE '.codex\.sandbox\sandbox.*.log') -Tail 80
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
注意以下边界:
|
|
66
|
-
|
|
67
|
-
| 现象 | 所属层 | 处理方向 |
|
|
68
|
-
|------|--------|----------|
|
|
69
|
-
| `helper_sandbox_lock_failed` / `SetNamedSecurityInfoW ... 5` | Codex sandbox ACL | 重新 provisioning 或修复 `.sandbox-bin` owner |
|
|
70
|
-
| `unelevated ... cannot enforce deny-read` | Codex sandbox 模式 | 使用 `windows.sandbox = "elevated"` |
|
|
71
|
-
| `connect EPERM \\.\pipe\daemon-*` | EvolCore IPC | 让 daemon 与 CLI 使用相同用户和完整性级别 |
|
|
72
|
-
| sandbox 已启动,随后出现 `POLICY_DENIED` | EvolCore 角色/权限策略 | 检查任务发起者角色和 permission mode |
|
|
73
|
-
|
|
74
|
-
共享同一个项目目录或同一个 `CODEX_HOME` 本身不是错误。关键是宿主进程的完整性级别一致,以及 sandbox 基础 ACL 已正确 provisioning。
|
|
75
|
-
|
|
76
|
-
## 推荐修复:重新执行 elevated provisioning
|
|
77
|
-
|
|
78
|
-
1. 结束正在启动的 Codex Agent 任务,保留 Codex Desktop 和 EvolCore 的普通权限运行方式。
|
|
79
|
-
2. 将 Codex Desktop 与独立安装的 Codex CLI 更新到兼容版本,避免两个版本交替刷新同一 `CODEX_HOME`。
|
|
80
|
-
3. 在 Codex Desktop 的 Windows Sandbox 设置中执行 setup/repair,选择 elevated backend,并接受一次 UAC 提示。对应的 app-server 操作为 `windowsSandbox/setupStart`,模式为 `elevated`;普通用户不应自行拼接内部 RPC。
|
|
81
|
-
4. provisioning 完成后关闭管理员窗口。后续 Desktop、EvolCore daemon 和 `ec` CLI 均以普通用户运行。
|
|
82
|
-
5. 在普通 PowerShell 中执行验证命令。
|
|
83
|
-
|
|
84
|
-
```powershell
|
|
85
|
-
codex doctor --json
|
|
86
|
-
codex sandbox -- cmd /c whoami
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
验收结果应满足:
|
|
90
|
-
|
|
91
|
-
- `codex doctor` 中 sandbox backend 为 `elevated`,provisioning 为 `complete`,没有 `helper_sandbox_lock_failed`。
|
|
92
|
-
- `codex sandbox -- cmd /c whoami` 成功,身份是专用 sandbox 用户(例如 `CodexSandboxOffline` 或 `CodexSandboxOnline`),而不是当前桌面用户。
|
|
93
|
-
- 普通权限 EvolCore 任务可以进入模型执行阶段。
|
|
94
|
-
|
|
95
|
-
如果 setup/repair 仍反复失败,优先使用 Codex 的修复或重新安装流程。不要先清空整个 `.codex`,其中包含会话、认证和其他用户数据。
|
|
96
|
-
|
|
97
|
-
## 已验证的定向 workaround
|
|
98
|
-
|
|
99
|
-
仅当官方 repair 无法完成、错误明确为 `.sandbox-bin` owner/DACL 不一致时使用。此方法只修复目录 owner,不递归改文件权限,也不删除或放宽现有 DACL。
|
|
100
|
-
|
|
101
|
-
先在普通 PowerShell 中确认目标是实体目录而非重解析点:
|
|
102
|
-
|
|
103
|
-
```powershell
|
|
104
|
-
$sandboxBin = Join-Path $env:USERPROFILE '.codex\.sandbox-bin'
|
|
105
|
-
$item = Get-Item -LiteralPath $sandboxBin -Force
|
|
106
|
-
if ($item.Attributes -band [IO.FileAttributes]::ReparsePoint) {
|
|
107
|
-
throw "$sandboxBin is a reparse point; stop and inspect it manually"
|
|
108
|
-
}
|
|
109
|
-
Get-Acl -LiteralPath $sandboxBin | Format-List Owner, Sddl
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
然后只为下面一次操作打开管理员 PowerShell:
|
|
113
|
-
|
|
114
|
-
```powershell
|
|
115
|
-
$sandboxBin = Join-Path $env:USERPROFILE '.codex\.sandbox-bin'
|
|
116
|
-
$currentUser = [Security.Principal.WindowsIdentity]::GetCurrent().Name
|
|
117
|
-
$acl = Get-Acl -LiteralPath $sandboxBin
|
|
118
|
-
$acl.SetOwner([Security.Principal.NTAccount]::new($currentUser))
|
|
119
|
-
Set-Acl -LiteralPath $sandboxBin -AclObject $acl
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
关闭管理员 PowerShell,在普通 PowerShell 中重新运行:
|
|
123
|
-
|
|
124
|
-
```powershell
|
|
125
|
-
codex sandbox -- cmd /c whoami
|
|
126
|
-
codex doctor --json
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
本 workaround 已验证可以让普通权限 refresh 越过 `SetNamedSecurityInfoW ... 5`,但它不是替代官方 provisioning 的长期安装流程。Codex 更新或 repair 可能重新设置 owner;若问题复发,应保留 `doctor` 输出和 sandbox 日志并反馈给 Codex,而不是持续扩大 ACL。
|
|
130
|
-
|
|
131
|
-
## 禁止采用的规避方式
|
|
132
|
-
|
|
133
|
-
- 不要给 `Everyone`、`Users` 或 `CodexSandboxUsers` 授予 `FullControl`、`WRITE_DAC` 或 `WRITE_OWNER`。
|
|
134
|
-
- 不要删除 `.codex` 父目录上的 deny ACL;这些规则可能正是 deny-read 隔离的一部分。
|
|
135
|
-
- 不要关闭 sandbox 或使用危险绕过参数来运行不受信任的 Agent 任务。
|
|
136
|
-
- 不要让 EvolCore daemon 长期管理员运行而 CLI 保持普通权限;这会造成命名管道 `EPERM`。
|
|
137
|
-
- 不要仅凭 `ec status` 中 PID 存活判断系统健康;还要确认 IPC 和实际 Agent 任务都能运行。
|
|
138
|
-
|
|
139
|
-
## EvolCore 侧最终验证
|
|
140
|
-
|
|
141
|
-
```powershell
|
|
142
|
-
ec status
|
|
143
|
-
ec agent reload <agent-aid> --format json
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
然后从一个普通 AID 向目标 Agent 发送最小测试任务。观察 daemon 日志时,正确顺序应是:sandbox 初始化成功、Codex thread 启动、任务进入工具/模型执行。若此后出现 `POLICY_DENIED`,说明 sandbox 已恢复,下一步应修复 EvolCore 的角色或任务权限,而不是继续修改 Windows ACL。
|
|
1
|
+
# Windows 上的 Codex Sandbox 权限排障
|
|
2
|
+
|
|
3
|
+
本文适用于 EvolCore 在 Windows 上调用 Codex 时,任务在启动阶段因 sandbox 权限失败的情况。目标运行方式是:Codex Desktop、EvolCore daemon 和 `ec` CLI 均以普通用户运行;只有 Codex sandbox 的安装或修复过程临时通过 UAC 提权。
|
|
4
|
+
|
|
5
|
+
不要为了绕过 sandbox 错误而长期以管理员身份运行全部组件。这样不仅扩大权限,还可能使高完整性 daemon 创建的命名管道拒绝普通权限 `ec` CLI 连接。
|
|
6
|
+
|
|
7
|
+
## 典型错误
|
|
8
|
+
|
|
9
|
+
### `.sandbox-bin` 无法锁定
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
helper_sandbox_lock_failed: lock sandbox bin dir C:\Users\<user>\.codex\.sandbox-bin failed:
|
|
13
|
+
SetNamedSecurityInfoW sandbox dir failed: 5
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
错误码 5 是 Windows `ACCESS_DENIED`。常见原因是 `.sandbox-bin` 归 `BUILTIN\Administrators` 所有,而当前普通用户只有 `Modify`,没有修改 DACL 所需的 `WRITE_DAC`。Codex 的日常 sandbox refresh 不会请求 UAC,因此无法自行修复这个状态。
|
|
17
|
+
|
|
18
|
+
### `unelevated` 无法执行 deny-read
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
windows unelevated restricted-token sandbox cannot enforce deny-read restrictions directly;
|
|
22
|
+
refusing to run unsandboxed
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
这不是同一个错误。EvolCore 会为托管 Agent 注入 deny-read 限制;Windows 的 `unelevated` backend 无法实施这些限制并会 fail closed。因此不要把下面的配置当作修复:
|
|
26
|
+
|
|
27
|
+
```toml
|
|
28
|
+
[windows]
|
|
29
|
+
sandbox = "unelevated"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
需要 deny-read 时应继续使用:
|
|
33
|
+
|
|
34
|
+
```toml
|
|
35
|
+
[windows]
|
|
36
|
+
sandbox = "elevated"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
这里的 `elevated` 指 sandbox provisioning 能通过 UAC 建立受限账户和 ACL,不表示 Desktop 或 EvolCore 必须一直以管理员运行。
|
|
40
|
+
|
|
41
|
+
## 先确认错误属于哪一层
|
|
42
|
+
|
|
43
|
+
在普通 PowerShell 中执行:
|
|
44
|
+
|
|
45
|
+
```powershell
|
|
46
|
+
codex --version
|
|
47
|
+
codex doctor --json
|
|
48
|
+
whoami /groups
|
|
49
|
+
|
|
50
|
+
$sandboxBin = Join-Path $env:USERPROFILE '.codex\.sandbox-bin'
|
|
51
|
+
Get-Item -LiteralPath $sandboxBin -Force |
|
|
52
|
+
Select-Object FullName, Attributes, LinkType
|
|
53
|
+
Get-Acl -LiteralPath $sandboxBin |
|
|
54
|
+
Select-Object Owner, AreAccessRulesProtected, Sddl
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
同时检查:
|
|
58
|
+
|
|
59
|
+
```powershell
|
|
60
|
+
Get-Content (Join-Path $env:USERPROFILE '.codex\.sandbox\setup_error.json')
|
|
61
|
+
Get-Content (Join-Path $env:USERPROFILE '.codex\.sandbox\setup_marker.json')
|
|
62
|
+
Get-Content (Join-Path $env:USERPROFILE '.codex\.sandbox\sandbox.*.log') -Tail 80
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
注意以下边界:
|
|
66
|
+
|
|
67
|
+
| 现象 | 所属层 | 处理方向 |
|
|
68
|
+
|------|--------|----------|
|
|
69
|
+
| `helper_sandbox_lock_failed` / `SetNamedSecurityInfoW ... 5` | Codex sandbox ACL | 重新 provisioning 或修复 `.sandbox-bin` owner |
|
|
70
|
+
| `unelevated ... cannot enforce deny-read` | Codex sandbox 模式 | 使用 `windows.sandbox = "elevated"` |
|
|
71
|
+
| `connect EPERM \\.\pipe\daemon-*` | EvolCore IPC | 让 daemon 与 CLI 使用相同用户和完整性级别 |
|
|
72
|
+
| sandbox 已启动,随后出现 `POLICY_DENIED` | EvolCore 角色/权限策略 | 检查任务发起者角色和 permission mode |
|
|
73
|
+
|
|
74
|
+
共享同一个项目目录或同一个 `CODEX_HOME` 本身不是错误。关键是宿主进程的完整性级别一致,以及 sandbox 基础 ACL 已正确 provisioning。
|
|
75
|
+
|
|
76
|
+
## 推荐修复:重新执行 elevated provisioning
|
|
77
|
+
|
|
78
|
+
1. 结束正在启动的 Codex Agent 任务,保留 Codex Desktop 和 EvolCore 的普通权限运行方式。
|
|
79
|
+
2. 将 Codex Desktop 与独立安装的 Codex CLI 更新到兼容版本,避免两个版本交替刷新同一 `CODEX_HOME`。
|
|
80
|
+
3. 在 Codex Desktop 的 Windows Sandbox 设置中执行 setup/repair,选择 elevated backend,并接受一次 UAC 提示。对应的 app-server 操作为 `windowsSandbox/setupStart`,模式为 `elevated`;普通用户不应自行拼接内部 RPC。
|
|
81
|
+
4. provisioning 完成后关闭管理员窗口。后续 Desktop、EvolCore daemon 和 `ec` CLI 均以普通用户运行。
|
|
82
|
+
5. 在普通 PowerShell 中执行验证命令。
|
|
83
|
+
|
|
84
|
+
```powershell
|
|
85
|
+
codex doctor --json
|
|
86
|
+
codex sandbox -- cmd /c whoami
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
验收结果应满足:
|
|
90
|
+
|
|
91
|
+
- `codex doctor` 中 sandbox backend 为 `elevated`,provisioning 为 `complete`,没有 `helper_sandbox_lock_failed`。
|
|
92
|
+
- `codex sandbox -- cmd /c whoami` 成功,身份是专用 sandbox 用户(例如 `CodexSandboxOffline` 或 `CodexSandboxOnline`),而不是当前桌面用户。
|
|
93
|
+
- 普通权限 EvolCore 任务可以进入模型执行阶段。
|
|
94
|
+
|
|
95
|
+
如果 setup/repair 仍反复失败,优先使用 Codex 的修复或重新安装流程。不要先清空整个 `.codex`,其中包含会话、认证和其他用户数据。
|
|
96
|
+
|
|
97
|
+
## 已验证的定向 workaround
|
|
98
|
+
|
|
99
|
+
仅当官方 repair 无法完成、错误明确为 `.sandbox-bin` owner/DACL 不一致时使用。此方法只修复目录 owner,不递归改文件权限,也不删除或放宽现有 DACL。
|
|
100
|
+
|
|
101
|
+
先在普通 PowerShell 中确认目标是实体目录而非重解析点:
|
|
102
|
+
|
|
103
|
+
```powershell
|
|
104
|
+
$sandboxBin = Join-Path $env:USERPROFILE '.codex\.sandbox-bin'
|
|
105
|
+
$item = Get-Item -LiteralPath $sandboxBin -Force
|
|
106
|
+
if ($item.Attributes -band [IO.FileAttributes]::ReparsePoint) {
|
|
107
|
+
throw "$sandboxBin is a reparse point; stop and inspect it manually"
|
|
108
|
+
}
|
|
109
|
+
Get-Acl -LiteralPath $sandboxBin | Format-List Owner, Sddl
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
然后只为下面一次操作打开管理员 PowerShell:
|
|
113
|
+
|
|
114
|
+
```powershell
|
|
115
|
+
$sandboxBin = Join-Path $env:USERPROFILE '.codex\.sandbox-bin'
|
|
116
|
+
$currentUser = [Security.Principal.WindowsIdentity]::GetCurrent().Name
|
|
117
|
+
$acl = Get-Acl -LiteralPath $sandboxBin
|
|
118
|
+
$acl.SetOwner([Security.Principal.NTAccount]::new($currentUser))
|
|
119
|
+
Set-Acl -LiteralPath $sandboxBin -AclObject $acl
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
关闭管理员 PowerShell,在普通 PowerShell 中重新运行:
|
|
123
|
+
|
|
124
|
+
```powershell
|
|
125
|
+
codex sandbox -- cmd /c whoami
|
|
126
|
+
codex doctor --json
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
本 workaround 已验证可以让普通权限 refresh 越过 `SetNamedSecurityInfoW ... 5`,但它不是替代官方 provisioning 的长期安装流程。Codex 更新或 repair 可能重新设置 owner;若问题复发,应保留 `doctor` 输出和 sandbox 日志并反馈给 Codex,而不是持续扩大 ACL。
|
|
130
|
+
|
|
131
|
+
## 禁止采用的规避方式
|
|
132
|
+
|
|
133
|
+
- 不要给 `Everyone`、`Users` 或 `CodexSandboxUsers` 授予 `FullControl`、`WRITE_DAC` 或 `WRITE_OWNER`。
|
|
134
|
+
- 不要删除 `.codex` 父目录上的 deny ACL;这些规则可能正是 deny-read 隔离的一部分。
|
|
135
|
+
- 不要关闭 sandbox 或使用危险绕过参数来运行不受信任的 Agent 任务。
|
|
136
|
+
- 不要让 EvolCore daemon 长期管理员运行而 CLI 保持普通权限;这会造成命名管道 `EPERM`。
|
|
137
|
+
- 不要仅凭 `ec status` 中 PID 存活判断系统健康;还要确认 IPC 和实际 Agent 任务都能运行。
|
|
138
|
+
|
|
139
|
+
## EvolCore 侧最终验证
|
|
140
|
+
|
|
141
|
+
```powershell
|
|
142
|
+
ec status
|
|
143
|
+
ec agent reload <agent-aid> --format json
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
然后从一个普通 AID 向目标 Agent 发送最小测试任务。观察 daemon 日志时,正确顺序应是:sandbox 初始化成功、Codex thread 启动、任务进入工具/模型执行。若此后出现 `POLICY_DENIED`,说明 sandbox 已恢复,下一步应修复 EvolCore 的角色或任务权限,而不是继续修改 Windows ACL。
|