Sdcb Chats 1.10 私有化代码执行器部署教程
之前我写了这篇博客《复刻 ChatGPT 高级数据分析!Sdcb Chats 1.10 重磅发布:能分析Excel、做PPT》,向大家介绍了 Chats 1.10 最激动人心的新功能——内置代码执行器(Code Interpreter)。
文章发出后,反响很热烈,但也有很多朋友在问:“这功能看着很强,但到底怎么部署及其配置啊?”
回头看了一下前一篇文章,确实光顾着兴奋地介绍功能,把最关键的部署实操给略过了。为了让大家都能尽快用上这个“硬核”功能,今天特地补上这篇详细的保姆级部署配置文档。
想要在 Chats 中使用“代码执行”功能,主要分两步走:
- 基础设施层:让 Chats 服务能连上 Docker Daemon(因为代码是在隔离的 Docker 容器中运行的)。
- 应用配置层:在 Chats 后台和前台开启相应的功能开关。
第一部分:连接 Docker Daemon
Chats 的代码执行器原理是:当模型需要执行代码时,Chats 会动态创建一个一次性的 Docker 容器(沙箱),在里面运行代码并获取结果。因此,Chats 必须拥有管理 Docker 的权限。
这里主要介绍两种最常见的场景:纯 Docker 环境(Linux 服务器)和 Windows 下的 Docker Desktop。
场景一:Linux 服务器 / 纯 Docker 环境
这是生产环境最常用的方式。你只需要将宿主机的 Docker Socket 挂载到 Chats 容器中即可。

1. Docker 镜像说明
Chats 的 Docker 镜像托管在 sdcb/chats,我们提供了完善的多架构支持:
| 描述 | Docker 镜像 Tag | 说明 |
|---|---|---|
| Latest(推荐) | latest |
包含最新稳定版功能,多架构支持 |
| 指定完整版本 | {version} (如 1.10.0) |
生产环境推荐锁定版本 |
| 指定主/次版本 | {major} / {major.minor} |
如 1, 1.10,自动更新到该系列最新版 |
| 特定平台 | ...-linux-x64 等 |
仅在必须手动指定架构时使用 |
关于 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 引擎。
- 下载程序:下载并解压对应的
chats-win-x64.zip。 - 启动命令:使用
--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,哪些模型允许使用这个能力。
- 以管理员身份登录 Chats。
- 进入后台管理 -> 模型配置。
- 展开你想要的模型提供商->模型密钥,然后编辑你想要使用的模型(例如deepseek-v3.2)。
- 注意:任何支持 Tool Call (工具调用) 的模型 API 都可以,无论是 OpenAI 原生的 Chat Completions,还是Responses API/Messages API。
- 在功能列表中,找到并勾选 “代码执行 (Code Execution)”。

⚠️ 特别注意:用户权限分配
很多第一次添加模型的朋友容易忽略这一点:启用功能后,必须明确授权给用户。
在模型编辑页面的底部,展开用户列表 (User Access),确保给你自己的账号(或需要使用的用户)勾选上权限。如果不勾选,你在前台是看不到这个模型的,或者无法调用该功能。

2. 前端配置:开启会话开关
后端准备就绪后,最后一步是在聊天界面开启使用。
- 回到聊天 (Chat) 界面。
- 在顶部的模型配置栏(通常显示模型名称的地方),点击展开配置面板。
- 找到 “代码执行” 开关,将其打开。

效果演示
一切就绪!现在你可以像使用 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:MemoryBytes |
2147483648 (2GB) |
单个容器内存上限 |
CodeInterpreter:DefaultResourceLimits:CpuCores |
2.0 |
单个容器 CPU 核数 |
CodeInterpreter:DefaultResourceLimits:MaxProcesses |
200 |
单个容器最大进程数 |
CodeInterpreter:MaxResourceLimits:* |
null (不限制) |
硬上限,防止 AI 请求超额资源 |
CodeInterpreter:SessionIdleTimeoutSeconds |
1800 (30分钟) |
空闲会话自动回收时间 |
CodeInterpreter:DefaultTimeoutSeconds |
300 (5分钟) |
单次命令执行超时 |
默认的 2 核 2GB 配置可以完成大多数日常任务(数据分析、图表生成、文档处理等)。如果你的场景需要更多资源(如视频处理、大规模计算),可以适当放宽;反之,如果是公开服务,建议收紧限制。
3. 文件上传限制
AI 执行代码后可以将生成的文件(artifacts)回传给用户。为防止滥用,Chats 也提供了相应限制:
| 配置项 | 默认值 | 说明 |
|---|---|---|
CodeInterpreter:MaxArtifactsFilesToUpload |
50 |
每轮最多回传文件数 |
CodeInterpreter:MaxSingleUploadBytes |
157286400 (150MB) |
单个文件最大大小 |
CodeInterpreter:MaxTotalUploadBytesPerTurn |
314572800 (300MB) |
单轮总上传大小 |
4. 其他建议
- 定期清理镜像:使用
docker image prune或docker 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 技术硬核玩法。

浙公网安备 33010602011771号