
近期,Cognition团队发布了一份编程智能体实践指南,总结了他们两年来构建Devin(自主编程智能体)的经验教训。整份指南建立在一个简单的心智模型之上:把AI当作需要明确指导的初级开发者,而不是魔法工具。
基于大量客户反馈,团队发现资深工程师(Senior到Staff级别)采用智能体工具最快,原因在于他们天然理解如何”管理”初级开发者——这恰恰是有效使用编程智能体的关键。对于中大型任务(1-6小时工作量),这种方法能节省约80%的时间。
Cognition团队强调,技术功底和对代码库的理解依然重要。真正的改变是工作方式:工程师要像工程经理一样思考——同时管理多个”初级开发者”(智能体),把精力放在更重要的事情上。这份指南为想要采用这种工作方式的团队提供了实用建议。
本篇内容转载自「锦秋集」。
超 8000 人的「AI 产品市集」社群!不错过每一款有价值的 AI 应用。

-
最新、最值得关注的 AI 新品资讯;
-
不定期赠送热门新品的邀请码、会员码;
-
最精准的AI产品曝光渠道
以下为原文内容:
现在是 2025 年。编程Agent并非魔法,但它已是现实世界中最接近魔法的存在。我们发现,一部分工程师,特别是其中的资深专家,总能比其他人更快地掌握并成功运用这些工具。在这里,我们希望分享一些来自我们客户和自身实践的、最宝贵的经验。
关于本指南:
-
产品中立 我们讨论的技巧,旨在帮助您成功驾驭任何一款编程Agent。
-
战术实用 我们只提供那些最具可操作性的实战建议。
-
技术导向 尽管编程Agent对很多人都有价值,但本指南是为工程师量身打造的。
开发者工具的进化速度惊人。回望过去:十年前,是能提示方法名、执行代码重构的自动补全;四年前,是能帮你写出后几行代码的Copilot;两年前,是能辅助开发、生成完整文件的生成式聊天机器人。
而今天,我们迎来了自主Agent,它能根据一个初步想法,一路推进到交付最终的拉取请求(Pull Request),全程几乎不需人为介入。过去两年,我们倾力打造 Devin,就是为了实现这一愿景。
如今,自主Agent正受到前所未有的关注,特别是随着近期一系列同类产品的问世。这些Agent形态各异,可以是网页应用、移动应用,也可以集成在 Slack、GitHub、Linear 和 Jira 这类你我日常使用的工具中。
尽管“人机协作”的上限远高于独立的 AI,但自主Agent端到端完成任务的能力,将多任务处理提升到了新的层次,让每位工程师都能像工程经理一样,同时驾驭多个项目。
要适应与这些 AI 新同事的高效协作,确实需要一点时间。有趣的是,我们观察到,资深工程师往往能最快上手并精通这些工具。
我们相信,这些工具终将成为所有级别工程师的标配。基于我们的经验和客户的反馈,我们提炼了以下关键洞见与心得,希望能帮助每个人顺利地将这些强大的工具融入自己的工作流。
01
入门篇:基础与日常应用
提示词的核心原则:与Agent高效沟通
掌握这些基本原则,是你在 2025 年高效驱动编程Agent的基石。就算只记住这几点,也足以让你受益匪浅。
指令要具体:不只说“做什么”,更要说“怎么做”
要把Agent看作一个经验尚浅的初级程序员,它的判断不一定总是靠谱。对于简单任务,直接下达指令即可;但面对复杂任务,从一开始就清晰地规划出你倾向的实现路径至关重要。预先为Agent设定好整体架构和核心逻辑,不仅能大大提高它一次成功的概率,也能让你在审查代码时更加轻松,因为整个实现思路本就出自你手。
-
例如: 与其笼统地说“加单元测试”,不如具体指明:要测试哪个功能、哪些边界情况是重点、以及是否需要或如何进行模拟(mock)。
指明起点:告诉Agent从哪儿下手
设想一下,如果是你亲自动手,你会从哪里开始?即便你不清楚具体的文件或函数名,也应该告诉它相关的代码库、参考文档或关键组件。明确这些起点,能最大程度地避免Agent做无用功,从而节省大量时间。
-
例如: “请为我们的代码库增加对 Google 模型的支持。你可以先去阅读最新的官方文档 [链接],然后在
model_groups
目录下创建一个新的实现文件。”
防御性提示:预判Agent可能犯的错
想象你正在给一位新实习生布置任务,他可能会在哪些地方感到困惑或出错?你需要提前预见到这些可能出问题的地方,并在指令中主动澄清,消除所有可能的歧气。
-
例如: “请修复搜索模块的 C++ 绑定,确保新的单元测试能够通过。注意,C++ 绑定这部分,很可能每次修改代码后都需要重新编译才能进行测试。”
提供反馈闭环:善用测试、类型检查和代码规范
Agent的强大之处,很大程度上在于它能根据错误信息不断迭代、自我修正。因此,为它提供一个强大的反馈闭环至关重要。类型检查器(Type Checkers)、代码规范工具(Linters)和单元测试,都是提升其表现的利器。
相比普通 Python,类型化的 Python 能提供更明确的反馈;同理,TypeScript 也优于 JavaScript。教会Agent如何运行常规的检查和测试,并确保它拥有必要的环境和权限。如果任务涉及前端,清晰地告知它如何启动和验证开发环境。
-
例如: 我们团队已经将内部的 Python SDK 从基本无类型,全面迁移到了强类型。顺便一提,这类迁移任务本身就非常适合交给编程Agent来完成。
发挥你的专家价值:监督与验证
当你对自己的代码库了如指掌时,以上所有技巧都会变得事半功倍。即便任务再简单,你的专业判断对于验证逻辑和结果的正确性都不可或缺。人类的监督是最后一道防线——你,最终要为代码的正确性负责。即使AI工具日益强大,代码所有权和最终验证的职责,仍是人类工程师不可或缺的核心价值。
将Agent融入日常工作流:提升个人效率
一旦掌握了与Agent沟通的要领,就该把它无缝地融入你的日常工作中了。以下是一些实用的场景:
即时处理新需求,告别工作打断
当同事突然在群里说:“嘿,我们能快速搭个 X 吗?”或者“Y 功能需要微调一下”,你无需再打断自己手头的深度工作。只需花几秒钟给自主Agent发个简短的指令,让它去调研或直接修改。
这让你能持续专注于当前的主要任务。同样,当你有了一个有趣的副业点子,或需要快速验证一个原型、抓取一些数据时,都可以先把它交给Agent,自己稍后再来验收成果。
-
例如: 在我们的团队里,当讨论到一些漏洞修复或小型功能迭代时,直接在 Slack 里 @Devin 已经成为一种习惯。
移动办公,随时解决紧急问题
想象一下,在通勤或出差途中,一个紧急的线上问题突然爆出,或者你猛然想起自己提交的代码里可能有个疏忽。别担心,自主Agent通常支持移动端访问,让你能随时随地处理这些状况。无论是通过 Slack 还是专用的手机 App,你都能在路上解决问题,哪怕网络信号时好时坏。
-
例如: 正是因为有了这种灵活性,我们团队在出差和通勤途中的工作效率才得以大大提升。
把繁琐的杂事交给Agent
你是否曾被困在为了定位一个老 bug 而反复进行二分查找(bisecting),或者为了一个新功能而更新没完没了的文档?现在,你可以把这些重复、枯燥的任务统统交给Agent。这能帮你节省下宝贵的时间和精力,投入到更富创造性的工作中去。
-
例如: 在我们团队,一位工程师在发布一项功能后,紧接着让Agent去更新所有相关的技术文档和用户手册,这已是常态。
告别选择困难,让Agent帮你做实验
你在纠结一次重构是否真的能让代码更简洁吗?或者在两种不同的架构方案间犹豫不决?让Agent把两种方案都实现出来。当具体的代码摆在面前时,优劣一目了然,决策也就变得简单直接。而且,当你放弃其中一个方案时,也完全不必顾虑面子问题。
-
例如: 当初在为文本框选型时,我们在 Lexical 和 Slate 之间犹豫,于是我们让Agent分别实现了两个版本。最终,Slate 凭借更出色的成品效果胜出。
善用预览部署,快速验证成果
配置你的 CI/CD 流程,让它为每一个新的拉取请求自动创建一个可供预览的部署环境,并生成一个实时访问的 URL。这在审查由 AI Agent完成的前端任务时尤其有用,你可以直观地看到最终效果。
-
例如: Vercel 这类部署平台,让实现预览部署变得异常简单。
02
中级篇:驾驭复杂任务
当一个任务的复杂性超出了几个文件的修改范围时,想让Agent一次性完美搞定就变得很有挑战。然而,恰恰是掌握如何委派这类中大型任务(通常需要 1-6 小时工作量),才能真正发挥自主Agent的威力,帮你节省的将不再是几分钟,而是数小时的宝贵时间。
让Agent为你完成“第一版草稿”
对于一项大工程,让自主Agent先生成一个 PR 初稿,可以极大地推动项目进展,并显著减轻你的工作负担。成功的关键在于,你必须在一开始就清晰地传达你期望的实现思路。把自己想象成一位架构师,正在指导几位初级开发人员。你给出的蓝图越清晰、指令越详尽,就越能避免后续花费大量时间去纠正Agent在根本方向上的错误。
切记,大型任务(目前)还无法完全“放养”。 你需要为更复杂的任务预留出多轮反馈的时间,并准备好在最后阶段亲自动手进行一些精修。一个现实的期望是节省大约 80% 的时间,而非实现 100% 的自动化。你的专业知识,在验证和确保最终交付质量上,依然无可替代。
与Agent共同制定实施方案
对于那些需求复杂或定义模糊的任务,与Agent合作,先共同制定一份详尽的实施计划(或产品需求文档 PRD),会非常有效。一开始不清楚所有细节是很正常的。你可以先让Agent帮你做一些探索性的工作,比如提问:“我们的认证系统是怎么工作的?”或“这次改动可能会影响哪些服务?”你也可以让它帮你找出相关的核心代码,供你早期确认,确保方向正确。
某些Agent(如 Devin 和 Claude Code)提供了专门的“规划模式”,专注于阅读和理解现有代码,而非立即动手修改。如果你希望在委派任务前做更充分的准备,也可以借助像 deepwiki.com
或 Devin Search 这样的专业代码库搜索工具,它们能帮你快速摸清代码库的底细。
为复杂任务设立“检查点”
对于多步骤、跨模块、甚至跨代码库的复杂任务,一定要在流程中设置清晰的“检查点”:
规划 → 实现模块A → 测试 → 修复 → 检查点A审查 → 实现模块B …
在每个重要阶段完成后,明确要求Agent暂停并等待你的确认。特别是对于那些横跨数据库、后端、前端等多层的复杂功能,利用这些检查点来确保每一步的实现都符合你的预期,澄清疑问(例如:“向我解释一下你实现的认证流程,并确认它是安全的”),并及早纠正偏差,避免问题滚雪球式地扩大。
-
例如: “我需要你实现一个功能,它会涉及数据库、后端和多个前端界面。第一步,请先规划好数据库的表结构变更,完成后告诉我,我来执行数据库迁移。” -> “很好。第二步,请实现后端的逻辑,并添加单元测试确保 XYZ 功能正常。完成后告诉我。” -> “最后,请在我们的 Web 和移动端界面上完成修改,调用新的后端接口。”
教会Agent如何自行验证
在给出反馈时,不要只说“这个函数有问题”,而是要清晰地告诉它你是如何测试并发现这个问题的。这样,Agent就能学会你的验证方法,并在未来的任务中自行检查。对于那些你会反复用到的测试模式,最好将其固化到Agent的永久知识库中(参见“扩展Agent的知识库”)。
-
例如: 在 Devin 中,我们会有意识地引导用户将核心的测试流程保存到Agent的长期记忆里,以简化未来的交互。
在 AI 频繁修改的代码区域,用更全面的测试来“兜底”
目前,Agent还无法像人一样,通过交互式操作来全面测试所有应用场景。因此,在那些主要由 AI 修改和维护的代码区域,大幅提升单元测试和集成测试的覆盖率,是你信心的保证。有了扎实的自动化测试作为安全网,那些“看起来正确”的代码才能被你放心地合并入库。
-
例如: 在让我们团队的 AI 将一段核心代码从 Python 翻译成 C++ 之前,我们首先花了些时间,极大地增强了那部分代码的单元测试。
03
高级篇:自动化与深度定制
打造自动化工作流:让Agent主动工作
Agent响应事件的速度远超人类,而且它们也远比人类同事更乐于处理枯燥、重复的工作。
为你最重复的工作创建自动化模板
每个工程团队都免不了要处理一些重复性的常规任务,例如:
-
移除过期的功能开关(feature flag)
-
升级各类依赖库
-
为新功能的 PR 补充或修复测试
这些任务正是自动化Agent的完美用武之地。通常,可以由一位经验丰富的工程师,为这类场景创建一个健壮、可复用的提示词模板(在 Devin 中,我们称之为“剧本”),之后便可一键触发,反复执行。
-
例如: 我们的一位客户,就设置了自动化流程:每当有新功能开发完成,系统会自动触发三个独立的Agent,分头为新代码编写单元测试。
实现智能化的代码审查与规范执行
虽然市面上已有专门用于快速代码审查的工具(如 Greptile 和 CodeRabbit [3]),但自主Agent可以提供一个更有趣的选项。由于它能深入理解代码库的功能,因此它提出的审查意见可能更加精准。
-
例如: 在 Cognition 内部,我们维护了一个“常见代码错误清单”,并将其保存在代码库中。我们没有为这些错误编写传统的 lint 规则(因为很多场景难以用规则描述),而是配置了一个Agent,让它在每个新的 PR 上运行,自动检查是否存在这些常见错误。
接入告警与事件,实现自动响应
你还可以设置Agent,让它在接收到特定事件(如线上告警)时自动触发。例如,Devin 提供了便捷的 API,其他Agent也可以通过命令行(CLI)集成到你的自定义工作流中。这类设置如果与能够接收第三方错误日志的平台结合,效果会特别好。
注意: 在处理生产环境的线上问题时,当前 AI 的调试能力还比较有限。与其让 AI 端到端地修复一个突发 bug,更实际的做法是让它分析日志和监控,然后给出一个“最可疑的根本原因列表”,由人类工程师来最终定夺。
定制化与性能提升:释放Agent全部潜力
统一开发环境,确保流畅运行
一个不完整或不匹配的开发环境,是拖慢Agent效率的最大元凶。为了让Agent流畅工作,请确保它的运行环境与你团队成员的开发环境完全一致,包括语言版本、包依赖、自动化检查工具等。
例如,pre-commit
这类工具应该预装在Agent的环境中,而各类配置(如密钥、语言版本、虚拟环境、浏览器登录状态)最好能通过 .envrc
或自定义 .bashrc
等方式自动加载。
-
例如: 我们为Agent的浏览器预设了已登录的账户状态,这不仅省去了每次手动登录的麻烦,也让端到端测试变得异常简单。
构建自定义工具,为Agent“赋能”
许多平台都支持将Agent与外部工具连接(在 Devin 中,这类功能被称为 MCPs [4])。但很多人忽略了另一个简单有效的方法:为Agent编写一些自定义的命令行(CLI)小工具。比如,你可以给它一个脚本,只需输入工单 ID 就能拉取该工单的详细信息。或者,为它提供一个能一键重启本地开发环境的工具,让它在搞乱环境后能自行恢复。
-
例如: 我们有个客户的成功经验值得借鉴:他们创建了一个 CLI 工具,这个工具在运行测试套件后,只显示第一个失败的测试用例及其详细错误信息。这使得Agent能高度专注于解决当前这一个问题,极大地提升了它在处理长任务时的成功率和完成速度。
扩展Agent的知识库,沉淀团队规范
如果Agent反复犯同样的错误,这正是一个绝佳的机会,将你的反馈固化到它的永久知识库中。在 Devin 里,有专门的知识管理系统;其他产品也可能通过 .rules
或 .md
文件来让Agent“学习”。不要只告诉它某个框架的使用方法,更要告诉它你项目的整体架构、不同类型任务的通用测试策略、常用命令的运行方式,以及你推荐使用的工具。
-
例如: 我们为Agent提供了一份详细的“服务路由添加指南”,其中包含了在添加一条新路由时,需要在前端和后端哪些位置添加样板代码的全部信息。现在,这类任务已可以被轻松地委派给 AI。
04
实践考量:规避风险与拥抱未来
了解自主Agent的局限性
调试能力有限
很多漏洞报告看起来简单,但其根本原因的排查,往往需要深入数据库、分析日志,并具备比当前 AI 更强的推理能力。如果想用 AI 辅助调试,我们建议让它分析信息后,提供一个“可能的根本原因列表”,而不是让它尝试自己端到端地解决问题。一旦人类专家确定了真正的原因,Agent在实现具体修复方案时依然能派上大用场。
精细的视觉还原能力较弱
总体而言,目前的模型还无法很好地处理精细的视觉任务,比如严格按照设计稿或 Figma 效果图来还原 UI。它们更擅长处理那些可以用代码来描述的视觉需求(例如,直接提供从 Figma 导出的代码)。如果你希望Agent能遵循你的视觉风格,最好的办法是建立一个包含可复用组件的、完善的设计系统。
存在知识截止日期
当你想让Agent使用一个新发布的库或框架时,必须明确地把最新的官方文档链接扔给它。否则,受限于其预训练模型的知识截止日期,它很可能会沿用旧的、已被弃用的 API 或模式。一个好的Agent能够通过阅读新文档来克服这个问题,但你必须主动提醒它(记住,它自己并不知道那个库已经发布了新版本)。
管理时间与及时止损
使用Agent并非总能成功。在 2025 年,Agent的输出结果仍有相当大的不确定性。你的任务之一,就是学会在提高成功率的同时,如何避免在无效尝试上浪费时间与金钱。
学会及早止损
新手使用Agent时最常犯的错误,就是过于执着,即使Agent的工作已经明显偏离轨道,仍试图通过不断追加指令来“拯救”它。如果你发现自己开始产生“它根本不听我的”或“这家伙在原地兜圈子”这类想法时,果断中止对话或手动接管才是明智之举。继续发送消息,往往只说明任务本身的复杂度超出了Agent当前的能力,而非简单的指令失误。
多样化尝试,找到最佳应用场景
如果你刚开始使用Agent,我们建议你先广泛地尝试各种不同类型和复杂度的任务。一旦发现Agent在某类任务上表现得心应手,就加倍利用它;反之,如果某类任务它总是搞砸,就果断放弃。不必强求Agent在每一次尝试中都取得成功。
进展停滞不前?不如推倒重来
与和人类协作不同,对于Agent,“推倒重来”往往是更高效的选择。如果你给Agent一个任务,它在处理你的反馈和修正方向时显得非常吃力,那么直接开启一个全新的会话,把所有修正后的完整指令一次性给它,通常能更快地获得成功。Agent从零开始生成正确代码的能力,远强于它修复一个已被自己搞得一团糟的环境的能力。
安全与权限管理
为Agent创建专属账户
为Agent准备一个专用的、可随时丢弃的邮箱,用于安全地测试各类网站注册。如果Agent需要访问云资源,请为其创建拥有最小必要权限的自定义 IAM 角色。
提供隔离的开发/预发布环境
理想情况下,Agent应该使用与你团队工程师完全一致的测试环境。我们强烈建议,不要给予Agent任何访问生产环境的权限。如果使用远程Agent服务,你可以在其远程机器上运行一个完全隔离的测试环境。
使用只读 API 密钥
在任何可能的情况下,都只为Agent提供只读权限的 API 密钥。我们发现,对于任何需要与外部服务进行写操作的脚本,由人类来手动执行最后一步,仍然是更稳妥的做法。
拥抱未来的变革
我们坚信,软件工程师的价值不会消失。即使编程Agent日益强大,深厚的技术功底和对业务代码库的透彻理解,依然是不可替代的核心竞争力。在今天,真正掌握你的项目、系统和代码,比以往任何时候都更加重要。
我们团队要求工程师能够同时监督多个系统,并在此过程中保持深刻的洞察力与周全的判断力。当自动化极大提升了你的工作效率时,同时处理多项任务将从一种选择,变成一项必备技能。希望我们的经验,能帮助你和你的团队在这个持续变化的软件开发新时代中,找准定位,不断成长。

(文:Founder Park)