验证与扩展:用测试约束架构假设
把阅读结论转换成可复现用例,覆盖状态转换和失败边界。
学完你能做到
- 制定最小可复现的源码阅读任务
- 区分单元检查与端到端行为证据
- 为扩展能力设计失败和取消场景
本课目录 · 4 节
先复现,再扩展
把问题缩小为一个可观察行为,例如“名称不同的两个工具是否被正确分派”。寻找对应,阅读固定输入、执行动作与断言,再向外追踪。测试通过证明受检查条件下的行为,不能证明所有环境都相同。
router_tests.rs 包含扩展工具规格与执行器示例。它比凭空添加一个 更好的起点:先理解工具身份、规格、执行契约与注册,再看它如何进入工具计划。新的工具需要明确输入、输出、取消和权限边界。
无账号的阅读实践
git clone https://github.com/openai/codex.git
cd codex
git checkout f82e36592278a0a782fb0d0fc97e5fa10e832ac2
rg -n "tool_supports_parallel|supports_parallel_tool_calls" codex-rs/core/src/tools
rg -n "ExtensionEcho" codex-rs/core/src/tools/router_tests.rs这组命令只获取和搜索公开代码,不连接账户。首次克隆需要网络。固定版本后,再核对文件路径与本课程是否一致。不要把最新安装的二进制当成这一源码提交的构建产物。
需要编译时,选择最小范围
、 工具链及依赖准备好后,可以按 docs/install.md 构建。根目录 提供格式化、静态检查和测试入口;just 是读取任务配方的命令工具, 是测试运行器。以下命令是读完规范后可选择执行的练习,不是本网站运行所需。
cd codex-rs
cargo test -p codex-core --lib tool_log_payload_redacts_plaintext_multi_agent_messages
# 或在仓库根目录使用已安装的任务工具
just test -p codex-core第一条定位现有日志脱敏测试,第二条范围更大。编译可能下载依赖并占用磁盘;不同平台与工具链会影响可运行的测试。本课程制作过程中核验了文件和测试名称,但没有编译或运行 Codex 的 测试套件。网站自身的检查记录在交付包中。
结业任务:写出你自己的执行链
- 选“读取一个测试配置”作为任务,标出用户输入、循环、工具分派和结果返回。
- 给每个箭头附一个源码路径和固定版本链接;对未读到的部分标“尚未确认”。
- 列出四个用例:正常返回、未知工具、执行取消、权限拒绝。明确你要观察的结果。
- 写一页复现记录:版本、平台、前置条件、操作、预期与实际结果。
若准备向上游反馈,本版本 contributing.md 明确欢迎问题、分析和功能请求,但不接受外部代码贡献或 PR。先查现有问题,提供脱敏复现材料;本地练习不意味着上游会接收补丁。
沿着源码读
以下定位均锁定本课程版本。先读注释与分支,再深入类型定义。
- 现有测试与扩展执行器示例
codex-rs/core/src/tools/router_tests.rs:46–100 - 模拟事件与跨组件测试依赖
codex-rs/core/tests/suite/pending_input.rs:1–70 - 上游的构建和测试指导
docs/install.md:14–61 - 实际测试配方
justfile:76–92 - 当前上游贡献边界
docs/contributing.md:1–24
实现推演
完成结业任务后,用三句话解释:问题在哪一层、证据来自哪个固定文件、还有什么没有被验证。不要用“应该如此”代替实际证据。
阅读练习无需模型账号。示例命令请先确认目录与环境。
自测与边界检查
只添加工具函数而没有接入规格与注册,能可靠调用吗?
展开自测答案
不能。还要让对应工具身份、可见规格与执行实现进入有效工具计划,并验证名称、参数和边界。
一个测试通过,能证明闭源桌面端也相同吗?
展开自测答案
不能。它证明的是该源码测试所覆盖的条件。客户端集成、配置和执行环境需要独立检查。