乐于分享
好东西不私藏

开源.NET桌面AI助手:Netor.Cartana

开源.NET桌面AI助手:Netor.Cartana

大家好,我是Edison。

今天和大家推荐一个.NET开源项目,它不是又一个聊天框,而是一只真正能接管工具链的本地AI大龙虾!

传送门先行:https://github.com/sunyonghuan/Netor.Cartana

这东西到底狠在哪?

现在的 AI 工具太多了:网页套壳、聊天侧边栏、固定模型入口、收费套餐、插件半残废。看起来热闹,真干活的时候还是要你自己复制、粘贴、切窗口、查日志、改文件、接接口。

Cortana 的目标不是陪你聊天,而是替你把活干完。

它是一个本地 AI 宿主,也是一套可扩展的工具调度系统。它能把模型、插件、MCP、WebSocket、文件系统、语音、编辑器工作流和多智能体编排揉到一起,让 AI 不只是“回答问题”,而是能真正调工具、读上下文、改项目、接外部系统、沉淀工作流。

一句话:

别人做 AI 聊天窗口,Cortana 做 AI 工作底座。

Cortana能给你什么?

场景
Cortana 的玩法
想换模型
不被平台绑架,OpenAI-compatible、国产模型、企业网关、私有 API 都能接。
想接 Copilot / 编辑器
内置 Ollama 本地协议代理,把远程模型伪装成本地模型送进现有工具链。
想让 AI 真干活
插件、MCP、文件工具、脚本工具、窗口工具、Office 工具都可以成为 AI 的手脚。
想多角色协作
输入 @ 调用子智能体,每个智能体有独立模型、提示词和工具集。
想保留本地数据
会话、配置、工作区、插件、资源都在本机和工作区目录内。
想排查 AI 工具链
AI trace 可记录请求、响应、流式片段和工具协议诊断。
想扩展能力
Native / Process / MCP 三条扩展路线,能本地跑,也能接远程服务。

这不是“多一个按钮”的小工具,而是把 AI 从聊天框里放出来,让它真正摸到你的工程、文件、插件、模型和外部系统。

Cortana能给你什么?

模型入口自由:把你自己的模型送入工具链

很多 AI 软件最烦的一点就是:模型入口被平台锁死。

你想用国产模型?等适配。 你想用企业内部模型?自己写插件。 你想用私有部署?体验砍半。 你想把模型接进编辑器?又是一轮配置地狱。

Cortana 直接走另一条路:

http://localhost:11434

它内置 Ollama 本地协议代理,可以把 Cortana 里配置好的远程模型、企业模型、国产模型、私有 API 模型,对外伪装成本机 Ollama 模型。

外部工具以为自己在调用本地 Ollama,实际上请求由 Cortana 转发到你真正想用的模型。

支持端点包括:

  • GET /api/version
  • GET /api/tags
  • POST /api/chat
  • POST /api/generate
  • POST /api/show
  • GET /v1/models
  • POST /v1/chat/completions

这意味着什么?

不重写 VS Code,不魔改 Visual Studio,不再造半成品 IDE。Cortana 只做最关键的一件事:把模型选择权还给你。

编辑器继续做编辑器擅长的事:代码补全、上下文理解、文件编辑、任务执行。Cortana 在背后负责把你想用的模型送进去。

多智能体协作:不是一个AI在硬撑,而是一队AI在干活

Cortana 支持 @智能体 调用。

每个智能体都可以有自己的:

  • 模型
  • 提示词
  • 插件工具
  • MCP 工具
  • 工作职责

你可以让一个智能体负责搜索,一个负责运维,一个负责写文档,一个负责代码分析。主对话负责调度,它们各自带工具干自己的活。

比如:

  • @服务器管理
    :连接服务器、检查负载、查日志、生成巡检报告。
  • @谷歌搜索
    :联网搜索、筛资料、整理引用。
  • @文档助手
    :把零散结果整理成规范文档。
  • @脚本执行
    :运行 C# 脚本或本地自动化任务。

这就不是“问一个模型一句话”了,而是把 AI 拆成岗位:有人查资料,有人动手,有人总结,有人复盘。

一个聊天机器人很普通,一群带工具的智能体才像真正的数字员工。

插件系统:让AI长出手脚

只会聊天的 AI,最多是顾问。 能调工具的 AI,才像员工。

Cortana 当前推荐三条扩展路线:

