Qwen Code 架构概述
本文档提供了 Qwen Code 架构的高层次概览。
核心组件
Qwen Code 主要由两个主要包组成,同时还包含一组工具,系统在处理命令行输入时可以使用这些工具:
-
CLI 包 (
packages/cli
):- 用途: 这个包包含了 Qwen Code 面向用户的部分,例如处理初始用户输入、呈现最终输出以及管理整体用户体验。
- 包中包含的关键功能:
- 输入处理
- 历史记录管理
- 显示渲染
- 主题和 UI 自定义
- CLI 配置设置
-
Core 包 (
packages/core
):- 用途: 这个包充当 Qwen Code 的后端。它接收来自
packages/cli
的请求,协调与配置的模型 API 的交互,并管理可用工具的执行。 - 包中包含的关键功能:
- 用于与 Google Gemini API 通信的 API client
- Prompt 构建和管理
- 工具注册和执行逻辑
- 对话或会话的状态管理
- 服务端配置
- 用途: 这个包充当 Qwen Code 的后端。它接收来自
-
工具 (
packages/core/src/tools/
):- 用途: 这些是独立的模块,用于扩展 Gemini 模型的功能,使其能够与本地环境交互(例如文件系统、shell 命令、网络请求)。
- 交互方式:
packages/core
根据 Gemini 模型的请求调用这些工具。
交互流程
与 Qwen Code 的典型交互遵循以下流程:
- 用户输入: 用户在终端中输入 prompt 或命令,这部分由
packages/cli
管理。 - 请求发送至核心模块:
packages/cli
将用户的输入发送给packages/core
。 - 请求处理: 核心包:
- 为配置的 model API 构造合适的 prompt,可能包括对话历史和可用的工具定义。
- 将 prompt 发送给 model API。
- Model API 响应: Model API 处理 prompt 并返回响应。该响应可能是直接答案,也可能是调用某个可用工具的请求。
- 工具执行(如适用):
- 当 model API 请求使用某个工具时,核心包会准备执行该工具。
- 如果请求的工具需要修改文件系统或执行 shell 命令,系统会先向用户展示该工具及其参数的详细信息,并要求用户批准执行。
- 只读操作(例如读取文件)可能不需要显式的用户确认即可继续执行。
- 经用户确认后,或者在无需确认的情况下,核心包会在相应的工具中执行相关操作,并将结果通过核心包发送回 model API。
- Model API 处理工具执行结果并生成最终响应。
- 响应返回 CLI: 核心包将最终响应发送回 CLI 包。
- 展示给用户: CLI 包对响应进行格式化并在终端中展示给用户。
核心设计原则
- 模块化: 将 CLI(前端)与 Core(后端)分离,允许独立开发和未来可能的扩展(例如,为同一后端开发不同的前端)。
- 可扩展性: 工具系统设计为可扩展的,允许添加新功能。
- 用户体验: CLI 专注于提供丰富且交互式的终端体验。
Last updated on