Skip to Content
开发者指南架构

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 命令: 执行系统命令,并在执行潜在危险操作时需用户确认
  • 搜索工具: 在项目中查找文件和搜索内容
  • Web 工具: 从网络获取内容
  • MCP 集成: 连接到模型上下文协议服务器以扩展功能

交互流程

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

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

配置选项

Qwen Code 提供了多种方式来配置其行为:

配置层级(按优先级排序)

  1. 命令行参数
  2. 环境变量
  3. 项目设置文件(.qwen/settings.json
  4. 用户设置文件(~/.qwen/settings.json
  5. 系统设置文件
  6. 默认值

主要配置类别

  • 通用设置: vim 模式、首选编辑器、自动更新偏好
  • 界面设置: 主题自定义、横幅可见性、页脚显示
  • 模型设置: 模型选择、会话轮次限制、压缩设置
  • 上下文设置: 上下文文件名、目录包含、文件过滤
  • 工具设置: 审批模式、沙箱机制、工具限制
  • 隐私设置: 使用统计信息收集
  • 高级设置: 调试选项、自定义错误报告命令

核心设计原则

  • 模块化: 将 CLI(前端)与核心(后端)分离,允许独立开发,并支持未来的扩展性(例如,为同一后端提供不同的前端)。
  • 可扩展性: 工具系统设计为可扩展,允许通过自定义工具或 MCP 服务器集成来添加新功能。
  • 用户体验: CLI 致力于提供丰富且交互式的终端体验,具备语法高亮、可定制主题和直观的命令结构等功能。
  • 安全性: 实现了对潜在危险操作的审批机制以及沙箱选项,以保护用户的系统安全。
  • 灵活性: 支持多种配置方式,能够适应不同的工作流程和环境。
Last updated on