Java SDK 入门
使用同一 Maven 包中的 daemon 与 legacy stdio API,核对 Java 和 CLI 版本。
This page has not been translated into English yet. The original Chinese version is shown below.
Java SDK 在 com.alibaba:qwencode-sdk 中同时提供推荐的 daemon API 和保留的 experimental legacy stdio API。两者实现分开,不共享旧 Session DTO、进程传输或全局线程池。
版本与依赖
官方当前文档示例为 0.1.0-alpha,整个 artifact 要求 Java 11+。Java 8 应停留在 0.0.3-alpha,不能只因使用旧 stdio 接口就绕过新包的 Java 要求。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>qwencode-sdk</artifactId>
<version>0.1.0-alpha</version>
</dependency>Gradle 对应声明:
implementation 'com.alibaba:qwencode-sdk:0.1.0-alpha'应用需要选择自己的 SLF4J provider;Logback 不再作为 runtime 依赖自动带入。从源代码构建或发布要求 Maven 3.9.2+,常规命令为 mvn compile、mvn test、mvn package、mvn install。
推荐的 daemon 调用
先运行兼容 qwen serve,再通过 try-with-resources 管理 client/session:
import com.alibaba.qwen.code.daemon.DaemonClient;
import com.alibaba.qwen.code.daemon.DaemonSessionClient;
import com.alibaba.qwen.code.daemon.PromptTextResult;
import java.net.URI;
try (DaemonClient daemon = DaemonClient.builder()
.baseUri(URI.create("http://127.0.0.1:4170"))
.bearerToken(System.getenv("QWEN_SERVER_TOKEN"))
.build();
DaemonSessionClient session = daemon.createSession()) {
PromptTextResult result = session.promptText("Explain the repository structure.");
System.out.println(result.getText());
}这是放在 Java 方法中的片段。认证 daemon 需给 builder 同一 bearer,SDK 在 REST/SSE header 发送,不放 URL。createSession 要求 REST transport 与 session_scope_override capability,以保证独立 thread scope,不让旧 daemon 静默附着共享会话。
promptText 只在匹配 turn_complete 后返回,流不完整抛 PromptOutcomeIndeterminateException,不把已有部分文本当成功。取消也可能以 turn_complete 和 stopReason=cancelled 结束,业务需检查 result.getTerminal().getStopReason()。
兼容构建要求
alpha 的可靠性依赖同源码修订发布的 daemon:包含幂等 detach ledger、每 epoch 正式终止事件、已确认的 admission cancellation 和 FIFO cancel-drain fence。只具备某个旧修复或相同 wire schema 不足以证明这些行为完整。
无法通过 feature negotiation 区分的旧同线协议版本,SDK 会在不能证明结果时失败关闭。当前 Java daemon API 不暴露创建时模型选择;应使用 daemon 配置默认模型,不能照搬 TypeScript startupConfig。
源码 E2E
在 Qwen Code 仓库根目录,官方真实 daemon 测试流程是:
npm run build
npm run bundle
npx tsx scripts/run-java-daemon-sdk-e2e.ts仅 build 不更新测试 harness 使用的 dist/cli.js;缺少 bundle 会报前置条件错误。这些是上游仓库开发命令,不是安装应用 SDK 后必须执行的步骤。
继续阅读daemon 结果与取消或legacy stdio。