Skip to content

AgnesCode 认证 + AI 通信 — 完整工程化参考手册

报告日期: 2026-07-25
验证状态: ✅ 全部端到端验证通过


1. 完整认证流程

1.1 总览

整个认证链路分为三个阶段:

Phase 1: JWT Token (从 platform 获取)

Phase 2: 签发授权码 → 交换 OAuth Token

Phase 3: 用 OAuth Token 调用 AI

1.2 Phase 1: 获取 JWT Token

JWT Token 从 platform.agnes-ai.com 平台获取。用户在浏览器登录 platform 后, 会获得一个 JWT Token。

获取方式: 用户登录 https://platform.agnes-ai.com 后, 浏览器中可以通过以下方式获取:

  • 在 Chrome DevTools → Application → Local Storage → 查找 token
  • 或通过 POST /api/user/login 接口获取

JWT Token 格式:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjY2U0NDFiZC01...

1.3 Phase 2: 签发授权码 → 交换 OAuth Token

步骤 2a: 签发授权码

请求:

POST https://api.agnes-ai.com/api/v1/user/issue-authorization-code
Authorization: Bearer {JWT_TOKEN}
Content-Type: application/json
Origin: https://app.agnes-ai.com
x-platform: 1
x-user-language: en

请求体:

json
{
    "redirect_uri": "agnes://auth/callback",
    "state": "32_byte_hex_state",
    "client_id": "agnes-code",
    "ttl_seconds": 60
}

成功响应:

json
{
    "code": "000000",
    "message": "success",
    "data": {
        "code": "uxvLSipjtX8lo-wG6Adn4cXAzMQ_rh6DY8REOoj0yn0",
        "expires_at": 1785003621
    }
}

步骤 2b: 交换 OAuth Token

请求:

POST https://api-agnes-code.agnes-ai.com/api/v1/code/auth/exchange-code
Content-Type: application/json

请求体:

json
{
    "code": "上一步获取的授权码",
    "redirect_uri": "agnes://auth/callback",
    "state": "之前使用的 state",
    "client_id": "agnes-code"
}

成功响应:

json
{
    "code": "000000",
    "message": "success",
    "data": {
        "access_token": "eyJhbGciOiJIUzI1NiIs...",
        "user_info": {
            "id": "00000000-0000-0000-0000-000000000000",
            "username": "testuser",
            "email": "user@example.com",
            "auth_provider": "email",
            "is_active": true
        },
        "newapi_ready": true,
        "newapi_initialized": true
    }
}

1.4 Phase 3: 用 OAuth Token 调用 AI

请求:

POST https://api-agnes-code.agnes-ai.com/v1/chat/completions
Authorization: Bearer {OAUTH_TOKEN}
Content-Type: application/json

请求体 (OpenAI 兼容格式):

json
{
    "model": "agnes-2.0-flash",
    "messages": [{"role": "user", "content": "你好"}],
    "max_tokens": 1024,
    "temperature": 0.7,
    "stream": false
}

成功响应:

json
{
    "id": "d09d5a73120e48bdb693ee31312f1334",
    "created": 1785003650,
    "model": "agnes-2.5-flash",
    "object": "chat.completion",
    "choices": [{
        "finish_reason": "stop",
        "index": 0,
        "message": {
            "content": "我是 Agnes-2.5-Flash,由 Sapiens AI 开发的语言模型。",
            "role": "assistant"
        }
    }],
    "usage": {
        "completion_tokens": 21,
        "prompt_tokens": 258,
        "total_tokens": 279
    }
}

2. AI 通信能力

2.1 后端架构

Agnes 的 AI 后端使用 LiteLLM (开源 LLM 代理) 作为统一网关:

请求 → api-agnes-code.agnes-ai.com → LiteLLM (v1.92.0) → 各 AI 提供商

从响应头中可以看到:

x-litellm-version: 1.92.0
x-litellm-model-group: agnes-2.0-flash
x-litellm-model-api-base: https://kw.dykjbj.com:9443/infer/vip-agnes-2-0-flash-sglang-router/v1

2.2 支持的 endpoint 类型

所有模型均支持 openai 格式 (即 OpenAI 兼容的 REST API)。

2.3 流式响应 (SSE)

支持 stream: true 参数, 返回 SSE (Server-Sent Events) 格式:

data: {"id":"...","object":"chat.completion.chunk","created":...,"model":"agnes-2.0-flash","choices":[{"index":0,"delta":{"role":"assistant","content":""}}]}

