# CozeAgentSharp **Repository Path**: haoasq/coze-agent-sharp ## Basic Information - **Project Name**: CozeAgentSharp - **Description**: Coze API 控制台应用程序,用于通过 JWT 认证调用 Coze智能体。 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-23 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CozeConsoleApp Coze API 控制台应用程序,用于通过 JWT 认证调用 Coze API 并处理 SSE 事件流。 JWT 认证 参考https://www.coze.cn/open/docs/developer_guides/oauth_jwt ## 功能特性 - JWT Token 生成(RS256 算法) - OAuth Access Token 获取 - SSE 事件流处理 - Answer 内容自动合并 ## 项目结构 ``` CozeConsoleApp/ ├── appsettings.json # 配置文件 ├── private_key.pem # 私钥文件(需自行配置) ├── AppSettings.cs # 配置类定义 ├── CozeJwtGenerator.cs # JWT Token 生成器 ├── CozeOAuthService.cs # OAuth 服务 ├── CozeApiClient.cs # API 客户端 ├── SseEventProcessor.cs # SSE 事件处理器 ├── Program.cs # 主程序入口 └── CozeConsoleApp.csproj # 项目文件 ``` ## 配置说明 ### 1. 配置文件 (appsettings.json) ```json { "Coze": { "AppId": "你的 Coze App ID", "KeyId": "你的 Coze App 公钥指纹 (kid)", "Audience": "api.coze.cn", "PrivateKeyPath": "private_key.pem", "TokenExpirationSeconds": 600, "OAuthTokenUrl": "https://api.coze.cn/api/permission/oauth2/token", "OAuthTokenDurationSeconds": 86399 }, "Api": { "Url": "https://your-bot.coze.site/stream_run", "ProjectId": "你的项目 ID", "SessionId": "你的会话 ID" } } ``` ### 2. 私钥文件 (private_key.pem) 将你的 Coze App 私钥内容写入此文件: ``` -----BEGIN PRIVATE KEY----- 你的私钥内容 -----END PRIVATE KEY----- ``` ## 使用方法 ### 安装依赖 ```bash dotnet restore ``` ### 运行程序 ```bash dotnet run ``` ## 认证流程 1. **生成 JWT Token** - 使用私钥和配置参数生成 RS256 签名的 JWT Token 2. **获取 OAuth Access Token** - 使用 JWT Token 调用 Coze OAuth API 获取 Access Token - 请求示例: ```bash curl --location --request POST 'https://api.coze.cn/api/permission/oauth2/token' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ' \ --data '{ "duration_seconds": 86399, "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer" }' ``` 3. **调用业务 API** - 使用 Access Token 调用 Coze API ## SSE 事件处理 支持的事件类型: | 事件类型 | 说明 | |---------|------| | `message_start` | 消息开始 | | `message_end` | 消息结束 | | `answer` | 回答内容(自动合并) | | `tool_request` | 工具调用请求 | | `tool_response` | 工具调用响应 | | `error` | 错误事件 | ## 核心类说明 ### CozeJwtGenerator JWT Token 生成器,支持以下参数: - `privateKeyPem` - PEM 格式私钥 - `appId` - Coze App ID - `keyId` - 公钥指纹 (kid) - `audience` - API 域名 - `expirationSeconds` - Token 有效期 ### CozeOAuthService OAuth 服务,用于获取 Access Token: - `GetAccessTokenAsync()` - 使用 JWT Token 换取 Access Token ### CozeApiClient API 客户端: - `SendQueryAsync()` - 发送查询请求并处理 SSE 流 ### SseEventProcessor SSE 事件处理器: - `MapToEvent()` - 将 JSON 映射为事件对象 - `HandleEvent()` - 处理事件 - `GetFullAnswer()` - 获取合并后的完整答案 - `ClearAnswer()` - 清空答案缓冲区 ## 依赖包 - `System.IdentityModel.Tokens.Jwt` - JWT 处理 - `Microsoft.Extensions.Configuration` - 配置管理 - `Microsoft.Extensions.Configuration.Json` - JSON 配置支持 - `Microsoft.Extensions.Configuration.Binder` - 配置绑定 ## 注意事项 1. 私钥文件 `private_key.pem` 包含敏感信息,请勿提交到版本控制 2. 建议在生产环境中使用环境变量或密钥管理服务存储敏感配置 3. OAuth Token 有效期最长为 86399 秒(约 24 小时)