实战

实战:用 Claude Code 从零开发 Z80/ZX Spectrum 模拟器的完整经验分享

Redis 作者 antirez 分享了用 Claude Code 在净室条件下完全自主开发 Z80/ZX Spectrum 模拟器的完整经验。Claude Code 独立工作 20 分钟,产出 1200 行高质量 C 代码,通过了最严格的 ZEXDOC/ZEXALL 测试,全程零次用户提示,揭示了正确使用 Claude Code 的关键:提供详细设计文档和规格说明。

2026/2/285分钟 阅读ClaudeEagle

这篇文章来自知名开源开发者 antirez(Redis 作者)的亲身实践。他用 Claude Code Max 计划,在「净室」(Clean Room)条件下,让 AI 完全自主地实现了一个完整的 Z80 模拟器、ZX Spectrum 模拟器,以及一个 CP/M 环境。

文章在 Hacker News 上获得 145 点好评,是近期 Claude Code 实战案例中最有深度的一篇。

实验背景与方法论

什么是「净室」实验?

Anthropic 此前发布了一个实验:让 Opus 4.6 在净室条件下用 Rust 写一个 C 编译器。antirez 对那个实验的方法论有些疑问(为什么不提供 ISA 文档?为什么选 Rust?),于是决定自己做一个更合理的净室实验:实现 Z80 模拟器

antirez 的改进方法

Antirez 的净室设置更接近「人类程序员真实工作方式」:

第一阶段:准备规格文档(Agent 可使用互联网)

让 Claude Code 搜集互联网上所有关于 Z80 的有用文档,提取关键事实信息到 Markdown 文件中,同时提供:

  • Z80 最严格测试向量的二进制文件(ZEXDOC、ZEXALL)
  • ZX Spectrum ROM
  • 其他用于验证的二进制文件

文档收集完成后,完全删除 Claude Code 会话,确保不存在代码污染。

第二阶段:实现(禁止访问互联网和现有代码)

启动全新会话,给出的规则包括:

  • 禁止访问互联网
  • 禁止搜索类似的源代码
  • 每次重要进展后提交 Git
  • 提交前必须测试质量
  • 持续编写详细测试套件
  • 代码注释要足够详细,让不熟悉 Z80 的人也能理解
  • 永不停下来等待提示,用户不在键盘旁
  • 在文件末尾维护一个「工作进展日志」
  • 每次上下文压缩后重读规格文件

Z80 模拟器的结果

惊人的结果

Claude Code 完全独立工作了 20-30 分钟,产出:

  • 1200 行 可读性极强、注释详细的 C 代码(含注释和空行共 1800 行)
  • 通过了 ZEXDOC 和 ZEXALL 测试(Z80 最严格的合规测试)
  • 全程零次用户提示
  • 绝不访问互联网

Agent 的工作过程令人印象深刻:持续测试、与 CP/M 二进制交互、逐步实现不同类型的指令,发现 Bug 后通过集成测试、调试会话、dump 和 printf 来修复——与人类程序员的工作方式几乎完全一样,而不是一次性「解压」出完整的实现。

ZX Spectrum 模拟器

重复了相同的流程:详细的文档收集阶段(ULA 与 RAM 访问的交互、键盘映射、I/O 端口、磁带加载的 PWM 编码、TAP/TZX 文件格式)→ 删除会话 → 新会话实现。

设计目标特别针对嵌入式系统

  • 仅支持 48K 模拟
  • 可选帧缓冲区渲染(嵌入式设备可以在传输时直接渲染扫描线)
  • 内存使用极少(无大型查找表)
  • ROM 不复制到 RAM(节省 16K 内存)

10 分钟后,Agent 实现完成。加上 SDL 集成示例后,模拟器可以立即运行 Jetpac 游戏,有声音,在作者那台较慢的 Dell Linux 机器上单核 CPU 占用仅 8%(含 SDL 渲染)。

唯一需要指导的地方

TAP 文件加载(模拟磁带加载)是 Agent 遇到困难的地方——主要是关于 Spectrum 加载程序预期的精确时序。这类问题是 LLM 效率较低的领域:它们很难运行 SDL 模拟器并观察边框变化等视觉反馈。

Antirez 的解决方案:要求 Agent 重构,将 zx_tick()zx_frame() 中独立出来,使时序同步更简单。重构后,几分钟内模拟器就能正确加载 TAP 文件。

CP/M 环境

同样惊喜的扩展:Agent 能够检查 ZEXALL/ZEXCOM 的 COM 文件,识别用到的三个 CP/M 系统调用,然后实现一个完整的 CP/M 环境——WordStar 在几分钟内就能运行(只是时钟速度需要调整)。

