LLMTornado
LLM Tornado 是一款专为 .NET 开发者打造的开源 SDK,旨在帮助用户快速构建、编排和部署 AI 智能体及工作流。它有效解决了开发过程中面临的模型接入繁琐、不同厂商 API 差异大以及本地部署复杂等痛点,让开发者无需依赖各厂商专用的重型 SDK,即可通过统一的代码接口轻松集成全球 30 多家主流 AI 服务商(如 OpenAI、Anthropic、Google、阿里通义千问等)及向量数据库。
该工具特别适合熟悉 C# 和 .NET 生态的软件工程师与架构师,无论是想快速搭建一个简单的聊天机器人,还是设计能够自主执行复杂任务的编码智能体,都能从中获益。LLM Tornado 的核心亮点在于其“提供商无关”的设计理念:开发者只需编写一次业务逻辑,通过切换模型名称即可在不同 AI 后端间无缝迁移。此外,它还内置了强大的智能体编排引擎,支持基于图结构的任务协调、并行执行及可视化导出,并原生兼容 vLLM、Ollama 等本地部署方案。凭借强类型的代码支持和对最新 AI 特性的即时跟进,LLM Tornado 让 .NET 开发者能以极高的效率将创意转化为落地的 AI 应用。
使用场景
某 .NET 开发团队正致力于构建一个能自动处理客户工单、查询知识库并生成回复的智能客服系统。
没有 LLMTornado 时
- 多模型适配成本高:若要切换或对比 OpenAI、Azure 与国产大模型(如 Moonshot),需分别引入各厂商独立的 SDK,导致项目依赖臃肿且代码耦合严重。
- 智能体编排复杂:实现“意图识别→知识检索→回复生成”的多步工作流时,需手动编写大量状态管理代码来协调不同任务节点,开发周期长达数周。
- 本地部署困难:尝试将模型迁移至本地 Ollama 或 vLLM 以保护数据隐私时,因请求格式差异需重写底层通信逻辑,维护难度极大。
- 功能迭代缓慢:每当需要新增向量数据库连接或调整 Agent 交互逻辑,都涉及到底层基础设施的改动,难以快速响应业务需求。
使用 LLMTornado 后
- 统一接口屏蔽差异:借助内置的 30+ 连接器,仅需修改配置即可在 Alibaba、Google 或本地模型间无缝切换,彻底摆脱对厂商专属 SDK 的依赖。
- 可视化编排工作流:利用 Orchestrator 和 Runner 核心概念,通过简洁的构建器模式即可定义复杂的 Agent 协作图,将原本数周的编排工作缩短至几分钟。
- 原生支持本地化:内置对 vLLM 和 Ollama 的请求转换支持,无需额外代码即可将云端流程平滑迁移至本地私有环境,保障数据安全。
- 敏捷开发与扩展:基于 Provider-agnostic 设计,新增向量库连接或调整 Agent 手递手(handoffs)逻辑只需几行代码,显著提升迭代效率。
LLMTornado 通过统一的抽象层和强大的编排能力,让 .NET 开发者能以最低成本构建灵活、可移植的企业级 AI 应用。
运行环境要求
- Windows
- Linux
- macOS
未说明 (作为 .NET SDK,GPU 需求取决于所选的后端模型服务,如本地部署的 vLLM、Ollama 或云端 API)
未说明

