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,并接收模型响应。
- Prompt 工程: 为模型构建有效的 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 文件的内容。