Cortex Code Agent SDK 参考 – Python¶
本主题提供了适用于 Cortex Code Agent SDK for Python 的完整 API 参考,包括所有函数、类和类型。
安装¶
需要 Python 3.10 或更高版本。依赖项:anyio、mcp、typing_extensions。请以 cortex_code_agent_sdk 名称导入该包。该 SDK 要求另行安装 Cortex Code CLI。如果它不在您的 PATH 中,请设置``CORTEX_CODE_CLI_PATH=/path/to/cortex``,或在 CortexCodeAgentOptions 中传入 cli_path。
函数¶
query()¶
与 Cortex Code 交互的主要函数。返回一个异步迭代器,该迭代器在消息到达时生成消息。
参数
参数 |
类型 |
描述 |
|---|---|---|
|
|
用户提示字符串,或者是用于流式输入的、由消息字典组成的异步迭代器 |
|
|
配置选项。默认为 |
|
|
自定义传输。默认为子进程 CLI 运输 |
返回
一个异步迭代器,生成 Message 对象(AssistantMessage、ResultMessage、UserMessage、SystemMessage、StreamEvent)。
示例
CortexCodeSDKClient¶
用于多轮交互式对话。支持异步上下文管理器协议。
方法¶
方法 |
描述 |
|---|---|
|
连接到 CLI 进程,并保持会话开启以支持后续多轮交互。 |
|
向代理发送提示 |
|
生成来自代理的所有消息 |
|
生成消息,直到 ``ResultMessage``(含) |
|
发送中断信号 |
|
为对话中的后续轮次更改权限模式 |
|
在对话期间更改模型 |
|
停止正在运行的子代理任务 |
|
断开与 CLI 进程的连接 |
选项¶
传递给 query() 或 CortexCodeSDKClient 的配置。
选项 |
类型 |
默认值 |
描述 |
|---|---|---|---|
|
|
|
会话的工作目录 |
|
|
|
要使用的模型。使用 |
|
|
|
来自 Snowflake CLI 连接设置的 Snowflake 连接名称,通常为 |
|
|
|
配置文件名称(加载自 |
|
|
|
|
|
|
|
使用 |
|
|
|
无需提示即可自动批准的工具 |
|
|
|
始终拒绝的工具 |
|
|
|
限制每个查询中代理轮次次数 |
|
|
|
模型执行强度等级: |
|
|
|
自定义系统提示。传入字符串以完全替换,或传入 |
|
|
|
继续最近的会话,而不是开始新会话 |
|
|
|
用于恢复先前对话的会话 ID |
|
|
|
恢复时,派生出一个新的会话 ID,而不是在原会话上继续 |
|
|
|
要添加到代理上下文的其他目录 |
|
|
|
传递给 CLI 进程的环境变量 |
|
|
|
插件配置。目前支持本地插件: |
|
|
|
一个 |
|
|
|
外部 MCP 服务器配置。传入一个将服务器名称映射到 stdio、HTTP 或 SSE 配置的字典。当前 SDK 传输支持基于字典的 MCP 配置。 |
|
|
|
Hook 事件处理程序(请参阅 Hook) |
|
|
|
自定义工具权限回调(请参阅 工具权限) |
|
|
|
包括词元级流事件 ( |
|
|
|
结构化输出格式。示例: |
|
|
|
禁用 MCP 服务器 |
|
|
|
要使用的显式会话 ID |
|
|
|
要加载的设置来源: |
|
|
|
CLI 二进制文件的路径。如果省略,SDK 会首先检查 |
|
|
|
作为键值对的额外 CLI 标志。对于布尔标志,请使用 |
|
|
|
每当 CLI 的标准错误输出一行时,就会调用该回调函数。 |
消息类型¶
AssistantMessage¶
当代理产生响应时发出。包含一个或多个内容块。
AssistantMessageError 是以下之一:"authentication_failed"、"billing_error"、"rate_limit"、"invalid_request"、"server_error"、"unknown"。
ResultMessage¶
当代理完成一次轮转时发出。检查 subtype 和 is_error 来判断成功还是失败。
UserMessage¶
处理用户消息时回显。
SystemMessage¶
系统事件,例如会话初始化和任务更新。
SDK 还为与任务相关的系统消息提供专门的子类:
子类 |
描述 |
|---|---|
|
子代理任务启动时发出。字段: |
|
在任务运行时发出。字段: |
|
当任务完成、失败或停止时发出。字段: |
这些子类扩展自 SystemMessage,因此现有的 isinstance(msg, SystemMessage) 检查仍然可以进行匹配。
StreamEvent¶
词元级别流式传输期间的部分消息更新。需要 include_partial_messages=True。
针对部分文本和思维块发出 StreamEvent。完整的工具调用仍然以 AssistantMessage 内容块的形式到达,工具结果仍然以 UserMessage 内容块的形式到达。
内容块¶
类型 |
字段 |
|---|---|
|
|
|
|
|
|
|
|
Hook¶
Hook 允许您在生命周期事件发生时进行拦截,用于日志记录、验证或自定义行为。
配置 Hook¶
Hook 通过 CortexCodeAgentOptions 中的 hooks 选项进行配置。每个 Hook 事件对应一个 HookMatcher 对象列表。
Hook 回调签名¶
输入:强类型 Hook 输入(见下表)
tool_use_id:可选的工具使用标识符
context:包含
signal字段的 ``HookContext``(保留用于将来的中止信号支持)
Hook 事件¶
事件 |
输入类型 |
描述 |
|---|---|---|
|
|
在执行工具之前。字段: |
|
|
工具完成后。字段: |
|
|
用户提交提示时。字段: |
|
|
当代理停止时。字段: |
|
|
子代理完成时。字段: |
|
|
发生通知事件时。字段: |
|
|
工具请求权限时。字段: |
|
|
上下文压缩之前。字段: |
所有 hook 输入都包含基础字段:session_id、transcript_path、cwd,以及可选的 permission_mode。
Hook 输出¶
Hook 回调返回一个同步输出对象:
备注
Python SDK 使用 continue_``(带尾随下划线)以避免 Python 关键字冲突。当发送给 CLI 时,它会被自动转换回 ``continue。
工具权限¶
can_use_tool 回调允许您通过编程方式控制工具权限。
对于许多常规的工具权限检查,回调输入包含诸如 {"action": ..., "resource": ...} 之类的字段。允许/拒绝结果和可选的拒绝消息用于这些检查。updated_input 用于 SDK 路由的伪工具(例如 AskUserQuestion 和 ExitPlanMode),这些工具包含特定于工具的字段。
类型
MCP 服务器配置¶
mcp_servers 选项接受将服务器名称映射到外部 MCP 服务器配置的字典:
配置类型 |
描述 |
|---|---|
|
通过 stdio 的外部进程。字段: |
|
服务器发送的事件。字段: |
|
HTTP 运输。字段: |
示例
错误处理¶
错误类型¶
异常 |
描述 |
|---|---|
|
全部 SDK 错误的基本异常 |
|
在 PATH 中未找到 CLI 二进制文件 |
|
无法连接或无法与 CLI 进行通信 |
|
CLI 进程异常退出 |
|
无法从 CLI 中解析 JSON |
法律声明¶
如果 Cortex Code 配置使用 模型和服务直通条款 中提供的模型,则您对该模型的使用将进一步受该页面上该模型的条款的约束。
输入和输出的 Data Classification 如下表所示。
输入 Data Classification |
输出 Data Classification |
名称 |
|---|---|---|
Usage Data |
客户数据 |
涵盖的 AI 功能 [1] |
有关更多信息,请参阅 Snowflake AI 和 ML。