SDK 开发
选择 TypeScript、Python 或 Java,区分子进程调用、daemon 客户端和本机 peer。
SDK 让应用以程序方式驱动 Qwen Code,但三种语言的传输能力和生命周期契约不同。先决定应用自己启动 CLI,还是连接已有 daemon,再选择接口。
选择入口
| 入口 | 运行要求 | 主要能力与边界 |
|---|---|---|
| TypeScript query | Node.js 22+,默认使用 SDK 随包 CLI | 子进程查询、多轮输入、自定义审批、外部和进程内 MCP |
| TypeScript DaemonClient | 已运行的兼容 qwen serve | HTTP/SSE、注册工作区、共享或新建会话 |
| TypeScript PeerEndpoint | 同用户同机 Node 程序,UNIX socket | 加入跨会话消息系统;当前不支持 Windows |
| Python v1 | Python 3.10+,外部 qwen | stream-json 进程协议,异步和同步查询;不含 ACP 或 SDK 内嵌 MCP |
| Java daemon API | Java 11+,与 SDK 匹配的 qwen serve | 推荐路径,独立 thread 会话与有界事件观察 |
| Java legacy stdio | 外部 qwen-code 0.5.0+ | 保留的子进程兼容 API |
这些 SDK 文档均标注实验或 alpha 范围,不应从一种语言的示例推断其他语言支持同一选项。
查询与控制
- TypeScript 查询和权限、超时与中断。
- TypeScript MCP:把已有服务或应用内工具接入查询。
- DaemonClient:连接工作区、订阅事件、处理调用身份。
- PeerEndpoint:与已运行会话通信。
模型认证仍由实际 CLI 或 daemon 配置处理,SDK 包安装不等于已登录模型服务。示例中的安装命令供使用者在自己的项目执行,凭据通过环境或秘密存储提供。
Python 与 Java
共享 UI
- Transcript 状态:事件、排序与重同步。
- 渲染与预览:工具、嵌套与诊断。
- 渐进迁移:兼容与语义测试。
本节文档
- TypeScript 查询 SDK使用 query 消费结构化消息,选择 CLI、会话身份和系统提示。
- TypeScript 权限与生命周期区分工具注册和自动批准,配置超时并正确处理中断与关闭。
- TypeScript SDK 的 MCP连接外部服务或在应用进程内定义工具,并保持权限和结果格式明确。
- PeerEndpoint 本机会话通信让 Node 程序参与跨会话发现、回执和 controller 授权。
- TypeScript DaemonClient选择注册工作区、可靠订阅 SSE,并处理创建身份、启动模型和恢复。
- Python SDK 查询安装进程型 SDK,使用 async query 或同步 query_sync 消费结果与错误。
- Python 会话与权限组织预先确定的多轮输入,恢复 UUID 会话并处理异步审批。
- Java SDK 入门使用同一 Maven 包中的 daemon 与 legacy stdio API,核对 Java 和 CLI 版本。
- Java daemon 结果、取消与容量处理正式终止事件、未知结果和有界资源,避免误重试执行。
- Java legacy stdio维护旧 CLI 子进程集成,配置内容回调、超时层级和资源清理。
- Daemon 共享 UI 状态把 SSE 事件归一化为 transcript blocks,处理排序、订阅与重同步。
- Transcript 渲染与工具预览按语义类型展示工具、子智能体、取消结果和前向兼容诊断。
- 共享 UI 的渐进迁移用事件顺序、渲染 helper 和语义一致性测试替换宿主自建投影。