Nick Baumann(@nickbaumann_,OpenAI Codex 团队)在 X 上分享了 Codex 工具设计的核心方法论,获得 9.8 万次浏览、414 次转发。
核心原则:精确命令 > 原始 API
Codex 很擅长使用能表达为精确命令的工具。这听起来显而易见,但它改变了我每天给 Codex 提供访问权限的方式。
Connector/MCP server 适合:简单 API 访问(Slack、Linear、Sentry 等)。
定制 CLI 适合:数据源输出太大、太嘈杂、太别扭——不想把原始数据直接丢给 Codex 的场景。
好的 CLI 给 Codex 提供它本来就很擅长使用的东西:搜索、缩小范围、重试、管道输出、写大结果到文件、查看 --help、从上一个结果组合下一个命令。
三个真实案例
1. codex-threads
Codex 的旧会话存档太嘈杂——包含工具输出、部分尝试、只在那个时刻有用的上下文。直接让 Codex 读自己的线程可以,但频繁使用会变慢变噪。
解决方案:
codex-threads --json sync
保持本地可搜索索引(~/.codex/sessions),给 Codex 提供搜索、解析、读取旧线程的命令。
特别有用的场景:把一个会话变成 Skill。「找到这个效果很好的会话,然后保留这个模式」——很多好 Skill 就是这样来的。
2. slack-cli
Slack Connector 有用,但重复研究某个 buried 答案时,命令形状的工具更容易:
slack-cli search "app server auth" --all-pages --max-pages 3 --json
让 Codex 广泛搜索 → 解析准确线程 → 拉取附近上下文 → 引用重要消息。
关键点:slack-cli 仍然使用批准的 Codex apps gateway,不是权限绕过,是同样的访问模型,只是塑造成了 Agent 可组合的命令形状。
3. typefully-cli
用 Typefully 管理大量内容,但不需要 Codex 每次都重新学习完整 API——只需要几个常用操作:
typefully-cli --json drafts list --social-set <id> --limit 20
typefully-cli --json drafts read --social-set <id> <draft-id>
typefully-cli --json drafts create --social-set <id> --body-file draft.json
typefully-cli --json media upload --social-set <id> ./image.png
让 Codex 读 API 文档后构建 typefully-cli(Nick 用 Rust 编写),然后用 Skill 包装它——Skill 定义了边界权限:使用 JSON、默认创建草稿、shell 引用复杂时用 body file、除非明确要求否则不发布/不调度/不删除/不覆盖。
最后一条是关键:不需要每次都输入「不要发布这个」。
构建方法论
Nick 的判断标准很简单:
如果我不断给 Codex 同样的文档、导出、日志或 API 问题,我通常想停止解释,直接给它一个命令。
然后用 Skill 包装这个 CLI,这样 Codex 会记住如何使用它。
Playbook: