
Devin 的工作流程揭秘:工具使用、规划与自主性
导言
Devin(来自 Cognition AI)是一款新型的自主人工智能软件工程师,能够规划软件开发任务并主要依靠自身完成。它能端到端地处理代码项目,利用代码编辑器、命令行 shell 和网络浏览器等工具进行代码研究、编写、测试和部署。在演示和媒体报道中,Devin 已展示出在极少人工干预下扫描代码库、生成计划、编辑文件、运行测试并提交拉取请求的能力 (medium.com) (www.linkedin.com)。Cognition 声称 Devin 能够处理*“需要数千个决策的复杂工程任务”,在每一步都能回忆起上下文,甚至能从错误中学习 (medium.com) (www.linkedin.com)。因此,我们深入探讨 Devin 的设计和工作流程的公开细节。这包括 Devin 如何分解任务(其规划过程)、它如何在开发环境中(编辑器、终端、浏览器)实际工作、它如何在编码会话中保持记忆或上下文、它如何自我纠正和迭代,以及它使用了哪些防护措施或安全保障。我们还注意到未披露*的信息——例如,确切的模型内部结构尚未公开,因此一些社区讨论依赖于有根据的猜测。
任务规划与分解
当开发者给 Devin 一个新任务时,第一步是规划要修改哪些文件以及按什么顺序修改。Cognition 的说明解释说,Devin 使用一个“规划模式”子代理,其工作是找出仓库中哪些文件与任务相关 (medium.com) (docs.devin.ai)。实际上,Devin 会“调查”仓库并提出一个计划,然后才编写任何代码 (docs.devin.ai) (docs.devin.ai)。对于复杂任务,开发者会看到这个计划,并可以批准或调整它;如果启用了 Agency 模式,Devin 将自动执行其计划,无需等待批准 (docs.devin.ai) (docs.devin.ai)。
在幕后,Cognition 通过强化学习训练了这个规划代理。在一项分析中,团队描述了只给规划器提供只读工具(如 ls、grep 或 read_file),并在它正确预测人类会编辑的文件集时给予奖励 (medium.com) (medium.com)。结果是:Devin 的规划器学会了发出并行文件系统查询(例如,同时在不同目录上运行 ls 和 grep),然后缩小有希望的线索 (medium.com)。训练惩罚鼓励效率,因此代理避免了暴力搜索(例如无休止地 grep 整个仓库),而是在找到目标后迅速“提交” (medium.com)。这意味着 Devin 的规划是数据驱动的:它已经学会了通用代码库导航策略(正如 Cognition 所述,该模型在许多仓库和用户查询上进行了训练) (medium.com) (medium.com)。
在用户层面,你看到的结果是一个步骤大纲。例如,对于一个新的功能请求,Devin 会建议类似“修改文件 A 以实现 X,在文件 B 中添加测试,然后更新配置 C”的方案。在演示中,如果用户忘记指定一些细节,Devin 的规划步骤通常会捕捉到并提示澄清。在一个演示中,助手自动将 GitHub 账户的配置添加到了计划中,尽管用户没有明确提及 (www.developersdigest.tech) (www.linkedin.com)。这些规划步骤(提问、列出任务、映射文件)都在 Devin 的对话界面中完成,在编写任何代码之前。如果用户同意或开启了自动批准,Devin 将进入执行阶段。
在开发环境中工作:编辑器、终端和浏览器
Devin 在一个沙盒化的开发者环境中运行。Cognition 的资料将其描述为一个拥有熟悉开发者工具包的环境:shell 终端、代码编辑器和网络浏览器都可供其使用 (medium.com) (docs.devin.ai)。实际上,当 Devin 运行时,它所做的一切都会被记录并显示在网页用户界面中。“关注 Devin”视图会突出显示每个操作(例如文件编辑或 shell 命令),甚至允许用户点击图标直接跳转到发生该操作的代码编辑器或终端中 (docs.devin.ai)。例如,如果 Devin 编辑了一个 JavaScript 文件,用户可以点击查看 VSCode 编辑器视图中的更改;如果 Devin 运行了一个 shell 命令,则可以点击查看终端输出。
如果你愿意,你也可以手动进入 Devin 的工作区。最近的一次更新添加了一个**“使用 Devin 的机器”**按钮,可以通过网络在 VSCode 中打开 Devin 的环境 (docs.devin.ai)。这意味着开发者可以查看 Devin 的文件、运行命令,甚至手动编辑其工作区中的代码。(对于长时间运行的任务,如果你想在执行过程中检查某些内容,这会很方便。)在一个示例中,用户激活了此功能来观看 Devin 创建 UI 元素:用户实际打开了 Devin 的 VSCode,看到了 Devin 编写的新文件,并可以实时探索 UI。
浏览器工具允许 Devin 在互联网上进行研究或测试。在演示中,Devin 被看到使用网络搜索查找文档或库,甚至运行本地网络服务器以检查其代码是否损坏(例如,它会将浏览器指向 localhost 以验证 UI 是否正常工作)。总而言之,Devin 的界面是多模态的:它可以接收文本提示、附加的设计图像或文档,甚至是代码片段等输入,并通过聊天和这些开发者工具进行交互 (www.developersdigest.tech) (medium.com)。结果是,这种体验更接近于“一位同事在编写代码”,而非与 AI 进行静态聊天。
记忆、知识与会话上下文
Devin 通过内置的**“知识”**系统在会话中跟踪信息。将“知识”想象成一个工作区笔记本:Devin 可以在其中存储提示、项目特定指令或重要上下文,并在以后回忆起来。例如,文档描述了固定某些知识的工作流程,这样 Devin 就永远不会忘记它们,例如重要的架构约束或编码风格指南 (docs.devin.ai)。用户可以编辑或添加到这个知识库。Devin 还会自动生成有用的笔记:它会扫描你的仓库以了解代码结构、组件和你的文档,并自动构建“仓库知识”摘要 (docs.devin.ai) (docs.devin.ai)。实际上,在你运行了几个任务后,Devin 可能会说“我注意到你经常使用 React 和 Redux;我建议将这些添加到知识库中”,如果你同意,该信息就会被保存。
在会话期间,Devin 会将相关知识保存在工作内存中。Cognition 声称它“在每一步都能回忆起相关上下文” (www.linkedin.com)。例如,如果它之前了解到你偏爱 Python 3.11 或你的网络应用使用了 OAuth,它会在需要时将这些信息带入提示中。会话本质上是长期的和有状态的:你可能会与 Devin 交流数十个回合(数分钟或更长时间),同时它编辑许多文件,并且它会保留聊天历史。如果 Devin 出现故障,你可以滚动日志或开启“进度模式”来查看它执行的每一个操作。
如果你的会话结束(例如,你停止了任务或完成了工作),Devin 会忘记该机器的运行状态,并且它的虚拟机下次会重置为基础快照 (docs.devin.ai)。默认情况下,这个基础状态包含你已预加载到工作区中的仓库,因此 Devin 无需每次都从头克隆 (docs.devin.ai)。(如果没有工作区设置,每次会话都会从一台空机器开始,因此 Cognition 强调预配置你的仓库以提高速度 (docs.devin.ai)。)但除了代码之外,Devin 确实通过其知识库将知识向前传递。它会提示你添加对未来任务可能有用的经验或定义 (docs.devin.ai)。通过多个会话,这意味着 Devin 会逐渐建立起对你项目约定和架构的记忆。
除了知识库,Cognition 还发布了 DeepWiki,这是一个相关工具,可以索引整个代码库并在其之上提供聊天界面 (medium.com)。虽然 DeepWiki 是一个独立产品,但它暗示了更广泛的架构:Devin 可以查询自身或外部的代码维基来回答问题。实际上,如果你向 Devin 询问有关代码的问题,它可能会内部使用与 DeepWiki 相同的检索系统来支撑其回复。
自主性、迭代与自我纠正
Devin 的设计旨在实现自主,但必要时会带有反馈循环。规划之后,它会一步一步执行,不断检查错误。在演示中,该代理经常遵循这种模式:它使用浏览器或文档来理解问题,编写一些代码,运行它,发现错误,然后查找如何修复它——模仿人类的调试循环 (www.developersdigest.tech) (www.linkedin.com)。例如,一位演示者展示了 Devin 添加一个登录表单,然后运行前端测试,发现一个错误,并返回研究如何修复该错误。Devin 的每个“回合”都是一个思考 → 行动 → 观察 → 纠正的循环。
多个消息来源指出,Devin 内置了“自我纠正”功能 (medium.com) (www.linkedin.com)。事实上,Cognition 关于 GPT-5 的博客提到,GPT-5“擅长理解错误并自行纠正”,他们强调这对于长期任务非常有益 (www.linkedin.com)。换句话说,如果 Devin 的代码无法编译或测试失败,该模型(通常是 GPT-5 或类似模型)会看到错误消息并即时找出修复方案。它甚至能够进行重试循环:如果一个动作部分成功,Devin 可能会进行第二次尝试。这些循环在用户界面中表现为重复的编辑和运行序列。
为了系统地处理故障,Devin 采用了自动化和人工监督相结合的方式。例如,如果 Devin 发起了一个拉取请求并收到了 CI 失败或代码审查评论,Cognition 的系统会自动唤醒 Devin 并让它处理该问题 (docs.devin.ai) (docs.devinenterprise.com)。默认情况下,Devin 会响应 lint 错误或评论,尽管用户可以禁用此功能。用户界面还会实时显示其状态和操作,因此开发者可以随时干预。鼓励开发者在“实时模式”(显示每个步骤)下观看前几次运行以建立信任,一旦有信心,就可以让 Devin 完全无头运行 (www.developersdigest.tech)。
安全、防护措施与定制
操作员可以明确指示 Devin 不要做什么。一个强大的功能是**“禁止操作”。你可以列出 Devin 不允许触及的事项——例如,“不要直接推送到 main 分支”或“不要编辑文件 X”。当这些命令出现在提示或 Playbook 中时,系统会确保 Devin 遵守它们 (docs.devin.ai)。根据发布说明,Devin 现在能够可靠地**处理禁止操作列表,这意味着它会根据这些规则检查其操作。这有助于防止常见的错误,例如修改错误的分支或文件。
Devin 还提供了各种控制。在 Slack 或网页用户界面中,你可以告诉 Devin“休眠”(暂停工作)或“归档”会话 (docs.devin.ai)。你可以选择 Devin 在执行计划前是否需要你的批准(通过 Agency 设置),或者完全自主运行 (docs.devin.ai) (docs.devin.ai)。它的计算使用量以代理计算单位(ACU)计量,如果 Devin 即将达到限制,用户界面会显示警告,这样你就可以干预或分配更多资源 (docs.devin.ai)。
如果幕后出现问题,Cognition 设有监控措施。在早期版本中,一些用户报告 Devin 会话“卡住”或崩溃。团队指出这些问题已经修复,并且如果 Devin 出现卡顿,会提供 ACU 退款 (docs.devin.ai)。换句话说,该公司正在积极地对系统进行工具化以提高可靠性。外部分析师警告称,与任何基于聊天的 AI 一样,Devin 有时会产生错误或“幻觉”代码。建议的做法是,像审查初级开发人员的工作一样审查其输出。为了安全起见,许多团队对 Devin 的提交进行代码审查,并限制 Devin 的权限(例如,默认情况下不能直接访问机密信息)。到目前为止,公开描述的防护措施主要是用户定义的(禁止操作、要求计划批准等)和系统健康检查,而不是内置的道德过滤器。
我们尚不了解的信息
Cognition 有意将一些细节保密,因此 Devin 的部分运作仍不透明。例如,它使用的具体大型语言模型最初并未公开。有传言和后续帖子表明,Cognition 现在将 GPT-5 集成到 Devin 中作为其规划和推理核心 (www.linkedin.com),并且他们有一个基于 Claude Sonnet 4.5 的预览代理 (docs.devinenterprise.com)。但完整的架构尚不清楚:Devin 可能协调了多个模型并进行了自定义微调(RFT 规划子代理暗示了这一点),但这些层并未开源。
我们也不完全了解其记忆的局限性。Devin 声称“随着时间学习”,但它如何将新知识融入其现有网络(而非仅仅存储在知识库中)并未具体说明。它有效使用的对话历史最大长度没有文档说明。当会话非常长时,聊天或代码上下文的早期部分可能会在幕后被裁剪。实际上,大多数用户会保持提示和代码的简洁,以避免上下文过载。
在安全方面,仍存在一些未知因素。例如,虽然“禁止操作”涵盖了用户指定的规则,但尚不清楚 Devin 是否有任何隐式安全层(例如检测数据滥用、偏见检查或沙盒逃逸)。由于它在虚拟机中运行,人们希望它不会损坏主机系统,但关于沙盒的详细信息并未公开。社区推断,Devin 的机器可能使用容器快照(如强化学习训练中提到的)来隔离运行 (medium.com)。
最后,社区中的许多人正在关注 Devin 如何处理模糊或开放式任务。销售宣传称其“完全自主”,但分析师指出它仍然经常需要精确的指令。例如,如果用户的提示模糊不清,Devin 可能会生成一个看似合理但遗漏了重要边缘情况的计划。它可能会在后续提出澄清问题,但开发者有时会怀疑它对_意图_的理解程度,而不仅仅是代码模式匹配。Devin 认知方面的这些特征依赖于底层大型语言模型的能力,我们只能间接观察到这一点。简而言之,用户应将 Devin 更多地视为一名技艺高超的初级工程师,而非产品经理——它规划得很好,但可能并非总是能完美地理解你的意图。
Devin 入门
Devin 主要面向进行大量编码工作的工程团队。它在明确定义的任务上表现出色:根据规范构建功能、重构、编写测试和修复错误。在高级设计或定义不清的问题上,它的表现尚不明确。对于软件团队来说,Devin 可以帮助完成日常工作,让人类专注于创造性架构和监督。
对于非编码人员或新手,Devin 仍然有用,但需要一些设置。第一步是让 Devin 访问你的代码仓库(通过 GitHub、GitLab 等),并可能将其连接到 Slack 或 Teams 中。然后尝试一个简单任务。例如,提问:“Devin,在网页 UI 中添加一个新页面,列出我们数据库中的所有产品,包括测试覆盖率。”观察规划阶段的对话:Devin 会概述需要修改哪些文件(例如 HTML 模板、后端 API 代码等),并提出任何必要的问题。批准计划(或让其自动运行),然后观看它执行。使用“关注”面板查看每个步骤:你将看到文件编辑、shell 命令(如运行测试套件)和 UI 的浏览器快照。如果 Devin 犯了错误或者你想要更改,只需像在聊天中一样进行交互(“实际上,使用这个 CSS 主题”或“产品标题应该是大写”),Devin 就会启动另一个编辑循环。
关键可操作步骤是迭代和审查。始终检查 Devin 生成的代码并在本地进行测试。随着时间的推移,你可以丰富知识库:添加类似“我们的数据库使用 PostgreSQL 13”或“我们在 PHP 中遵循 PSR-12 风格”的笔记。Devin 将在未来的会话中开始融入这些信息。还要探索设置:如果你总是想审查提案,就关闭 Agency;如果你更信任它,就开启。将 Devin 连接到你的 CI 以进行自动拉取请求审查,但首先从通知开始,这样你就可以观察它如何处理反馈。
最终,Devin 的工作流程复杂而强大,但它仍然需要你的指导。通过了解它是如何规划、使用工具以及从反馈中学习(如上文详述),你可以充分利用这种新型的代理式编码助手。对于对 Devin 感兴趣的团队来说,最好的下一步是在 devin.ai 上注册并进行一次小型试点:添加一个网络仓库,要求 Devin 实现一个功能,并让它在进度模式下运行。观察完整的“思考”轨迹——这种亲身体验将清楚地阐明 Devin 如何将规划、编辑和自我纠正结合起来。从那里,你可以扩展到更多任务并微调其使用(例如,为你的领域定制 Playbook)。尽管仍在发展中,Devin 代表了人工智能工具领域的一个重大飞跃。通过今天了解其工作流程,团队可以为代码任务真正能够与 AI 队友共享的时代做好准备。
获取最新的AI编码研究和播客节目
订阅即可接收有关AI编码工具、AI应用构建器、无代码工具、vibe coding以及使用AI构建在线产品的新研究更新和播客节目。