跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

Java SDK 入门

使用同一 Maven 包中的 daemon 与 legacy stdio API,核对 Java 和 CLI 版本。

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。