工具
Codex 迁移网站后留下了什么:本地日志里的提示词与截图
开发者用 OpenAI Codex 把个人网站移植到 Rust,随后在 ~/.codex 中发现了完整提示词、会话 JS…
2026.06.30 · 周二约 4 分钟阅读评分 40
评分细项加权总分 40
- 重要性
- 35
- 新颖性
- 42
- 影响面
- 30
- 可信度
- 60
- 实质性
- 45
开发者 William Cotton 在一次实验中,把自己的个人站点 williamcotton.com 交给 OpenAI 的 AI 编程代理 Codex,让其用 Rust 重新实现整个网站。任务完成后,他并没有止步于「跑得起来」,而是转向一个更具「取证」色彩的问题:Codex 在本地究竟留下了哪些可被还原的痕迹。
实验过程:用一句话把站点交给 Codex
Cotton 给 Codex 的提示非常简短:
- 已在新初始化的 Rust 项目
wmct-copy-codex-rust/src/main.rs中请 Codex 「复制 williamcotton.com,并完全用 Rust 重建」。 - Codex 在执行过程中反复启动 Chrome 抓取本地副本与线上站点,并据此生成代码。
- 第一版输出把所有文章都硬编码进了
main.rs,并未按预期接入 Contentful;Cotton 再次提示纠正后,Codex 又「思考」了一段时间,最终完成可在http://localhost:1234运行的版本。
代码全部集中在一个 main.rs 文件中,包含对 Contentful 富文本 JSON 树的渲染函数,并集成了 HTMX 框架与测试用例。
取证发现:~/.codex 里的提示词与截图
Cotton 随后用 grep 在 ~/.codex 目录中搜索自己最初的指令字符串,定位到多个本地存储位置:
sessions/2026/06/26/rollout-2026-06-26T07-04-14-*.jsonl:包含完整的event_msg、response_item等记录,带有turn_id与session_id,文件大小约 146 万字符,477 行。history.jsonl:以纯文本形式保存了该会话的用户消息历史。state_5.sqlite与state_5.sqlite-wal、logs_2.sqlite:SQLite 数据库中也能匹配到同一段提示,表明 Codex 将对话与状态同时落库和落盘。- 同一 JSONL 文件中出现大量
data:image/png;base64字串,说明 Codex 在执行过程中捕获并存储了图像输入,这些图像理论上可以被还原还原为开发者当时浏览页面的截图。
意义与待解问题
这一「取证」路径揭示的事实并不复杂:作为本地 CLI/IDE 代理,Codex 会把对话内容、会话状态乃至屏幕图像持久化在用户机器上。但它对关注隐私与数据合规的开发者提出了几项直观的提醒:
- 会话 JSONL 与 SQLite 库以明文或可解码的形式存放提示词与截图,并非默认加密。
- 由于
session_id同时出现在文件名与history.jsonl中,外部只要获得磁盘镜像,就有可能重建完整的 Codex 对话链路。 - 文章在「更细致地查看 rollout 文件」处截断,后续是否进一步还原出截图内容、是否给出清理建议尚未公布。
对正在评估 Codex 类 AI 编程代理在团队内部署安全边界的从业者而言,这一案例提供了具体的本地落盘路径示例,但能否代表 OpenAI 全产品线的数据处理策略,仍需 OpenAI 官方进一步说明。
