跳到主要内容

Code Mode

Code Mode 是一种以编程方式与 MCP 工具交互的方法,而不是直接调用它们。启用了很多扩展时,Code Mode 尤其有用,因为它能更高效地管理上下文窗口用量。

信息

此功能要求启用内置的 Code Mode 扩展。

Code Mode 控制工具如何被发现和调用:

  • 已启用扩展中的工具按需发现,并在需要时加载进上下文
  • 多次工具调用在一次执行中批量完成
  • 中间结果会串联起来(一个工具的输出作为下一个工具的输入)

Code Mode 如何工作​

Code Mode 扩展是一个 MCP 服务器,它用 MCP 协议暴露三个基础元工具。启用 Code Mode 后,goose 会切换到 Code Mode。对每个请求,LLM 会编写 JavaScript 代码,由 goose 使用 pctx (Port of Context)(GitHub)执行。pctx 是基于 Deno 的自定义运行时,用于:

  • 从已启用的扩展中发现可用工具(如有需要)
  • 了解如何使用当前任务所需的工具
  • 以编程方式调用这些工具来完成任务

传统工具调用与 Code Mode​

传统 MCP 工具调用和 Code Mode 是达成同一目标的两种方式:让 goose 能够使用工具。

方面传统方式Code Mode
工具发现已启用扩展中的全部工具,例如:
• developer.shell
• developer.text_editor
• github.list_issues
• github.get_pull_request
• slack.send_message
• ……可能还有很多
Code Mode 扩展的元工具:
• list_functions
• get_function_details
• execute_typescript

LLM 使用这些工具,按需发现其他已启用扩展中的工具
工具调用• 顺序调用工具
• 每次结果先发给 LLM,再进行下一次调用
• 可能需要先做工具发现调用
• 多次工具调用在一次执行中批量完成
• 中间结果在本地串联并处理
上下文窗口每次 LLM 调用都包含已启用扩展的全部工具定义每次 LLM 调用包含 3 个元工具定义,以及本会话中先前已发现的工具定义
最适合• 启用 1–3 个扩展
• 使用 1–2 个工具的简单任务
• 5 个以上扩展
• 定义清晰的多步骤工作流
仅文本结果

Code Mode 只支持工具结果中的文本内容。图像、二进制数据和其他内容类型会被忽略。

更多资源​