data: {"id":"...","object":"chat.completion.chunk","created":...,"model":"agnes-2.0-flash","choices":[{"index":0,"delta":{"content":"1"}}]}

data: {"id":"...","object":"chat.completion.chunk","created":...,"model":"agnes-2.0-flash","choices":[{"index":0,"delta":{"content":","}}]}

data: [DONE]

3. 模型清单与定价

3.1 完整模型列表 (从 API 获取)

通过 GET /v1/models 动态获取, 当前共 7 个模型:

模型 ID提供商免费/会员灰度输入上限输出上限描述
agnes-2.0-flashagnes✅ 免费-512K65K日常任务和编码, 快速可靠
agnes-2.5-flashagnes✅ 免费🧪 灰度512K65K复杂任务, 速度与能力平衡
glm-5.2zhipu🔒 会员-1M131K中文、推理、编码强
deepseek-v4-prodeepseek🔒 会员-1M393K编码、数学、深度推理
gemini-3.5-flashgoogle🔒 会员-1M65K多模态和长上下文
gpt-5.5openai🔒 会员-10M131K推理和高质量输出
claude-opus-4-8anthropic🔒 会员-1M131K长文分析和写作

3.2 模型获取方式

不要硬编码模型列表! 使用以下 API 动态获取:

GET https://api-agnes-code.agnes-ai.com/v1/models
Authorization: Bearer {OAUTH_TOKEN}
X-App-Id: 1
X-Platform: 1

响应格式:

json
{
    "data": [
        {
            "id": "agnes-2.0-flash",
            "object": "model",
            "created": 1784206241,
            "owned_by": "agnes",
            "provider": "agrouter",
            "description": "Fast and reliable for everyday tasks and coding.",
            "max_input_tokens": 512000,
            "max_output_tokens": 65536,
            "is_member_only": false,
            "is_gray": false,
            "gray_available": true,
            "model_type": "text",
            "supported_endpoint_types": ["openai"]
        }
    ]
}

3.3 关键字段说明

字段类型说明
idstring模型 ID, 用于聊天补全请求
is_member_onlybooleantrue=会员专属, false=免费可用
is_graybooleantrue=灰度中, 可能不稳定
gray_availableboolean灰度用户是否可用
max_input_tokensint最大输入 token 数
max_output_tokensint最大输出 token 数
model_typestringtextmultimodal
supported_endpoint_typesstring[]均为 ["openai"]

4. 额度与速率限制

4.1 当前账号额度

余额: 1200 积分 (免费赠送)

GET https://api-agnes-code.agnes-ai.com/api/v2/subscription/credits-balance
Authorization: Bearer {OAUTH_TOKEN}
X-User-Language: zh-Hans

响应:

json
{
    "code": "000000",
    "data": {
        "level": 0,
        "level_name": "",
        "total_balance": 1200,
        "time_sensitive_balance": 1200,
        "permanent_balance": 0,
        "daily_free_credits": 0,
        "subscription_credits": 0,
        "effect_quota_balance": 0,
        "daily_effect_quota": 0
    }
}

4.2 交易记录

POST https://api-agnes-code.agnes-ai.com/api/v1/subscription/credits-transactions
Authorization: Bearer {OAUTH_TOKEN}
X-User-Language: zh-Hans

请求体:

json
{"page": 1, "page_size": 20, "filter": 0}

当前记录: 仅有 1 条 "每日免费赠送" 1200 积分。

4.3 已知信息

项目
免费额度1200 积分 (一次性赠送)
会员模型需要订阅才能使用
每日免费额度daily_free_credits: 0 (当前没有)
订阅current_subscription: null (当前没有订阅)
速率限制未明确发现, 但 LiteLLM 后端可能有限制

注意: 免费模型 (agnes-2.0-flash, agnes-2.5-flash) 即使没有会员也可以使用, 消耗积分。会员模型需要订阅。

4.4 消耗估算

x-litellm-key-spend: 1144.0353 可以看出, 每次调用会消耗积分。免费额度 1200 积分大概可以调用约 1000 次简单对话 (取决于 token 数)。


5. 流式响应

5.1 请求

json
{
    "model": "agnes-2.0-flash",
    "messages": [{"role": "user", "content": "Count 1 to 5"}],
    "max_tokens": 50,
    "stream": true
}

5.2 响应格式 (SSE)

data: {"id":"fa5da678...","object":"chat.completion.chunk","created":1785004491,"model":"agnes-2.0-flash","choices":[{"index":0,"delta":{"role":"assistant","content":""}}]}

