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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - .NET骚操作

C++ vs .NET 数组原地反转实测:小数组 C++ 碾压,大数组 .NET 反杀? 复刻 ChatGPT 高级数据分析!Sdcb Chats 1.10 重磅发布:能分析Excel、做PPT .NET 10了,HttpClient还是不能用using吗?我做了一个实验 两天烧掉200美元!我AI大模型网关终于支持了Claude模型 Sdcb Chats 1.8:又一次底层重构,彻底将模型提供商解耦 没有前端后,我把 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.10 私有化代码执行器部署教程
.NET骚操作 · 2026-01-27 · via 博客园 - .NET骚操作

之前我写了这篇博客《复刻 ChatGPT 高级数据分析!Sdcb Chats 1.10 重磅发布:能分析Excel、做PPT》,向大家介绍了 Chats 1.10 最激动人心的新功能——内置代码执行器(Code Interpreter)。

文章发出后,反响很热烈,但也有很多朋友在问:“这功能看着很强,但到底怎么部署及其配置啊?”

回头看了一下前一篇文章,确实光顾着兴奋地介绍功能,把最关键的部署实操给略过了。为了让大家都能尽快用上这个“硬核”功能,今天特地补上这篇详细的保姆级部署配置文档。

想要在 Chats 中使用“代码执行”功能,主要分两步走:

  1. 基础设施层:让 Chats 服务能连上 Docker Daemon(因为代码是在隔离的 Docker 容器中运行的)。
  2. 应用配置层:在 Chats 后台和前台开启相应的功能开关。

第一部分:连接 Docker Daemon

Chats 的代码执行器原理是:当模型需要执行代码时,Chats 会动态创建一个一次性的 Docker 容器(沙箱),在里面运行代码并获取结果。因此,Chats 必须拥有管理 Docker 的权限

这里主要介绍两种最常见的场景:纯 Docker 环境(Linux 服务器)和 Windows 下的 Docker Desktop。

场景一:Linux 服务器 / 纯 Docker 环境

这是生产环境最常用的方式。你只需要将宿主机的 Docker Socket 挂载到 Chats 容器中即可。

00-docker

1. Docker 镜像说明

Chats 的 Docker 镜像托管在 sdcb/chats,我们提供了完善的多架构支持:

Latest(推荐)latest 包含最新稳定版功能,多架构支持 指定完整版本 {version} (如 1.10.0) 生产环境推荐锁定版本 指定主/次版本 {major} / {major.minor}1, 1.10,自动更新到该系列最新版 特定平台 ...-linux-x64 等 仅在必须手动指定架构时使用
描述 Docker 镜像 Tag 说明

关于 Manifest (多架构支持)
我们的 latest 和语义化版本标签(如 1.10.0)都是 Manifest List。这意味着你不需要手动区分 linux-x64 还是 linux-arm64
无论你在 x64 的 Linux 服务器、ARM64 的树莓派,还是 Windows Server (Nano Server) 上执行 docker pull sdcb/chats:latest,Docker 都会自动检测并拉取最适合当前系统的镜像层。

2. 启动配置

由于 Docker Socket 默认属于 root 用户,为了避免权限问题(Permission Denied),建议显式指定 --user 0:0 以 root 身份运行容器。

在启动 Chats 的 docker run 命令或 docker-compose.yml 中,添加 user 配置和挂载卷:

-v /var/run/docker.sock:/var/run/docker.sock --user 0:0

完整的 docker run 命令示例

# 创建数据目录并授权
mkdir -p ./AppData && chmod 755 ./AppData

# 启动容器
docker run -d --restart unless-stopped --name sdcb-chats \
  -p 8080:8080 \
  -e DBType=sqlite \
  -e ConnectionStrings__ChatsDB="Data Source=./AppData/chats.db" \
  -v ./AppData:/app/AppData \
  -v /var/run/docker.sock:/var/run/docker.sock --user 0:0 \
  sdcb/chats:latest

示例 docker-compose.yml

version: '3'
services:
  chats:
    image: sdcb/chats:latest
    user: 0:0 # 关键:必须使用 root 用户才能访问 docker.sock
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # 关键配置:挂载 Docker 守护进程
      - ./data:/app/data
    ports:
      - "8080:8080"

场景二:Windows 环境

