发布日期:2025-11-27(相对 1.8.1.279 以来 80 次提交)
1.9.0 是一次重大版本更新,核心亮点包括全新的 Anthropic 模型提供商支持、Anthropic Messages API 兼容接口、OpenAI 图像生成/编辑 API、Build 开发者页面以及全面的界面动画优化。此版本还升级到 .NET 10,重构了 ChatService 架构以支持 Claude 模型的 thinking+signature 流程。
新增 Anthropic 提供商(ID=20):
- 完整支持 Claude 系列模型(包括 claude-opus-4-5 等最新模型)
- 使用原生 HttpClient 实现
- 支持 Claude 特有的 thinking(推理)+ signature(签名)流程
- 默认 URL:
https://api.anthropic.com - 新增
anthropic.svg图标
Anthropic 模型特性:
- 支持
MaxThinkingBudget(模型级别)和ThinkingBudget(会话级别)配置 - 默认启用 Vision Link 支持(通过 URL 传图而非 base64)
- 支持内置
web_search和 MCP 工具调用 - 支持 Claude 模型的
signature字段存储
数据库架构调整:
- 新增
StepContentThink表,包含Content和Signature字段 - 将原有 reasoning 数据从
StepContentText迁移到StepContentThink - 新增
Model.MaxThinkingBudget列 - 新增
ChatConfig.ThinkingBudget列
后端重构:
AnthropicChatService使用原生 HttpClient 重新实现(969 行)- 支持
JsonPolymorphic特性处理 Anthropic 流式事件 - ChatService 架构改为基于 DB Steps 驱动,支持多种消息格式转换
Anthropic Messages API(/v1/messages):
- 完整兼容 Anthropic Messages API 规范
- 支持流式和非流式响应
- 支持 Tool Use(工具调用)
- 支持 System Prompt 解析
- 实现 Token 计数 API(/v1/messages/count_tokens)
核心组件(新增 6 个文件):
AnthropicCompatibleController.cs(380 行)- API 端点控制器AnthropicRequest.cs(140 行)- 请求 DTOAnthropicResponse.cs(105 行)- 响应 DTOAnthropicStreamEvent.cs(227 行)- 流式事件定义AnthropicRequestWrapper.cs(307 行)- 请求转换器AnthropicSegmentExtensions.cs(112 行)- 消息段扩展
OpenAI Image API:
- 实现图像生成 API(POST /v1/images/generations)
- 实现图像编辑 API(POST /v1/images/edits)
OpenAIImageController.cs(478 行)- 完整的图像 API 实现ImageGenerationDtos.cs(171 行)- 图像 API DTO 定义
API 类型强制校验:
- OpenAI 兼容接口强制使用
ChatCompletion类型模型 - Anthropic 兼容接口强制使用
Anthropic类型模型 - 接口与模型类型不匹配时返回明确错误
新增 Build 布局和页面(面向 API 开发者):
BuildLayout.tsx(201 行)- 统一的 Build 页面布局- 三个核心页面:API Keys、Docs、Usage
API Keys 页面(/build/api-key):
- API 密钥的创建、编辑、删除管理
- 密钥掩码显示(防止截图泄露敏感信息)
- 支持设置密钥备注和过期时间
- 显示最后使用时间
- 点击密钥可查看该密钥的使用记录
- 响应式布局(移动端友好)
Docs 页面(/build/docs):
- 分类展示 OpenAI 兼容和 Anthropic 兼容 API
- 显示完整的 API URL(可一键复制)
- 链接到官方文档
- OpenAI 兼容 API:
- Chat Completions(/v1/chat/completions)
- List Models(/v1/models)
- Image Generations(/v1/images/generations)
- Image Edit(/v1/images/edits)
- Anthropic 兼容 API:
- Messages(/v1/messages)
- Count Tokens(/v1/messages/count_tokens)
Usage 页面(/build/usage):
- 复用现有的
UsageRecordsTab组件 - 支持按 API Key 筛选使用记录
ChatInput 动画优化:
- 展开/收起时的平滑过渡动画
- 全屏切换动画效果
- 修复发送消息后高度未重置的问题
- 修复聊天时的闪烁问题
UserMenuPopover 组件统一:
- 提取为独立组件,在聊天页和管理页复用
- 添加下拉菜单动画效果
- 新增 Tailwind 动画配置
ToolCallBlock 优化:
- 头部展开/收起添加动画过渡
- 修复自动展开行为异常的问题
- 优化白色主题下的视觉效果
- 优化 Anthropic 内置
web_search工具的前端渲染
其他 UI 改进:
- 修复 UserMessage 下的亚像素线条问题
- 优化管理页面的移动端布局
- 优化模型管理页面标签和描述 UI
- 删除聊天确认时添加加载指示器
- 聊天缓存与创建/删除操作保持同步
- 框架从 .NET 9 升级到 .NET 10
- 更新所有相关 NuGet 包
- OpenAI SDK 升级到 2.7.0
- 构建流程切换到 Ubuntu 24.04
核心变更:
- ChatService 从基于 OpenAI payload 驱动改为基于 DB Steps 驱动
- 新增
ChatServiceRequest类封装请求数据 - 支持 Anthropic 的 thinking+signature 流程
- ChatService 改为 DI 单例注册服务
- ChatService 不再继承
IDisposable
代码优化:
- 删除
ChatServiceExtensions.cs(136 行) - 删除
TestChatService.cs(76 行) - 简化各个 ChatService 实现
- 统一的请求/响应处理流程
- 控制图片传输方式:URL 链接或 Base64 编码
- Anthropic 模型默认启用(使用 URL)
- 其他模型默认禁用(使用 Base64,兼容性更好)
- 可在模型配置中手动切换
- 修复无法应用 thinking budget 设置的问题
- 正确传递模型级别和会话级别的 budget 配置
- 修复启用 thinking 后无法正常对话的问题
- 禁用 Google Gemini 自动重试以绕过上游 bug(mscraftsman/generative-ai#144)
- 修复 ChatInput 发送消息后高度未重置的问题
- 修复 UserMessage 下的亚像素线条显示问题
- 修复 ToolCallBlock 自动展开行为异常
- 修复非全屏模式下 FilePreview 缺失的问题
- 修复 Quick Add Model 因 VisionLink 变更导致的失败
- 修复管理模型页"显示所有提供商"按钮不工作的问题
- 修复 Anthropic Messages API 的 tool call finish reason 处理
- 修复 Anthropic Messages API 的 system prompt 解析(支持 Claude Code)
- 修复切换 ApiType 时影响模型价格的问题
迁移脚本位置:
src/scripts/db-migration/1.9/1.9.0.sql
Step 1:创建 StepContentThink 表
CREATE TABLE dbo.StepContentThink (
Id BIGINT NOT NULL,
Content NVARCHAR(MAX) NOT NULL,
Signature VARBINARY(MAX) NULL,
CONSTRAINT PK_StepContentThink PRIMARY KEY CLUSTERED (Id),
CONSTRAINT FK_StepContentThink_StepContent FOREIGN KEY (Id) REFERENCES dbo.StepContent (Id)
);Step 2:迁移 reasoning 数据
- 将
ContentTypeId = 3的记录从StepContentText迁移到StepContentThink
Step 3:移除 StepContentType 表
- 删除外键约束和表本身
Step 4:File.MediaType 改造
- 新增
File.MediaType列 - 迁移
FileContentType数据 - 删除
FileContentType表
Step 5:StepContentBlob 增强
- 新增
MediaType和FileName列
Step 6:移除 ChatRole 表
- 删除
Step表的外键约束 - 删除
ChatRole表
Step 7:Model/ChatConfig 表调整
- 删除
Model.AllowSystemPrompt列 - 新增
Model.MaxThinkingBudget列 - 新增
ChatConfig.ThinkingBudget列 - 调整
ReasoningEffortOptions和SupportedImageSizes为可空
Step 8:字段重命名
ChatConfig.ReasoningEffort→ChatConfig.ReasoningEffortIdModel.ApiType→Model.ApiTypeId
Step 9:新增 Model.SupportsVisionLink
- 添加布尔字段,默认为 false
- 备份数据库(强烈建议)
- 停止应用服务
- 执行迁移脚本:
sqlcmd -S localhost -d Chats -i 1.9.0.sql
- 验证迁移结果
- 更新应用程序
- 启动服务
- 提交数量:80 次提交
- 主要变更:Anthropic 支持、API 增强、Build 页面、动画优化、.NET 10 升级
后端新增:
AnthropicChatService.cs- 969 行(Anthropic 聊天服务)AnthropicCompatibleController.cs- 380 行(Anthropic API 控制器)AnthropicRequestWrapper.cs- 307 行(请求转换)AnthropicStreamEvent.cs- 227 行(流式事件)OpenAIImageController.cs- 478 行(图像 API)ChatServiceRequest.cs- 115 行(请求封装)
前端新增:
BuildLayout.tsx- 201 行(Build 布局)BuildApiKeyPage- 255 行(API Key 管理)BuildDocsPage- 120 行(API 文档)UserMenuPopover.tsx- 110 行(用户菜单组件)
数据库迁移:
1.9.0.sql- 421 行(完整迁移脚本)
- 备份数据库(强烈建议,此版本有重大架构变更)
- 停止应用服务
- 执行数据库迁移:
sqlcmd -S localhost -d Chats -i 1.9.0.sql
- 更新 .NET 运行时到 10.0
- 更新后端代码
- 更新前端代码
- 启动应用服务
- 验证功能:
- 测试 Anthropic 模型是否正常工作
- 测试 Build 页面功能
- 测试 Anthropic Messages API
- 测试图像生成 API
- 验证现有聊天记录的 thinking 内容显示
添加 Anthropic 模型:
- 进入模型管理页面
- 选择 Anthropic 提供商
- 填写 API Key(从 Anthropic Console 获取)
- 添加模型(如 claude-sonnet-4-5-20250514)
- 可选配置 MaxThinkingBudget
使用 Build 页面:
- 点击用户菜单中的"Build"选项
- 在 API Keys 页面创建新的 API Key
- 在 Docs 页面查看支持的 API 端点
- 在 Usage 页面查看使用记录
调用 Anthropic Messages API:
curl -X POST https://your-chats-url/v1/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-5-20250514",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}]
}'- 运行时要求从 .NET 9 升级到 .NET 10
- 部署环境需要安装 .NET 10 运行时
删除的表:
StepContentTypeFileContentTypeChatRole
字段重命名:
Model.ApiType→Model.ApiTypeIdChatConfig.ReasoningEffort→ChatConfig.ReasoningEffortId
删除的字段:
Model.AllowSystemPrompt
- ChatService 不再继承
IDisposable - 构造函数签名可能有变化
- 如有自定义 ChatService 实现需要适配新架构
- Anthropic 服务暂不支持 prompt caching 功能,可能影响长对话的成本优化
- Windows Nano Server 1809 (Windows Server 2019) Docker 镜像已停止维护,不再提供新版本
- 📖 1.8.1 发布说明 - 了解上一个版本的更新
- 📖 Anthropic API 文档 - 官方 Messages API 参考
- 📖 OpenAI Images API 文档 - 官方图像 API 参考
- 🐛 报告问题
- 💬 参与讨论
- 📧 联系作者:https://github.com/sdcb
感谢所有为本版本做出贡献的开发者!
特别感谢:
- @sdcb - Anthropic 提供商支持、Messages API、图像 API、Build 页面、界面动画、.NET 10 升级、数据库架构重构
如有问题或建议,欢迎在 GitHub Issues 反馈。
- ✅ Anthropic 模型提供商支持(ID=20)
- ✅ Anthropic Messages API 兼容接口(/v1/messages)
- ✅ Anthropic Token 计数 API(/v1/messages/count_tokens)
- ✅ OpenAI 图像生成 API(/v1/images/generations)
- ✅ OpenAI 图像编辑 API(/v1/images/edits)
- ✅ Build 开发者页面(API Keys / Docs / Usage)
- ✅ API 密钥掩码显示
- ✅ ChatInput 展开/收起/全屏动画
- ✅ UserMenuPopover 动画效果
- ✅ ToolCallBlock 头部动画
- ✅ Model.SupportsVisionLink 字段
- ✅ 升级到 .NET 10
- ✅ ChatService 架构重构(基于 DB Steps 驱动)
- ✅ 新增 StepContentThink 表支持 Claude signature
- ✅ ChatService 改为 DI 单例注册
- ✅ 统一的 UserMenuPopover 组件
- ✅ 修复 thinking budget 无法应用的问题
- ✅ 修复 Gemini 启用 thinking 后无法对话的问题
- ✅ 修复 ChatInput 高度重置问题
- ✅ 修复 UserMessage 亚像素线条问题
- ✅ 修复 ToolCallBlock 自动展开异常
- ✅ 修复 FilePreview 在非全屏模式缺失
- ✅ 修复 Anthropic API tool call finish reason
- ✅ 禁用 Google Gemini 重试以绕过上游 bug
- ✅ 创建 StepContentThink 表(含 Signature 字段)
- ✅ 迁移 reasoning 数据
- ✅ 移除 StepContentType/FileContentType/ChatRole 表
- ✅ 添加 Model.MaxThinkingBudget 字段
- ✅ 添加 ChatConfig.ThinkingBudget 字段
- ✅ 添加 Model.SupportsVisionLink 字段
- ✅ 字段重命名(ApiType→ApiTypeId, ReasoningEffort→ReasoningEffortId)
- ✅ 删除 ChatServiceExtensions.cs
- ✅ 删除 TestChatService.cs
- ✅ 简化 ChatService 实现
最后更新:2025-11-27