data: {"id":"fa5da678...","object":"chat.completion.chunk","created":1785004491,"model":"agnes-2.0-flash","choices":[{"index":0,"delta":{"content":"1"}}]}

data: {"id":"fa5da678...","object":"chat.completion.chunk","created":1785004491,"model":"agnes-2.0-flash","choices":[{"index":0,"delta":{"content":","}}]}

data: [DONE]

5.3 响应头关键信息

x-litellm-version: 1.92.0
x-litellm-model-group: agnes-2.0-flash
x-litellm-model-api-base: https://kw.dykjbj.com:9443/infer/vip-agnes-2-0-flash-sglang-router/v1
x-litellm-key-spend: 1144.0353
x-litellm-response-duration-ms: 463.767

6. API 端点速查表

6.1 认证

操作方法URL认证
签发授权码POSThttps://api.agnes-ai.com/api/v1/user/issue-authorization-codeJWT Token
交换 OAuth TokenPOSThttps://api-agnes-code.agnes-ai.com/api/v1/code/auth/exchange-code授权码

6.2 AI 调用

操作方法URL认证
聊天补全 (非流式)POSThttps://api-agnes-code.agnes-ai.com/v1/chat/completionsBearer Token
聊天补全 (流式)POSThttps://api-agnes-code.agnes-ai.com/v1/chat/completions?stream=trueBearer Token
模型列表GEThttps://api-agnes-code.agnes-ai.com/v1/modelsBearer Token

6.3 用户与订阅

操作方法URL认证
用户信息GEThttps://api-agnes-code.agnes-ai.com/api/v1/user/profileBearer Token
信用余额GEThttps://api-agnes-code.agnes-ai.com/api/v2/subscription/credits-balanceBearer Token
交易记录POSThttps://api-agnes-code.agnes-ai.com/api/v1/subscription/credits-transactionsBearer Token
订阅套餐GEThttps://api-agnes-code.agnes-ai.com/api/v1/subscription/plansBearer Token

6.4 域名

域名用途
api.agnes-ai.com通用 API (签发授权码等)
api-agnes-code.agnes-ai.comBFF API (AI 调用、模型列表、订阅)
app.agnes-ai.com登录页面
platform.agnes-ai.com用户平台
platform-backend.agnes-ai.com平台后端

7. 反向代理设计蓝图

7.1 架构

┌──────────────┐     ┌──────────────────────┐     ┌──────────────────────┐
│  客户端工具    │     │                      │     │                      │
│  (Codex/      │────►│  反向代理 (中转站)     │────►│  Agnes BFF API       │
│  Claude Code  │     │                      │     │  api-agnes-code.     │
│  等)          │     │  1. 接收 OpenAI 格式   │     │  agnes-ai.com        │
│              │     │  2. 注入 Bearer Token  │     │                      │
│              │     │  3. 转发到 Agnes       │     │                      │
│              │     │  4. 返回响应/流式       │     │                      │
└──────────────┘     └──────────────────────┘     └──────────────────────┘

7.2 关键设计要点

要点说明
协议输入输出均为 OpenAI 兼容格式
认证代理需要维护一个有效的 OAuth Token
模型列表通过 /v1/models 动态获取, 不硬编码
流式透传 SSE 流
Token 刷新JWT Token 过期后需要重新签发

7.3 Token 生命周期管理

JWT Token (长期) → 签发授权码 (60秒有效) → OAuth Token (短期)

                                              AI 调用 (消耗 OAuth Token)

                                              OAuth Token 过期 → 重新签发

8. 附录: 原始数据

8.1 测试账号信息

字段
用户 ID00000000-0000-0000-0000-000000000000
用户名testuser
邮箱user@example.com
认证方式email
注册时间2026-07-25
免费额度1200 积分
订阅

8.2 已验证的响应头

x-litellm-version: 1.92.0
x-litellm-model-group: agnes-2.0-flash
x-litellm-model-api-base: https://kw.dykjbj.com:9443/infer/vip-agnes-2-0-flash-sglang-router/v1
x-litellm-key-spend: 1144.0353
x-litellm-response-duration-ms: 463.767

8.3 验证结果

测试项结果
签发授权码✅ 成功
交换 OAuth Token✅ 成功
免费模型 AI 调用✅ 成功 (agnes-2.0-flash, agnes-2.5-flash)
会员模型 AI 调用✅ 成功 (gpt-5.5, 返回空内容可能是额度不足)
流式响应✅ 成功 (SSE 格式)
模型列表✅ 成功
信用额度✅ 成功
交易记录✅ 成功
用户信息✅ 成功

基于 MIT 协议发布