惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
Recorded Future
Recorded Future
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
N
News | PayPal Newsroom
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
博客园 - Franky
SecWiki News
SecWiki News
Recent Announcements
Recent Announcements
T
Troy Hunt's Blog
The Register - Security
The Register - Security
The Last Watchdog
The Last Watchdog
Webroot Blog
Webroot Blog
S
Security Affairs
博客园 - 司徒正美
S
Schneier on Security
I
InfoQ
博客园_首页
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Forbes - Security
Forbes - Security
腾讯CDC
N
Netflix TechBlog - Medium
N
News and Events Feed by Topic
Cloudbric
Cloudbric
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
B
Blog
V
Vulnerabilities – Threatpost
C
Check Point Blog
Google DeepMind News
Google DeepMind News
Google Online Security Blog
Google Online Security Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cisco Blogs
Schneier on Security
Schneier on Security
O
OpenAI News
K
Kaspersky official blog

博客园 - .NET骚操作

.NET 10 的正则性能现在什么水平?我拿它和 Go、Python、C++、PCRE2 测了一轮 C++ vs .NET 数组原地反转实测:小数组 C++ 碾压,大数组 .NET 反杀? Sdcb Chats 1.10 私有化代码执行器部署教程 复刻 ChatGPT 高级数据分析!Sdcb Chats 1.10 重磅发布:能分析Excel、做PPT .NET 10了,HttpClient还是不能用using吗?我做了一个实验 两天烧掉200美元!我AI大模型网关终于支持了Claude模型 没有前端后,我把 MCP 做进了 Chats 1.7.0 AI 网关 不服跑个分?.NET 10 大整数计算对阵 Java,结果令人意外 从 OpenAI 兼容到 Anthropic 崛起:大模型“交错思考”协议的演进与变局 当加密ID需要变成Guid:为什么我选择了AES-CBC而非GCM? AES 加密模式演进:从 ECB、CBC 到 GCM 的 C# 深度实践 美丽而脆弱的天体运动:当C#遇见宇宙混沌 我是不是很有钱? Chats 1.6.8 发布:全面支持最新的 gpt-5 模型等 Sdcb Chats 1.6.6 发布,彻底移除 Azure.AI.OpenAI 专用包 那些被推迟的 C# 14 特性及其背后的故事 我最喜欢的 C# 14 新特性 更复杂的代码,为何跑得快了10倍?一次Draw Call优化引发的思考 一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析 当物理定律与高精度计算相遇:我的新开源项目 N-Body
Sdcb Chats 1.8:又一次底层重构,彻底将模型提供商解耦
.NET骚操作 · 2026-01-20 · via 博客园 - .NET骚操作

这是又一篇补档文章,Chats已经发布了1.10,但2025年11月5日发布的1.8版本对我个人来说意义非凡,因为它彻底改变了项目对“模型提供商”的支持方式,从“写死在代码里”变成了“完全配置化”,为后续的可维护性和扩展性打下了坚实基础。

如果你还不了解 Sdcb Chats:简单说,这是一个支持多家主流模型服务商的 AI 网关。它不只能让你在一个统一界面里聚合管理所有模型,同时也兼容标准 API 协议,支持 Docker 一键部署。

这篇文章聊聊 Chats 1.8 系列(1.8.0 + 1.8.1)。它不像“加一个新按钮”那样轻松,而是做了大量“地基工程”:把“模型提供商支持”从静态参考表迁移到了模型实例本身,并且补上了大量用户能直接感知到的体验升级。


1.8 的核心:从“静态参考表”到“模型实例级配置”

到 chats 1.7.2 发布以来,已经支持有 18 个模型提供商,我当时为这 18 家模型提供商每一个模型都做了信息和数据跟踪,放到了 ModelReference 表,这个表有 297 条记录了,各大模型提供商卷大模型的速度越来越快,模型更新换代也越来越频繁,要可持续地维护这个表是非常困难的。

除此之外,代码中还有大量根据模型名称写死的逻辑,这导致越来越难以维护。我和项目的合作维护者讨论过许多次,有许多不同的意见,有的说可以继续沿用这种写死的方式,有的说应该做成配置化的方式,但我觉得可持续的维护能力才是我对 chats 项目最重要的承诺,所以我决定在 1.8 版本里彻底重构模型提供商的支持方式,做成完全配置化的方式,这样未来无论是新增模型提供商,还是调整已有模型的支持逻辑,都可以通过配置来完成,而不需要动代码。这个改动虽然在短期内增加了不少工作量,但我相信从长远来看,这会大大提升项目的可维护性和扩展性。

更技术一点地说:1.8.0 把“模型能力配置”从 ModelReference 这种静态参考表,迁移到了 Model(模型实例)本身——模型不再依赖“引用一条固定模板”,而是每个模型实例都拥有完整、可编辑、可验证的能力配置。

18 个“模型能力字段”落到 Model:终于能真正“按实例定制”

这次迁移不是口头上的“配置化”,而是实打实的数据库变更:在 src/scripts/db-migration/1.8/1.8.0.sql 里,Model 表新增了一批能力字段(AllowSearch/AllowVision/AllowToolCall/温度范围/上下文窗口/最大输出 token/推理选项/图片尺寸/API 类型等),并且清理了多张静态参考表(ModelReferenceModelProviderTokenizerCurrencyRateReasoningResponseKind ……)。

