用 Claude Code 将三万行 Go 项目移植到 Rust:Agent Team 实践与 Harness 效率优化
内容提要
mihomo(Clash Meta)是一个用Go编写的规则代理内核,目前正在用Rust重写,以提高性能和安全性。项目通过结构化管理和文档测试,确保高效开发和团队协作,最终实现了完整的CI管线和规范文档,以保证代码质量和可维护性。
关键要点
-
mihomo(Clash Meta)是用Go编写的规则代理内核,支持多种协议,正在用Rust重写以提高性能和安全性。
-
项目包含11个workspace crate、31,000多行Rust代码、40份技术规格文档和完整的CI管线,确保代码质量和可维护性。
-
Claude Code的Agent Team机制允许在一个会话中运行多个专业化agent,分别承担不同职责,促进高效开发。
-
项目分为四个里程碑,M0和M1并行推进,确保开发过程中的测试始终通过。
-
CLAUDE.md是提高harness效率的重要文件,包含构建命令和架构信息,帮助agent快速理解项目结构。
-
项目积累了7条memory,主要是对agent行为的反馈,帮助避免重复错误。
-
每份spec文档是agent之间的接口协议,确保不同角色对任务的理解一致,提高协作效率。
-
CI管线确保每次代码提交后都运行完整测试套件,以判断功能是否可以合并。
-
Agent Team结合CLAUDE.md、Memory和Spec驱动开发,形成一个可重复、可审查、可扩展的工程流程。
延伸解读
项目重写的动机与挑战
mihomo项目从Go重写为Rust的主要原因在于性能和安全性。Rust的类型系统能够有效减少网络协议实现中的安全漏洞。然而,重写过程中的挑战包括如何处理上游的bug和确保新代码的兼容性,这需要团队在开发过程中做出明确的决策和分类。
Agent Team的协作模式
Claude Code的Agent Team机制通过分工明确的角色提升了开发效率。每个agent负责特定任务,确保信息共享和状态一致。这种结构化的协作模式不仅提高了代码质量,还减少了因角色间理解不一致而导致的错误,适合大型项目的开发。
文档与记忆系统的重要性
在项目中,CLAUDE.md和Memory系统起到了关键作用。CLAUDE.md提供了项目结构的快速参考,而Memory系统则记录了agent的反馈,避免重复错误。这种文档化和记忆机制使得团队能够在复杂的开发环境中保持高效和一致性。
延伸问答
mihomo项目为什么选择用Rust重写?
选择用Rust重写是为了更小的二进制体积、更低的内存占用,以及Rust类型系统带来的安全保障。
Claude Code的Agent Team机制如何促进开发效率?
Agent Team机制允许在一个会话中运行多个专业化agent,各自承担不同职责,从而提高开发效率。
项目中如何确保代码质量和可维护性?
通过结构化管理、文档测试、完整的CI管线和规范文档来确保代码质量和可维护性。
CLAUDE.md在项目中起到什么作用?
CLAUDE.md是提高harness效率的重要文件,包含构建命令和架构信息,帮助agent快速理解项目结构。
项目的里程碑是如何划分的?
项目分为四个里程碑,M0和M1并行推进,确保开发过程中的测试始终通过。
如何避免Agent之间的决策循环?
通过分层管理,ADR决定架构(不可协商),spec填充细节(可讨论),测试计划验证spec,避免决策循环。