LinkSoul Agent SDK (Java)
LinkSoul Agent SDK (Java)
🆕 v1.5.0 new capability: beyond-line-of-sight Teleop
⚠️ Not yet released: in-development v1.5.0-SNAPSHOT capability; interface and protocol may change. Do not use in production before the official release.
v1.5.0 adds a third interaction path on top of passive / active — remote-operator teleop. A remote operator drives the robot via
TeleopRequest.enter → startAudio(AgentParam) → appendAudioDelta* → doneAudio → exit;enter/exitare ack'd throughTeleopEnterCallback/TeleopExitCallback,audio.*messages are fire-and-forget.
- New request class:
TeleopRequest(enter/startAudio(AgentParam)/appendAudioDelta/doneAudio/exit)- New callback bases:
TeleopEnterCallback.onEnterAck/TeleopExitCallback.onExitAck- New
AgentSdkmethods:registerTeleop(TeleopRequest)/unregisterTeleop(String)- New policy enum:
AgentPolicy.TELEOP(wire value"teleop")- Seven new event types under
AGENTSDK_TELEOP_*- New ID prefix
teleop_...viaIdGenerator.generateTeleopId()startAudio(AgentParam)can carry teleop voice / VAD parameters such asrole(man/woman) andthreshold(-14 ~ 14)See the Teleop guide, Teleop API, and Teleop example.
🆕 v1.5.0 new capability: ExtSkill (extended skills)
⚠️ Not yet released: in-development v1.5.0-SNAPSHOT capability; interface and protocol may change. Do not use in production before the official release.
v1.5.0 also introduces ExtSkill — query a robot's available extended-skill catalogue and invoke skills remotely. Invocations return results asynchronously via a three-phase receipt (
invoke_ack→report_state→invoke_result).
- New request class:
ExtSkillRequest(query/invoke)- New callback bases:
ExtSkillQueryCallback(onQueryResult) /ExtSkillInvokeCallback(onInvokeAck+onInvokeResult)- New
AgentSdkmethods:registerExtSkill(ExtSkillRequest)/unregisterExtSkill(String requestId)- New policy enum:
AgentPolicy.EXT_SKILL(wire value"extskill")- Five new event types:
agentsdk.ext_skill.query/agentsdk.ext_skill.query_result/agentsdk.ext_skill.invoke/agentsdk.ext_skill.invoke_ack/agentsdk.ext_skill.invoke_result- New ID prefix
extskill_...viaIdGenerator.generateExtSkillRequestId()See the ExtSkill guide, ExtSkill API, and ExtSkill example.
🆕 New in v1.5.0: Function Call exposure & Arbiter
⚠️ Not yet released: in-development v1.5.0-SNAPSHOT capability; interface and protocol may change. Do not use in production before the official release.
v1.5.0 opens up Function Call dispatch and Arbiter arbitration on the passive interaction path: the gateway forwards a pending function call to the SDK (
onFunctionCall, on all 8 passive callback classes), and the application makes an arbitration decision returned viaresponse.onArbiter(...), deciding whether the function call is handled by the agent's default pipeline (DELEGATE) or taken over by the application (OVERRIDE).
- New callback method:
onFunctionCall(agentId, eventId, FunctionCallInfo, response)on each passive callback class- New response method:
onArbiter(eventId, decision, arbParam)on each Response- New entity:
FunctionCallInfo; new enum:ArbiterDecision(DELEGATE/OVERRIDE)- New events:
agentsdk.function_call.expose/agentsdk.function_call.arbiterSee the Passive Callbacks Guide · Function Call exposure & Arbiter.
⚠️ v1.4.0 breaking auth change — NOT compatible with v1.3.0 or earlier
v1.4.0 standardises the AgentSDK signing scheme to align with the LinkSoul open-platform spec. v1.5.0 inherits the same signing scheme, so v1.3.0 (and earlier) clients still cannot upgrade in place:
- Auth: JWT (one
AGIBOT_AUTHORIZATIONheader) → HMAC-SHA256 with five signed headers (X-App-Id/X-App-Key/X-Timestamp/X-Nonce/X-Signature)- Credentials: legacy custom-agent template → application on the LinkSoul open platform (issues a new
appKeyalongsideappId/appSecret)- Factory:
AgentSdk.create(url, appId, appSecret)→AgentSdk.create(url, appId, appKey, appSecret)- Gateway URL:
wss://agentsdk.agibot.com/v1/agentsdk→wss://open.agibot.com/api/V1/open-portal/app/wss/agent-sdkcallbackTypesmoves out of the JWT payload into a standaloneX-Callback-Typesheader (JSON array string)Upgrading requires rotating credentials, switching the gateway URL, updating the
create()call, and rewriting any custom auth-header handling. See the CHANGELOG for the full migration path.
Connection Info
| Item | Value |
|---|---|
| WebSocket URL | wss://open.agibot.com/api/V1/open-portal/app/wss/agent-sdk |
| appId | Obtained from the LinkSoul open platform when creating an application |
| appKey | Obtained from the LinkSoul open platform when creating an application |
| appSecret | Obtained from the LinkSoul open platform when creating an application (HMAC-SHA256 signing key) |
AgentSdk agentSdk = AgentSdk.create("wss://open.agibot.com/api/V1/open-portal/app/wss/agent-sdk", appId, appKey, appSecret);
Quick Navigation
| Document | Description |
|---|---|
| Quick Start | 5-minute setup with Maven + complete integration code |
| Architecture | System architecture, threading model, reconnection mechanism |
| Passive Callbacks Guide | 8 passive callback types explained + response methods; new in v1.5.0 Function Call exposure & Arbiter |
| Robot-side state modules | All 22 stateName modules received in onState, field schemas + frequency conventions |
| Active Operations Guide | Task flow (v1.3.0 first opened the active surface but only task flow was ever functional; v1.4.0 removes the never-enabled entries — skill / state query, pull / push stream — and narrows the public API to task flow) |
| Teleop Guide | New in v1.5.0: remote-operator beyond-line-of-sight teleop (enter → audio → exit) |
| Task-flow payload protocol | Skill orchestration — action_group / action_type JSON reference + SIMPLE/COMPLEX examples |
| Semantic Skills | Full catalogue of skills that can be dispatched via response.onSkill / task flow |
| Error Handling | Error codes, reconnection mechanism, resource release |
| AgentSdk API | Main entry class complete API reference |
| Enums Reference | All enum types and values |
| Passive Callbacks API | Callback/Response class method signature reference |
| Active Requests API | Task flow API signatures |
| Teleop API | New in v1.5.0: TeleopRequest / TeleopEnterCallback / TeleopExitCallback signatures |
| Passive Examples | Complete passive interaction example code |
| Active Examples | Complete active interaction example code |
| Teleop Example | New in v1.5.0: full TeleopExample walkthrough |
| ExtSkill Guide | New in v1.5.0: query available extended skills (query) → invoke (invoke) → three-phase receipt (ack → state → result) |
| ExtSkill API | New in v1.5.0: ExtSkillRequest / ExtSkillQueryCallback / ExtSkillInvokeCallback signatures |
| ExtSkill Example | New in v1.5.0: full ExtSkillExample walkthrough (query → invoke → ack → result) |
| Troubleshooting & FAQ | Troubleshooting manual + FAQ (grows over time) |
| Glossary | Business / SDK / model / reject terminology reference |
Four Interaction Modes
LinkskyGatewayis the LinkSoul open-platform ingress gateway (wss://open.agibot.com/api/V1/open-portal/app/wss/agent-sdk), which relays bidirectional messages between the SDK and robots.
┌──────────────────────────────────────────────────────────────┐
│ LinkSoul Platform │
├──────────────────────────────────────────────────────────────┤
│ │
│ Robot ──Audio/Video/Text──→ LinkskyGateway ──→ SDK CB │ Passive
│ Robot ←──ASR/LLM/TTS────── LinkskyGateway ←── SDK Resp │
│ │
│ SDK Request ──→ LinkskyGateway ──→ Robot │ Active
│ SDK Result ←── LinkskyGateway ←── Robot │
│ │
│ Operator audio ──→ LinkskyGateway ──→ Robot │ Teleop (new in v1.5.0)
│ Operator ←──enter/exit ack── LinkskyGateway ←── Robot │
│ │
│ SDK query/invoke ──→ LinkskyGateway ──→ Robot │ ExtSkill (new in v1.5.0)
│ SDK ←── ack + result ── LinkskyGateway ←── Robot │
│ │
└──────────────────────────────────────────────────────────────┘
- Passive Interaction: Robot initiates (audio/video/text) -> SDK processes -> Returns result (ASR/LLM/VLM/TTS)
- Active Interaction: SDK initiates -> v1.3.0 first opened skill / state query, pull / push stream and task flow at the API level, but only task flow was ever functional; v1.4.0 removes those never-enabled entries and narrows the public surface to task flow
- Teleop (new in v1.5.0): A remote operator opens a session (
enter), streams PCM/Opus audio chunks (startAudio→appendAudioDelta→doneAudio), then closes withexit.enter/exitare ack'd via callback; audio events are fire-and-forget. - ExtSkill (new in v1.5.0): The SDK queries a robot's available extended-skill catalogue (
query) and triggers execution (invoke). Invoke uses a three-phase receipt (invoke_ackconfirms acceptance →report_statereports progress →invoke_resultreturns execution outcome). Routed viaAgentPolicy.EXT_SKILL.
Distribution downloads
Direct downloads for offline / air-gapped integration:
| File | Kind | Size |
|---|---|---|
linksoul-agentsdk-1.5.0-SNAPSHOT.jar | Binary jar (Java 17+) | 149 KB |
Install it into your local Maven repo first, then resolve via Maven / Gradle normally:
mvn install:install-file \
-Dfile=linksoul-agentsdk-1.5.0-SNAPSHOT.jar \
-DgroupId=com.agibot.aiem \
-DartifactId=linksoul-agentsdk \
-Dversion=1.5.0-SNAPSHOT \
-Dpackaging=jar
<!-- pom.xml -->
<dependency>
<groupId>com.agibot.aiem</groupId>
<artifactId>linksoul-agentsdk</artifactId>
<version>1.5.0-SNAPSHOT</version>
</dependency>
Note: the jar contains only the SDK's own bytecode; third-party dependencies (Netty / fastjson2 / jjwt / SLF4J / Logback / commons-lang3, etc.) must still be resolved through Maven / Gradle. See the full list in Quick Start - Build dependencies.