这套让新开发者上手 MacCoss 实验室 70 万行代码库的方法论,同样适用于 Claude Code。以下是 Claude 开发者大使 Brendan MacLean 的做法——他所在的实验室也是我们 Claude for Open Source 项目的成员。
- 分类Claude Code
- 产品Claude Code
- 日期2026 年 4 月 28 日
- 阅读时间5分钟
- https://claude.com/blog/onboarding-claude-code-like-a-new-developer-lessons-from-17-years-of-development
Skyline 是一款开源蛋白质分析软件,由华盛顿大学 MacCoss 实验室的首席开发者 Brendan MacLean 维护,自 2008 年起持续开发至今。Skyline 帮助研究人员检测和量化血浆、组织等样本中的蛋白质,对生物标志物发现、疾病研究和药物开发至关重要。MacCoss 实验室的代码库包含超过 70 万行 C# 代码,由一个小团队维护了 17 年,每晚自动运行超过 20 万项测试。

近三十年来,Brendan 一直是 Skyline 的纽带,带领数十名本科生、研究生和博士后研究员融入实验室。
随着开发者来来去去,代码库吸收了他们的贡献。到 2024 年,这个长期项目已背负起常见的负担。随着开发者更替,某些区域变得无人敢碰。
经过数十年培训实验室成员的经验,Brendan 深知如何让研究人员快速上手实验室庞大的代码库。但他没想到的是,将同样的方法论应用于 AI 工具,竟能让 Skyline 的代码库重新变得可控。
同样的上手难题,不同类型的开发者
Brendan 原本怀疑,现代 AI 编码工具能否像专门为 C# 语言和环境打造的专用工具那样,真正理解 C# 代码。
在浏览器中使用 Claude.ai 进行的早期实验印证了这一模式。他会描述一个问题,获得回复,然后将整个 C# 文件复制回自己的项目中,将范围限定在他无需参考项目代码就能描述的独立问题上。
"当改动变得愈发零碎时,整个过程就变得非常繁琐,"Brendan 说道。
每次与 Claude.ai 的对话都感觉像是从零开始,因为它完全不理解 Skyline 是什么、其组件之间如何关联,以及 17 年的开发历程积累了哪些成果。
这与 Brendan 在指导新入职开发者时面临的体验如出一辙,这让他萌生了一个想法。
"我可以像带实习生一样,通过 Claude Code 将 Claude 引入我的大型项目:先解释足够的信息,让它成功完成一个有限的项目,并为下一次迭代提供更好的上下文,"Brendan 说道。
他将所有 AI 上下文移入一个独立的仓库 pwiz-ai,该仓库与代码库分离,因此适用于所有分支和时间节点。根目录下的 CLAUDE.md 文件负责处理环境设置,并指引 Claude 找到相关文档:可以将其视为"全局概览",而非专业知识本身。
专业知识存储在技能(skills)中,这是一种为智能体提供能力和专业知识的开放格式。例如,他的调试技能旨在将 Claude 从他所谓的"猜测与测试"模式中拉出来,引导其在尝试任何修复之前先进行根因分析。技能可以手动或自动触发;Brendan 会为最关键的那些技能设置明确的条件——调试技能描述中写道:"在调查 bug、故障或意外行为时始终加载。"

上下文建立后,教会 Claude 调试代码库来龙去脉的负担就大大减轻了。Claude 已经知道代码的功能。交互从理解开始,而非从零起步。
"那个看似重大的担忧——'Claude 无法真正了解我的大型项目'——正变得越来越清晰:上下文不过是另一个需要维护和扩展的工件而已,"Brendan 说道。
减少技术债务,加速开发进程
在 Skyline 中构建“文件视图”面板(Files View)——一个显示所有文档相关文件、具备文件系统监控和拖拽整理功能的新界面——这个为期一年的项目,在负责该功能的开发者离职后便搁置未完成。Brendan 接手后使用了 Claude Code。
两周后,项目便告完成,所有最终提交均由 Claude 共同参与编写。
Brendan 表示:“此前处于这种状态的遗留工作,通常最终都会被废弃。”在学术实验室中,开发者流动频繁——研究生毕业、博士后转岗、实习生暑期结束离开。过去,任何进行中的工作都只能永远被搁置。
三年前,在负责维护 Skyline 夜间测试管理模块的开发者离职后,Brendan 便停止为该模块添加新功能。该模块是用 Java 编写的,是 LabKey Server 科学数据门户网站的一部分。最近,在让一位经验丰富的 LabKey 开发者使用 Claude Code 创建了配置文档后,Brendan 花了不到一天时间,就添加了他多年来一直想要的功能,并用过去他只雇设计师来完成的 CSS 更新了页面布局。
新的基础设施也随之建立。
Skyline 超过 2000 张教程图片的截图复现现已完全自动化,且几乎达到 100% 可复现。通过 Claude Code 扩展,增加了仅显示差异的视图和像素变化放大功能,以及一个由 Claude 用 C# 编写的 MCP 服务器,使其能够“看到”这些差异。Claude Code 每天早上生成一份每日摘要,显示从 Skyline 夜间测试基础设施中提取的测试失败、异常和未解决的支持线程,在 Brendan 开始工作前就发送到他的收件箱。
Claude 还用 Python 编写了 MCP 服务器,以实现这一功能,它从 LabKey Server 上的三个独立关系型数据流、团队邮件以及 GitHub 上带有发布标签的代码中提取数据。

