526 - 《Cline》

发布于 2025年2月17日

下午翻了下 Cline,做下记录。

1、Cline 是一款 VSCode 插件、开源的 Coding Agent。(注:目前他专注在 Agent 上,并没有提供 Tab 代码补全的能力。)

2、Cline 功能列表。

1)Plan/Act 双模式。Plan 模式下,做信息收集、需求澄清和方案设计,Plan 模式下的 Cline,就像一位经验丰富的架构师,在项目启动之初,帮助开发者理清思路,避免盲目开发;Act 模式下,根据前面制定的 Plan,一步一步执行代码修改、命令运行、浏览器操作等,直至完成最终目标。

2) 最核心的是 Code Agent。类似 Cursor 的 Agent 模式。Cline 内置了不少 tool,比如 CLI 执行(execute_command)、文件系统(read_file、write_to_file、replace_in_file、search_files、list_files、list_code_definition_names 等)、浏览器模拟(基于 Claude 3.5 Sonnet 的 Computer Use)等。

3)考虑了安全问题。比如支持通过 .clintignore 忽略 .env、.pem 等敏感文件的读取,比如允许配置哪些操作是自动 Approve 的,比如有 CheckPoint 的概念,保存每次改动后的代码为 Snapshot。

4)上下文感知和 Cursor 的类似。支持 @ 提及文件、文件夹、URL、Terminal 等,同时会利用 VSCode 环境信息(可见编辑器、打开的选项卡、终端输出、问题诊断等)增加上下文信息。

5)支持 MCP,感觉是标配了。

6)成本与性能优化。有 Prompt Caching、Context Window 管理、Token 用量计算等方法。但由于 Cline 本身的处理比较简单粗暴,相同的任务,Token 用量会比 Cursor 要大。

3、Cline 原理。


图来自 https://www.nazha.co/posts/how-cline-works

1)核心模块。Cline 的源码主要分为以下几个核心模块,各司其职。

  • Webview UI 层 (webview-ui/): 基于 React 和 VSCode Webview UI Toolkit 构建用户界面,负责用户交互、状态展示和用户指令的传递。
  • Extension Core 层 (src/core/): Cline 的核心逻辑所在,负责任务流程编排、工具调用管理、提示工程和对话管理。Cline.ts 是该层级的核心类,协调各个子模块完成复杂的编码任务。
  • Integrations 层 (src/integrations/): 封装了 Cline 与 VS Code 各个子系统的集成逻辑,例如编辑器 (editor/)、终端 (terminal/)、浏览器 (browser/)、Checkpoints (checkpoints/) 和 Diagnostics (diagnostics/) 等。
  • Services 层 (src/services/): 提供了各种独立的服务模块,例如身份验证 (auth/)、MCP 服务器连接 (mcp/)、文件系统操作 (glob/)、代码解析 (tree-sitter/) 和日志记录 (logging/) 等。
  • API 层 (src/api/): 负责与各种 AI 模型 API 进行交互,包括 Anthropic、OpenAI、Bedrock、Vertex、Gemini 等,并提供统一的 API 接口和数据转换层,providers/ 目录下包含了各种 API Provider 的 Handler 实现。

2)一些核心流程。

  • 任务执行流程: 在 Cline.ts 中,可以看到 Cline 如何通过 recursivelyMakeClineRequests 方法,将用户任务分解为一系列步骤,并循环调用各种工具来逐步完成任务。
  • 工具调用流程: 以 execute_command 工具为例,TerminalManager.ts 负责终端的创建和管理,TerminalProcess.ts 封装了命令执行和输出处理的细节,Cline.ts 则负责工具参数的组装、用户授权的请求和工具执行结果的处理。
  • 上下文管理流程: Cline.ts 中的 loadContext 方法揭示了 Cline 如何收集和处理上下文信息,包括工作区文件结构、可见编辑器、打开的选项卡、终端输出和问题诊断等。ClineI

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。