快速开始
LLM Tornado
只需一个工具包和内置的30多种API提供商及向量数据库连接器,即可在几分钟内构建AI智能体和工作流。
LLM Tornado是一款与供应商无关的.NET SDK,可帮助开发者构建、编排并部署AI智能体和工作流。无论您是在构建简单的聊天机器人,还是自主编码智能体,LLM Tornado都能为您提供所需的工具,并与AI生态系统实现无与伦比的集成。
✨ 特性
- 使用任意提供商:内置连接器支持:阿里巴巴、Anthropic、Azure、Blablador、Cohere、DeepInfra、DeepSeek、Google、Groq、MiniMax、Mistral、MoonshotAI、OpenAI、OpenRouter、Perplexity、Requesty、Upstage、Voyage、xAI、Z.ai等。这些连接器通过强类型代码暴露所有细分和独特的功能,并始终紧跟最新的AI发展。无需依赖任何第一方SDK。特性矩阵详细记录了对各个端点的支持情况。
- 一流的本地部署:可通过集成的请求转换支持,与vLLM、Ollama或LocalAI一起运行。
- 智能体编排:借助三个核心概念——
Orchestrator(图)、Runner(节点)和Advancer(边)——协调专业智能体,使其能够自主执行复杂任务。提供交接机制、并行执行、Mermaid导出以及构建者模式,让操作更加简单。 - 快速开发:只需编写一次管道,通过更改模型名称即可在任何提供商上执行。将您的编辑器连接到Context7或FSKB,即可通过即时访问向量化文档来加速编码。
- 完全多模态:支持文本、图像、视频、文档、URL和音频的输入与输出。
- 前沿协议:
- 向量数据库:内置连接器支持Chroma、PgVector、Pinecone、Faiss和QDrant。
- 集成性:与Microsoft.Extensions.AI的互操作性使Tornado能够通过
LlmTornado.Microsoft.Extensions.AI插入到Semantic Kernel应用中。 - 企业级就绪:配备护栏框架,在提交请求之前可对其进行预览和转换。支持Open Telemetry。稳定的API。
➡️ 几分钟内开始使用 – 快速入门 ⬅️
🔥 2026年新闻
- 2月26日 - 实现了MiniMax连接器。新增压缩端点,可与LLM Tornado内置的压缩功能协同使用。开始着手开发ACP。
- 1月26日 - Ivy Framework使用
LlmTornado.Agents构建其AI组件。为Mistral实现了/ocr端点。对所有支持的提供商扩展了/files端点支持。
新闻 2025
- 25/12 - 实现了 Upstage 连接器。为 OpenAI、Anthropic 和 Google 实现了
/batch端点。/videos端点现在支持 OpenAI/Sora。 - 25/11 - Flowbite Blazor 使用 LLM Tornado 构建了他们的 AI 聊天 WASM 组件。实现了 Requesty 连接器。为所有支持该功能的提供商实现了
/tokenize端点。 - 25/10 - LLM Tornado 被 JetBrains 收录于 dotInsights。Microsoft 在 面向初学者的 .NET 生成式 AI 中使用了 LLM Tornado。与 Microsoft.Extensions.AI 的互操作性正式推出。实现了 Skills 协议。
- 25/09 - 维护者 Matěj Štágl 和 John Lomba 在 .NET AI 社区站会 中讨论了 LLM Tornado。实现了 PgVector 和 ChromaDb 连接器。
- 25/08 - ProseFlow 是用 LLM Tornado 构建的。Sciobot——一个由 LLM Tornado 构建的教育者用 AI 平台,已被 Cohere Labs 催化器资助计划 接受。实现了 A2A 协议。
- 25/07 - 贡献者 Shaltiel Shmidman 在 Asp.net 社区站会 中谈到了 LLM Tornado。新增了对 Z.ai、阿里巴巴 和 Blablador 的连接器。
- 25/06 - 添加了 C# 委托作为代理工具 系统,使应用程序无需手动编写 JSON 模式。实现了 MCP 协议。
- 25/05 - 添加了 聊天转响应 系统,允许从
/chat端点使用/responses专属模型。 - 25/04 - 新增了对 DeepInfra、DeepSeek 和 Perplexity 的连接器。
- 25/03 - 实现了 助手 功能。
- 25/02 - 新增了对 OpenRouter、Voyage 和 xAI 的连接器。
- 25/01 - 实现了严格 JSON 模式,新增了 Groq 和 Mistral 连接器。
⭐ 示例
⚡ 入门指南
通过 NuGet 安装 LLM Tornado:
dotnet add package LlmTornado
可选插件:
dotnet add package LlmTornado.Agents # 代理框架,更高层次的抽象
dotnet add package LlmTornado.Mcp # 模型上下文协议 (MCP) 集成
dotnet add package LlmTornado.A2A # 代理间交互 (A2A) 集成
dotnet add package LlmTornado.Microsoft.Extensions.AI # 语义核互操作性
dotnet add package LlmTornado.Contrib # 提高生产力和生活质量的增强功能
🪄 快速推理
在多个提供商之间进行推理非常简单,只需更改 ChatModel 参数即可。Tornado 实例可以使用多个 API 密钥构建,系统会根据模型自动选择正确的密钥:
TornadoApi api = new TornadoApi([
// 注意:删除你不会使用的提供商对应的行
new (LLmProviders.OpenAi, "OPEN_AI_KEY"),
new (LLmProviders.Anthropic, "ANTHROPIC_KEY"),
new (LLmProviders.Cohere, "COHERE_KEY"),
new (LLmProviders.Google, "GOOGLE_KEY"),
new (LLmProviders.Groq, "GROQ_KEY"),
new (LLmProviders.DeepSeek, "DEEP_SEEK_KEY"),
new (LLmProviders.Mistral, "MISTRAL_KEY"),
new (LLmProviders.XAi, "XAI_KEY"),
new (LLmProviders.Perplexity, "PERPLEXITY_KEY"),
new (LLmProviders.Voyage, "VOYAGE_KEY"),
new (LLmProviders.DeepInfra, "DEEP_INFRA_KEY"),
new (LLmProviders.OpenRouter, "OPEN_ROUTER_KEY")
]);
// 此示例遍历多个模型,给每个模型相同的任务,并打印结果。
List<ChatModel> models = [
ChatModel.OpenAi.O3.Mini, ChatModel.Anthropic.Claude37.Sonnet,
ChatModel.Cohere.Command.RPlus, ChatModel.Google.Gemini.Gemini2Flash001,
ChatModel.Groq.Meta.Llama370B, ChatModel.DeepSeek.Models.Chat,
ChatModel.Mistral.Premier.MistralLarge, ChatModel.XAi.Grok.Grok2241212,
ChatModel.Perplexity.Sonar.Default
];
foreach (ChatModel model in models)
{
string? response = await api.Chat.CreateConversation(model)
.AppendSystemMessage("你是一位算命师。")
.AppendUserInput("我的未来会怎样?")
.GetResponse();
Console.WriteLine(response);
}
💡 除了传递强类型模型外,你也可以直接传入字符串:await api.Chat.CreateConversation("gpt-5-mini"),Tornado 会自动解析提供商。
❄️ 供应商扩展
Tornado 拥有一个强大的 VendorExtensions 概念,可以应用于各种端点,并且是强类型的。许多提供商都提供独特或小众的 API,通常能够实现其他方式无法实现的用例。例如,我们可以为 Anthropic 的 Claude 3.7 设置推理预算:
public static async Task AnthropicSonnet37Thinking()
{
Conversation chat = Program.Connect(LLmProviders.Anthropic).Chat.CreateConversation(new ChatRequest
{
Model = ChatModel.Anthropic.Claude37.Sonnet,
VendorExtensions = new ChatRequestVendorExtensions(new ChatRequestVendorAnthropicExtensions
{
Thinking = new AnthropicThinkingSettings
{
BudgetTokens = 2_000,
Enabled = true
}
})
});
chat.AppendUserInput("解释如何解微分方程。");
ChatRichResponse blocks = await chat.GetResponseRich();
if (blocks.Blocks is not null)
{
foreach (ChatRichResponseBlock reasoning in blocks.Blocks.Where(x => x.Type is ChatRichResponseBlockTypes.Reasoning))
{
Console.ForegroundColor = ConsoleColor.DarkGray;
Console.WriteLine(reasoning.Reasoning?.Content);
Console.ResetColor();
}
foreach (ChatRichResponseBlock reasoning in blocks.Blocks.Where(x => x.Type is ChatRichResponseBlockTypes.Message))
{
Console.WriteLine(reasoning.Message);
}
}
}
🔮 自托管/自定义提供商
除了使用商业 API 外,用户还可以借助 大量可用工具轻松搭建自己的推理服务器。以下是一个使用 Ollama 进行流式响应的简单示例,但同样的方法也可用于任何自定义提供商:
public static async Task OllamaStreaming()
{
TornadoApi api = new TornadoApi(new Uri("http://localhost:11434")); // 默认 Ollama 端口,如有需要可在第二个参数中传入 API 密钥
await api.Chat.CreateConversation(new ChatModel("falcon3:1b")) // <-- 替换为您使用的模型
.AppendUserInput("为什么天空是蓝色的?")
.StreamResponse(Console.Write);
}
如果需要对请求有更多控制,比如添加自定义头部信息,可以创建一个内置提供商的实例。这对于 Amazon Bedrock、Vertex AI 等自定义部署非常有用。
TornadoApi tornadoApi = new TornadoApi(new AnthropicEndpointProvider
{
Auth = new ProviderAuthentication("ANTHROPIC_API_KEY"),
// {0} = 端点, {1} = 操作, {2} = 模型名称
UrlResolver = (endpoint, url, ctx) => "https://api.anthropic.com/v1/{0}{1}",
RequestResolver = (request, data, streaming) =>
{
// 默认情况下,提供自定义请求解析器会忽略 beta 头部
// request 是 HttpRequestMessage,data 包含有效载荷
},
RequestSerializer = (data, ctx) =>
{
// data 是 JObject,可以在序列化为字符串之前进行修改。
}
});
https://github.com/user-attachments/assets/de62f0fe-93e0-448c-81d0-8ab7447ad780
🔎 高级推理
流式处理
Tornado 提供了三个抽象层次,细节越多,复杂性也越高。对于只需要纯文本的简单场景,可以用简洁的格式表示:
await api.Chat.CreateConversation(ChatModel.Anthropic.Claude3.Sonnet)
.AppendSystemMessage("你是一位算命师。")
.AppendUserInput("我的未来会怎样?")
.StreamResponse(Console.Write);
抽象层次如下:
Response(聊天为string,嵌入为float[]等)ResponseRich(工具、模态、用量等元数据)ResponseRichSafe(与第 2 层相同,但在网络层面不会抛出异常,例如当提供商返回内部错误或完全无响应时)
带丰富内容的流式处理(工具、图像、音频等)
当纯文本不足以满足需求时,可以切换到 StreamResponseRich 或 GetResponseRich() API。模型请求的工具可以在稍后解析,而无需再返回给模型。这在我们使用工具但不打算继续对话的情况下非常有用:
// 请求模型生成两张图片,并流式输出结果:
public static async Task GoogleStreamImages()
{
Conversation chat = api.Chat.CreateConversation(new ChatRequest
{
Model = ChatModel.Google.GeminiExperimental.Gemini2FlashImageGeneration,
Modalities = [ ChatModelModalities.Text, ChatModelModalities.Image ]
});
chat.AppendUserInput([
new ChatMessagePart("生成两张图片:一头狮子和一只松鼠")
]);
await chat.StreamResponseRich(new ChatStreamEventHandler
{
MessagePartHandler = async (part) =>
{
if (part.Text is not null)
{
Console.Write(part.Text);
return;
}
if (part.Image is not null)
{
// 在我们的测试中,这里会调用 Chafa 将原始 base64 数据转换为 Sixels 格式
await DisplayImage(part.Image.Url);
}
},
BlockFinishedHandler = (block) =>
{
Console.WriteLine();
return ValueTask.CompletedTask;
},
OnUsageReceived = (usage) =>
{
Console.WriteLine();
Console.WriteLine(usage);
return ValueTask.CompletedTask;
}
});
}
工具即时解析
模型请求的工具可以立即解析并返回结果。这样做的好处是可以自动继续对话:
Conversation chat = api.Chat.CreateConversation(new ChatRequest
{
Model = ChatModel.OpenAi.Gpt4.O,
Tools =
[
new Tool(new ToolFunction("get_weather", "获取当前天气", new
{
type = "object",
properties = new
{
location = new
{
type = "string",
description = "需要查询天气信息的位置。"
}
},
required = new List<string> { "location" }
}))
]
})
.AppendSystemMessage("你是一位乐于助人的助手")
.AppendUserInput("今天布拉格的天气怎么样?");
ChatStreamEventHandler handler = new ChatStreamEventHandler
{
MessageTokenHandler = (x) =>
{
Console.Write(x);
return Task.CompletedTask;
},
FunctionCallHandler = (calls) =>
{
calls.ForEach(x => x.Result = new FunctionResult(x, "预计中午前后会有小雨。", null));
return Task.CompletedTask;
},
AfterFunctionCallsResolvedHandler = async (results, handler) => { await chat.StreamResponseRich(handler); }
};
await chat.StreamResponseRich(handler);
延迟解析的工具
我们也可以不解析工具调用,而是推迟或结束对话。这对于提取类任务非常有用,因为我们只关心工具调用:
Conversation chat = api.Chat.CreateConversation(new ChatRequest
{
Model = ChatModel.OpenAi.Gpt4.Turbo,
Tools = new List<Tool>
{
new Tool
{
Function = new ToolFunction("get_weather", "获取当前天气")
}
},
ToolChoice = new OutboundToolChoice(OutboundToolChoiceModes.Required)
});
chat.AppendUserInput("你是谁?"); // 用户提出了无关问题,但我们强制模型使用工具
ChatRichResponse response = await chat.GetResponseRich(); // 响应包含一个函数类型的块
GetResponseRichSafe() API 也可用,它保证不会在网络层面抛出异常。响应被封装在一个包含额外信息的网络层包装器中。对于生产环境中的用例,可以在所有产生 HTTP 请求的 Tornado API 上使用 try {} catch {} 结构,或者直接使用安全的 API。
🌐 MCP
要使用模型上下文协议,需安装 LlmTornado.Mcp 适配器。安装后,ModelContextProtocol 类型上将提供新的互操作方法。以下示例使用了在 示例 MCP 服务器 上定义的 GetForecast 工具:
[McpServerToolType]
public sealed class WeatherTools
{
[McpServerTool, Description("获取某个地点的天气预报。")]
public static async Task<string> GetForecast(
HttpClient client,
[Description("地点的纬度。")] double latitude,
[Description("地点的经度。")] double longitude)
{
var pointUrl = string.Create(CultureInfo.InvariantCulture, $"/points/{latitude},{longitude}");
using var jsonDocument = await client.ReadJsonDocumentAsync(pointUrl);
var forecastUrl = jsonDocument.RootElement.GetProperty("properties").GetProperty("forecast").GetString()
?? throw new Exception($"No forecast URL provided by {client.BaseAddress}points/{latitude},{longitude}");
using var forecastDocument = await client.ReadJsonDocumentAsync(forecastUrl);
var periods = forecastDocument.RootElement.GetProperty("properties").GetProperty("periods").EnumerateArray();
return string.Join("\n---\n", periods.Select(period => $"""
{period.GetProperty("name").GetString()}
温度: {period.GetProperty("temperature").GetInt32()}°F
风速: {period.GetProperty("windSpeed").GetString()} {period.GetProperty("windDirection").GetString()}
天气预报: {period.GetProperty("detailedForecast").GetString()}
"""));
}
}
客户端需要执行以下操作:
// 您的客户端传输方式,例如 StdioClientTransport
await using IMcpClient mcpClient = await McpClientFactory.CreateAsync(clientTransport);
// 1. 获取工具列表
List<Tool> tools = await mcpClient.ListTornadoToolsAsync();
// 2. 创建对话,并传递可用工具
TornadoApi api = new TornadoApi(LLmProviders.OpenAi, apiKeys.OpenAi);
Conversation conversation = api.Chat.CreateConversation(new ChatRequest
{
Model = ChatModel.OpenAi.Gpt41.V41,
Tools = tools,
// 强制使用任意一个可用工具(如果需要指定具体工具,可使用 new OutboundToolChoice("toolName"))
ToolChoice = OutboundToolChoice.Required
});
// 3. 让模型调用工具并推断参数
await conversation
.AddSystemMessage("您是一位有用的助手")
.AddUserMessage("达拉斯现在的天气如何?")
.GetResponseRich(async calls =>
{
foreach (FunctionCall call in calls)
{
// 获取模型推断出的参数
double latitude = call.GetOrDefault<double>("latitude");
double longitude = call.GetOrDefault<double>("longitude");
// 在 MCP 服务器上调用工具,并传递参数
await call.ResolveRemote(new
{
latitude = latitude,
longitude = longitude
});
// 提取工具返回的结果,并将其传递回模型
if (call.Result?.RemoteContent is McpContent mcpContent)
{
foreach (IMcpContentBlock block in mcpContent.McpContentBlocks)
{
if (block is McpContentBlockText textBlock)
{
call.Result.Content = textBlock.Text;
}
}
}
}
});
// 取消对客户端调用工具的强制要求
conversation.RequestParameters.ToolChoice = null;
// 4. 流式输出最终响应
await conversation.StreamResponse(Console.Write);
🧰 工具包
Tornado 在 LlmTornado.Toolkit 包中提供了强大的抽象层,能够帮助开发者快速构建应用,同时避免许多设计陷阱。这些抽象的核心在于代码的可扩展性和易于调优的设计。
ToolkitChat
ToolkitChat 是一种基于图的工作流原语,其中边负责传递数据,节点则执行函数。ToolkitChat 支持流式处理、丰富响应以及工具调用的链式操作。工具调用可以通过 ChatFunction 或 ChatPlugin(一个包含多个工具的封装)来提供。许多重载方法接受主模型和备用模型,这种交错策略比简单地重试同一模型更能有效应对 API 的临时中断。所有工具调用都是强类型的,默认为“严格”模式。对于不支持严格 JSON 模式的提供商(例如 Anthropic),会使用 { 进行预填充作为回退方案。只需更改参数即可将调用标记为“非严格”。
class DemoAggregatedItem
{
public string Name { get; set; }
public string KnownName { get; set; }
public int Quantity { get; set; }
}
string sysPrompt = "按类型汇总物品";
string userPrompt = "三个苹果,一个樱桃,两个苹果,一个橙子,一个橙子";
await ToolkitChat.GetSingleResponse(Program.Connect(), ChatModel.Google.Gemini.Gemini25Flash, ChatModel.OpenAi.Gpt41.V41Mini, sysPrompt, new ChatFunction([
new ToolParam("items", new ToolParamList("汇总后的物品", [
new ToolParam("name", "物品名称", ToolParamAtomicTypes.String),
new ToolParam("quantity", "汇总数量", ToolParamAtomicTypes.Int),
new ToolParam("known_name", new ToolParamEnum("物品已知名称", [ "苹果", "樱桃", "橙子", "其他" ]))
]))
], async (args, ctx) =>
{
if (!args.ParamTryGet("items", out List<DemoAggregatedItem>? items) || items is null)
{
return new ChatFunctionCallResult(ChatFunctionCallResultParameterErrors.MissingRequiredParameter, "items");
}
Console.WriteLine("汇总后的物品:");
foreach (DemoAggregatedItem item in items)
{
Console.WriteLine($"{item.Name}: {item.Quantity}");
}
return new ChatFunctionCallResult();
}), userPrompt); // 温度默认为 0,输出长度为 8k
/*
汇总后的物品:
苹果:5
樱桃:1
橙子:2
*/
👉 为什么选择 Tornado?
📢 使用 Tornado 构建的项目
- ScioBot - 面向教育者的 AI 工具,用户超过 10 万人。
- ProseFlow - 您的通用 AI 文本处理器,由本地和云端 LLM 提供支持。可在 Windows、macOS 和 Linux 上的任何应用程序中编辑、重构和转换文本。
- NotT3Chat - C# 版本的 T3 堆栈解决方案。
- ClaudeCodeProxy - 提供商多路复用代理。
- Semantic Search - 基于上下文和语义匹配查询的 AI 语义搜索。
您是否使用 Tornado 构建过项目?请在 Issues 中告诉我们,我们将为您展示!
🤝 合作伙伴
赞助方
技术支持
📚 贡献
我们欢迎 PR!目前正在接受新的提供商实现、对 100% 绿色功能矩阵的贡献,以及在公开讨论后提出的新抽象概念。
星标历史
许可证
本库采用 MIT 许可证授权。💜
版本历史
v3.8.542026/03/07v3.8.532026/02/27v3.8.522026/02/26v3.8.512026/02/25v3.8.502026/02/25v3.8.492026/02/20v3.8.482026/02/18v3.8.472026/02/14v3.8.462026/02/06v3.8.452026/02/02v3.8.442026/01/31v3.8.432026/01/18v3.8.422026/01/18v3.8.412026/01/10v3.8.402026/01/05v3.8.392026/01/03v3.8.382026/01/02v3.8.372026/01/02v3.8.362025/12/23v3.8.352025/12/19常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
