为大模型 MCP Code Interpreter 而生:C# Runner 开源发布
在7月初,我立下了一个 Flag:要做一个专门为大语言模型(LLM)设计的 C# 运行器 MCP (Model-Protocol-Context)。我的小小执念,是希望 C# 能够像 Python 一样,成为大模型世界里的一等公民。经过一段时间的构思、踩坑和开发,今天,我非常高兴地向大家宣布:这个项目—— C# Runner 已经正式开源发布了!
这是一个高性能、高安全性的 C# 代码在线执行平台(沙箱),专为大语言模型(LLM)的 Function Calling、在线代码编辑器、动态脚本执行等场景而设计。我的目标很简单:为 C# 在 AI 浪潮中争得一席之地,使其成为像 Python 一样被大模型轻松调度的“一等公民”。
这个项目的诞生,源于我此前对实现“毫秒级、高安全性”执行 C# 代码方案的大量研究和实验。现在,我将这些成果凝聚成了 C# Runner。
项目地址:https://github.com/sdcb/csharp-runner
缘起:一个毫秒级的梦想
一切始于一个简单而又极具挑战性的目标:
在「冷启动」场景下,把一段未知、可能不可信的 C# 代码编译并执行完毕的时间控制在 100ms 以内(理想 < 20ms),同时保证绝对的安全、可伸缩和跨平台。
现在大模型的 Function Calling 或 Code Interpreter 基本都是跑 Python,这让我很不甘心。我希望构建一个服务,能让 C# 代码的执行体验如丝般顺滑,快到毫秒级别;同时它必须固若金汤,即使用户提交了恶意代码,也无法对服务器造成任何危害。
在很多现代应用场景中,我们都渴望能动态地执行用户提供的 C# 代码。然而,这面临着两大核心挑战:
[*]性能:常规的 dotnet run 方式涉及到 MSBuild、项目还原等重度操作,耗时通常在数百甚至上千毫秒,完全无法满足交互式场景的性能要求。
[*]安全:执行一段未知的、可能不可信的代码,无异于在服务器上“裸奔”。必须有万无一失的沙箱机制来防止恶意代码破坏系统、窃取数据或滥用资源。
C# Runner 正是为解决这一对核心矛盾而生。
效果演示
为了直观展示 C# Runner 的性能,我将一个示例网站部署到了 Azure 上。并且为了增加挑战,我只选择了一台 1GB 内存的、Azure 上最便宜的虚拟机。
演示地址:https://csharp.starworks.cc/
在这个网站上,你可以直接输入 C# 代码并执行,体验毫秒级的响应速度。无论是简单的 Console.WriteLine,还是复杂的计算逻辑,都能在极短时间内完成。
它默认已经写了一段简单的代码,你可以去修改它,然后点击 Run Code 按钮,执行结果会显示在下方的 Output 区域:
如果你细心观察,会发现这个 Output 区域是实时更新的。这得益于 C# Runner 对流式输出(Server-Sent Events, SSE)的支持,你可以实时看到代码的 stdout、stderr 和最终结果。
这是目前这台 Azure 虚拟机的 htop 负载情况,资源占用非常低:
C# Runner 是如何工作的?
为了同时实现极致的性能和强大的安全性,C# Runner 采用了基于 Docker 的 Host-Worker 架构。
[*]Worker:每个 Worker 都是一个独立的、轻量级的 Docker 容器。它是一个已经加载了 Roslyn Scripting 环境的 Web 服务,负责实际编译和执行 C# 代码。
[*]Host:Host 是整个系统的入口和“大脑”。它维护着一个由多个 Worker 组成的“资源池”。这些 Worker 在系统启动时就已经提前创建并预热,随时可以接收任务。
当一个代码执行请求到达 Host 时,Host 会通过负载均衡策略(如轮询)选择一个空闲的 Worker,并将代码交给它执行。这种“池化 + 预热”的模式,完美规避了 Docker 冷启动的性能开销,使得终端用户可以享受到毫秒级的响应速度。
✨ 核心特性一览
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]