通道
适合什么
亮点
Native
C/C++/Rust/C# AOT、高性能本地能力
NativeHost 子进程承载,崩溃隔离。
Process
跨语言可执行程序、需要完整运行时生态的工具
stdio NDJSON 协议,适合把外部程序变成 AI 工具。
MCP
外部工具服务、远程系统、标准化工具生态
支持 stdio / SSE / streamable-http。

本地工作区插件默认部署到:

.cortana/plugins/

仓库里已经维护了一批真实插件工程:

  • Cortana.Plugins.Bt
    :宝塔面板运维工具。
  • Cortana.Plugins.GoogleSearch
    :谷歌搜索。
  • Cortana.Plugins.Memory
    :记忆引擎。
  • Cortana.Plugins.Office
    :Word / Excel / PowerPoint 文档工具。
  • Cortana.Plugins.Reminder
    :定时提醒。
  • Cortana.Plugins.ScriptRunner
    :C# 脚本运行器。
  • Cortana.Plugins.WsBridge
    :WebSocket 中转。
  • Cortana.Plugins.ApplicationLauncher
     / WindowManagement:本地应用与窗口管理。

插件不是摆设。它们就是 AI 的手、脚、眼睛和工具箱。

聊天历史是可恢复的工具链上下文

Cortana 在 v1.2.6 之后把聊天消息内容结构化持久化:

  • 普通文本
  • function call
  • function result
  • 工具结果
  • 生成资源

都可以写入 SQLite,并通过结构化 ContentsJson 恢复。

v1.3.3 又进一步修复了 OpenAI-compatible / DeepSeek 多工具结果场景下的工具历史重排问题,避免同一条 tool message 被重复追加导致协议错误。

同时增加 AI trace:

.cortana/logs/ai-traces

可诊断:

  • orphan tool message
  • missing tool response
  • tool message 不相邻
  • assistant tool_calls 与 tool result 的 callId 映射
  • 请求、响应、流式片段、异常堆栈

这意味着 Cortana 不是“跑通 Demo 就算完”,而是在认真处理真实 AI 工具链里最麻烦的协议细节。

语音能力:让本地助手开口和听话

语音模块位于 Src/Netor.Cortana.Voice,基于 Sherpa-ONNX:

  • KWS:关键词唤醒
  • STT:语音识别
  • TTS:语音合成

当前模型目录:

Src/sherpa_models/├── KWS/├── STT/└── TTS/

模型文件不提交到 Git,发布前需要确保本地目录完整。

语音能力后续也在向插件化方向演进:KWS / STT / TTS 都可以独立为 Process 插件,模型跟随插件包发布,主程序只保留语音编排。

这条路一旦打通,Cortana 的主程序会更轻,语音能力也能像普通插件一样安装、替换、升级。

技术架构

模块
说明
Src/Netor.Cortana.UI
当前主程序,Avalonia UI、系统设置、托盘、工作区、历史面板、代理窗口。
Src/Netor.Cortana.AI
AI 编排、模型接入、Agent、聊天历史组装、工具链协议处理、AI trace。
Src/Netor.Cortana.Entitys
实体、SQLite 数据库、系统设置、事件参数、共享常量。
Src/Netor.Cortana.Plugin
插件加载、本地插件通道、MCP 接入、内置文件工具等。
Src/Netor.Cortana.Networks
WebSocket 服务、Ollama/OpenAI 兼容代理网络层。
Src/Netor.Cortana.Voice
KWS/STT/TTS 语音能力。
Src/Plugins
Native/Process 插件 SDK、NativeHost、源码生成器、调试器。
Plugins/Src
随仓库维护的实际插件工程。
类型
技术
运行时
.NET 10
UI
Avalonia 12
发布
Native AOT、Self-contained、win-x64
AI
Microsoft.Extensions.AI、Microsoft.Agents.AI、OllamaSharp
MCP
ModelContextProtocol 1.2.0
数据
SQLite(纯 ADO.NET,AOT 友好)
事件
Netor.EventHub
日志
Microsoft.Extensions.Logging + Serilog File
语音
Sherpa-ONNX

许可证

本项目采用 MIT 许可证开源,可自由使用、修改和分发。
年终总结:Edison的2024年终总结
数字化转型:我在传统企业做数字化转型
C#刷算法题C#刷剑指Offer算法题系列文章目录
C#刷设计模式C#刷23种设计模式系列文章目录
.NET面试:.NET开发面试知识体系