|
|
@@ -116,6 +116,21 @@ Thread 参数:`approvalPolicy = on-request`、`cwd = workspaceDir`,沙箱使
|
|
|
| turn 完成 / 失败 | `run.completed` / `run.failed` |
|
|
|
| **服务端请求**:命令执行审批 / 文件变更审批 | `ctx.interact({kind:'approval'})` → 回复 accept / decline(含"本会话总是允许") |
|
|
|
|
|
|
+### 3.4 实现记录(M2,2026-10-23,codex 0.164.0)
|
|
|
+
|
|
|
+- **版本与部署**:`@openai/codex@0.164.0` 作为服务端依赖锁定,随 pnpm deploy 发布;协议类型由该版本 `codex app-server generate-ts` 生成,位于 `apps/server/src/providers/codex/protocol/`(升级 codex 时重新生成)
|
|
|
+- **CODEX_HOME**:服务专用(生产 `/srv/agent-server/home/.codex`,开发 `.dev-data/home/.codex`),不加载个人 `~/.codex` 的插件与 MCP(Q3 关闭);`auth.json` 列入全局禁止项
|
|
|
+- **进程**:单个常驻 app-server,JSON-RPC 每行一个 JSON;按 threadId 把通知和服务端请求分发给对应的 Run;进程退出时正在运行的 Run 失败,下次调用自动重启
|
|
|
+- **会话**:首轮 `thread/start`,之后 `thread/resume`(失败则新建);每个 Run 一个 `turn/start`,中断用 `turn/interrupt`
|
|
|
+- **文件访问策略**(Q1 关闭):每次 thread/start / resume 通过 `config` 传入动态权限配置 `default_permissions = "agent_server"` + `permissions.agent_server.filesystem`(受限模式 `":root" = "deny"`),响应中 `activePermissionProfile` 确认生效。**必须**把 `CODEX_HOME/tmp/arg0-linux` 和 codex 二进制目录设为可读,否则沙箱辅助程序无法启动;`/tmp` 不可写,`TMPDIR` 指向工作区 `.agent/tmp`
|
|
|
+- **环境变量**:`shell_environment_policy.inherit = "core"`,只继承基础变量,再设置 Python/Node 运行环境变量,不把服务进程的密钥带入命令
|
|
|
+- **权限模式**:需审批 → `approvalPolicy = "on-request"`(沙箱内命令自动执行,越界才请求审批,与 Claude 的"每条命令都询问"不同);自动 / 只读 → `"never"`;只读模式工作区为 read
|
|
|
+- **审批**(Q2 关闭):`item/commandExecution/requestApproval` / `item/fileChange/requestApproval` 回复 `accept | acceptForSession | decline | cancel`;**命令联网请求一律拒绝并审计**(Codex 命令联网后不受域名限制);文件变更与 `item/permissions/requestApproval` 先按访问策略检查,越界自动拒绝
|
|
|
+- **提问**:`item/tool/requestUserInput` 映射为提问卡片,回复 `{ answers: { [questionId]: { answers: [...] } } }`
|
|
|
+- **用量**:`thread/tokenUsage/updated` 给出线程累计与最近一次增量,本次 Run 用量 = 最新累计 −(首次通知的累计 − 首次增量)
|
|
|
+- **登录**:`account/login/start { type: "chatgptDeviceCode" }` 返回网址和短码,管理员在 OpenAI 页面输入,完成后收到 `account/login/completed`;AgentServer 不接触凭证。终端方式:`agent-codex login --device-auth`
|
|
|
+- **已知差距**:LibreOffice 在 Codex 沙箱中同样无法运行(禁止 Unix socket),`convert_document` / `recalc_workbook` 将在 MCP Gateway(M2 ②)中提供给 Codex;在此之前提示词会告知模型这两项不可用
|
|
|
+
|
|
|
## 4. 能力差异与对齐
|
|
|
|
|
|
| 能力 | Claude | Codex | 对齐策略 |
|