Skip to main content

概述

Shannon 的内部架构使用 gRPC(HTTP/2 + Protocol Buffers)实现高性能服务间通信。本文档提供了所有 5 个服务和 39 个 RPC 方法的完整 Protocol Buffer 定义。
公共 vs 内部 API:gRPC 服务为内部接口,不通过公共 SDK 暴露。应用集成请使用网关 REST API(http://localhost:8080/api/v1/*)或 Python SDK(ShannonClient(base_url=...))。
服务:
  • OrchestratorService(20 个 RPC)- 任务编排、工作流管理和调度
  • StreamingService(1 个 RPC)- 实时事件流
  • AgentService(6 个 RPC)- Agent 执行和工具管理
  • LLMService(5 个 RPC)- LLM 提供商网关
  • SessionService(7 个 RPC)- 多轮对话管理
总计:39 个 RPC 方法

通用类型

所有服务共享的类型。

ExecutionMode

用途:确定任务执行策略
  • SIMPLE:直接工具调用或缓存查找(最快)
  • STANDARD:单 Agent LLM 驱动执行(平衡)
  • COMPLEX:多 Agent DAG 并行执行(功能最强)

ModelTier

成本优化:Shannon 在层级内自动选择模型以优化成本
  • Small:每 1K token $0.001-0.002
  • Medium:每 1K token $0.01-0.03
  • Large:每 1K token $0.03-0.075

StatusCode


TaskMetadata

示例:

TokenUsage


ExecutionMetrics


OrchestratorService

任务编排和工作流管理服务。

服务定义


SubmitTask

提交新任务执行。 请求:
响应:
示例(gRPC CLI):
响应:

GetTaskStatus

检索任务的当前状态和结果。 请求:
响应:
示例:
响应:

CancelTask

取消正在运行的任务。 请求:
响应:

ListTasks

列出任务,支持可选过滤。 请求:
响应:

GetSessionContext

检索会话上下文和历史记录。 请求:
响应:

ListTemplates

列出可用的任务模板。 请求:
响应:

ApproveTask

批准或拒绝需要人工审批的任务。 请求:
响应:

GetPendingApprovals

列出待审批请求。 请求:
响应:

StreamingService

实时事件流服务。

服务定义


StreamTaskExecution

流式传输任务的实时事件(服务器流式 RPC)。 请求:
响应(流):
示例(gRPC CLI):
响应流:
事件类型过滤:
流恢复:
参见事件类型目录了解所有事件类型。

AgentService

Agent 执行和工具管理服务。

服务定义


ExecuteTask

使用单个 Agent 执行任务(一元 RPC)。 请求:
响应:

StreamExecuteTask

执行任务并流式返回更新(服务器流式 RPC)。 请求:与 ExecuteTask 相同 响应(流):

GetCapabilities

获取 Agent 能力。 请求:
响应:

HealthCheck

检查 Agent 服务健康状态。 请求:
响应:

DiscoverTools

通过查询或类别发现可用工具。 请求:
响应:
示例:

GetToolCapability

获取特定工具的详细能力。 请求:
响应:

LLMService

LLM 提供商网关服务。

服务定义


GenerateCompletion

生成 LLM 补全(一元 RPC)。 请求:
响应:

StreamCompletion

生成流式 LLM 补全(服务器流式 RPC)。 请求:与 GenerateCompletion 相同 响应(流):

EmbedText

生成文本嵌入向量。 请求:
响应:

AnalyzeComplexity

分析查询复杂度并推荐执行模式。 请求:
响应:
示例:
响应:

ListModels

列出可用的 LLM 模型。 请求:
响应:

SessionService

多轮对话管理服务。

服务定义


CreateSession

创建新的对话会话。 请求:
响应:

GetSession

检索会话详细信息。 请求:
响应:

UpdateSession

更新会话上下文或延长 TTL。 请求:
响应:

DeleteSession

删除会话。 请求:
响应:

ListSessions

列出用户会话。 请求:
响应:

AddMessage

向会话历史记录添加消息。 请求:
响应:

ClearHistory

清除会话消息历史记录。 请求:
响应:

错误处理

状态码

所有响应都包含 StatusCode:
  • STATUS_CODE_OK (1) - 成功
  • STATUS_CODE_ERROR (2) - 通用错误
  • STATUS_CODE_TIMEOUT (3) - 操作超时
  • STATUS_CODE_RATE_LIMITED (4) - 超出速率限制
  • STATUS_CODE_BUDGET_EXCEEDED (5) - 超出 token/成本预算

gRPC 状态码

使用的标准 gRPC 状态码:
  • OK (0) - 成功
  • CANCELLED (1) - 请求已取消
  • INVALID_ARGUMENT (3) - 无效的请求参数
  • DEADLINE_EXCEEDED (4) - 超时
  • NOT_FOUND (5) - 资源未找到
  • ALREADY_EXISTS (6) - 资源已存在
  • PERMISSION_DENIED (7) - 权限不足
  • RESOURCE_EXHAUSTED (8) - 超出速率限制/配额
  • UNAUTHENTICATED (16) - 缺少/无效凭据
  • UNAVAILABLE (14) - 服务不可用
  • INTERNAL (13) - 内部服务器错误

错误处理示例(Python)


服务端点

Gateway REST API 也可在端口 8080 上使用(gRPC 的 HTTP/REST 包装器)。 参见 REST API 参考了解 HTTP 端点。

代码生成

从 .proto 文件生成客户端代码:

Python

Go

TypeScript


相关主题

REST API

HTTP REST 端点

事件类型

流事件目录

Python SDK

Python 客户端库

数据库架构

数据持久化