Qwen Code 架构概览
本文档提供了 Qwen Code 架构的高层概述。
核心组件
Qwen Code 主要由两个核心包组成,并配套一系列工具;这些工具可在系统处理命令行输入的过程中被调用。
1. CLI 包(packages/cli)
用途: 该包包含 Qwen Code 面向用户的部分,例如处理初始用户输入、呈现最终输出以及管理整体用户体验。
核心功能:
- 输入处理: 支持多种用户输入方式,包括直接文本输入、斜杠命令(如
/help、/clear、/model)、@命令(如@file用于引入文件内容)以及感叹号命令(如!command用于执行 Shell 命令)。 - 历史记录管理: 维护对话历史,并支持会话恢复等功能。
- 显示渲染: 在终端中以语法高亮和恰当格式化的方式渲染并呈现响应内容。
- 主题与界面定制: 支持自定义主题及界面元素,提供个性化体验。
- 配置设置: 通过 JSON 配置文件、环境变量及命令行参数等多种方式管理各类配置选项。
2. 核心包(packages/core)
作用: 该包作为 Qwen Code 的后端,接收来自 packages/cli 的请求,协调与已配置模型 API 的交互,并管理可用工具的执行。
核心功能:
- API 客户端: 与 Qwen 模型 API 通信,发送提示词并接收响应。
- 提示词构建: 构建适合模型的提示词,整合对话历史和可用工具定义。
- 工具注册与执行: 管理可用工具的注册,并根据模型请求执行相应工具。
- 状态管理: 维护对话和会话状态信息。
- 服务端配置: 处理服务端的配置与设置。
3. 工具(packages/core/src/tools/)
用途: 这些是独立模块,用于扩展 Qwen 模型的能力,使其能够与本地环境交互(例如文件系统、Shell 命令、网页内容获取)。
交互方式: packages/core 根据 Qwen 模型的请求调用这些工具。
常用工具包括:
- 文件操作: 读取、写入和编辑文件
- Shell 命令: 执行系统命令;对潜在危险操作需经用户确认
- 搜索工具: 在项目中查找文件及搜索文件内容
- 网络工具: 从网页获取内容
- MCP 集成: 连接到模型上下文协议(Model Context Protocol)服务器以扩展能力
交互流程
与 Qwen Code 的典型交互遵循以下流程:
- 用户输入:用户在终端中输入提示词或命令,该终端由
packages/cli管理。 - 向核心模块发起请求:
packages/cli将用户输入发送至packages/core。 - 请求处理:核心模块执行以下操作:
- 根据所配置的模型 API 构造合适的提示词(prompt),其中可能包含对话历史及可用工具定义。
- 将该提示词发送至模型 API。
- 模型 API 响应:模型 API 处理提示词并返回响应。该响应可能是直接答案,也可能是调用某个可用工具的请求。
- 工具执行(如适用):
- 当模型 API 请求调用某工具时,核心模块准备执行该工具。
- 若所请求的工具涉及文件系统修改或执行 Shell 命令,则核心模块会首先向用户提供该工具及其参数的详细信息,并需用户明确批准后方可执行。
- 对于只读操作(例如读取文件),可能无需用户显式确认即可继续执行。
- 用户确认后(或无需确认时),核心模块将在对应工具内执行相应操作,并将结果返回给模型 API。
- 模型 API 处理工具返回的结果,并生成最终响应。
- 向 CLI 返回响应:核心模块将最终响应发送回 CLI 模块。
- 向用户展示:CLI 模块对响应进行格式化,并在终端中显示给用户。
配置选项
Qwen Code 提供多种方式来配置其行为:
配置层级(按优先级从高到低)
- 命令行参数
- 环境变量
- 项目设置文件(
.qwen/settings.json) - 用户设置文件(
~/.qwen/settings.json) - 系统设置文件
- 默认值
关键配置类别
- 常规设置:Vim 模式、首选编辑器、自动更新偏好
- UI 设置:主题自定义、横幅可见性、页脚显示
- 模型设置:模型选择、会话轮次限制、压缩设置
- 上下文设置:上下文文件名、目录包含范围、文件过滤规则
- 工具设置:审批模式、沙箱启用状态、工具使用限制
- 隐私设置:使用统计信息收集
- 高级设置:调试选项、自定义错误报告命令
核心设计原则
- 模块化: 将 CLI(前端)与 Core(后端)分离,支持前后端独立开发,并为未来扩展(例如,为同一后端提供不同前端)预留空间。
- 可扩展性: 工具系统设计为可扩展,支持通过自定义工具或 MCP 服务器集成来添加新功能。
- 用户体验: CLI 专注于提供丰富、交互性强的终端体验,支持语法高亮、可定制主题及直观的命令结构等功能。
- 安全性: 对潜在危险操作实施审批机制,并提供沙箱选项以保护用户系统。
- 灵活性: 支持多种配置方式,可适配不同工作流和运行环境。
Last updated on