在 Windows (使用 Docker Desktop) 上部署时,情况稍微特殊一点,取决于你是在 Docker 容器内运行 Chats,还是直接运行 Chats 的 Windows 可执行文件 (.exe)

情况 A:Chats 运行在 Docker 容器内(推荐)

如果你是通过 docker run 启动 Chats 的,那么恭喜你,配置方法其实和 Linux 完全一样

Docker Desktop for Windows 做了很好的兼容,你只需要把 /var/run/docker.sock 挂载进去即可,不需要配置 npipe 或 TCP。

PowerShell 启动命令示例

docker run -d -p 8080:8080 `
  -v /var/run/docker.sock:/var/run/docker.sock `
  -v ${PWD}/data:/app/data `
  sdcb/chats:latest

情况 B:Chats 作为原生可执行文件运行

如果你不习惯使用 Docker 部署应用,我们提供了基于预编译的原生可执行文件,无需安装任何运行时(如 .NET SDK/Runtime)即可直接运行,启动速度较快且内存占用低。

可执行文件列表

Windows 64位chats-win-x64.zip 推荐大多数 Windows 用户 Linux 64位 chats-linux-x64.zip 常见的 Linux 服务器 (glibc) Linux ARM64 chats-linux-arm64.zip 树莓派、Mac M系列docker等 Linux Musl chats-linux-musl-*.zip 适用于 Alpine 等轻量级发行版 macOS chats-osx-*.zip 支持 x64 (Intel) 和 ARM64 (M系列芯片) 通用包 chats.zip需安装 .NET 10,跨平台
平台 文件名 说明

你可以从 下载指南文档 页面获取下载地址。该文档详细列出了 GitHub Releases 及国内加速镜像的下载方式。

配置与启动

如果你下载了 Chats.BE.exe (Windows 版后端) 直接运行,而不是使用 Docker 镜像,那么你需要通过命令行参数指定 Windows 的命名管道 (Named Pipe) 来连接 Docker 引擎。

  1. 下载程序:下载并解压对应的 chats-win-x64.zip
  2. 启动命令:使用 --CodePod:DockerEndpoint 参数指定 Docker 接入点。

PowerShell 启动命令示例

# 启动后端程序,并指定 Docker 引擎地址
.\Chats.BE.exe --CodePod:DockerEndpoint npipe://./pipe/docker_engine

你也可以同时指定其它参数(如端口):

.\Chats.BE.exe --urls http://+:5000 --CodePod:DockerEndpoint npipe://./pipe/docker_engine

这样,原生运行的 Chats 也能顺利指挥 Docker Desktop 创建沙箱环境了。

第二部分:在 Chats 中启用功能

连上 Docker 只是打通了经脉,接下来还需要在 Chats 内部“解锁”这个技能。

1. 后端配置:模型设置

首先,我们要告诉 Chats,哪些模型允许使用这个能力。

  1. 以管理员身份登录 Chats。
  2. 进入后台管理 -> 模型配置
  3. 展开你想要的模型提供商->模型密钥,然后编辑你想要使用的模型(例如deepseek-v3.2)。
    • 注意:任何支持 Tool Call (工具调用) 的模型 API 都可以,无论是 OpenAI 原生的 Chat Completions,还是Responses API/Messages API。
  4. 在功能列表中,找到并勾选 “代码执行 (Code Execution)”

⚠️ 特别注意:用户权限分配

很多第一次添加模型的朋友容易忽略这一点:启用功能后,必须明确授权给用户。

在模型编辑页面的底部,展开用户列表 (User Access),确保给你自己的账号(或需要使用的用户)勾选上权限。如果不勾选,你在前台是看不到这个模型的,或者无法调用该功能。

2. 前端配置:开启会话开关

后端准备就绪后,最后一步是在聊天界面开启使用。

  1. 回到聊天 (Chat) 界面。
  2. 在顶部的模型配置栏(通常显示模型名称的地方),点击展开配置面板。
  3. 找到 “代码执行” 开关,将其打开。

效果演示

一切就绪!现在你可以像使用 ChatGPT 的高级数据分析一样,上传一个 Excel 文件,或者让它帮你画一张图表了。

试试发送这样的指令:

请帮我分析这个 Excel 文件:https://cv-public.sdcb.pub/2026/changsha_weather_2025.xlsx,生成一个包含每月平均气温和降水量的报告,并附上图表

Chats 会自动创建一个隔离的 Docker 环境,编写 Python 代码,执行并把生成的图片直接贴在对话框里。

安全性考量

⚠️ 重要提示:与模型 API 调用不同,代码执行功能目前不进行任何计费,仅通过全局配置做了一些基础限制。如果你打算将 Chats 开放给未经充分信任的用户使用(例如搭建类似 ChatGPT/Manus 的公开服务),务必认真配置以下安全策略,避免服务器资源被滥用甚至被攻击。

1. 网络隔离

代码执行容器的默认网络模式为 bridge,这与 ChatGPT 的完全隔离沙箱不同——容器是可以联网的

这个设计是有意为之的,因为它带来了更强大的能力:

  • AI 可以在容器内下载文件、调用外部 API、安装依赖包。
  • 甚至可以让 AI 创建多个 Docker 容器协同工作(比如一个跑 Web 应用、一个跑数据库),Chats 会在工具调用响应中返回容器的局域网 IP 地址,模型可以据此进行容器间通信。

但这也意味着潜在风险:

  • 容器可以访问宿主机同一 Docker 网络内的其他服务(包括你的数据库、Redis 等)。
  • 恶意用户可能利用此能力进行内网扫描或攻击。

建议

  • 安全敏感环境:将 CodeInterpreter:MaxAllowedNetworkMode 设置为 none,完全禁止容器联网。
  • 物理隔离:在一台独立的虚拟机或物理机上运行 Docker Daemon,Chats 通过 TCP 远程连接,从而实现网络层面的彻底隔离。

2. 资源限制

AI 可以创建任意数量的 Docker 会话(通过 create_docker_session 工具)。虽然空闲会话会在一定时间后自动清理,但仍存在以下风险:

  • 算力滥用:恶意用户可能运行高负载任务,耗尽服务器 CPU/内存。
  • 磁盘占用:AI 可能拉取不同版本的镜像,这些镜像不会自动清理,长期积累会占满磁盘。

Chats 提供了细粒度的资源限制配置,强烈建议根据实际情况调整

CodeInterpreter:DefaultResourceLimits:MemoryBytes2147483648 (2GB) 单个容器内存上限 CodeInterpreter:DefaultResourceLimits:CpuCores2.0 单个容器 CPU 核数 CodeInterpreter:DefaultResourceLimits:MaxProcesses200 单个容器最大进程数 CodeInterpreter:MaxResourceLimits:*null (不限制) 硬上限,防止 AI 请求超额资源 CodeInterpreter:SessionIdleTimeoutSeconds1800 (30分钟) 空闲会话自动回收时间 CodeInterpreter:DefaultTimeoutSeconds300 (5分钟) 单次命令执行超时
配置项 默认值 说明

默认的 2 核 2GB 配置可以完成大多数日常任务(数据分析、图表生成、文档处理等)。如果你的场景需要更多资源(如视频处理、大规模计算),可以适当放宽;反之,如果是公开服务,建议收紧限制。

3. 文件上传限制

AI 执行代码后可以将生成的文件(artifacts)回传给用户。为防止滥用,Chats 也提供了相应限制:

CodeInterpreter:MaxArtifactsFilesToUpload50 每轮最多回传文件数 CodeInterpreter:MaxSingleUploadBytes157286400 (150MB) 单个文件最大大小 CodeInterpreter:MaxTotalUploadBytesPerTurn314572800 (300MB) 单轮总上传大小
配置项 默认值 说明

4. 其他建议

  • 定期清理镜像:使用 docker image prunedocker system prune 定期清理未使用的镜像和悬挂资源。
  • 监控与告警:对 Docker 宿主机的 CPU、内存、磁盘使用率设置监控告警。
  • 用户权限管理:仅对信任的用户开放代码执行功能,在模型配置中谨慎分配权限。

更多配置细节请参考:配置说明文档

结语

希望这篇文档能帮你顺利部署 Chats 1.10,体验完全私有化、可控的代码解释器功能。

感谢阅读!喜欢的朋友请给我的 GitHub 项目一个 star:
https://github.com/sdcb/chats

这是完整的更新日志,包含更多技术细节:
https://github.com/sdcb/chats/blob/main/doc/zh-CN/release-notes/README.md

有什么想法也欢迎在评论区留言交流,也欢迎加入我的新创建的微信群:

如果你更习惯用 QQ 的话,也可以加入 Chats QQ 群:498452653,我们一起探索更多 AI 技术硬核玩法。