Skip to Content
Qwen Code 架构概述

Qwen Code 架构概述

本文档提供了 Qwen Code 架构的高层次概览。

核心组件

Qwen Code 主要由两个主要包组成,同时还包含一组工具,系统在处理命令行输入时可以使用这些工具:

  1. CLI 包 (packages/cli):

    • 用途: 这个包包含了 Qwen Code 面向用户的部分,例如处理初始用户输入、呈现最终输出以及管理整体用户体验。
    • 包中包含的关键功能:
  2. Core 包 (packages/core):

    • 用途: 这个包充当 Qwen Code 的后端。它接收来自 packages/cli 的请求,协调与配置的模型 API 的交互,并管理可用工具的执行。
    • 包中包含的关键功能:
      • 用于与 Google Gemini API 通信的 API client
      • Prompt 构建和管理
      • 工具注册和执行逻辑
      • 对话或会话的状态管理
      • 服务端配置
  3. 工具 (packages/core/src/tools/):

    • 用途: 这些是独立的模块,用于扩展 Gemini 模型的功能,使其能够与本地环境交互(例如文件系统、shell 命令、网络请求)。
    • 交互方式: packages/core 根据 Gemini 模型的请求调用这些工具。

交互流程

与 Qwen Code 的典型交互遵循以下流程:

  1. 用户输入: 用户在终端中输入 prompt 或命令,这部分由 packages/cli 管理。
  2. 请求发送至核心模块: packages/cli 将用户的输入发送给 packages/core
  3. 请求处理: 核心包:
    • 为配置的 model API 构造合适的 prompt,可能包括对话历史和可用的工具定义。
    • 将 prompt 发送给 model API。
  4. Model API 响应: Model API 处理 prompt 并返回响应。该响应可能是直接答案,也可能是调用某个可用工具的请求。
  5. 工具执行(如适用):
    • 当 model API 请求使用某个工具时,核心包会准备执行该工具。
    • 如果请求的工具需要修改文件系统或执行 shell 命令,系统会先向用户展示该工具及其参数的详细信息,并要求用户批准执行。
    • 只读操作(例如读取文件)可能不需要显式的用户确认即可继续执行。
    • 经用户确认后,或者在无需确认的情况下,核心包会在相应的工具中执行相关操作,并将结果通过核心包发送回 model API。
    • Model API 处理工具执行结果并生成最终响应。
  6. 响应返回 CLI: 核心包将最终响应发送回 CLI 包。
  7. 展示给用户: CLI 包对响应进行格式化并在终端中展示给用户。

核心设计原则

  • 模块化: 将 CLI(前端)与 Core(后端)分离,允许独立开发和未来可能的扩展(例如,为同一后端开发不同的前端)。
  • 可扩展性: 工具系统设计为可扩展的,允许添加新功能。
  • 用户体验: CLI 专注于提供丰富且交互式的终端体验。
Last updated on