Skyline 是由华盛顿大学MacCoss实验室的首席开发者Brendan MacLean维护的开源蛋白质分析软件,自2008年起持续开发。Skyline帮助研究人员检测和量化血浆和组织中的蛋白质,这对于生物标志物发现、疾病研究和药物开发至关重要。MacCoss实验室的代码库包含超过70万行C#代码,17年来由一个小团队维护,每晚运行超过20万次自动化测试。

近三十年来,Brendan一直是Skyline团队的核心纽带,指导了数十名本科生、研究生和博士后加入实验室。随着开发者的不断更替,代码库吸收了他们的贡献。到了2024年,项目积累了长期开发的典型问题,部分代码区域因开发者更替而变得难以触及。
经过多年培训实验室成员,Brendan已经掌握了如何让研究人员快速熟悉庞大的代码库。但他没想到的是,将同样的方法应用于AI工具,竟然让Skyline的代码库再次变得易于管理。
同样的入门难题,不同类型的开发者
Brendan对现代AI编码工具是否能像专为C#语言和环境设计的工具那样理解代码持怀疑态度。早期在浏览器中使用Claude.ai的实验验证了这一点。他会描述一个问题,得到回答后,将整个C#文件复制回项目,限制问题范围在他能描述的独立模块内。
“当修改变得更为渐进时,过程变得非常繁琐,”Brendan说。
每次与Claude.ai的交互都像是从零开始,因为它不了解Skyline是什么,组件之间如何关联,也不了解17年的开发积累。这正是Brendan在培养新开发者时遇到的情况,这给了他一个启发。
“我可以像培训新开发者一样,通过Claude Code向Claude介绍我的大型项目:先解释足够的信息以完成一个有限的成功项目,然后为下一次迭代提供更好的上下文,”Brendan说。
他将所有AI上下文放入一个独立的仓库pwiz-ai,与代码库分开管理,以便跨所有分支和时间点应用。根目录下的CLAUDE.md文件负责环境设置,并指向相关文档,类似于“地形图”,而非专业知识本身。
专业知识则存储在skills中,这是一种开放格式,用于赋予代理能力和专业知识。例如,他的debugging技能设计用来让Claude摆脱“猜测和测试”模式,推动其在尝试修复前进行根因分析。技能可以手动或自动触发;Brendan为关键技能设定了明确条件,debugging技能描述为“在调查错误、失败或异常行为时始终加载”。

有了上下文支持,教Claude调试代码库的难度大大降低。Claude已经知道代码的作用,交互从理解开始,而非从零起步。
“曾经让我担忧的‘Claude无法真正了解我的大型项目’问题,现在看来:上下文只是另一种需要维护和扩展的项目产物,”Brendan说。
降低技术债务,加速开发
一个为期一年的Skyline文件视图面板项目——一个显示所有文档相关文件的新界面,支持文件系统监控和拖放组织——在负责开发者离开后搁置。Brendan借助Claude Code接手,两周内完成,所有最终提交均由Claude共同署名。
“以往类似的未完成工作通常会被废弃,”Brendan说。在学术实验室,开发者频繁更替——研究生毕业,博士后离开,实习生夏季结束后离开。过去,任何未完成的工作都会永远搁置。
三年前,Brendan在失去维护Skyline夜间测试管理模块的开发者后,停止了该模块的功能扩展。该模块用Java编写,作为LabKey Server科学数据门户的一部分。最近,在一位熟练的LabKey开发者利用Claude Code创建了设置文档后,Brendan不到一天时间就添加了多年来想要的功能,并用CSS更新了页面布局——这些CSS以前他只能通过设计师完成。
随后引入了新基础设施。
Skyline的2000多张教程截图的自动化复现现已完全实现,几乎100%可复现,并通过Claude Code扩展,新增了仅差异视图和像素变化放大功能。Claude还用C#编写了一个MCP服务器,使其能够“识别”这些差异。Claude Code每天早晨生成测试失败、异常和支持线程的摘要,自动从Skyline夜间测试基础设施中提取,发送到Brendan的邮箱,方便他开始工作。
Claude还用Python编写了MCP服务器,从LabKey Server的三个独立关系数据流、团队邮件和GitHub带有发布标签的代码中提取数据。


Brendan的开发者现在几乎不直接写代码,主要是指导Claude Code,并利用该工具自主生成自动化脚本和MCP实现。例如,一位曾对智能编码工具持怀疑态度的实验室开发者,借助Claude Code构建并发布了一个新的绘图扩展——用于可视化离子迁移数据的mobilogram面板。

“我看到几乎每个人都开始尝试那些他们之前因工作繁重而不敢尝试的有趣新功能,”Brendan说。
给维护遗留代码库开发者的建议
基于17年的开发者培训经验和一年多将同样方法应用于Claude Code的实践,Brendan给维护遗留代码库的开发者几点建议:
上下文是你最好的朋友
Claude生成的待办事项和计划不会跨会话保存。真正持续的是上下文,它必须被有意识地维护。这是大多数开发者忽略的部分,也是他们成功停滞的原因。
“要明白,没有你记录‘上下文’,Claude无法学习。不要指望有魔法出现,”Brendan说。“投入时间构建和维护你的上下文层,并像对待其他项目产物一样对待它:版本管理、持续扩展和维护。”
Brendan将AI上下文放在独立仓库,因为它的增长速度与代码不同,且适用于所有分支和时间点——放在代码仓库内会有限制。将上下文保存在同一仓库也是可行的,关键是要版本化、维护并随时可用。
投资构建技能库
利用skills编码领域知识,任何Claude实例都能加载。Brendan的技能遵循“引用而非嵌入”原则:每个技能指向中央文档知识库,而非复制内容,保持轻量且易维护。
他最常用的技能包括:一个skyline-development技能,用于让Claude熟悉项目及文档;一个version-control技能,编码项目特定的提交和PR规范;以及一个debugging技能,设计用来让Claude摆脱“猜测和测试”模式,推动其在尝试修复前进行根因分析。
关键数据访问时使用MCP集成
当Claude需要访问真实数据,如测试结果、异常报告、支持线程时,构建MCP集成非常重要。
对于开源项目,构建和维护上下文层尤为重要。没有入职预算,没有超出文档的机构记忆,也不能保证任何贡献者明年还在。上下文一旦建立,所有贡献者都能使用,并且能跨项目生命周期持续存在,这种持久性是人类机构知识无法比拟的。pwiz-ai仓库本身就是一个开源产物——属于项目,而非某个贡献者,且超越了所有创建它的人。
17年的入职经验,一个结论
你不会期望新员工第一天就能掌握70万行代码。你会给他们一个有限的项目,带他们逐步了解,随着理解加深再扩大范围。
Brendan的经验告诉我们,给Claude构建上下文也是同样的道理。
一旦对代码库足够了解,工程师可以跨分支和时间点工作。只要有足够的上下文和指导,Claude也能做到这一点。
注:Anthropic联合创始人Dario Amodei曾是MacCoss实验室成员。


