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