4.9 KiB
Qwen Code Java SDK
Project Overview
The Qwen Code Java SDK is a minimum experimental SDK for programmatic access to Qwen Code functionality. It provides a Java interface to interact with the Qwen Code CLI, allowing developers to integrate Qwen Code capabilities into their Java applications.
The project is structured as a Maven-based Java library with the following key characteristics:
- Group ID: com.alibaba
- Artifact ID: qwencode-sdk-java
- Version: 0.0.1
- Packaging: JAR
- Java Version: 1.8+ (source and target)
Architecture
The SDK follows a layered architecture:
- CLI Layer: Provides the main entry point through
QwenCodeCliclass - Session Layer: Manages communication sessions with the Qwen Code CLI
- Transport Layer: Handles communication between the SDK and CLI process
- Protocol Layer: Defines data structures for communication
- Utils: Common utilities for concurrent execution and timeout handling
Key Components
Main Classes
QwenCodeCli: Main entry point with static methods for simple queriesSession: Manages communication sessions with the CLITransport: Abstracts the communication mechanism (currently using process transport)ProcessTransport: Implementation that communicates via process execution
Dependencies
- Logging: ch.qos.logback:logback-classic
- Utilities: org.apache.commons:commons-lang3
- JSON Processing: com.alibaba.fastjson2:fastjson2
- Testing: JUnit 5 (org.junit.jupiter:junit-jupiter)
Building and Running
Prerequisites
- Java 8 or higher
- Apache Maven 3.6.0 or higher
Build Commands
# Compile the project
mvn compile
# Run tests
mvn test
# Package the JAR
mvn package
# Install to local repository
mvn install
# Run checkstyle verification
mvn checkstyle:check
Testing
The project includes basic unit tests using JUnit 5. The main test class QwenCodeCliTest demonstrates how to use the SDK to make simple queries to the Qwen Code CLI.
Code Quality
The project uses Checkstyle for code formatting and style enforcement. The configuration is defined in checkstyle.xml and includes rules for:
- Whitespace and indentation
- Naming conventions
- Import ordering
- Code structure
Development Conventions
Coding Standards
- Java 8 language features are supported
- Follow standard Java naming conventions
- Use UTF-8 encoding for source files
- Line endings should be LF (Unix-style)
- No trailing whitespace allowed
- Use 8-space indentation for line wrapping
Testing Practices
- Write unit tests using JUnit 5
- Test classes should be in the
src/test/javadirectory - Follow the naming convention
*Test.javafor test classes - Use appropriate assertions to validate functionality
Documentation
- API documentation should follow JavaDoc conventions
- Update README files when adding new features
- Include examples in documentation
API Reference
QwenCodeCli Class
The main class provides two primary methods:
simpleQuery(String prompt): Synchronous method that returns a list of responsessimpleQuery(String prompt, Consumer<String> messageConsumer): Asynchronous method that streams responses to a consumer
Permission Modes
The SDK supports different permission modes for controlling tool execution:
default: Write tools are denied unless approved viacanUseToolcallback or inallowedTools. Read-only tools execute without confirmation.plan: Blocks all write tools, instructing AI to present a plan first.auto-edit: Auto-approve edit tools (edit, write_file) while other tools require confirmation.yolo: All tools execute automatically without confirmation.
Usage Example
import com.alibaba.qwen.code.cli.QwenCodeCli;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> result = QwenCodeCli.simpleQuery("hello world");
result.forEach(System.out::println);
}
}
Project Structure
src/
├── main/
│ └── java/
│ └── com/
│ └── alibaba/
│ └── qwen/
│ └── code/
│ └── cli/
│ ├── QwenCodeCli.java
│ ├── protocol/
│ ├── session/
│ ├── transport/
│ └── utils/
└── test/
└── java/
└── com/
└── alibaba/
└── qwen/
└── code/
└── cli/
└── QwenCodeCliTest.java
Configuration Files
pom.xml: Maven build configuration and dependenciescheckstyle.xml: Code style and formatting rules.editorconfig: Editor configuration settings
License
Apache-2.0 - see LICENSE for details.