跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

TypeScript 查询 SDK

使用 query 消费结构化消息,选择 CLI、会话身份和系统提示。

@qwen-code/sdk 提供实验性的 TypeScript 程序接口。要求 Node.js 22.0.0 或更高版本;官方列出的 CLI 最低要求是 0.4.0 stable,SDK 默认使用随包 CLI,只有需要自定义版本时才指定 executable。

安装和最小查询

npm install @qwen-code/sdk
import { query, isSDKAssistantMessage, isSDKResultMessage } from '@qwen-code/sdk';

const result = query({
  prompt: 'Explain the project structure.',
  options: { cwd: '/path/to/project' },
});

for await (const message of result) {
  if (isSDKAssistantMessage(message)) {
    console.log(message.message.content);
  } else if (isSDKResultMessage(message)) {
    console.log(message);
  }
}

先把 cwd 换成实际项目,确保模型认证可用。assistant content 是结构化内容,不应无条件当成纯字符串;result 消息与中间 assistant 消息也应分开处理。其他 type guards 包括 isSDKUserMessage、isSDKSystemMessage、isSDKPartialAssistantMessage。

QueryOptions

字段默认或用途
cwd默认 process.cwd(),决定文件和命令上下文
model显式值优先于 OPENAI_MODEL、QWEN_MODEL
pathToQwenExecutable默认随包 CLI;可指定 PATH 名、绝对路径、.js bundle、node: 或 bun: 前缀
env覆盖并合并到当前进程环境,不是完全替换环境
permissionMode默认 default;还有 plan、auto-edit、auto、yolo
maxSessionTurns默认 -1 不限,必须为整数
includePartialMessages默认 false,开启后提供生成中的消息
debug默认 false,控制 CLI 诊断输出
agents配置可调用 subagent
authType传给 CLI 的认证类型选择

authType 的历史类型包括 qwen-oauth,不应将类型仍存在理解成对应免费登录仍可用于新环境。认证现状见配置说明。权限和工具选择另见控制与权限。

会话身份与多轮

prompt 可是字符串,或 AsyncIterable。后者的消息含 type: user、session_id、message.role/content 和 parent_tool_use_id,可按应用输入顺序供给多轮消息。

options.resume 用已保存的会话 ID 恢复历史,sessionId 为新会话指定身份,不表示恢复。通过 Query.getSessionId() 保存实际 ID。不要用会话名代替 UUID 或把相同 ID 的重复创建当作可靠重试;daemon 另有创建身份契约。

maxSessionTurns 的一轮包含用户消息与助手响应。对话结束、主动中断一轮和关闭整个查询不同;应按应用生命周期清理 Query。

替换或追加系统提示

字符串 systemPrompt 完全替换内置 Qwen Code 系统提示。希望保留内置行为时,使用 preset 并 append:

const options = {
  systemPrompt: {
    type: 'preset' as const,
    preset: 'qwen_code' as const,
    append: 'Be concise and distinguish facts from assumptions.',
  },
};

该对象可传给 query 的 options。不要把“追加说明”和“替换全部系统提示”混为同一配置效果。