作者用 23 年 C# 经验,从头构建了一个透明的开源 AI 编程助手 Litos,采用「大脑-环境-界面」三层架构,支持多模型提供商切换。
Hi dev.to,这是我的第一篇文章。
我写 C#/.NET 已经超过 23 年了,过去一个月左右我一直在构建 Litos —— 一个小型、透明的 AI 编程 Agent,完全使用纯 C#/.NET 编写。不使用 Python 或 TypeScript。目标不是与市面上那些大型编程 Agent 竞争,而是通过自己动手构建,真正理解它内部是如何工作的。
这篇文章只讲基础:什么是 "Agent 循环",以及 Litos AI 编程 Agent 是如何组织的。
任何 AI 编程 Agent 的核心都是一个令人惊讶的简单循环。一个"回合"始于你发送一条消息,然后 Agent 就会持续运行——向模型请求响应、执行模型调用的任何工具(如读取文件、编辑代码或运行 shell 命令)、将结果反馈给模型,如此反复——直到模型返回一个普通答案且不再发出工具调用。
就这样。这个循环不断重复,伴随着一个不断增长的、记录迄今为止发生的一切的转录文本(context),使得模型能够读取你的代码、进行编辑、运行命令并检查自己的成果。
受 Tau 的"大脑、环境、面孔"三分法以及 Mario Zechner 的 π 启发,我将项目分成了三个部分:
The brain(Litos.Agent)—— 核心循环、转录文本和上下文管理。它不知道也不关心自己是在与 Anthropic、OpenAI 还是 Gemini 通信,也不关心是运行在终端还是桌面应用中。
The environment(Litos.Tools、Litos.Providers.*)—— 实际的能力:文件编辑、shell 访问、网络搜索,以及对你所配置的任意 LLM 提供者的调用。
The face(Litos.Gui、Litos.Api、Litos.Console)—— 薄薄的 UI 层。一个 Avalonia 桌面应用、一个 HTTP/API 主机(带一个可用的 Telegram 桥接),以及一个终端 UI,它们的底层都驱动着完全相同的循环。
将这三部分分离让推理和理解变得容易得多——添加新的提供者或新的 UI 完全不需要触碰核心循环。
我有两个短视频展示它端到端的工作过程:
Built an AI Coding Agent in Pure C#/.NET (No Python!) — Watch It Build a WinForms 15-Puzzle Game
Built an AI Agent in Pure C#/.NET — Here it is working through Telegram creating Mermaid Diagrams
项目完全开源:github.com/nitinmms/LitosAiCodingAgent
它目前仍处于大力开发中——有些部分(如控制台 UI 和几个提供者适配器)尚未完成,README 也坦诚地说明了这一点。但桌面编程 Agent 以及桌面/Telegram 体验目前已经可以正常使用。
如果大家感兴趣,我会跟进更多关于各个细节的文章(上下文管理、MCP 支持等)。