LESSON 02 / 12 15 分钟
仓库边界与依赖:先定位状态所有者
目录只提供起点。阅读重点是状态由谁持有、哪些接口跨组件、转换在哪里发生。
学完你能做到
- 识别入口、核心、协议和执行模块
- 沿 依赖找到真实路径
- 掌握按符号阅读的方法
本课目录 · 3 节
先认清两层目录
根目录包含文档、脚本、 分发包装与 等内容;codex-rs 是主要 工作区。 工作区管理很多 ,每个 的 .toml 描述名称与依赖。核心包名是 codex-core,公开库名是 codex_core。
目录名称会随版本变化。这个版本的主循环在 core/src/session/turn.rs, 主要库在 codex-rs/codex-mcp;照着旧文章寻找 core/src/codex.rs 或 core/src/mcp_connection_manager.rs,可能会走错。我们以实际存在的文件为准。
一张职责清单
codex-rs/cli/src/main.rs:命令参数和子命令入口;不是把所有工作都塞在这里。codex-rs/tui与codex-rs/exec:交互界面与非交互执行入口。codex-rs/core/src/session:运行状态、输入和推进。codex-rs/core/src/tools:工具暴露、注册、、执行与授权协调。codex-rs/protocol:共享数据与事件类型,帮助不同组件对齐含义。codex-rs/exec-server与codex-rs/sandboxing:执行环境与平台限制。codex-rs/config、skills、codex-mcp、rollout:配置、指南、连接与历史持久化。
用符号找调用关系
先定位函数定义,再找调用点和测试。不要把“文本里出现一个名字”当成“这段代码一定执行”。 的导出、条件编译和功能开关都会影响可达路径。阅读时写下:谁调用它?输入是什么?输出由谁消费?
cd codex-rs
rg -n "async fn run_turn|run_turn\(" core/src
rg -n "ToolRouter|build_tool_call" core/src/tools
rg -n "codex-mcp|codex-rollout" Cargo.toml上面是本地只读搜索示例。rg 是快速文本搜索工具;未安装时可用编辑器全局搜索。无需登录服务。
沿着源码读
以下定位均锁定本课程版本。先读注释与分支,再深入类型定义。
- CLI 导入了哪些入口
codex-rs/cli/src/main.rs:1–40 - 核心库的模块组织
codex-rs/core/src/lib.rs:1–40 - 核心 crate 的名称与依赖
codex-rs/core/Cargo.toml:1–35 - 真实的 MCP 与历史库路径
codex-rs/Cargo.toml:254–273
实现推演
找到 core/.toml 中的包名,再从工作区 .toml 找到 codex-mcp 的 path。最后确认它的 lib.rs 确实存在。
阅读练习无需模型账号。示例命令请先确认目录与环境。
自测与边界检查
为什么应该同时看 .toml 和文件树?
展开自测答案
包名和目录名不总是相同。依赖的 path 是可核验的入口;文件树确认文件存在,类型导出确认公开边界。
遇到工具执行失败,首先只读 代码合适吗?
展开自测答案
界面可帮助追踪显示,但执行失败通常需要继续追到核心工具运行逻辑和执行环境。先按职责定位,再沿调用链核对。
学习记录保存在本机