第三种 API 类型:ImageGeneration(图像模型终于“名正言顺”)

1.8.0 新增了 ApiType.ImageGeneration,把图像生成从“勉强兼容”的逻辑里拎了出来:ChatCompletion / Response / ImageGeneration 三分天下,ChatFactory 也按 ApiType 分派到不同实现。

模型验证框架:把“填错配置”的坑提前堵住

当能力配置变成“每个模型实例 18 个字段都可编辑”之后,靠用户自觉显然不现实。所以 1.8.0 加了 UpdateModelRequest 的验证框架(包含自定义验证特性和单测),把温度范围、token 上限、字段组合合法性都系统化了。

快速添加模型:把“配置很多字段”的摩擦降下来

为了对冲“字段变多导致的配置成本”,1.8.0 在后台做了 Quick Add/批量添加模型的流程优化,并补上了默认配置(src/FE/constants/modelDefaults.ts 里能看到一些默认能力/范围策略)。

图像链路重构:从“手写解析器”到 ImageSharp + 全屏预览

1.8.0 还把图像处理这条链路整体重构了一遍:后端用 ImageSharp 替代了手写解析/嗅探逻辑(代码量直接少了一大截),前端新增了全屏 ImagePreview 组件,支持缩放动画、键盘导航和更顺滑的浏览体验。

骨架屏与按需加载:把“等待”变成“可预期”

1.8.0 在聊天消息加载、管理后台的模型管理等页面补了骨架屏,并做了按需加载/渐进式渲染:这不是性能“变快了多少 ms”的问题,而是用户感知上从“卡住了”变成“正在加载”。


1.8.1:在“架构变好”之后,把“体验也抠到位”

如果说 1.8.0 是地基,那么 1.8.1 更像是把常用路径都重新打磨了一遍:权限、推理内容展示、文件预览、聊天列表性能……这些都是你每天用 Chats 时能立刻感知到的变化。

全新的“用户-模型权限”管理:终于能规模化授权了

1.8.1 新增了 /admin/user-models(按用户维度管理),同时在模型管理页也增加了“按模型维度管理用户”的入口。更关键的是它的交互设计:URL 作为状态唯一数据源,筛选/搜索/展开状态都能分享、刷新不丢。


推理内容“生命周期追踪 + 自动折叠”:屏幕终于不被思考占满

推理模型越来越多,推理内容越来越长,UI 不能只“展示”——还得帮用户“管理注意力”。1.8.1 给 ReasoningContent 增加了 finished 语义:推理进行中自动展开、结束后自动折叠;工具调用区块也做了自动折叠与动画,且尊重用户手动操作优先级。

FilePreview 组件重构:附件展示不再“各写一套”

1.8.1 引入了统一的 FilePreview 组件:图片/视频/音频直接预览,文档类显示图标+文件名+下载按钮;同时后端把文件处理从 Controller 下沉到了 Service 层,类型检查也更集中。

聊天列表缓存:打开就快一点,刷新也稳一点

聊天列表不是什么“酷功能”,但它决定了你每天打开 Chats 的第一感受。1.8.1 里新增了 chatCache.ts:以用户名绑定缓存键、24 小时过期、登出自动清理,并配合并行 API 加载,让首屏更“有感”。

提供商侧:TokenPony 加入,Azure OpenAI 更名为 Azure AI Foundry

1.8.1 新增了 TokenPony(ID=19),同时把 Azure OpenAI 的命名更新为 Azure AI Foundry(枚举值不变,属于代码层重命名),并补了一个小迁移脚本清理 Azure Host 里的 api-version 参数:src/scripts/db-migration/1.8/1.8.1.sql

兼容性与稳定性:OpenAI 2.6 升级后推理内容解析修复

1.8.1 还处理了一个很“现实”的问题:OpenAI 客户端升级到 2.6.0 后,推理内容的解析/解码出现兼容性问题,导致部分推理段无法正确读取。这个点不显眼,但它直接影响你对推理模型的信任感,所以也被纳入 1.8.1 里修掉了。


升级提醒:1.8 系列需要手动跑 SQL Server 迁移脚本

和 1.7 一样:Sdcb Chats 的数据库变更 不支持自动数据迁移。升级到 1.8 时请务必先备份数据库,并手动执行迁移脚本:

  • 1.8.0:src/scripts/db-migration/1.8/1.8.0.sql
  • 1.8.1:src/scripts/db-migration/1.8/1.8.1.sql(清理 Azure AI Foundry 的 Host 参数)

如果你用的是 SQLite/Postgres……老规矩:把脚本丢给 AI 先改,再边跑边修;或者能接受删库的话,让 Chats 启动时自动建新表结构也行。


感谢大家的阅读!喜欢的朋友请给我的Github项目一个star:https://github.com/sdcb/chats
如果你好奇的话,这是完整的更新日志:https://github.com/sdcb/chats/blob/main/doc/zh-CN/release-notes/README.md
有什么想法也欢迎在评论区留言交流,也欢迎加入我的 Chats微信群:

(如果你更喜欢用QQ,可以用QQ群:498452653)我们一起探索更多AI技术硬核玩法。