通过 WebSocket 桥接集成 sema-core 的多语言示例项目,提供 C#、Java、Python 三个客户端实现。
WebSocket 方式(sema-bridge):
客户端应用 (C# / Java / Python)
↕ WebSocket (ws://localhost:3765)
Node.js 桥接服务 (sema-bridge)
↕ 内部调用
sema-core (npm 包)
gRPC 方式(sema-grpc):
客户端应用 (C# / Java / Python / ...)
↕ gRPC 双向流 (grpc://localhost:3766)
Node.js gRPC 服务 (sema-grpc)
↕ 内部调用
sema-core (npm 包)
example/
├── quickstart.mjs # Node.js 直接集成(无需桥接)
│
├── sema-bridge/ # 桥接服务端 ─ WebSocket
├── sema-grpc/ # 桥接服务端 ─ gRPC
│
├── sema-csharp-demo/ # 客户端示例 ─ C# (连接 sema-bridge)
├── sema-java-demo/ # 客户端示例 ─ Java (连接 sema-bridge)
└── sema-python-demo/ # 客户端示例 ─ Python (连接 sema-bridge)
- Node.js(桥接服务必需)
- C# 客户端:.NET SDK
- Java 客户端:JDK 17+、Maven
- Python 客户端:Python 3.10+
cd sema-bridge
npm install
npm run build
npm start环境变量:
SEMA_BRIDGE_PORT:端口,默认3765SEMA_WORKING_DIR:工作目录,默认当前目录
修改 workingDir 和 apiKey:
// sema-csharp-demo/Program.cs
WorkingDir = "/path/to/your/project", // Agent 将操作的目标代码仓库路径
apiKey = "sk-", // 替换为你的 API Key更多模型配置选项,请参见模型管理
运行:
cd sema-csharp-demo
dotnet run修改 workingDir 和 apiKey:
// sema-java-demo/src/main/java/com/semademo/Main.java
.workingDir("/path/to/your/project") // Agent 将操作的目标代码仓库路径
modelConfig.put("apiKey", "sk-"); // 替换为你的 API Key更多模型配置选项,请参见模型管理
运行:
cd sema-java-demo
# 打包(含所有依赖的 fat-jar)
mvn package -q
# 运行
java -jar target/sema-java-demo-1.0-SNAPSHOT-jar-with-dependencies.jar或直接通过 Maven 运行(无需打包):
cd sema-java-demo
mvn compile exec:java -Dexec.mainClass=com.semademo.Main修改 working_dir 和 apiKey:
# sema-python-demo/main.py
working_dir="/path/to/your/project" # Agent 将操作的目标代码仓库路径
"apiKey": "sk-", # 替换为你的 API Key更多模型配置选项,请参见模型管理
运行:
cd sema-python-demo
# 安装依赖
pip install -r requirements.txt
# 运行
python main.py除 WebSocket 外,还提供 gRPC 双向流桥接,适用于对 gRPC 有需求的场景。详见 sema-grpc/README.md。
cd sema-grpc
npm install
npm run build
npm start环境变量:
SEMA_BRIDGE_PORT:端口,默认3766SEMA_WORKING_DIR:工作目录,默认当前目录
| 特性 | C# | Java | Python |
|---|---|---|---|
| WebSocket | ClientWebSocket |
OkHttp WebSocket |
websockets |
| JSON | Newtonsoft.Json | Jackson | 内置 json |
| 异步 | Task / async-await |
CompletableFuture |
asyncio |
| 信号量 | SemaphoreSlim |
Semaphore |
asyncio.Event |
| 事件回调 | Action<JToken?> |
Consumer<JsonNode> |
Callable |
| 构建工具 | dotnet |
Maven | pip |