Skip to Content
CoreQwen Code Core

Qwen Code Core

Qwen Code 的核心包 (packages/core) 是 Qwen Code 的后端部分,负责与模型 API 通信、管理工具以及处理从 packages/cli 发送的请求。关于 Qwen Code 的总体概述,请参见 主文档页面

本章节导航

核心模块的作用

虽然 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 命令showaddrefresh 已加载 context 文件的内容。

Last updated on