克劳德代码入职:17年开发经验的启示
DataHot 速览
Skyline实验室的Brendan通过将Claude Code视为新开发者来入职,成功管理了庞大的代码库。他将AI上下文移入独立仓库,使用CLAUDE.md文件和技能指导Claude,显著降低了调试开销。Claude Code完成了搁置一年的项目,自动化了教程图像和每日测试摘要,实验室开发者现在主要指导Claude而非亲自编码。
为什么值得关注:展示了如何通过结构化上下文和技能引导AI编码工具,解决大型项目中的技术债务和开发效率问题,对数据平台和Agent构建有借鉴意义。
译文
AI 逐段翻译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文件负责环境设置,并指向Claude相关的文档:将其视为'地形概览',而非专业知识本身。
专业知识存在于skills中,这是一种为代理提供能力和专业知识的开放格式。例如,他的debugging技能旨在将Claude从他所谓的"猜测和测试"模式中拉出来,在尝试任何修复之前推动其进行根本原因分析。技能可以手动或自动触发;Brendan用明确的条件调整他最关键的技能——debugging技能描述写着"在调查错误、故障或意外行为时始终加载。"

上下文建立后,教Claude调试代码库的细节的开销变得显著减少。Claude已经知道代码做什么。交互从理解开始,而不是从零开始。
"看似主要的问题——'Claude无法真正了解我的大型项目'——变得越来越清晰:上下文只是另一个需要维护和增长的工件,"Brendan说。
减少技术债务并加速开发
一个为期一年在Skyline中构建Files View面板的项目——一个显示所有文档相关文件的新界面,具有文件系统监控和拖放组织功能——在负责的开发者离开后一直未完成。Brendan用Claude Code接手了它。
两周后完成了,所有最终提交都由Claude共同署名。
"以前留下这种状态的成果通常会最终被丢弃,"Brendan说。在学术实验室,开发者经常轮换——研究生完成学位,博士后继续前进,实习生夏季结束离开。过去,任何进行中的工作都会永远搁置。
三年前,Brendan在失去维护Skyline夜间测试管理模块的开发者后,停止为该模块添加功能。该模块用Java编写,是LabKey Server科学数据Web门户的一部分。最近,在让一位熟练的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生成的待办事项列表和计划不会跨会话保留。上下文是持久化的,它必须被有意维护。这是大多数开发者跳过的地方,也是为什么大多数开发者成功停滞不前的原因。
"要明白,如果你不记录‘上下文’,Claude无法学习。不要期待魔法,"Brendan说。"投入构建和维护上下文层。并像对待任何其他项目工件一样对待它:版本化、增长、维护。"
Brendan将AI上下文保存在单独的仓库中,因为它的增长速度与代码不同,并且适用于所有分支和时间点——将其保留在代码仓库中变得受限。将上下文保留在同一仓库中是一种有效的替代方案;重要的是它是版本化的、维护的,并且需要时可用。
投入构建你的技能库
使用技能来编码领域知识,任何Claude实例都可以加载。Brendan的技能遵循"引用而非嵌入"原则:每个技能指向一个中央文档知识库,而不是复制内容,保持轻量且易于维护。
他最常用的包括:一个 skyline-development 技能,使Claude熟悉项目及其文档;一个version-control 技能,编码项目特定的提交和PR约定;以及一个 debugging 技能,旨在将Claude从"猜测和测试"模式中拉出来,在尝试任何修复之前推动它进行根本原因分析。
当数据访问是关键时使用MCP集成构建MCP集成在Claude需要访问真实数据的地方:测试结果、异常报告、支持线程。
对于开源项目,构建和维护上下文层具有特殊的重要性。没有入职预算,没有超越书面记录的机构记忆,没有保证任何贡献者明年还会在这里。上下文一旦构建,就可供每个贡献者使用,并在项目的整个生命周期中持续存在,而人类机构知识则永远不会。pwiz-ai仓库本身就是一个开源工件——上下文属于项目,而不是任何单个贡献者,并且比所有构建它的人都长寿。
十七年的入职经验,一个结论
你不会给一个新员工一个70万行的代码库并期望第一天就有结果。你会给他们一个受控的项目,带领他们了解它,并随着他们理解的增长扩大他们的范围。
正如Brendan学到的那样,你用Claude构建的上下文以同样的方式工作。
一旦对代码库足够了解,工程师可以在分支和时间点上工作。Claude在给定足够的上下文和指导的情况下,也可以做到同样的事情。
*Dario Amodei,Anthropic的联合创始人,曾是MacCoss实验室的成员。
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