目录
36 章已发布
查阅索引
- 动态工具声明与领域执行器的分离
- Dynamic Tools 为什么把执行权交回宿主
- 逻辑 process_id
- 命令返回以后,进程为什么还活着
- 宿主拥有执行权
- Dynamic Tools 为什么把执行权交回宿主
- account login identity
- 登录身份不等于 Agent 身份
- active context versus cumulative usage
- 上下文快满时,Codex 到底压缩了什么
- active item projection
- 一条 Responses 流怎样变成下一步行动
- active turn
- 你按下回车后,谁接管这次任务
- active-thread failover
- TUI 如何把事件流还原成一个稳定界面
- Agent Identity
- 登录身份不等于 Agent 身份
- Agent identity versus UI identity
- 一个子 Agent 为什么需要独立 Thread
- aggregated follow-up control
- 一条 Responses 流怎样变成下一步行动
- app-server 反向 server request
- Dynamic Tools 为什么把执行权交回宿主
- app-server client model
- 同一个 codex,为什么会启动几套不同的系统
- append-only rollout
- 同一段对话,为什么同时存在三种状态
- approvable allowlist miss
- 网络访问为什么另有一条决策链
- approval cache identity
- 模型返回的 Shell 参数,为什么还不是一条进程
- approval prompt eligibility
- 审批、Permission Profile 与沙箱各自拦什么
- authoritative permission profile
- 审批、Permission Profile 与沙箱各自拦什么
- authority-bound resource locator
- 一个 Plugin 怎样变成一组可安装能力
- bespoke event projection
- App-server 如何把 Core 变成一套可消费协议
- bounded audio, text, handoff, and output queues
- 普通 Responses 与 Realtime 为什么是两套会话
- bounded event store
- TUI 如何把事件流还原成一个稳定界面
- bounded startup-context injection
- 普通 Responses 与 Realtime 为什么是两套会话
- brokered nested dispatch
- Code Mode 为什么仍然绕不开同一张工具表
- cancellation token
- 你按下回车后,谁接管这次任务
- canonical AgentPath
- 一个子 Agent 为什么需要独立 Thread
- canonical live history
- History 为什么不能直接拿去做 Prompt
- capability-specific loading
- 一个 Plugin 怎样变成一组可安装能力
- cell-owned JavaScript runtime
- Code Mode 为什么仍然绕不开同一张工具表
- child-to-parent result notification
- 多个 Agent 怎样通信、等待与中断
- citation provenance
- Memory 不是更长的 History
- claim to source to observed artifact ledger
- 没有证据的“跑通”不算跑通
- client event observation
- 同一段对话,为什么同时存在三种状态
- Code Mode control tool versus nested tool
- Code Mode 为什么仍然绕不开同一张工具表
- Codex as MCP client
- 外部 MCP Server 的工具怎样进入 Codex
- committed effect record
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- composer state ownership
- TUI 如何把事件流还原成一个稳定界面
- configuration precedence
- Codex 启动时,哪一份配置说了算
- connection-scoped initialization
- App-server 如何把 Core 变成一套可消费协议
- constraint source
- 配置能覆盖,Requirements 不能绕过
- content items 到 function_call_output
- Dynamic Tools 为什么把执行权交回宿主
- context update
- 模型收到的指令从哪里来
- context window
- 模型不是一个字符串:Provider、目录与 ModelInfo
- continuation condition
- Codex 为什么有两层循环
- continuation reason and error semantics
- Hooks 为什么不是一条统一回调链
- Core 的等待型适配器
- Dynamic Tools 为什么把执行权交回宿主
- correlation id
- 不要从目录开始读 Codex
- derived SQLite projection
- 同一段对话,为什么同时存在三种状态
- deterministic local binary task
- 没有证据的“跑通”不算跑通
- deterministic network policy
- 网络访问为什么另有一条决策链
- direct and deferred tool exposure
- 外部 MCP Server 的工具怎样进入 Codex
- direct result versus code mode result
- Code Mode 为什么仍然绕不开同一张工具表
- discovery, exposure, approval, execution boundary
- 外部 MCP Server 的工具怎样进入 Codex
- durable history copy versus process snapshot
- Resume 与 Fork:恢复的不是同一件事
- durable identity guard
- Goal 为什么必须活在 Turn 之上
- durable replay versus query index
- 同一段对话,为什么同时存在三种状态
- durable signing key
- 登录身份不等于 Agent 身份
- ephemeral residency
- 一个子 Agent 为什么需要独立 Thread
- event projection after mutation
- Goal 为什么必须活在 Turn 之上
- event-specific stdin and output schemas
- Hooks 为什么不是一条统一回调链
- exact committed delta
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- exec policy projection
- 模型返回的 Shell 参数,为什么还不是一条进程
- execution envelope
- 模型返回的 Shell 参数,为什么还不是一条进程
- execution-scoped network attribution
- 网络访问为什么另有一条决策链
- executor-selected Plugin contributor path
- 一个 Plugin 怎样变成一组可安装能力
- experimental opt-in memory
- Memory 不是更长的 History
- explicit body injection
- Skills 不是工具:从目录发现到渐进注入
- explicit Codex handoff into realtime output
- 普通 Responses 与 Realtime 为什么是两套会话
- explicit goal mutation
- Goal 为什么必须活在 Turn 之上
- ExtensionRegistry boundary
- 一个 Plugin 怎样变成一组可安装能力
- extraction state versus final corpus
- Memory 不是更长的 History
- fallback metadata
- 模型不是一个字符串:Provider、目录与 ModelInfo
- field provenance
- Codex 启动时,哪一份配置说了算
- general approval reviewer
- 网络访问为什么另有一条决策链
- global consolidation ownership
- Memory 不是更长的 History
- handler argv and launch argv
- 模型返回的 Shell 参数,为什么还不是一条进程
- history resume as a new identity
- Resume 与 Fork:恢复的不是同一件事
- idle continuation eligibility
- Goal 为什么必须活在 Turn 之上
- incremental Responses request reuse
- 普通 Responses 与 Realtime 为什么是两套会话
- independent CodexThread
- 一个子 Agent 为什么需要独立 Thread
- inert plugin descriptor
- 一个 Plugin 怎样变成一组可安装能力
- installed package versus runtime projection
- 一个 Plugin 怎样变成一组可安装能力
- instruction source ledger
- 模型收到的指令从哪里来
- intentional tool exposure asymmetry
- 模型为什么能调用工具:两张表,一个闭环
- layer evidence versus cross-layer proof
- 没有证据的“跑通”不算跑通
- live conversation history
- 同一段对话,为什么同时存在三种状态
- live registry versus persisted graph
- 一个子 Agent 为什么需要独立 Thread
- live subtree versus persisted graph
- 多个 Agent 怎样通信、等待与中断
- live versus replay handling
- TUI 如何把事件流还原成一个稳定界面
- local exit and task terminalization
- 断流、限流和 401:Codex 分别从哪里恢复
- mailbox activity versus agent completion
- 多个 Agent 怎样通信、等待与中断
- mailbox delivery phase
- Codex 为什么有两层循环
- managed requirements
- 配置能覆盖,Requirements 不能绕过
- manifest authority
- 一个 Plugin 怎样变成一组可安装能力
- matcher selection and matcher aliases
- Hooks 为什么不是一条统一回调链
- metadata catalog context
- Skills 不是工具:从目录发现到渐进注入
- model catalog
- 模型不是一个字符串:Provider、目录与 ModelInfo
- model-visible capability
- 模型为什么能调用工具:两张表,一个闭环
- model-visible exec and nested apply_patch ownership
- 没有证据的“跑通”不算跑通
- model-visible role
- 模型收到的指令从哪里来
- ModelInfo
- 模型不是一个字符串:Provider、目录与 ModelInfo
- network policy amendment
- 网络访问为什么另有一条决策链
- non-terminal blocked state
- Goal 为什么必须活在 Turn 之上
- observation frontier and terminal response
- Code Mode 为什么仍然绕不开同一张工具表
- Open and Closed spawn edges
- 一个子 Agent 为什么需要独立 Thread
- ordinary candidate
- 配置能覆盖,Requirements 不能绕过
- ordinary layer
- Codex 启动时,哪一份配置说了算
- owner executor governor
- Dynamic Tools 为什么把执行权交回宿主
- ownership
- 不要从目录开始读 Codex
- pairing normalization
- History 为什么不能直接拿去做 Prompt
- parser effect versus runtime mutation
- Hooks 为什么不是一条统一回调链
- pending interaction filtering
- TUI 如何把事件流还原成一个稳定界面
- per-call approval requirement
- 审批、Permission Profile 与沙箱各自拦什么
- per-thread event subscription
- App-server 如何把 Core 变成一套可消费协议
- per-thread UI projection
- TUI 如何把事件流还原成一个稳定界面
- permission profile boundary
- 配置能覆盖,Requirements 不能绕过
- persistent and ephemeral fork
- Resume 与 Fork:恢复的不是同一件事
- planned change view
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- pre-execution block versus post-execution feedback
- Hooks 为什么不是一条统一回调链
- preflight and runtime failure boundary
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- process lifecycle token 与 turn cancellation
- 命令返回以后,进程为什么还活着
- progressive disclosure
- Skills 不是工具:从目录发现到渐进注入
- progressive disclosure read path
- Memory 不是更长的 History
- Prompt 到 wire 的边界
- Prompt 怎样变成一份 Responses 请求
- prompt projection
- History 为什么不能直接拿去做 Prompt
- provider capability upper bound
- 模型不是一个字符串:Provider、目录与 ModelInfo
- provider identity
- 模型不是一个字符串:Provider、目录与 ModelInfo
- provider terminal response
- 一条 Responses 流怎样变成下一步行动
- PTY 输出合流
- 命令返回以后,进程为什么还活着
- queue-only delivery
- 多个 Agent 怎样通信、等待与中断
- raw function arguments string
- 模型返回的 Shell 参数,为什么还不是一条进程
- raw MCP identity versus model-visible ToolInfo
- 外部 MCP Server 的工具怎样进入 Codex
- reactive 401 recovery
- 断流、限流和 401:Codex 分别从哪里恢复
- realtime V1/V2 and WebSocket/WebRTC transport choices
- 普通 Responses 与 Realtime 为什么是两套会话
- recorded response item
- 一条 Responses 流怎样变成下一步行动
- recovery ownership
- 断流、限流和 401:Codex 分别从哪里恢复
- RegularTask
- 你按下回车后,谁接管这次任务
- replacement history checkpoint
- 上下文快满时,Codex 到底压缩了什么
- request auth boundary
- 登录身份不等于 Agent 身份
- request-open retry budget
- 断流、限流和 401:Codex 分别从哪里恢复
- request-scoped controls
- Prompt 怎样变成一份 Responses 请求
- resource-scoped request ordering
- App-server 如何把 Core 变成一套可消费协议
- Responses Lite
- Prompt 怎样变成一份 Responses 请求
- ResponsesApiRequest
- Prompt 怎样变成一份 Responses 请求
- ResponseStream
- Prompt 怎样变成一份 Responses 请求
- review decision
- 审批、Permission Profile 与沙箱各自拦什么
- rollout identity versus trace identity
- 没有证据的“跑通”不算跑通
- rollout-derived memory
- Memory 不是更长的 History
- route before render
- TUI 如何把事件流还原成一个稳定界面
- running resume versus cold resume
- Resume 与 Fork:恢复的不是同一件事
- runtime accounting attachment
- Goal 为什么必须活在 Turn 之上
- runtime control flow
- 不要从目录开始读 Codex
- runtime enforcement boundary
- 模型收到的指令从哪里来
- runtime entrypoint
- 同一个 codex,为什么会启动几套不同的系统
- runtime projection and effective servers
- 外部 MCP Server 的工具怎样进入 Codex
- runtime-executable capability
- 模型为什么能调用工具:两张表,一个闭环
- sampling retry budget
- 断流、限流和 401:Codex 分别从哪里恢复
- sampling/action loop
- Codex 为什么有两层循环
- sandbox backend selection
- 审批、Permission Profile 与沙箱各自拦什么
- screenshot as terminal projection
- 没有证据的“跑通”不算跑通
- separate realtime conversation state machine
- 普通 Responses 与 Realtime 为什么是两套会话
- server-request callback loop
- App-server 如何把 Core 变成一套可消费协议
- session 级进程所有权
- 命令返回以后,进程为什么还活着
- Session owner
- 你按下回车后,谁接管这次任务
- session source metadata
- 同一个 codex,为什么会启动几套不同的系统
- session stored values
- Code Mode 为什么仍然绕不开同一张工具表
- session tree lineage
- Resume 与 Fork:恢复的不是同一件事
- session-scoped host approval
- 网络访问为什么另有一条决策链
- session-scoped MCP runtime snapshot
- 外部 MCP Server 的工具怎样进入 Codex
- session-scoped ModelClient versus turn-scoped ModelClientSession
- 普通 Responses 与 Realtime 为什么是两套会话
- session-sticky transport fallback
- 断流、限流和 401:Codex 分别从哪里恢复
- shared ToolRouter and ToolRegistry
- Code Mode 为什么仍然绕不开同一张工具表
- skill root discovery
- Skills 不是工具:从目录发现到渐进注入
- SkillMetadata versus SkillInstructions
- Skills 不是工具:从目录发现到渐进注入
- skipped test as missing evidence
- 没有证据的“跑通”不算跑通
- snapshot replay approximation
- TUI 如何把事件流还原成一个稳定界面
- spawn topology versus history lineage
- 一个子 Agent 为什么需要独立 Thread
- spec and runtime co-ownership
- 模型为什么能调用工具:两张表,一个闭环
- stateful protocol adapter
- App-server 如何把 Core 变成一套可消费协议
- sticky turn-state routing token
- 普通 Responses 与 Realtime 为什么是两套会话
- stream event mapping
- 一条 Responses 流怎样变成下一步行动
- strict trace replay
- 没有证据的“跑通”不算跑通
- submission id
- 你按下回车后,谁接管这次任务
- synchronous command discovery boundary
- Hooks 为什么不是一条统一回调链
- synthetic call output
- History 为什么不能直接拿去做 Prompt
- task owner loop
- Codex 为什么有两层循环
- task-scoped assertion
- 登录身份不等于 Agent 身份
- telemetry as observation rather than causality
- 没有证据的“跑通”不算跑通
- ten event names versus separate lifecycle entry points
- Hooks 为什么不是一条统一回调链
- terminal state
- 同一个 codex,为什么会启动几套不同的系统
- terminal-prefix truncation
- Resume 与 Fork:恢复的不是同一件事
- thread scope versus turn scope
- Hooks 为什么不是一条统一回调链
- thread-scoped durable objective
- Goal 为什么必须活在 Turn 之上
- thread-scoped outbound delivery
- App-server 如何把 Core 变成一套可消费协议
- ThreadSpawn source
- 一个子 Agent 为什么需要独立 Thread
- tool future 与 OS process 生命周期
- 命令返回以后,进程为什么还活着
- tool output correlation
- 模型为什么能调用工具:两张表,一个闭环
- ToolRegistry boundary
- Skills 不是工具:从目录发现到渐进注入
- transport
- 同一个 codex,为什么会启动几套不同的系统
- transport resource ownership
- Codex 为什么有两层循环
- trigger-turn delivery
- 多个 Agent 怎样通信、等待与中断
- turn interruption versus thread shutdown
- 多个 Agent 怎样通信、等待与中断
- turn-scoped net text diff
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- typed JSON-RPC boundary
- App-server 如何把 Core 变成一套可消费协议
- typed runtime override
- Codex 启动时,哪一份配置说了算
- typed shell payload
- 模型返回的 Shell 参数,为什么还不是一条进程
- usage feedback metadata
- Memory 不是更长的 History
- user-visible turn ownership
- Codex 为什么有两层循环
- workspace membership
- 不要从目录开始读 Codex
- world-state snapshot
- 模型收到的指令从哪里来History 为什么不能直接拿去做 Prompt
- access token classification
- 登录身份不等于 Agent 身份
- active channel delivery or background buffering
- TUI 如何把事件流还原成一个稳定界面
- active item streaming
- 一条 Responses 流怎样变成下一步行动
- active thread receiver detachment
- TUI 如何把事件流还原成一个稳定界面
- active turn creation
- 你按下回车后,谁接管这次任务
- active-turn cancellation and waiter cleanup
- Dynamic Tools 为什么把执行权交回宿主
- allowlist evaluation
- 网络访问为什么另有一条决策链
- app-server stream reception
- TUI 如何把事件流还原成一个稳定界面
- apply a scope-limited fixture
- 没有证据的“跑通”不算跑通
- approved SandboxAttempt launch
- 命令返回以后,进程为什么还活着
- assert file side effect and rollout JSONL
- 没有证据的“跑通”不算跑通
- attempt to notify parent after each child turn
- 多个 Agent 怎样通信、等待与中断
- auth refresh and logout
- 登录身份不等于 Agent 身份
- auth-dependent capability routing
- 一个 Plugin 怎样变成一组可安装能力
- background write or poll
- 命令返回以后,进程为什么还活着
- base instruction selection
- 模型收到的指令从哪里来
- best-effort source-derived edge persistence
- 一个子 Agent 为什么需要独立 Thread
- blocked or terminal stop
- Goal 为什么必须活在 Turn 之上
- cache eligibility
- 模型不是一个字符串:Provider、目录与 ModelInfo
- call_id pending oneshot registration
- Dynamic Tools 为什么把执行权交回宿主
- candidate normalization
- 配置能覆盖,Requirements 不能绕过
- canonical rollout append and flush
- 同一段对话,为什么同时存在三种状态
- capacity and path reservation
- 一个子 Agent 为什么需要独立 Thread
- capture request and nested tool follow-up
- 没有证据的“跑通”不算跑通
- catalog refresh
- 模型不是一个字符串:Provider、目录与 ModelInfo
- ChatWidget state projection
- TUI 如何把事件流还原成一个稳定界面
- checkpoint reconstruction
- 上下文快满时,Codex 到底压缩了什么
- child resume from rollout graph
- 一个子 Agent 为什么需要独立 Thread
- child Thread creation and registration
- 一个子 Agent 为什么需要独立 Thread
- citation parsing and usage writeback
- Memory 不是更长的 History
- close transport and mark realtime inactive
- 普通 Responses 与 Realtime 为什么是两套会话
- CodeModeService lazy session creation
- Code Mode 为什么仍然绕不开同一张工具表
- committed delta tracking
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- compare observed layers with unproven boundaries
- 没有证据的“跑通”不算跑通
- complete sampling replay
- 断流、限流和 401:Codex 分别从哪里恢复
- completed item recording
- 一条 Responses 流怎样变成下一步行动
- configuration and plugin projection
- 外部 MCP Server 的工具怎样进入 Codex
- connection initialize and capability gate
- App-server 如何把 Core 变成一套可消费协议
- construct inter-agent communication
- 多个 Agent 怎样通信、等待与中断
- context update recording
- 模型收到的指令从哪里来
- context update rendering
- History 为什么不能直接拿去做 Prompt
- context-window budget evaluation
- 上下文快满时,Codex 到底压缩了什么
- conversation item recording
- 同一段对话,为什么同时存在三种状态
- core event consumption and local state tracking
- App-server 如何把 Core 变成一套可消费协议
- Core ToolRouter and registry planning
- Dynamic Tools 为什么把执行权交回宿主
- create a detached disposable worktree
- 没有证据的“跑通”不算跑通
- create ModelClient and fresh turn session
- 普通 Responses 与 Realtime 为什么是两套会话
- cumulative TurnDiff emission
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- custom payload parsing
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- decider attribution and session cache lookup
- 网络访问为什么另有一条决策链
- developer catalog rendering
- Skills 不是工具:从目录发现到渐进注入
- direct or deferred ToolRouter registration
- 外部 MCP Server 的工具怎样进入 Codex
- discover configured handlers and validate matcher
- Hooks 为什么不是一条统一回调链
- durable SQLite persistence
- Goal 为什么必须活在 Turn 之上
- dynamic tool validation
- Dynamic Tools 为什么把执行权交回宿主
- DynamicToolCall item lifecycle
- Dynamic Tools 为什么把执行权交回宿主
- eligible rollout claim and extraction
- Memory 不是更长的 History
- emit hook started/completed events
- Hooks 为什么不是一条统一回调链
- enabled plugin loading
- 一个 Plugin 怎样变成一组可安装能力
- enqueue mailbox and signal activity
- 多个 Agent 怎样通信、等待与中断
- environment and cwd resolution
- 模型返回的 Shell 参数,为什么还不是一条进程
- environment resolution and transport construction
- 外部 MCP Server 的工具怎样进入 Codex
- ephemeral response projection
- Resume 与 Fork:恢复的不是同一件事
- error event before task completion
- 断流、限流和 401:Codex 分别从哪里恢复
- error first observation
- 断流、限流和 401:Codex 分别从哪里恢复
- event translation
- 不要从目录开始读 Codex
- exec-policy evaluation
- 审批、Permission Profile 与沙箱各自拦什么
- execute matching commands concurrently
- Hooks 为什么不是一条统一回调链
- execute request to SessionRuntime cell
- Code Mode 为什么仍然绕不开同一张工具表
- execution registration and proxy attribution
- 网络访问为什么另有一条决策链
- explicit and session cleanup
- 命令返回以后,进程为什么还活着
- explicit cancellation terminalization
- 断流、限流和 401:Codex 分别从哪里恢复
- explicit close and subtree shutdown
- 一个子 Agent 为什么需要独立 Thread
- explicit deny and private-network checks
- 网络访问为什么另有一条决策链
- explicit goal creation
- Goal 为什么必须活在 Turn 之上
- explicit mention selection
- Skills 不是工具:从目录发现到渐进注入
- fallback warning
- 配置能覆盖,Requirements 不能绕过
- fingerprint the source checkout
- 没有证据的“跑通”不算跑通
- fold handler results in event-specific order
- Hooks 为什么不是一条统一回调链
- follow-up request construction
- 一条 Responses 流怎样变成下一步行动
- follow-up sampling
- 模型为什么能调用工具:两张表,一个闭环
- fork mode selection
- 一个子 Agent 为什么需要独立 Thread
- fork snapshot interruption boundary
- Resume 与 Fork:恢复的不是同一件事
- frontmatter and optional openai.yaml parsing
- Skills 不是工具:从目录发现到渐进注入
- FunctionCall routing
- 模型返回的 Shell 参数,为什么还不是一条进程
- guardian or user review
- 审批、Permission Profile 与沙箱各自拦什么
- history attachment from rollout path
- 同一段对话,为什么同时存在三种状态
- history cloning
- History 为什么不能直接拿去做 Prompt
- host and project instruction loading
- 模型收到的指令从哪里来
- host response decoding
- Dynamic Tools 为什么把执行权交回宿主
- HTTP SSE streaming
- Prompt 怎样变成一份 Responses 请求
- idle wall-clock accounting
- Goal 为什么必须活在 Turn 之上
- in-call authentication recovery
- 断流、限流和 401:Codex 分别从哪里恢复
- initial output collection
- 命令返回以后,进程为什么还活着
- initial sandbox selection
- 审批、Permission Profile 与沙箱各自拦什么
- initialize handshake and tools/list
- 外部 MCP Server 的工具怎样进入 Codex
- inject openai_base_url through -c
- 没有证据的“跑通”不算跑通
- interrupt one turn or close a live subtree
- 多个 Agent 怎样通信、等待与中断
- interruption and completion
- 你按下回车后,谁接管这次任务
- item/tool/call host request
- Dynamic Tools 为什么把执行权交回宿主
- JWT verification and storage
- 登录身份不等于 Agent 身份
- lastTurnId validation and truncation
- Resume 与 Fork:恢复的不是同一件事
- layer stack construction
- Codex 启动时,哪一份配置说了算
- lazily prewarm or connect Responses WebSocket
- 普通 Responses 与 Realtime 为什么是两套会话
- live history replacement
- 同一段对话,为什么同时存在三种状态
- loader input selection
- Codex 启动时,哪一份配置说了算
- local dispatch
- 模型为什么能调用工具:两张表,一个闭环
- locked-down consolidation agent
- Memory 不是更长的 History
- low-to-high compose
- 配置能覆盖,Requirements 不能绕过
- manifest parsing and path validation
- 一个 Plugin 怎样变成一组可安装能力
- marketplace admission and cache installation
- 一个 Plugin 怎样变成一组可安装能力
- MCP tool call completion
- 同一个 codex,为什么会启动几套不同的系统
- memory summary prompt injection
- Memory 不是更长的 History
- merged immutable skill snapshot
- Skills 不是工具:从目录发现到渐进注入
- metadata observation and projection
- 同一段对话,为什么同时存在三种状态
- model follow-up output
- Dynamic Tools 为什么把执行权交回宿主
- model metadata resolution
- 模型不是一个字符串:Provider、目录与 ModelInfo
- mutate tool, turn, compaction, or context state
- Hooks 为什么不是一条统一回调链
- nested dispatch readiness gate
- Code Mode 为什么仍然绕不开同一张工具表
- new session construction
- Resume 与 Fork:恢复的不是同一件事
- normalized input handoff
- Prompt 怎样变成一份 Responses 请求
- OAuth refresh and elicitation response routing
- 外部 MCP Server 的工具怎样进入 Codex
- observe mailbox, steer, or timeout
- 多个 Agent 怎样通信、等待与中断
- optionally start a follow-up turn
- 多个 Agent 怎样通信、等待与中断
- orchestrated runtime attempt
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- ordered output drain
- 模型为什么能调用工具:两张表,一个闭环
- parent history materialization before fork
- 一个子 Agent 为什么需要独立 Thread
- parse stdout, stderr, exit code, and JSON
- Hooks 为什么不是一条统一回调链
- patch safety assessment
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- pending callback resolution or cancellation
- App-server 如何把 Core 变成一套可消费协议
- pending-input re-entry
- Codex 为什么有两层循环
- per-cwd and config cache invalidation
- Skills 不是工具:从目录发现到渐进注入
- per-thread store mutation
- TUI 如何把事件流还原成一个稳定界面
- permission hook and guardian or user review
- 网络访问为什么另有一条决策链
- permission hook, Guardian or user approval
- 外部 MCP Server 的工具怎样进入 Codex
- permission-request hook
- 审批、Permission Profile 与沙箱各自拦什么
- persistent rollout materialization
- Resume 与 Fork:恢复的不是同一件事
- phase-2 selection and workspace synchronization
- Memory 不是更长的 History
- pin tag and commit
- 没有证据的“跑通”不算跑通
- PluginLoadOutcome snapshot and invalidation
- 一个 Plugin 怎样变成一组可安装能力
- policy and approval projection
- 模型返回的 Shell 参数,为什么还不是一条进程
- polluted memory forgetting
- Memory 不是更长的 History
- pre-spawn command rewriting
- 模型返回的 Shell 参数,为什么还不是一条进程
- prepare realtime provider, prompt, and session config
- 普通 Responses 与 Realtime 为什么是两套会话
- preview selected handlers for UI events
- Hooks 为什么不是一条统一回调链
- prompt history cloning
- 模型收到的指令从哪里来
- prompt normalization
- History 为什么不能直接拿去做 Prompt
- provider selection
- 模型不是一个字符串:Provider、目录与 ModelInfo
- record-time canonicalization
- History 为什么不能直接拿去做 Prompt
- recursive TOML merge
- Codex 启动时,哪一份配置说了算
- regular task
- 不要从目录开始读 Codex
- replay every rollout trace bundle
- 没有证据的“跑通”不算跑通
- request construction
- Prompt 怎样变成一份 Responses 请求
- request deserialization and queue selection
- App-server 如何把 Core 变成一套可消费协议
- request header assembly
- 登录身份不等于 Agent 身份
- requirements layer loading
- 配置能覆盖,Requirements 不能绕过
- resolve target and load resident Agent
- 多个 Agent 怎样通信、等待与中断
- Responses input handoff
- History 为什么不能直接拿去做 Prompt
- Responses tool advertisement
- 模型为什么能调用工具:两张表,一个闭环
- resume rehydration
- Goal 为什么必须活在 Turn 之上
- resume snapshot and request replay ordering
- App-server 如何把 Core 变成一套可消费协议
- resume source precedence
- Resume 与 Fork:恢复的不是同一件事
- resume the same rollout
- 没有证据的“跑通”不算跑通
- reuse incremental request or fall back to HTTP
- 普通 Responses 与 Realtime 为什么是两套会话
- rollout reconstruction into Resumed history
- Resume 与 Fork:恢复的不是同一件事
- root selection and SKILL.md traversal
- Skills 不是工具:从目录发现到渐进注入
- route audio, text, speech, and handoff events
- 普通 Responses 与 Realtime 为什么是两套会话
- running-thread rejoin
- Resume 与 Fork:恢复的不是同一件事
- runtime and persisted policy amendment
- 网络访问为什么另有一条决策链
- runtime handle attachment
- Goal 为什么必须活在 Turn 之上
- sampling and action follow-up
- Codex 为什么有两层循环
- selected capability root resolution
- 一个 Plugin 怎样变成一组可安装能力
- selected environment verification
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- serialize event-specific command input
- Hooks 为什么不是一条统一回调链
- session approval caching
- 审批、Permission Profile 与沙箱各自拦什么
- shell argv derivation
- 模型返回的 Shell 参数,为什么还不是一条进程
- skills, MCP, apps and hooks projection
- 一个 Plugin 怎样变成一组可安装能力
- snapshot construction and replay
- TUI 如何把事件流还原成一个稳定界面
- spawn argument parsing
- 一个子 Agent 为什么需要独立 Thread
- spawn input and fanout tasks
- 普通 Responses 与 Realtime 为什么是两套会话
- spawned process storage before initial yield
- 命令返回以后,进程为什么还活着
- StageOneOutput persistence
- Memory 不是更长的 History
- steer and pending queue
- 你按下回车后,谁接管这次任务
- steering
- 不要从目录开始读 Codex
- step-scoped tool snapshot
- 外部 MCP Server 的工具怎样进入 Codex
- StepContext capture
- 模型为什么能调用工具:两张表,一个闭环
- stop an existing conversation before replacing state
- 普通 Responses 与 Realtime 为什么是两套会话
- stop hook continuation
- Codex 为什么有两层循环
- stored lifecycle watcher drain and end event
- 命令返回以后,进程为什么还活着
- structured denial retry
- 审批、Permission Profile 与沙箱各自拦什么
- submission loop
- 不要从目录开始读 Codex
- task registration
- 登录身份不等于 Agent 身份
- task terminalization
- Codex 为什么有两层循环
- thread close failover
- TUI 如何把事件流还原成一个稳定界面
- thread creation and listener attachment
- App-server 如何把 Core 变成一套可消费协议
- thread idle continuation
- Goal 为什么必须活在 Turn 之上
- thread list and read lookup
- 同一段对话,为什么同时存在三种状态
- thread start or resume
- 同一个 codex,为什么会启动几套不同的系统
- thread target extraction
- TUI 如何把事件流还原成一个稳定界面
- thread/start spec admission
- Dynamic Tools 为什么把执行权交回宿主
- tool future draining
- 一条 Responses 流怎样变成下一步行动
- tool planning
- 模型为什么能调用工具:两张表,一个闭环
- ToolInfo normalization and filtering
- 外部 MCP Server 的工具怎样进入 Codex
- ToolRouter and registry execution
- Code Mode 为什么仍然绕不开同一张工具表
- tools/call and result projection
- 外部 MCP Server 的工具怎样进入 Codex
- top-level dispatch
- 同一个 codex,为什么会启动几套不同的系统
- transport event decoding
- 一条 Responses 流怎样变成下一步行动
- transport selection and 426 handoff
- Prompt 怎样变成一份 Responses 请求
- transport shutdown
- 同一个 codex,为什么会启动几套不同的系统
- turn context assembly
- 模型收到的指令从哪里来
- turn context construction
- 模型不是一个字符串:Provider、目录与 ModelInfo
- turn input mapping and Op submission
- App-server 如何把 Core 变成一套可消费协议
- turn notification projection
- 同一个 codex,为什么会启动几套不同的系统
- turn token accounting
- Goal 为什么必须活在 Turn 之上
- turn/start acceptance
- 你按下回车后,谁接管这次任务
- TurnStarted once
- Codex 为什么有两层循环
- typed argument decoding
- 模型返回的 Shell 参数,为什么还不是一条进程
- typed input routing
- 你按下回车后,谁接管这次任务
- typed notification projection
- App-server 如何把 Core 变成一套可消费协议
- typed override application
- Codex 启动时,哪一份配置说了算
- typed result resolution into JavaScript
- Code Mode 为什么仍然绕不开同一张工具表
- user input triggers asynchronous startup
- Memory 不是更长的 History
- user-context body read
- Skills 不是工具:从目录发现到渐进注入
- V8 callback and pending Promise
- Code Mode 为什么仍然绕不开同一张工具表
- WebSocket incremental request
- Prompt 怎样变成一份 Responses 请求
- WebSocket to HTTP fallback
- 断流、限流和 401:Codex 分别从哪里恢复
- yield, wait, terminate, and shutdown
- Code Mode 为什么仍然绕不开同一张工具表
- ActivePermissionProfile
- 审批、Permission Profile 与沙箱各自拦什么
- add_dynamic_tools
- Dynamic Tools 为什么把执行权交回宿主
- AgentAssertion
- 登录身份不等于 Agent 身份
- AgentControl
- 一个子 Agent 为什么需要独立 Thread
- AgentControl::interrupt_agent
- 多个 Agent 怎样通信、等待与中断
- AgentControl::send_inter_agent_communication
- 多个 Agent 怎样通信、等待与中断
- AgentControl::shutdown_agent_tree
- 多个 Agent 怎样通信、等待与中断
- AgentExecutionLimiter
- 多个 Agent 怎样通信、等待与中断
- AgentGraphStore
- 一个子 Agent 为什么需要独立 Thread
- AgentIdentityKey
- 登录身份不等于 Agent 身份
- AgentPath
- 一个子 Agent 为什么需要独立 Thread
- AgentRegistry
- 一个子 Agent 为什么需要独立 Thread
- AgentsMdManager
- 模型收到的指令从哪里来
- AnyToolResult::code_mode_result
- Code Mode 为什么仍然绕不开同一张工具表
- append_hook_events
- Hooks 为什么不是一条统一回调链
- AppliedPatchChange
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- AppliedPatchDelta
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- apply_bespoke_event_handling
- App-server 如何把 Core 变成一套可消费协议
- apply_requirement_constrained_value
- 配置能覆盖,Requirements 不能绕过
- ApplyPatchAction
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- ApplyPatchRuntime
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- AskForApproval
- 审批、Permission Profile 与沙箱各自拦什么
- AuthDotJson.agent_identity
- 登录身份不等于 Agent 身份
- AvailableSkillsInstructions
- Skills 不是工具:从目录发现到渐进注入
- BindConnectionAttribution
- 网络访问为什么另有一条决策链
- build_prompt
- Prompt 怎样变成一份 Responses 请求
- build_responses_request
- Prompt 怎样变成一份 Responses 请求
- build_skill_injections
- Skills 不是工具:从目录发现到渐进注入
- CallToolResult
- 外部 MCP Server 的工具怎样进入 Codex
- CancellationToken
- 你按下回车后,谁接管这次任务
- canonicalize_command_for_approval
- 模型返回的 Shell 参数,为什么还不是一条进程
- CellActor
- Code Mode 为什么仍然绕不开同一张工具表
- ChatWidget
- TUI 如何把事件流还原成一个稳定界面
- CleanBackgroundTerminals
- 命令返回以后,进程为什么还活着
- CliConfigOverrides
- Codex 启动时,哪一份配置说了算
- ClientRequest
- App-server 如何把 Core 变成一套可消费协议
- ClientRequestSerializationScope
- App-server 如何把 Core 变成一套可消费协议
- code_cell:handbook-e2e-exec
- 没有证据的“跑通”不算跑通
- CodeModeDispatchBroker
- Code Mode 为什么仍然绕不开同一张工具表
- CodeModeExecuteHandler
- Code Mode 为什么仍然绕不开同一张工具表
- CodeModeWaitHandler
- Code Mode 为什么仍然绕不开同一张工具表
- Codex
- 不要从目录开始读 Codex
- CodexErr::TurnAborted
- 断流、限流和 401:Codex 分别从哪里恢复
- collect_explicit_skill_mentions
- Skills 不是工具:从目录发现到渐进注入
- commands_for_exec_policy
- 模型返回的 Shell 参数,为什么还不是一条进程
- CompactedItem
- 上下文快满时,Codex 到底压缩了什么
- CompactTask
- 上下文快满时,Codex 到底压缩了什么
- ConfigOverrides
- Codex 启动时,哪一份配置说了算
- ConfigRequirements
- 配置能覆盖,Requirements 不能绕过
- ConnectionSessionState
- App-server 如何把 Core 变成一套可消费协议
- Constrained
- 配置能覆盖,Requirements 不能绕过
- ConstrainedWithSource
- 配置能覆盖,Requirements 不能绕过
- ContextManager
- History 为什么不能直接拿去做 Prompt同一段对话,为什么同时存在三种状态
- ConversationStartParams
- 普通 Responses 与 Realtime 为什么是两套会话
- ConversationState
- 普通 Responses 与 Realtime 为什么是两套会话
- CoreToolPlanContext
- 模型为什么能调用工具:两张表,一个闭环
- CoreToolRuntime
- 模型为什么能调用工具:两张表,一个闭环
- drain_in_flight
- 一条 Responses 流怎样变成下一步行动断流、限流和 401:Codex 分别从哪里恢复
- DynamicToolCallParams
- Dynamic Tools 为什么把执行权交回宿主
- DynamicToolCallRequest
- Dynamic Tools 为什么把执行权交回宿主
- DynamicToolHandler
- Dynamic Tools 为什么把执行权交回宿主
- DynamicToolResponse
- Dynamic Tools 为什么把执行权交回宿主
- DynamicToolSpec
- Dynamic Tools 为什么把执行权交回宿主
- effective_config
- Codex 启动时,哪一份配置说了算
- ensure_call_outputs_present
- History 为什么不能直接拿去做 Prompt
- ensure_conversation_listener
- App-server 如何把 Core 变成一套可消费协议
- EventMsg::ThreadGoalUpdated
- Goal 为什么必须活在 Turn 之上
- ExecApprovalRequirement
- 审批、Permission Profile 与沙箱各自拦什么
- ExecCommandArgs
- 模型返回的 Shell 参数,为什么还不是一条进程
- ExecCommandEnvironmentArgs
- 模型返回的 Shell 参数,为什么还不是一条进程
- ExecCommandToolOutput
- 命令返回以后,进程为什么还活着
- ExecExpiration::DefaultTimeout
- 模型返回的 Shell 参数,为什么还不是一条进程
- execute_handlers
- Hooks 为什么不是一条统一回调链
- ExecutorPluginProvider
- 一个 Plugin 怎样变成一组可安装能力
- ExtensionRegistryBuilder
- 一个 Plugin 怎样变成一组可安装能力
- Feature::RealtimeConversation
- 普通 Responses 与 Realtime 为什么是两套会话
- FileChangeItem
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- for_prompt
- History 为什么不能直接拿去做 Prompt
- ForkSnapshot
- Resume 与 Fork:恢复的不是同一件事
- get_model_info
- 模型不是一个字符串:Provider、目录与 ModelInfo
- GetContextRemainingOutput
- Code Mode 为什么仍然绕不开同一张工具表
- goal_state_lock
- Goal 为什么必须活在 Turn 之上
- GoalAccountingState
- Goal 为什么必须活在 Turn 之上
- GoalRuntimeHandle
- Goal 为什么必须活在 Turn 之上
- GoalService
- Goal 为什么必须活在 Turn 之上
- GoalStore
- Goal 为什么必须活在 Turn 之上
- GoalToolExecutor
- Goal 为什么必须活在 Turn 之上
- GranularApprovalConfig
- 审批、Permission Profile 与沙箱各自拦什么
- GuardianApprovalRequest::NetworkAccess
- 网络访问为什么另有一条决策链
- GuardianWarning
- 没有证据的“跑通”不算跑通
- handle_mcp_tool_call
- 外部 MCP Server 的工具怎样进入 Codex
- handle_output_item_done
- 一条 Responses 流怎样变成下一步行动
- handle_retryable_response_stream_error
- 断流、限流和 401:Codex 分别从哪里恢复
- HookEventName
- Hooks 为什么不是一条统一回调链
- HookExecutionMode
- Hooks 为什么不是一条统一回调链
- HookHandlerType
- Hooks 为什么不是一条统一回调链
- HookRuntimeOutcome
- Hooks 为什么不是一条统一回调链
- HookScope
- Hooks 为什么不是一条统一回调链
- HostSkillsSnapshot
- Skills 不是工具:从目录发现到渐进注入
- InitialHistory
- Resume 与 Fork:恢复的不是同一件事
- InProcessAppServerClient
- 同一个 codex,为什么会启动几套不同的系统
- InProcessCodeModeSession
- Code Mode 为什么仍然绕不开同一张工具表
- InputQueue
- 多个 Agent 怎样通信、等待与中断
- InputQueueActivity
- 多个 Agent 怎样通信、等待与中断
- InterAgentCommunication
- 多个 Agent 怎样通信、等待与中断
- LiveThread
- 同一段对话,为什么同时存在三种状态
- LoadedAgentsMd
- 模型收到的指令从哪里来
- LoadedPlugin
- 一个 Plugin 怎样变成一组可安装能力
- LoaderOverrides
- Codex 启动时,哪一份配置说了算
- LocalThreadStore
- 同一段对话,为什么同时存在三种状态
- login_with_access_token
- 登录身份不等于 Agent 身份
- MailboxDeliveryPhase
- Codex 为什么有两层循环
- map_response_events
- 一条 Responses 流怎样变成下一步行动
- McpConnectionManager
- 外部 MCP Server 的工具怎样进入 Codex
- McpHandler
- 外部 MCP Server 的工具怎样进入 Codex
- McpManager
- 外部 MCP Server 的工具怎样进入 Codex
- McpRuntimeProjection
- 外部 MCP Server 的工具怎样进入 Codex
- McpRuntimeSnapshot
- 外部 MCP Server 的工具怎样进入 Codex
- McpServerContributor
- 一个 Plugin 怎样变成一组可安装能力
- McpToolExposure
- 外部 MCP Server 的工具怎样进入 Codex
- MemoriesExtension
- Memory 不是更长的 History
- MemoriesUsageKind
- Memory 不是更长的 History
- MemoryCitation
- Memory 不是更长的 History
- MemoryStartupContext
- Memory 不是更长的 History
- MemoryStore
- Memory 不是更长的 History
- MemoryTool
- Memory 不是更长的 History
- MessageDeliveryMode
- 多个 Agent 怎样通信、等待与中断
- MessageProcessor
- App-server 如何把 Core 变成一套可消费协议
- ModelClient
- 普通 Responses 与 Realtime 为什么是两套会话
- ModelClientSession
- Codex 为什么有两层循环断流、限流和 401:Codex 分别从哪里恢复普通 Responses 与 Realtime 为什么是两套会话
- ModelProvider
- 模型不是一个字符串:Provider、目录与 ModelInfo
- ModelProviderInfo
- 模型不是一个字符串:Provider、目录与 ModelInfo
- ModelsCacheManager
- 模型不是一个字符串:Provider、目录与 ModelInfo
- ModelsManager
- 模型不是一个字符串:Provider、目录与 ModelInfo
- MultitoolCli
- 同一个 codex,为什么会启动几套不同的系统
- NetworkApprovalContext
- 网络访问为什么另有一条决策链
- NetworkApprovalService
- 网络访问为什么另有一条决策链
- NetworkPolicyDecider
- 网络访问为什么另有一条决策链
- NetworkPolicyDecisionPayload
- 网络访问为什么另有一条决策链
- NetworkProxyState::host_blocked
- 网络访问为什么另有一条决策链
- notify_dynamic_tool_response
- Dynamic Tools 为什么把执行权交回宿主
- on_call_response
- Dynamic Tools 为什么把执行权交回宿主
- Op::UserInput
- 你按下回车后,谁接管这次任务
- origins
- Codex 启动时,哪一份配置说了算
- PendingCallbackEntry
- App-server 如何把 Core 变成一套可消费协议
- PendingInteractiveReplayState
- TUI 如何把事件流还原成一个稳定界面
- PermissionProfile
- 审批、Permission Profile 与沙箱各自拦什么
- PermissionRequestOutcome
- Hooks 为什么不是一条统一回调链
- Phase2JobClaimOutcome
- Memory 不是更长的 History
- PlannedTools
- 模型为什么能调用工具:两张表,一个闭环
- PluginLoadOutcome
- 一个 Plugin 怎样变成一组可安装能力
- PluginManifest
- 一个 Plugin 怎样变成一组可安装能力
- PluginSkillRoot
- 一个 Plugin 怎样变成一组可安装能力
- PluginsManager
- 一个 Plugin 怎样变成一组可安装能力
- PluginStore
- 一个 Plugin 怎样变成一组可安装能力
- PostToolUseOutcome
- Hooks 为什么不是一条统一回调链
- PreToolUseOutcome
- Hooks 为什么不是一条统一回调链
- previous_response_id
- Prompt 怎样变成一份 Responses 请求
- process_responses_event
- 一条 Responses 流怎样变成下一步行动
- ProcessEntry
- 命令返回以后,进程为什么还活着
- ProcessStore
- 命令返回以后,进程为什么还活着
- progress_accounting_lock
- Goal 为什么必须活在 Turn 之上
- RealtimeConversationManager
- 普通 Responses 与 Realtime 为什么是两套会话
- RealtimeConversationRealtime
- 普通 Responses 与 Realtime 为什么是两套会话
- RealtimeConversationStart
- 普通 Responses 与 Realtime 为什么是两套会话
- RealtimeResponseCreateQueue
- 普通 Responses 与 Realtime 为什么是两套会话
- record_completed_response_item
- Memory 不是更长的 History
- record_conversation_items
- 不要从目录开始读 Codex
- record_items
- History 为什么不能直接拿去做 Prompt
- RegularTask
- 不要从目录开始读 Codex你按下回车后,谁接管这次任务
- RegularTask::run
- Codex 为什么有两层循环
- remove_orphan_outputs
- History 为什么不能直接拿去做 Prompt
- replay_bundle
- 没有证据的“跑通”不算跑通
- ReplayKind
- TUI 如何把事件流还原成一个稳定界面
- RequestSerializationQueues
- App-server 如何把 Core 变成一套可消费协议
- RequirementSource
- 配置能覆盖,Requirements 不能绕过
- ResolvedPlugin
- 一个 Plugin 怎样变成一组可安装能力
- ResponseCreateWsRequest
- Prompt 怎样变成一份 Responses 请求
- ResponseEvent
- 一条 Responses 流怎样变成下一步行动
- ResponseEvent::RateLimits
- 断流、限流和 401:Codex 分别从哪里恢复
- ResponseItem
- 模型收到的指令从哪里来
- ResponseItem::FunctionCall
- 模型返回的 Shell 参数,为什么还不是一条进程
- ResponsesApiRequest
- Prompt 怎样变成一份 Responses 请求
- ResponseStream
- Prompt 怎样变成一份 Responses 请求
- ResumedHistory
- Resume 与 Fork:恢复的不是同一件事
- ReviewDecision
- 审批、Permission Profile 与沙箱各自拦什么
- RmcpClient
- 外部 MCP Server 的工具怎样进入 Codex
- RolloutItem
- 同一段对话,为什么同时存在三种状态
- RolloutTrace
- 没有证据的“跑通”不算跑通
- routes_approval_to_guardian
- 网络访问为什么另有一条决策链
- run_main
- 同一个 codex,为什么会启动几套不同的系统
- run_main_with_transport_options
- 同一个 codex,为什么会启动几套不同的系统
- run_pre_tool_use_hooks
- Hooks 为什么不是一条统一回调链
- run_sampling_request
- Codex 为什么有两层循环断流、限流和 401:Codex 分别从哪里恢复
- run_turn_stop_hooks
- Codex 为什么有两层循环Hooks 为什么不是一条统一回调链
- run_with_retry
- 断流、限流和 401:Codex 分别从哪里恢复
- RunningTask
- 你按下回车后,谁接管这次任务
- SamplingRequestResult
- Codex 为什么有两层循环一条 Responses 流怎样变成下一步行动
- SandboxAttempt
- 审批、Permission Profile 与沙箱各自拦什么
- SandboxPermissions
- 审批、Permission Profile 与沙箱各自拦什么
- SandboxType
- 审批、Permission Profile 与沙箱各自拦什么
- scope_for_event
- Hooks 为什么不是一条统一回调链
- select_handlers_for_matcher_inputs
- Hooks 为什么不是一条统一回调链
- SelectedCapabilityRoot
- 一个 Plugin 怎样变成一组可安装能力
- SelectedExecutorPluginMcpContributor
- 一个 Plugin 怎样变成一组可安装能力
- server_notification_thread_target
- TUI 如何把事件流还原成一个稳定界面
- server_request_thread_id
- TUI 如何把事件流还原成一个稳定界面
- ServerNotificationThreadTarget
- TUI 如何把事件流还原成一个稳定界面
- Session
- 不要从目录开始读 Codex
- Session::maybe_notify_parent_of_terminal_turn
- 多个 Agent 怎样通信、等待与中断
- Session::record_conversation_items
- 同一段对话,为什么同时存在三种状态
- Session::steer_input
- 你按下回车后,谁接管这次任务
- SessionFlags
- Codex 启动时,哪一份配置说了算
- SessionMeta
- 一个子 Agent 为什么需要独立 Thread
- SessionRuntime
- Code Mode 为什么仍然绕不开同一张工具表
- SessionSource
- 同一个 codex,为什么会启动几套不同的系统一个子 Agent 为什么需要独立 Thread
- SessionSource::SubAgent
- 登录身份不等于 Agent 身份
- SessionTelemetry
- 没有证据的“跑通”不算跑通
- ShellCommandToolCallParams
- 模型返回的 Shell 参数,为什么还不是一条进程
- ShellEnvironmentPolicy
- 模型返回的 Shell 参数,为什么还不是一条进程
- SkillInstructions
- Skills 不是工具:从目录发现到渐进注入
- SkillLoadOutcome
- Skills 不是工具:从目录发现到渐进注入
- SkillMetadata
- Skills 不是工具:从目录发现到渐进注入
- SkillsService
- Skills 不是工具:从目录发现到渐进注入
- spawn_exit_watcher
- 命令返回以后,进程为什么还活着
- SpawnAgentArgs
- 一个子 Agent 为什么需要独立 Thread
- SpawnAgentForkMode
- 一个子 Agent 为什么需要独立 Thread
- SpawnAgentOptions
- 一个子 Agent 为什么需要独立 Thread
- StageOneOutput
- Memory 不是更长的 History
- start_streaming_output
- 命令返回以后,进程为什么还活着
- StateRuntime
- 同一段对话,为什么同时存在三种状态
- StoredThreadHistory
- 同一段对话,为什么同时存在三种状态
- SubAgentSource::ThreadSpawn
- 一个子 Agent 为什么需要独立 Thread
- Subcommand
- 同一个 codex,为什么会启动几套不同的系统
- Submission
- 不要从目录开始读 Codex你按下回车后,谁接管这次任务
- TestAppServer
- 没有证据的“跑通”不算跑通
- TestCodex
- 没有证据的“跑通”不算跑通
- TestCodexBuilder
- 没有证据的“跑通”不算跑通
- TestCodexExecBuilder
- 没有证据的“跑通”不算跑通
- ThreadBufferedEvent
- TUI 如何把事件流还原成一个稳定界面
- ThreadEventChannel
- TUI 如何把事件流还原成一个稳定界面
- ThreadEventSnapshot
- TUI 如何把事件流还原成一个稳定界面
- ThreadEventStore
- TUI 如何把事件流还原成一个稳定界面
- ThreadForkParams
- Resume 与 Fork:恢复的不是同一件事
- ThreadGoal
- Goal 为什么必须活在 Turn 之上
- ThreadGoalStatus
- Goal 为什么必须活在 Turn 之上
- ThreadManager
- 同一个 codex,为什么会启动几套不同的系统
- ThreadManager::fork_thread_from_history
- Resume 与 Fork:恢复的不是同一件事
- ThreadManager::resume_thread_with_history
- Resume 与 Fork:恢复的不是同一件事
- ThreadManager::spawn_thread_with_source
- 一个子 Agent 为什么需要独立 Thread
- ThreadMetadataSync
- 同一段对话,为什么同时存在三种状态
- ThreadProcessor
- App-server 如何把 Core 变成一套可消费协议
- ThreadRealtimeStartParams
- 普通 Responses 与 Realtime 为什么是两套会话
- ThreadResumeParams
- Resume 与 Fork:恢复的不是同一件事
- ThreadScopedOutgoingMessageSender
- App-server 如何把 Core 变成一套可消费协议
- ThreadSpawnEdgeStatus
- 一个子 Agent 为什么需要独立 Thread
- ThreadStartParams.dynamic_tools
- Dynamic Tools 为什么把执行权交回宿主
- ThreadTraceContext
- 没有证据的“跑通”不算跑通
- ToolCallRuntime
- 模型为什么能调用工具:两张表,一个闭环Code Mode 为什么仍然绕不开同一张工具表
- ToolExposure
- 外部 MCP Server 的工具怎样进入 Codex
- ToolInfo
- 外部 MCP Server 的工具怎样进入 Codex
- ToolInvocation
- 模型为什么能调用工具:两张表,一个闭环
- ToolOrchestrator
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- ToolRegistry
- 模型为什么能调用工具:两张表,一个闭环Skills 不是工具:从目录发现到渐进注入
- truncate_rollout_after_turn_id
- Resume 与 Fork:恢复的不是同一件事
- try_run_sampling_request
- Codex 为什么有两层循环一条 Responses 流怎样变成下一步行动
- TurnContext
- 模型收到的指令从哪里来
- TurnContext::model_context_window
- 模型不是一个字符串:Provider、目录与 ModelInfo
- TurnDiffTracker
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- TurnInput
- 模型收到的指令从哪里来
- TurnProcessor
- App-server 如何把 Core 变成一套可消费协议
- TurnState.pending_dynamic_tools
- Dynamic Tools 为什么把执行权交回宿主
- UnauthorizedRecovery
- 断流、限流和 401:Codex 分别从哪里恢复
- UnifiedExecProcess
- 命令返回以后,进程为什么还活着
- UnifiedExecProcessManager
- 命令返回以后,进程为什么还活着
- UserInstructionsProvider
- 模型收到的指令从哪里来
- VT100Backend
- 没有证据的“跑通”不算跑通
- WaitOutcome
- 多个 Agent 怎样通信、等待与中断
- WebsocketSession
- 普通 Responses 与 Realtime 为什么是两套会话
- WorldStateSnapshot
- History 为什么不能直接拿去做 Prompt
- x-codex-turn-state
- 登录身份不等于 Agent 身份
- 687 filtered tests
- Dynamic Tools 为什么把执行权交回宿主
- 固定 checkout git grep 控制链
- 不要从目录开始读 Codex
- 固定 profile overlay 单元测试
- Codex 启动时,哪一份配置说了算
- 固定 tag 构建 codex-cli 并检查 help
- 同一个 codex,为什么会启动几套不同的系统
- 配置来源与最终值对照
- Codex 启动时,哪一份配置说了算
- 入口矩阵逐行反查 run_main
- 同一个 codex,为什么会启动几套不同的系统
- active turn id assertion
- 你按下回车后,谁接管这次任务
- apply_patch_emits_turn_diff_event_with_unified_diff
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- approval_matrix_covers_group
- 审批、Permission Profile 与沙箱各自拦什么
- block_decision_with_reason_sets_continuation_prompt
- Hooks 为什么不是一条统一回调链
- cached-input token subtraction
- Goal 为什么必须活在 Turn 之上
- calibrated same-commit Cargo.lock test archive
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- chatgpt_auth_sends_correct_request
- Prompt 怎样变成一份 Responses 请求
- code_mode_get_context_remaining_returns_structured_result
- Code Mode 为什么仍然绕不开同一张工具表
- codex_returns_json_result_for_gpt5
- Prompt 怎样变成一份 Responses 请求
- compact_resume_and_fork_preserve_model_history_view
- Resume 与 Fork:恢复的不是同一件事
- continue_false_stops_before_compaction
- Hooks 为什么不是一条统一回调链
- conversation_start_audio_text_close_round_trip
- 普通 Responses 与 Realtime 为什么是两套会话
- current_time_tool_returns_the_latest_time
- 一条 Responses 流怎样变成下一步行动模型为什么能调用工具:两张表,一个闭环
- default worker stack overflow
- Code Mode 为什么仍然绕不开同一张工具表
- deferred_extension_tools_are_discoverable_with_tool_search
- 模型为什么能调用工具:两张表,一个闭环
- denied_network_policy_message_for_denylist_block_is_explicit
- 网络访问为什么另有一条决策链
- deterministic external time fixture
- 一条 Responses 流怎样变成下一步行动
- deterministic TimeProvider two-request round trip
- 模型为什么能调用工具:两张表,一个闭环
- dynamic_tool_call_round_trip_sends_content_items_to_model
- Dynamic Tools 为什么把执行权交回宿主
- environment_descriptor_binds_every_manifest_resource
- 一个 Plugin 怎样变成一组可安装能力
- ephemeral_spawn_does_not_persist_agent_graph_edge
- 一个子 Agent 为什么需要独立 Thread
- evaluates_heredoc_script_against_prefix_rules
- 模型返回的 Shell 参数,为什么还不是一条进程
- exact codex-core library test
- 模型返回的 Shell 参数,为什么还不是一条进程
- exact codex-core unit test
- 网络访问为什么另有一条决策链
- five generated approval groups
- 审批、Permission Profile 与沙箱各自拦什么
- five-boundary enforcement matrix
- 配置能覆盖,Requirements 不能绕过
- fixed checkout auth test
- 登录身份不等于 Agent 身份
- fixed checkout Cargo.lock cleanliness check
- History 为什么不能直接拿去做 Prompt
- fixed checkout model metadata test
- 模型不是一个字符串:Provider、目录与 ModelInfo
- fixed checkout request verification
- Prompt 怎样变成一份 Responses 请求
- fixed checkout same-turn continuation verification
- Codex 为什么有两层循环
- fixed checkout source verification
- 你按下回车后,谁接管这次任务模型收到的指令从哪里来
- fixed commit archive lock reconciliation
- 断流、限流和 401:Codex 分别从哪里恢复
- four-layer GuardianWarning comparison
- 没有证据的“跑通”不算跑通
- function_call_output follow-up assertion
- Dynamic Tools 为什么把执行权交回宿主
- get_model_info_tracks_fallback_usage
- 模型不是一个字符串:Provider、目录与 ModelInfo
- guardian_review_surfaces_responses_api_errors_in_rejection_reason
- 没有证据的“跑通”不算跑通
- guardian_warning_notifications_route_to_threads
- TUI 如何把事件流还原成一个稳定界面没有证据的“跑通”不算跑通
- handbook_full_task_config_request_patch_rollout_resume_trace
- 没有证据的“跑通”不算跑通
- heredoc literal-command prefix fixture
- 模型返回的 Shell 参数,为什么还不是一条进程
- instruction source ordering assertion
- 模型收到的指令从哪里来
- instruction_sources_include_global_before_agents_md_docs
- 模型收到的指令从哪里来
- isolated Cargo.lock calibration
- 命令返回以后,进程为什么还活着
- just test --locked -p codex-plugin
- 一个 Plugin 怎样变成一组可安装能力
- live_app_server_guardian_warning_notification_renders_message
- TUI 如何把事件流还原成一个稳定界面没有证据的“跑通”不算跑通
- live_thread_observes_appended_items_into_sqlite_metadata
- 同一段对话,为什么同时存在三种状态
- local compaction unit tests
- 上下文快满时,Codex 到底压缩了什么
- local rollout and SQLite projection comparison
- 同一段对话,为什么同时存在三种状态
- login_with_access_token_writes_agent_identity_jwt
- 登录身份不等于 Agent 身份
- loopback bind permission calibration
- Memory 不是更长的 History
- memories_startup_phase2_tracks_workspace_diff_across_runs
- Memory 不是更长的 History
- multi_agent_v2_followup_task_completion_notifies_parent_on_every_turn
- 多个 Agent 怎样通信、等待与中断
- multi_agent_v2_wait_agent_returns_summary_for_mailbox_activity
- 多个 Agent 怎样通信、等待与中断
- named test executes one case
- 外部 MCP Server 的工具怎样进入 Codex
- named test execution gate
- Memory 不是更长的 HistoryGoal 为什么必须活在 Turn 之上
- network-disabled integration-test audit
- 上下文快满时,Codex 到底压缩了什么
- nonzero named-test gate
- 网络访问为什么另有一条决策链
- normalize_adds_missing_output_for_function_call_inserts_output
- History 为什么不能直接拿去做 Prompt
- one-point-one-second idle flush
- Goal 为什么必须活在 Turn 之上
- Part 3 shared archive preparation
- 审批、Permission Profile 与沙箱各自拦什么
- permission profile fallback
- 配置能覆盖,Requirements 不能绕过
- permission_decision_deny_blocks_processing
- Hooks 为什么不是一条统一回调链
- prefix and namespaced lookup
- 模型不是一个字符串:Provider、目录与 ModelInfo
- project-standard RUST_MIN_STACK calibration
- 多个 Agent 怎样通信、等待与中断
- raw_append_items_does_not_update_sqlite_metadata
- 同一段对话,为什么同时存在三种状态
- read-only requirements fixture
- 配置能覆盖,Requirements 不能绕过
- repository just test harness
- Codex 为什么有两层循环
- response then thread-started observation
- App-server 如何把 Core 变成一套可消费协议
- responses_lite_uses_input_items_for_instructions_and_tools
- Prompt 怎样变成一份 Responses 请求
- responses_websocket_v2_incremental_requests_are_reused_across_turns
- 普通 Responses 与 Realtime 为什么是两套会话
- responses_websocket_v2_requests_use_v2_when_provider_supports_websockets
- Prompt 怎样变成一份 Responses 请求
- running 1 test
- Dynamic Tools 为什么把执行权交回宿主
- running 1 test and 954 filtered out
- Code Mode 为什么仍然绕不开同一张工具表
- running 1 test and filtered count
- Skills 不是工具:从目录发现到渐进注入
- RUST_MIN_STACK harness gate
- Skills 不是工具:从目录发现到渐进注入一个子 Agent 为什么需要独立 Thread
- RUST_MIN_STACK rerun
- Code Mode 为什么仍然绕不开同一张工具表
- same call_id tool output round trip
- 一条 Responses 流怎样变成下一步行动
- shutdown_agent_tree_closes_live_descendants
- 一个子 Agent 为什么需要独立 Thread多个 Agent 怎样通信、等待与中断
- source checkout and worktree fingerprint guard
- 没有证据的“跑通”不算跑通
- source verifier for memory ownership ranges
- Memory 不是更长的 History
- source-rollout immutability check
- Resume 与 Fork:恢复的不是同一件事
- source-verified package-root rejection
- 一个 Plugin 怎样变成一组可安装能力
- source-verified write-order trace
- 同一段对话,为什么同时存在三种状态
- spawn_agent_creates_thread_and_sends_prompt
- 一个子 Agent 为什么需要独立 Thread
- spawn_agent_fork_flushes_parent_rollout_before_loading_history
- 一个子 Agent 为什么需要独立 Thread
- stdio_server_round_trip
- 外部 MCP Server 的工具怎样进入 Codex
- stop_hook_can_block_multiple_times_in_same_turn
- Codex 为什么有两层循环
- successful stdio round trip
- 外部 MCP Server 的工具怎样进入 Codex
- synthetic_call_output_id_is_stable_across_resumes
- History 为什么不能直接拿去做 Prompt
- tag 与 commit 校验
- 不要从目录开始读 Codex
- task registration source boundary
- 登录身份不等于 Agent 身份
- test_apply_patch_cli_failure_after_partial_success_leaves_changes
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- test_stdio_server fixture calibration
- 外部 MCP Server 的工具怎样进入 Codex
- text and data-image content items
- Dynamic Tools 为什么把执行权交回宿主
- thread_fork_at_last_turn_id_keeps_only_terminal_prefix
- Resume 与 Fork:恢复的不是同一件事
- thread_fork_creates_new_thread_and_emits_started
- Resume 与 Fork:恢复的不是同一件事
- thread_fork_ephemeral_remains_pathless_and_omits_listing
- Resume 与 Fork:恢复的不是同一件事
- thread_resume_rehydrates_active_goal_idle_accounting
- Goal 为什么必须活在 Turn 之上
- thread_resume_returns_rollout_history
- Resume 与 Fork:恢复的不是同一件事
- thread_start_creates_thread_and_emits_started
- App-server 如何把 Core 变成一套可消费协议
- three targeted codex-hooks tests with project recipe
- Hooks 为什么不是一条统一回调链
- Tokio worker stack calibration
- 外部 MCP Server 的工具怎样进入 Codex
- turn_steer_returns_active_turn_id
- 你按下回车后,谁接管这次任务
- two adjacent layer tests for routing and rendering
- TUI 如何把事件流还原成一个稳定界面
- two independent local WebSocket transport tests
- 普通 Responses 与 Realtime 为什么是两套会话
- typed request harness
- App-server 如何把 Core 变成一套可消费协议
- unified_exec_full_lifecycle_with_background_end_event
- 命令返回以后,进程为什么还活着
- unified_exec_interrupt_preserves_long_running_session
- 命令返回以后,进程为什么还活着
- unified_exec_keeps_long_running_session_after_turn_end
- 命令返回以后,进程为什么还活着
- unified_exec_reuses_session_via_stdin
- 命令返回以后,进程为什么还活着
- update_goal_can_block_and_accounts_final_progress
- Goal 为什么必须活在 Turn 之上
- user_turn_includes_skill_instructions
- Skills 不是工具:从目录发现到渐进注入
- verify_guardian_warning_notification_serialization
- 没有证据的“跑通”不算跑通
- websocket_fallback_is_sticky_across_turns
- 断流、限流和 401:Codex 分别从哪里恢复
- Wiremock cross-turn sticky fallback counts
- 断流、限流和 401:Codex 分别从哪里恢复
- zero-test gate
- 一个 Plugin 怎样变成一组可安装能力
- zero-test rejection gate
- Dynamic Tools 为什么把执行权交回宿主Code Mode 为什么仍然绕不开同一张工具表
- 把 401 recovery 算进 request_max_retries
- 断流、限流和 401:Codex 分别从哪里恢复
- 把 426 fallback 当成 turn 重启
- Prompt 怎样变成一份 Responses 请求
- 把 AgentPath 当成 ThreadId
- 一个子 Agent 为什么需要独立 Thread
- 把 AGENTS.md 当成 developer message
- 模型收到的指令从哪里来
- 把 allowlist miss 与 private-network deny 混为一类
- 网络访问为什么另有一条决策链
- 把 app-server 当 turn owner
- 不要从目录开始读 Codex
- 把 app-server request cancellation 与 Core waiter cleanup 混成一件事
- Dynamic Tools 为什么把执行权交回宿主
- 把 app-server snapshot 当成 durable rollout
- App-server 如何把 Core 变成一套可消费协议
- 把 approval cache identity 送进 exec-policy
- 审批、Permission Profile 与沙箱各自拦什么
- 把 apps/connectors 与插件 MCP server 的路由策略写成固定注册
- 一个 Plugin 怎样变成一组可安装能力
- 把 async、prompt、agent handler 当成已执行
- Hooks 为什么不是一条统一回调链
- 把 attribution token 当成持久身份或通用认证
- 网络访问为什么另有一条决策链
- 把 audio queue 满时的丢帧写成可靠缓冲
- 普通 Responses 与 Realtime 为什么是两套会话
- 把 available skills instructions 当成 ToolSpec 注册
- Skills 不是工具:从目录发现到渐进注入
- 把 blocked 当成 complete
- Goal 为什么必须活在 Turn 之上
- 把 CallToolResult 的 is_error 当成 transport 失败
- 外部 MCP Server 的工具怎样进入 Codex
- 把 cancellation 当成 side effect rollback
- 你按下回车后,谁接管这次任务
- 把 cargo 的 exit 0 当成完整 Agent 证明
- 没有证据的“跑通”不算跑通
- 把 Cargo 依赖当调用链
- 不要从目录开始读 Codex
- 把 channel full 后的异步补投写成仍然保序
- TUI 如何把事件流还原成一个稳定界面
- 把 channel full 写成事件永久丢失
- TUI 如何把事件流还原成一个稳定界面
- 把 checkpoint 当成删除旧 JSONL
- 上下文快满时,Codex 到底压缩了什么
- 把 citation 文本出现当成任意 thread 都已计入 usage
- Memory 不是更长的 History
- 把 Code Mode 当成第二张独立工具表
- Code Mode 为什么仍然绕不开同一张工具表
- 把 Codex 作为 MCP server 的反向路径当成普通 client 连接
- 外部 MCP Server 的工具怎样进入 Codex
- 把 codex binary 当成单一 runtime
- 同一个 codex,为什么会启动几套不同的系统
- 把 compaction 当成第五类 continuation
- Codex 为什么有两层循环
- 把 completion notification 写成可靠投递
- 多个 Agent 怎样通信、等待与中断
- 把 completion notification 写成自动启动父 turn
- 多个 Agent 怎样通信、等待与中断
- 把 configured server 当成已经完成 initialize 的 client
- 外部 MCP Server 的工具怎样进入 Codex
- 把 context window 当剩余 token
- 模型不是一个字符串:Provider、目录与 ModelInfo
- 把 Core 的 DynamicToolHandler 当成领域 executor
- Dynamic Tools 为什么把执行权交回宿主
- 把 Core 预检失败和 crate 顺序执行失败混为一谈
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- 把 Core EventMsg 原样当成稳定 wire contract
- App-server 如何把 Core 变成一套可消费协议
- 把 deferred tool 当成没有注册到 ToolRegistry
- 外部 MCP Server 的工具怎样进入 Codex
- 把 delta 当成会话真相
- 一条 Responses 流怎样变成下一步行动
- 把 disabled 或 error 的插件继续投影成 active 能力
- 一个 Plugin 怎样变成一组可安装能力
- 把 durable key 当成 task_id
- 登录身份不等于 Agent 身份
- 把 early-return 测试当成行为证据
- 上下文快满时,Codex 到底压缩了什么
- 把 enabled tool metadata 当成执行器
- Code Mode 为什么仍然绕不开同一张工具表
- 把 ephemeral child 写成 durable graph edge
- 一个子 Agent 为什么需要独立 Thread
- 把 ephemeral fork 写成有 durable rollout
- Resume 与 Fork:恢复的不是同一件事
- 把 exact 等同于无遗漏的文件系统事务
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- 把 exact lifecycle test 写成 stdin 或 interrupt 证明
- 命令返回以后,进程为什么还活着
- 把 exec 当成无界面的 TUI
- 同一个 codex,为什么会启动几套不同的系统
- 把 fake Responses provider 当成真实外部服务
- 没有证据的“跑通”不算跑通
- 把 fork 当成复制进程、socket 或 approval state
- Resume 与 Fork:恢复的不是同一件事
- 把 full-history fork 写成共享父 Thread
- 一个子 Agent 为什么需要独立 Thread
- 把 FunctionCall.arguments 当成已解析对象
- 模型返回的 Shell 参数,为什么还不是一条进程
- 把 Goal 当成 planner 或任务 DAG
- Goal 为什么必须活在 Turn 之上
- 把 Guardian 当成网络策略 owner
- 网络访问为什么另有一条决策链
- 把 handler 完成顺序当成 history 回填顺序
- 模型为什么能调用工具:两张表,一个闭环
- 把 handler argv 当成最终 launch argv
- 模型返回的 Shell 参数,为什么还不是一条进程
- 把 handoff 输出写成共享 Conversation history
- 普通 Responses 与 Realtime 为什么是两套会话
- 把 history resume 当成保留原 thread id
- Resume 与 Fork:恢复的不是同一件事
- 把 HTTP fallback 当成 Realtime fallback
- 普通 Responses 与 Realtime 为什么是两套会话
- 把 interrupt 写成删除 Agent 或持久图边
- 多个 Agent 怎样通信、等待与中断
- 把 interrupted marker 当成原 thread 的新 turn
- Resume 与 Fork:恢复的不是同一件事
- 把 invalid thread id 降级成 global event
- TUI 如何把事件流还原成一个稳定界面
- 把 lifecycle token 或 End 当成 backend exit 的充分证据
- 命令返回以后,进程为什么还活着
- 把 LinuxSeccomp 理解为只有 seccomp
- 审批、Permission Profile 与沙箱各自拦什么
- 把 Lite 当成另一套 Agent loop
- Prompt 怎样变成一份 Responses 请求
- 把 live registry 当成跨进程持久图
- 一个子 Agent 为什么需要独立 Thread
- 把 live subtree shutdown 写成清理所有历史谱系
- 多个 Agent 怎样通信、等待与中断
- 把 loopback PermissionDenied 当成测试通过
- Memory 不是更长的 History
- 把 mailbox activity 写成所有 Agent 已完成
- 多个 Agent 怎样通信、等待与中断
- 把 malformed host payload 当成成功结果
- Dynamic Tools 为什么把执行权交回宿主
- 把 manifest 声明当成已经执行
- 一个 Plugin 怎样变成一组可安装能力
- 把 memories SQLite 当成最终 prompt 语料
- Memory 不是更长的 History
- 把 Memory 当成未压缩的 History
- Memory 不是更长的 History
- 把 memory-root 文件当成 rollout 的原样副本
- Memory 不是更长的 History
- 把 metadata fallback 当模型选择 fallback
- 模型不是一个字符串:Provider、目录与 ModelInfo
- 把 model slug 当 provider id
- 模型不是一个字符串:Provider、目录与 ModelInfo
- 把 move 当成原子 rename
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- 把 network approval 的 governor 误写成 Skills injection 的 owner
- Skills 不是工具:从目录发现到渐进注入
- 把 network_approval 提案字段写成固定版本配置
- 网络访问为什么另有一条决策链
- 把 network_approval 写成固定版本字段
- 审批、Permission Profile 与沙箱各自拦什么
- 把 non-ephemeral child 的 edge upsert 写成 spawn 成功门禁
- 一个子 Agent 为什么需要独立 Thread
- 把 OAuth refresh、MCP server elicitation 与工具审批混成一个流程
- 外部 MCP Server 的工具怎样进入 Codex
- 把 Op 当 Agent loop
- 不要从目录开始读 Codex
- 把 origins 当最终运行值 provenance
- Codex 启动时,哪一份配置说了算
- 把 orphan output 原样发给模型
- History 为什么不能直接拿去做 Prompt
- 把 OTel span 或 screenshot 当成因果链
- 没有证据的“跑通”不算跑通
- 把 output_schema 自动校验写成运行时事实
- Code Mode 为什么仍然绕不开同一张工具表
- 把 OutputItemAdded 当成已记录 item
- 一条 Responses 流怎样变成下一步行动
- 把 parallel_tool_calls 当成本地 handler 并发保证
- 模型为什么能调用工具:两张表,一个闭环
- 把 parent_thread_id 与 forked_from_id 合并
- 一个子 Agent 为什么需要独立 Thread
- 把 path 与 thread_id 的 precedence 写反
- Resume 与 Fork:恢复的不是同一件事
- 把 pending queue 当成独立任务
- 你按下回车后,谁接管这次任务
- 把 Plan turn 计入 Goal budget
- Goal 为什么必须活在 Turn 之上
- 把 Plugin 当成 ExtensionRegistry
- 一个 Plugin 怎样变成一组可安装能力
- 把 plugin snapshot cache 与 body 内容缓存混为一谈
- Skills 不是工具:从目录发现到渐进注入
- 把 policy amendment 持久化失败当成当次审批失败
- 网络访问为什么另有一条决策链
- 把 policy segments 与 approval cache key 合并
- 模型返回的 Shell 参数,为什么还不是一条进程
- 把 PostToolUse block 写成撤销已执行副作用
- Hooks 为什么不是一条统一回调链
- 把 profile 文件当完整配置
- Codex 启动时,哪一份配置说了算
- 把 Prompt 当成已经序列化的 JSON
- Prompt 怎样变成一份 Responses 请求
- 把 prompt 文本误当成运行时权限
- 模型收到的指令从哪里来
- 把 prompt-only repair 当成 durable rewrite
- History 为什么不能直接拿去做 Prompt
- 把 PTY delta 当成可分离 stdout stderr
- 命令返回以后,进程为什么还活着
- 把 RateLimits event、HTTP 429 与 response.failed 合并处理
- 断流、限流和 401:Codex 分别从哪里恢复
- 把 raw tool name 和模型可见 callable name 混为同一个身份
- 外部 MCP Server 的工具怎样进入 Codex
- 把 raw_items 当成原始输入或持久化 transcript
- History 为什么不能直接拿去做 Prompt
- 把 request retry 与 sampling retry 共用一个计数器
- 断流、限流和 401:Codex 分别从哪里恢复
- 把 require_escalated 当成最终授权
- 审批、Permission Profile 与沙箱各自拦什么
- 把 Requirements 当普通 config layer
- 配置能覆盖,Requirements 不能绕过
- 把 ResolvedPlugin 当成 LoadedPlugin
- 一个 Plugin 怎样变成一组可安装能力
- 把 response.completed 当成 TurnComplete
- 一条 Responses 流怎样变成下一步行动
- 把 ResponseEvent::Completed 当成 TurnComplete
- Codex 为什么有两层循环
- 把 Responses 顶层 instructions 当成全部指令
- 模型收到的指令从哪里来
- 把 retry 当成新的用户 turn
- Codex 为什么有两层循环
- 把 rollout 中有 item 当成模型一定会看到
- 同一段对话,为什么同时存在三种状态
- 把 running resume 当成重新加载一个新 thread
- Resume 与 Fork:恢复的不是同一件事
- 把 send_message 与 followup_task 写成同一个唤醒动作
- 多个 Agent 怎样通信、等待与中断
- 把 serialization scope 当成全局单线程
- App-server 如何把 Core 变成一套可消费协议
- 把 session_id 当成 PID 或 PGID
- 命令返回以后,进程为什么还活着
- 把 shell model config 值当成三种 live payload
- 模型返回的 Shell 参数,为什么还不是一条进程
- 把 shutdown 当成自动 Closed edge
- 一个子 Agent 为什么需要独立 Thread
- 把 skipped test 计入通过证据
- 没有证据的“跑通”不算跑通
- 把 source rollout 被修改当成正常 fork 行为
- Resume 与 Fork:恢复的不是同一件事
- 把 SQLite row 当成 prompt 正文
- 同一段对话,为什么同时存在三种状态
- 把 steer 当成新 turn
- 你按下回车后,谁接管这次任务
- 把 Stop 或 exit code 2 的空 reason 当成有效阻断
- Hooks 为什么不是一条统一回调链
- 把 stored values 的启动快照当成实时共享引用
- Code Mode 为什么仍然绕不开同一张工具表
- 把 subagent header 当成 Agent Identity
- 登录身份不等于 Agent 身份
- 把 SubagentStart 的 continue:false 写成停止 child
- Hooks 为什么不是一条统一回调链
- 把 submission send success 当成模型已开始
- 你按下回车后,谁接管这次任务
- 把 terminate_confirmed 当成 waitpid 确认
- 命令返回以后,进程为什么还活着
- 把 Thread scope 和 Turn scope 混用
- Hooks 为什么不是一条统一回调链
- 把 thread start 响应当成 listener 已覆盖全部事件
- App-server 如何把 Core 变成一套可消费协议
- 把 thread/start 的 spec 当成宿主实现
- Dynamic Tools 为什么把执行权交回宿主
- 把 tool future 完成当成 OS 进程退出
- 命令返回以后,进程为什么还活着
- 把 tool output_schema 当成模型可见 schema
- Prompt 怎样变成一份 Responses 请求
- 把 ToolExposure 当成 Responses API 字段
- 模型为什么能调用工具:两张表,一个闭环
- 把 tools/list 成功当成模型一定能看到工具
- 外部 MCP Server 的工具怎样进入 Codex
- 把 transport stream 当成 turn 完成
- Prompt 怎样变成一份 Responses 请求
- 把 TUI 写成直接调用 core
- 同一个 codex,为什么会启动几套不同的系统
- 把 turn interrupt 当成后台终端清理
- 命令返回以后,进程为什么还活着
- 把 turn-state 当成 Authorization
- 登录身份不等于 Agent 身份
- 把 TurnContext 本身误当成 durable history
- 模型收到的指令从哪里来
- 把 TurnDiff 当成 git diff 或完整副作用日志
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- 把 wait 当成重新执行脚本
- Code Mode 为什么仍然绕不开同一张工具表
- 把 wait_agent 写成 join
- 多个 Agent 怎样通信、等待与中断
- 把 watermark 当成 Phase 2 的 dirty truth
- Memory 不是更长的 History
- 把 WebRTC SDP call 与 sideband WebSocket 写成同一个 transport
- 普通 Responses 与 Realtime 为什么是两套会话
- 把 WebSocket 增量请求当成完整 HTTP body
- Prompt 怎样变成一份 Responses 请求
- 把 world-state snapshot 当成 wire 字段
- History 为什么不能直接拿去做 Prompt
- 把 yield 当成 cell 已终止
- Code Mode 为什么仍然绕不开同一张工具表
- 把 yield 等待时间当成进程 timeout
- 模型返回的 Shell 参数,为什么还不是一条进程
- 把安装成功当成启用或加载成功
- 一个 Plugin 怎样变成一组可安装能力
- 把不同协议的完成事件当成同一终态
- 同一个 codex,为什么会启动几套不同的系统
- 把测试已经崩溃误判成 zero-test 通过
- Code Mode 为什么仍然绕不开同一张工具表
- 把登录 token 当成 Agent 身份
- 登录身份不等于 Agent 身份
- 把非空 thread/start 的 admission validation 当成所有恢复路径共享的 gate
- Dynamic Tools 为什么把执行权交回宿主
- 把工具暴露当成审批已经完成
- 外部 MCP Server 的工具怎样进入 Codex
- 把广播通知误写成 thread subscription
- App-server 如何把 Core 变成一套可消费协议
- 把候选文件名去重误读为内容去重
- 模型收到的指令从哪里来
- 把缓存命中当 provider 校验
- 模型不是一个字符串:Provider、目录与 ModelInfo
- 把客户端事件流当成 durable history
- 同一段对话,为什么同时存在三种状态
- 把两层业务控制误读成源码只有两个 loop
- Codex 为什么有两层循环
- 把命令审批与网络目标审批画成同一条线
- 网络访问为什么另有一条决策链
- 把模型可见 exec 当成嵌套 apply_patch 的同一个 owner
- 没有证据的“跑通”不算跑通
- 把模型可见 specs 当成 registry 的完整副本
- 模型为什么能调用工具:两张表,一个闭环
- 把默认关闭的 Experimental Feature 写成稳定默认能力
- Memory 不是更长的 History
- 把默认关闭的 UnderDevelopment feature 写成生产能力
- 普通 Responses 与 Realtime 为什么是两套会话
- 把目录 metadata 当成已加载的 Skill 正文
- Skills 不是工具:从目录发现到渐进注入
- 把拟议 changes 当成实际落盘子集
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- 把批准当成解除沙箱
- 审批、Permission Profile 与沙箱各自拦什么
- 把普通 Responses WebSocket 复用写成 Realtime 会话复用
- 普通 Responses 与 Realtime 为什么是两套会话
- 把普通 sampling error 写成 TurnAborted
- 断流、限流和 401:Codex 分别从哪里恢复
- 把普通 shell 文件修改写进 TurnDiff ledger
- 模型返回的 Shell 参数,为什么还不是一条进程
- 把三种主干状态误写成全部 session 状态
- 同一段对话,为什么同时存在三种状态
- 把十个事件写成一条统一 callback chain
- Hooks 为什么不是一条统一回调链
- 把四个相邻 GuardianWarning 测试拼成未经实现的 E2E
- 没有证据的“跑通”不算跑通
- 把所有 CLI 参数当 ordinary layer
- Codex 启动时,哪一份配置说了算
- 把所有 malformed envelope 都写成同一种解析失败
- 断流、限流和 401:Codex 分别从哪里恢复
- 把所有不合规值都当启动硬错误
- 配置能覆盖,Requirements 不能绕过
- 把同值 id 当同一类型
- 不要从目录开始读 Codex
- 把未知 stream event 一律写成 fail-fast
- 一条 Responses 流怎样变成下一步行动
- 把显示 metadata parser 当成执行或 policy parser
- 模型返回的 Shell 参数,为什么还不是一条进程
- 把显式 deny 当成可由 reviewer 覆盖的 ask
- 网络访问为什么另有一条决策链
- 把校准前的 fixture 或 worker stack 失败当成最终实验结果
- 外部 MCP Server 的工具怎样进入 Codex
- 把渲染测试当成 emitter 或 wire serialization 证明
- TUI 如何把事件流还原成一个稳定界面
- 把有界 buffer 当成完整历史
- TUI 如何把事件流还原成一个稳定界面
- 把远程 image URL 当成允许的 image content
- Dynamic Tools 为什么把执行权交回宿主
- 把约束来源当 candidate 来源
- 配置能覆盖,Requirements 不能绕过
- 把允许弹窗当成自动批准
- 审批、Permission Profile 与沙箱各自拦什么
- 把自然语言意图或隐式 invocation 当成正文注入
- Skills 不是工具:从目录发现到渐进注入
- 从普通对话自动推断并创建 Goal
- Goal 为什么必须活在 Turn 之上
- 丢失全局 consolidation ownership 后仍提交 baseline
- Memory 不是更长的 History
- 丢失原始 call_id
- 模型为什么能调用工具:两张表,一个闭环
- 对 allowlist 求交集
- 配置能覆盖,Requirements 不能绕过
- 忽略 app-server stream lag 已经造成的丢失
- TUI 如何把事件流还原成一个稳定界面
- 忽略 approval、sandbox、Realtime、Hook、TUI 和多 Agent 未覆盖
- 没有证据的“跑通”不算跑通
- 忽略 capacity 或 path reservation
- 一个子 Agent 为什么需要独立 Thread
- 忽略 disabled path 与重复 mention 的去重
- Skills 不是工具:从目录发现到渐进注入
- 忽略 nested source 上的 cancellation 和并发门
- Code Mode 为什么仍然绕不开同一张工具表
- 忽略 NextTurn 对 late child mail 的隔离
- Codex 为什么有两层循环
- 忽略跨 resume 测试的线程栈前提
- History 为什么不能直接拿去做 Prompt
- 忽略显式 Skill 的 MCP dependency 安装 gate
- Skills 不是工具:从目录发现到渐进注入
- 混淆 mcp 与 mcp-server
- 同一个 codex,为什么会启动几套不同的系统
- 假设 retry 会回滚 durable item 或工具副作用
- 断流、限流和 401:Codex 分别从哪里恢复
- 假设 runtime refresh 会改写已经捕获的 StepContext
- Skills 不是工具:从目录发现到渐进注入
- 假设工具失败会自动重试或回滚副作用
- 模型为什么能调用工具:两张表,一个闭环
- 假设失败拒绝取消都无副作用
- 一份补丁怎样落盘,又怎样成为 TurnDiff
- 跨 Turn 复用 sticky turn-state
- 普通 Responses 与 Realtime 为什么是两套会话
- 让 ephemeral 或 subagent thread 递归生成 Memory
- Memory 不是更长的 History
- 让已结束 Turn 的 pending callback 继续等待
- App-server 如何把 Core 变成一套可消费协议
- 绕过 permission hook、Guardian 或 elicitation 直接调用 server
- 外部 MCP Server 的工具怎样进入 Codex
- 绕过执行环境读取插件资源
- 一个 Plugin 怎样变成一组可安装能力
- 认为 is_terminal 包含 blocked
- Goal 为什么必须活在 Turn 之上
- 认为 Skill 脚本会自动成为 ToolRouter executor
- Skills 不是工具:从目录发现到渐进注入
- 认为所有事件都支持 matcher
- Hooks 为什么不是一条统一回调链
- 声称每次 Goal 写入都有 expected_goal_id
- Goal 为什么必须活在 Turn 之上
- 未 initialize 就接受普通请求
- App-server 如何把 Core 变成一套可消费协议
- 未按 thread_id 路由就修改当前 ChatWidget
- TUI 如何把事件流还原成一个稳定界面
- 用 I/O 顺序猜 precedence
- Codex 启动时,哪一份配置说了算
- 用 in-progress 或 synthetic turn 作为 lastTurnId
- Resume 与 Fork:恢复的不是同一件事
- 用 last_agent_message 判断 turn 是否停止
- Codex 为什么有两层循环
- 用 OS process 解释 Agent 的独立性
- 一个子 Agent 为什么需要独立 Thread
- 用 profile 名称反推运行时权限
- 审批、Permission Profile 与沙箱各自拦什么
- 用 running 0 tests 的过滤结果宣称实验通过
- Dynamic Tools 为什么把执行权交回宿主
- 用 running 0 tests 冒充 named integration test 已执行
- 外部 MCP Server 的工具怎样进入 Codex
- 用本地 fake provider 的通过结果替代外部服务证明
- 普通 Responses 与 Realtime 为什么是两套会话
- 用不匹配的 call_id 回填 response
- Dynamic Tools 为什么把执行权交回宿主
- 用单个 fixture 外推全部 transport 与通知类型
- App-server 如何把 Core 变成一套可消费协议
- 用旧 active turn id 发送 steer
- 你按下回车后,谁接管这次任务
- 用裸 cargo 的栈溢出冒充测试通过
- 多个 Agent 怎样通信、等待与中断
- 允许资源路径逃出 package root
- 一个 Plugin 怎样变成一组可安装能力
- 在 active turn 被取消后仍等待或回填旧 turn
- Dynamic Tools 为什么把执行权交回宿主
- 在 parent rollout flush 前读取 fork history
- 一个子 Agent 为什么需要独立 Thread
- 在 replay 时再次触发 live-only 副作用
- TUI 如何把事件流还原成一个稳定界面
- 在工具 future 完成前开始下一次 sampling
- 一条 Responses 流怎样变成下一步行动
- 只测 parser unit 而不追 originating call site
- Hooks 为什么不是一条统一回调链
- 只读 trace 文件而不 replay reducer graph
- 没有证据的“跑通”不算跑通
- 只检查 rollout 存在而不检查 resume identity
- 没有证据的“跑通”不算跑通
- 只看 Cargo 的 ok,没发现网络门禁让测试提前返回
- Prompt 怎样变成一份 Responses 请求
- 只看 ModelInfo 忽略 provider capability
- 模型不是一个字符串:Provider、目录与 ModelInfo
- 只凭 durable active 状态就承诺自动续跑
- Goal 为什么必须活在 Turn 之上
- 只有 payload decode 就声称 JWT 已验签
- 登录身份不等于 Agent 身份
- 重放已解决的审批或用户输入请求
- TUI 如何把事件流还原成一个稳定界面
- 重复给 update_goal 结算 token
- Goal 为什么必须活在 Turn 之上
- live history 已更新但 rollout append 失败
- 同一段对话,为什么同时存在三种状态
- resume 时恢复非 active Goal 的 idle 计时
- Goal 为什么必须活在 Turn 之上
- SQLite 投影领先或落后于 JSONL
- 同一段对话,为什么同时存在三种状态