Brendan 的开发者们现在几乎不再自己写代码,而是主要靠指导 Claude Code 来完成工作,并利用该工具自主生成自动化脚本和 MCP 实现。例如,实验室里一位曾对智能体编程工具持怀疑态度的开发者,构建并发布了一个新的绘图扩展——一个用于可视化离子淌度数据的 mobilogram 面板——并将功劳归于 Claude Code。

Brendan 说:"我看到几乎每个人都在接手有趣的新功能,这些功能他们以前可能觉得被其他工作埋没,没空去尝试。"
给处理遗留代码库的开发者的建议
基于 17 年引导新开发者的经验,以及一年多将同样的方法论应用于 Claude Code 的实践,以下是 Brendan 想对处理遗留代码库的开发者说的话。
上下文是你最好的朋友
Claude 生成的待办事项列表和计划不会跨会话持久保存。上下文才是持久存在的,并且必须有意识地维护。这是大多数开发者跳过的一步,也是大多数开发者成功之路停滞不前的原因。
Brendan 说:"要明白,如果你不记录‘上下文’,Claude 就无法学习。不要指望魔法。投入精力去构建和维护你的上下文层。把它当作任何其他项目工件来对待:进行版本管理、不断扩展、持续维护。"
Brendan 将 AI 上下文放在一个单独的仓库中,因为它增长的速度与代码不同,并且适用于所有分支和时间点——将其放在代码仓库内会变得受限。将上下文放在同一个仓库中也是一个可行的替代方案;关键在于它要经过版本管理、得到维护,并且在需要时可用。
投入精力构建你的技能库
使用技能来编码领域知识,任何 Claude 实例都可以加载。Brendan 的技能遵循"引用而非嵌入"的原则:每个技能都指向一个中央文档知识库,而不是复制内容,从而保持技能轻量且易于维护。
他使用频率最高的技能包括:一个名为 askyline-development 的技能,用于引导 Claude 了解项目及其文档;一个版本控制技能,用于编码项目特定的提交和 PR 规范;以及一个调试技能,旨在将 Claude 从“猜测与测试”模式中拉出来,引导其在尝试任何修复之前先进行根本原因分析。
当数据访问是关键时,使用 MCP 集成。在 Claude 需要访问真实数据(如测试结果、异常报告、支持线程)的地方,构建 MCP 集成。
对于开源项目而言,构建和维护一个上下文层尤为重要。这里没有入职预算,没有超越书面记录的制度性记忆,也无法保证任何贡献者明年还会在。而上下文一旦构建完成,就能被每一位贡献者使用,并且能在项目的整个生命周期内持续存在,这是人类制度性知识永远无法做到的。pwiz-ai 仓库本身就是一个开源产物——它属于项目而非任何单个贡献者的上下文,并且会比所有构建它的人存在得更久。
十七年的入职经验,一个结论
你不会交给一个新员工一个 70 万行的代码库,并期望他第一天就出成果。你会先给他找一个范围明确的项目,带他熟悉,然后随着他理解能力的增长再逐步扩大他的工作范围。
正如 Brendan 所学到的那样,你用 Claude 构建的上下文也是以同样的方式运作的。
一旦工程师对代码库足够了解,他们就能跨分支和时间点进行工作。而 Claude,在获得足够的上下文和指引后,也能做到同样的事情。
*Dario Amodei,Anthropic 的联合创始人,曾是 MacCoss 实验室的成员。