Skip to main content
参考

SDK References

Qoder Agent SDK 提供 TypeScript、Python 和 Java 三个语言版本。三者共用同一套 CLI 运行时协议,Agent 循环、工具、权限、Hooks、会话和 MCP 等核心能力一致;API 签名、类型定义和命名风格各自遵循所在语言的习惯(TypeScript 和 Java 为 camelCase,Python 公共 options 为 snake_case)。TypeScript 与 Python 的能力面基本相同,Java 的能力面较窄,部分选项只在一两种语言中提供,参见下方语言差异。完整 API 参考按语言分开维护:

按语言查看

语言参考页包名
TypeScriptSDK References - TypeScript@qodercn-ai/qodercn-agent-sdk
PythonSDK References - Pythonqodercn-agent-sdk
JavaSDK References - Javacn.qoder.sdk:qodercn-agent-sdk

语言差异

TypeScript 与 Python 的选项绝大多数一一对应,Java 缺少其中一部分。以下列出差异,各语言的参考页仍是其自身能力面的权威来源。

仅 TypeScript

能力选项或方法说明
内置工具行为toolConfig调整内置工具的行为,参见工具
会话持久化控制persistSession、resumeSessionAt、resumeDropsTurn细粒度控制恢复会话时加载和保留的内容
提示建议promptSuggestions接收建议的后续提示词
Goal 最大轮次goalMaxTurns、setGoalMaxTurns()配置后续 Goal 且不修改当前 Goal,参见 TypeScript 参考
模型请求调整modelRequestPatches调整发出的模型请求
自定义传输与进程控制transport、spawnQoderCLIProcess、executable、executableArgs替换运行时的启动或连接方式

仅 Python

能力选项说明
从文件加载系统提示词system_prompt={"type": "file", "path": ...}参见从文件加载提示词
MCP 认证回调on_mcp_oauth_required服务需要 OAuth 时的入向回调;TypeScript 通过运行时方法完成同类能力
MCP 状态回调on_mcp_status_change服务状态变化的入向回调
读取缓冲上限max_buffer_size限制传输层读取缓冲区大小

TypeScript 与 Java

以下能力 Python 没有。
能力TypeScriptJava说明
Hook 事件进入消息流includeHookEventsincludeHookEvents(boolean)在消息流中投递 Hook 生命周期事件,不影响 Hook 回调本身

Java 暂不提供

以下能力在 TypeScript 或 Python 中提供,Java 没有对应的选项或方法。
能力TypeScript / Python 入口Java 的情况
子 Agent 定义agents没有对应选项,参见子 Agent
插件plugins没有 plugins 选项;reloadPlugins() 不返回插件列表,参见 Plugins
Skills 与设置来源skills、settingSources只支持单条消息选择 Skill 和 reloadSkills()
代码安全扫描securityScan / security_scan没有对应选项,参见代码安全扫描
用量与上下文查询getContextUsage()、getUsageInfo() 等只有 ResultMessage.usage() 提供本轮的输入、输出 token 数,参见成本和用量
settings 与输出风格settings、输出风格设置参见用 settings 提供权限规则、单独调整输出风格
会话内更新权限PermissionUpdate用 PermissionResult.allow().withScope(PermissionScope.SESSION),参见PermissionScope
外部授权工具、MCP Tool PolicypermissionPromptToolName、MCP Tool Policy参见权限控制
启动时的额外目录additionalDirectories / add_dirs没有启动选项;会话建立后可调用 QoderSession.addDirectories(List<Path>) 添加,参见访问额外目录
认证失败回调onAuthExpired / on_auth_expired捕获错误码为 CLI_AUTH_FATAL 的 AuthenticationException,参见认证失败回调
自定义工具封装tool()、createSdkMcpServer()实现 InProcessMcpHandler,参见 MCP 集成
严格 MCP 配置strictMcpConfig / strict_mcp_config没有对应选项
运行时切换模型固定模型模式下切换当前模型没有对应方法,参见模型选择
指定新会话 IDsessionId会话 ID 由 CLI 分配,从 initialization() 读取,参见会话控制
外置会话存储的读取超时与写入策略loadTimeoutMs、sessionStoreFlush用 sessionMirrorOptions(...) 设置镜像的批量和等待上限,参见外置会话存储
会话重命名、打标签和导入renameSession() 等函数没有对应函数
stderr 回调stderrCLI 异常退出时用 CliProcessException.getStderrTail() 读取 stderr 尾部

Java 行为差异

以下能力三种语言都有,但 Java 的行为不同:
  • CLI 运行时:Java SDK 不随包携带 CLI,首次启动时下载本版本锁定的 CLI 并缓存复用,参见托管 CLI(Java)。
  • 认证:认证在 QoderClient.Builder.auth() 上配置,同一客户端创建的会话共用。Auth.accessTokenEnv() 只读取 JVM 进程的环境变量,不读取 putEnvironment() 传入的变量。
  • 子进程环境:CLI 子进程默认只继承 PATH,其他变量要显式传入,参见子进程环境(Java)。
  • 工具列表:tools(空列表) 等同于未设置,交给 CLI 默认,不能用空列表禁用全部工具,参见工具。
  • 输入优先级:UserInput 默认优先级为 NOW,参见多轮对话。
  • 运行时控制:切换权限模式、MCP 管理、回滚等运行时方法只在 QoderSession 上提供,一次性查询的 QoderQuery 没有。
  • 外置会话存储:恢复时找不到外部记录会直接失败,不回退到 CLI 本地存储,参见外置会话存储。
  • 模型选择回调超时:不会以异常交给应用,用诊断监听器识别,参见SDK 异常。

命名对照

三个 SDK 的核心 API 对照如下,方便跨语言迁移:
能力TypeScriptPythonJava
一次性查询query()query()QoderClient.query()
多轮会话query() + 异步消息流QoderSDKClientQoderClient.openSession() + QoderSession.send()
会话 optionsOptions(query({ options }))QoderAgentOptionsSessionOptions(SessionOptions.builder())
认证:环境变量 PATaccessTokenFromEnv()access_token_from_env()Auth.accessTokenEnv()
认证:直接传 PATaccessToken()access_token()Auth.accessToken(SecretValue)
认证:Service AccountserviceAccount()service_account()Auth.serviceAccountKey() / Auth.serviceAccountTokenProvider()
认证:本机登录态qodercliAuth()qodercli_auth()Auth.qoderCli()
自定义工具tool()@tool() 装饰器在 InProcessMcpHandler 中实现 tools/list、tools/call
进程内 MCP servercreateSdkMcpServer()create_sdk_mcp_server()McpServerConfig.inProcess()
权限回调canUseToolcan_use_toolcanUseTool(ToolPermissionHandler)
中断当前回复q.interrupt()client.interrupt()query.interrupt() / session.interrupt()
文件回滚q.rewindFiles()client.rewind_files()session.rewindFiles()
MCP 状态查询q.mcpServerStatus()client.get_mcp_status()session.mcpServerStatus()
初始化结果q.initializationResult()client.get_server_info()initialization()
上下文用量q.getContextUsage()client.get_context_usage()—
账号与会话用量q.getUsageInfo()client.get_usage_info()—
注意:Python 的 AgentDefinition、hooks 输出、settings 等协议层结构沿用线路协议的 camelCase 字段名(如 maxTurns、hookSpecificOutput),与公共 options 的 snake_case 不同,详见各功能页说明。

功能文档

各功能页已合并多语言示例,可在代码块内切换 TypeScript / Python / Java。Java 没有对应能力的小节,在标题或页首标注了适用语言: