Skip to content

Claude Code 生成的项目预期是可编译、可运行的。Claude code时如何保证这一点的?

● Claude Code 并不能从根本上"保证"生成的代码一定可编译、可运行。它依赖的是一套多层反馈机制来逐步逼近正确性:

核心机制

  1. 上下文理解(预防)

读取项目文件 → 理解技术栈、依赖、模式 → 生成符合项目风格的代码

  • 读取 package.json、requirements.txt、已有代码等
  • 理解项目的语言版本、框架约定、导入方式
  • 生成的代码尽量与现有代码风格一致
  1. 工具调用循环(验证 + 自修复)

这是最关键的机制——agentic loop:

生成代码 ↓ 执行构建/编译命令(通过 Bash 工具) ↓ 失败了? ──→ 读取错误信息 → 分析原因 → 修改代码 → 重新执行 ↓ 成功 ✓

Claude Code 会主动:

  • 运行 python -m py_compile、go build、npm run build 等
  • 运行 lint 工具检查
  • 运行测试
  • 读取报错信息,自动修复,再次验证

这个循环可能执行多次,直到通过或放弃。

  1. LSP 诊断(实时反馈)

在 IDE(如 VS Code)中,Claude Code 可以调用 getDiagnostics 获取语言服务器的实时错误:

写入文件 → IDE 语言服务器检测 → 返回类型错误/语法错误 → Claude 修复

  1. CLAUDE.md 中的指令引导

这也是你刚才创建的 CLAUDE.md 的价值所在——告诉 Claude:

  • 用什么命令构建、测试
  • 项目的约定和约束

但它有明显的局限

┌──────────────┬────────────────────────┐ │ 能做到的 │ 做不到的 │ ├──────────────┼────────────────────────┤ │ 语法正确 │ 保证业务逻辑正确 │ ├──────────────┼────────────────────────┤ │ 类型匹配 │ 保证运行时行为符合预期 │ ├──────────────┼────────────────────────┤ │ 编译通过 │ 保证性能、安全性 │ ├──────────────┼────────────────────────┤ │ 已有测试通过 │ 覆盖所有边界情况 │ └──────────────┴────────────────────────┘

对比你们的项目

你们的 trpc-codegen-agent 系统走的是另一条路:

你们的方案:专业智能体 + 预制模板 + 领域知识(Rainbow 提示词) Claude Code:通用智能体 + 工具调用 + 试错循环

你们通过 proto_codegen_agent 等专业智能体 + 精心设计的 prompt 来保证生成质量,这在特定领域(tRPC 代码生成)比 Claude Code 的通用试错循环更可靠。Claude Code 的优势在于通用性——任何项目都能用,但没有领域专家级的保障。

简单说:Claude Code 不是"保证正确",而是"写完就跑一下,错了就改,改到对为止"。