fix(orc): support trusted release shell workflow

This commit is contained in:
2026-08-01 21:06:42 +08:00
parent f5bf35c722
commit e9b34747cc
7 changed files with 364 additions and 17 deletions
+19 -7
View File
@@ -98,10 +98,13 @@ JSON-compatible YAML,并由隔离的 Python 标准库解析。它固定包含
`--global-level`,阶段
档位用 `--stage-level`;项目根与目标 worktree 必须使用规范绝对路径。Codex 默认复用
`codex-login`Cursor 默认复用 `cursor-login`;只有明确使用环境凭据时才分别选择
`openai``azure-openai``cursor-api-key`。远端认证默认 `none`;只有目标 provider
与 transport 已确认时,才选择一个精确的 `github-token``gitlab-token`
`gitea-token``forgejo-token``ssh-agent``deb-token`。不得把多个 provider 凭据
一起交给 worker。resolver 不存在静默 fallback
`openai``azure-openai``cursor-api-key`。远端认证默认 `none`。release worker 作为
受信任发布角色,直接调用当前 shell 中已认证的 `git` 与 Forge CLIGitea/Forgejo 由
`$manage-release` 在目标 worktree 中运行 `tea`resolver 不读取 tea 配置、不注入
credential helper,也不把 tea token 转成环境变量。只有明确改用环境 token 或 SSH
agent 时,才选择一个精确的 `github-token``gitlab-token``gitea-token`
`forgejo-token``ssh-agent``deb-token`,不得同时交给 worker 多组环境凭据。resolver
不存在静默 fallback
```bash
/usr/bin/python3 -I -S <orc-skill-dir>/scripts/resolve_profile.py resolve \
@@ -145,6 +148,13 @@ JSON-compatible YAML,并由隔离的 Python 标准库解析。它固定包含
Docker 或部署;这些动作由 ORC 的独立阶段负责。
- ORC v2 的 `permissionMode` 固定为 `workspace-write`,因为受监督 worker 需要写入
Orca 运行时目录才能发送 lifecycle 消息。只读任务仍由 prompt 限制不得改文件。
- release 阶段必须绑定 `origin` 唯一且规范化后完全一致的 fetch/push URL,并把 remote
identity 写入 fingerprint;多个 URL、独立 `pushurl` 或不支持的 remote 直接停止。
- Codex release worker 固定使用 `on-request` 与 `auto_review`,开启
`sandbox_workspace_write.network_access=true`,并用 network proxy 只允许绑定的 remote
与确定性的 Forge API host。GitHub 固定追加 `api.github.com` 和 `uploads.github.com`
Gitea、Forgejo 与 GitLab 默认只使用 remote host。其它本地阶段默认禁网;不得改用
`danger-full-access`。Cursor 继续使用自身的 `--auto-review --sandbox enabled`。
- 安全启动适配器只支持 `codex` 和 `cursor-agent`。Codex 使用结构化 sandbox 与 approval
参数;Cursor 使用 `--auto-review --sandbox enabled --workspace <path>`。不接受
full-access、bypass、`--force`、`--yolo` 或关闭 sandbox。
@@ -154,9 +164,11 @@ JSON-compatible YAML,并由隔离的 Python 标准库解析。它固定包含
Codex 则显式传递 `model_reasoning_effort`。
- resolver 只读取 skill 内有大小上限的普通共享配置文件,拒绝 symlink/special file
启动计划绑定配置快照、root-owned 隔离 Python、可信绝对 Agent/Orca executable、Git
worktree identity、精确认证选择和固定 argv。实际启动会重新校验 fingerprint,并只注入
所选模型认证与单一目标认证的环境变量;不得改写 resolver 返回的 worker argv,也不得
把终端创建 argv 的绝对 Orca 路径换成项目 `PATH` 解析。
worktree identity、release remote identity、精确环境认证选择和固定 argv。实际启动会
重新校验 fingerprintrelease 阶段允许受信任的 `$manage-release` 直接使用当前 shell
已有的 Git/Forge 登录,resolver 不检查或复制认证文件。显式 token/SSH 认证仍只注入所选
环境变量。不得改写 resolver 返回的 worker argv,也不得把终端创建 argv 的绝对 Orca
路径换成项目 `PATH` 解析。
- 不把模型档位当作权限。`high` 不自动获得更多文件、凭据、网络或远端写权限。
- 不执行 `orca orchestration reset`,除非用户明确要求放弃全部相关运行时状态。