核心经验总结

antirez 的最重要经验

永远给 Agent 设计提示和详细文档。 这些文档可以由 Agent 自己搜集。同时确保 Agent 有一个关于编码任务规则的 Markdown 文件,以及一个频繁更新和重读的工作进展跟踪文件。

markdown
# 给 Agent 的核心规则示例

- 访问互联网是被禁止的,但你可以使用 ./specs 目录中的规格和测试向量文件
- 代码应该简洁清晰,永远不要过度复杂化
- 每次重要进展后提交到 git 仓库
- 提交前,测试你产出的内容质量高且可工作
- 在你添加功能的同时编写详细测试套件
- 代码必须有很好的注释
- 永不停下来等待提示,用户不在键盘旁
- 在文件末尾创建一个工作进展日志,注明已完成的、缺失的
- 每次上下文压缩后重读此文件

关键洞察:AI 不是在「解压记忆」

这个实验与「LLM 只是记住训练集并复现」的说法相矛盾。

我们主要要求 LLM 创建需要组合其所拥有的不同知识的工作,结果通常是使用已知技术和模式的新代码,而不是某些预先存在代码的副本。

事实上,人类程序员通常会下载同类实现的代码、仔细阅读,然后尝试避免直接复制但常常受到强烈启发。Claude 的工作方式反而在某种程度上比人类更符合净室原则

关于 MIT 许可证

Antirez 因此毫无顾虑地将这个 Z80 项目以 MIT 许可证发布。这些代码也将成为未来 LLM(包括开源模型)训练的高质量输入。

完整代码

项目地址:github.com/antirez/ZOT


原文:Implementing a clear room Z80 / ZX Spectrum emulator with Claude Code | 来源:antirez.com

相关文章推荐

实战用 Claude Code 构建生产级应用:真实项目中学到的 10 个经验教训Claude Code 生产级应用实战经验:10 个真实项目中学到的教训,包括测试先行的重要性、CLAUDE.md 的长期价值、长会话管理、AI 代码 review 标准,以及让 Claude Code 越用越好的积累方式。2026/4/11实战Claude Code 调试工作流:从报错到修复,AI 辅助 debug 的正确姿势Claude Code 调试工作流完整指南:黄金三要素提示结构、先写失败测试再修复、4 种 bug 类型的不同策略、子 Agent 代码库调查,以及调试时的上下文管理技巧。2026/4/11实战Claude Code 并行开发实战:多会话、Git Worktrees、Fan-out 同时处理多个任务Claude Code 并行开发实战:6 种方案(多会话标签、Git Worktrees、非交互批量、Writer/Reviewer、Agent Teams、Fan-out)同时处理多个任务,含成本优化模型选择建议。2026/4/10实战Claude Code Skills 实战:15 个可直接使用的 SKILL.md 模板(Git/审查/测试/文档/部署/调试)15 个精心设计的开箱即用 SKILL.md 模板:Git 工作流类(Smart Commit/PR Creator/Branch Cleanup);代码审查类(Security Review 含 OWASP 清单/Performance Review N+1 检测);测试类(Test Generator/Coverage Check);文档类(API Doc Generator OpenAPI 格式/Changelog Generator);部署运维类(Pre-deploy Checklist);调试类(Error Analyzer);效率工具类(Code Explainer/Refactor Advisor/Dependency Auditor/Daily Standup Helper)。2026/5/10实战Claude Code 成本优化完整指南:Token 节省策略、模型选择和 Prompt Cache 配置Claude Code 成本优化完整指南:Token 消耗来源分析(对话历史/大文件读取/工具输出/MCP 服务器/长 CLAUDE.md);8 个优化策略(/compact 主动压缩/精确 @ 引用/控制 MCP 数量/模型选择 Haiku vs Sonnet vs Opus 价格对比/努力等级按需调整/Prompt Cache 1 小时 TTL/CLAUDE.md 精简/usage 监控);不同场景的成本估算(个人/小团队/企业);以及订阅 vs API 的临界点分析。2026/5/8实战Claude Code 企业规模化最佳实践:AI 网关、成本控制和可观测性完全指南Claude Code 企业级部署完整指南:原生局限(订阅模式无实时仪表盘/API 密钥散落风险);AI 网关层解决方案(7 个最佳实践:凭证三级层级/预算速率限制/完整请求可观测性/请求元数据标签/多提供商故障转移/输入输出护栏/灵活提供商切换);Portkey 2 分钟配置示例;Enterprise 专属功能(managed-settings/allowManagedDomainsOnly/OpenTelemetry);以及团队 CLAUDE.md 安全策略模板。2026/5/7