Qwen Code Core
Qwen Code 的核心包 (packages/core
) 是 Qwen Code 的后端部分,负责与模型 API 通信、管理工具以及处理从 packages/cli
发送的请求。关于 Qwen Code 的总体概述,请参见 主文档页面。
本章节导航
- Core tools API: 介绍工具如何定义、注册和被 core 使用的信息。
- Memory Import Processor: 使用 @file.md 语法的模块化 QWEN.md 导入功能的文档。
核心模块的作用
虽然 Qwen Code 的 packages/cli
部分提供了用户界面,但 packages/core
负责以下功能:
- 模型 API 交互: 安全地与配置的模型提供商通信,发送用户提示并接收模型响应。
- Prompt 工程: 为模型构建有效的提示,可能包含对话历史、工具定义以及来自上下文文件(例如
QWEN.md
)的指令上下文。 - 工具管理与编排:
- 注册可用工具(例如文件系统工具、Shell 命令执行工具)。
- 解析模型发出的工具调用请求。
- 使用提供的参数执行请求的工具。
- 将工具执行结果返回给模型以进行进一步处理。
- 会话与状态管理: 跟踪对话状态,包括历史记录和实现连贯交互所需的任何相关上下文。
- 配置管理: 管理核心模块特有的配置,如 API key 访问、模型选择和工具设置。
安全考虑
Core 在安全方面发挥着至关重要的作用:
- API key 管理: 它负责处理 provider 凭证,并确保在与 API 通信时安全地使用这些凭证。
- 工具执行: 当工具与本地系统交互时(例如
run_shell_command
),Core(及其底层的工具实现)必须以适当的谨慎方式进行操作,通常涉及沙箱机制以防止意外修改。
聊天历史压缩
为了确保长对话不会超过所选模型的 token 限制,Core 包含了一个聊天历史压缩功能。
当对话接近配置模型的 token 限制时,Core 会在将对话历史发送给模型之前自动压缩对话历史。这种压缩在传达的信息方面是无损的,但它减少了使用的 token 总数。
你可以在每个 provider 的文档中找到其模型的 token 限制。
模型降级
Qwen Code 包含一个模型降级机制,确保即使默认模型被限流时,你仍然可以继续使用 CLI。
如果你正在使用默认的 “pro” 模型,而 CLI 检测到你被限流时,它会自动在当前会话中切换到 “flash” 模型。这样可以让你在不中断工作的情况下继续使用。
文件发现服务
文件发现服务负责在项目中查找与当前上下文相关的文件。它被 @
命令和其他需要访问文件的工具所使用。
Memory discovery service
Memory discovery service 负责查找并加载为模型提供上下文的 context 文件(默认:QWEN.md
)。它以分层方式搜索这些文件,从当前工作目录开始,向上搜索到项目根目录和用户主目录。同时也会在子目录中进行搜索。
这样你可以拥有全局、项目级别和组件级别的 context 文件,它们会被组合起来,为模型提供最相关的信息。
你可以使用 /memory
命令 来 show
、add
和 refresh
已加载 context 文件的内容。