kotlin-sdk
kotlin-sdk 是 Model Context Protocol (MCP) 的官方 Kotlin 开发工具包,由社区与 JetBrains 共同维护。它旨在帮助开发者轻松构建符合 MCP 标准的客户端与服务端应用,让大语言模型(LLM)能够以统一、标准化的方式获取外部上下文信息,从而将“提供上下文”与“模型交互”这两个环节解耦。
通过 kotlin-sdk,开发者只需编写一套代码,即可同时面向 JVM、Native、JavaScript 以及 WebAssembly 等多种平台发布应用,极大地提升了开发效率与代码复用率。该工具包内置了对 stdio、SSE、Streamable HTTP 和 WebSocket 等多种标准传输协议的支持,并提供了一套对协程友好的 API,方便处理复杂的消息流转与生命周期事件。无论是需要暴露资源、提示词和工具的服务端开发者,还是希望连接各类 MCP 服务的客户端构建者,都能从中获益。
这款工具特别适合熟悉 Kotlin 生态的后端工程师、全栈开发者以及多平台应用架构师使用。如果你正在寻求一种规范化的方式来增强 AI 应用的数据交互能力,或者希望在不同的运行环境中无缝集成 MCP 协议,kotlin-sdk 都将是一个专业且高效的选择。
使用场景
某金融科技公司后端团队正致力于将现有的 Kotlin 微服务架构与大模型集成,希望让 AI 助手能直接查询内部合规文档并执行数据脱敏工具。
没有 kotlin-sdk 时
- 协议实现繁琐:开发者需手动解析 MCP 标准的 JSON-RPC 消息格式,处理复杂的生命周期状态机,极易因字段遗漏导致连接中断。
- 多端适配困难:若需同时支持 JVM 服务端和 Wasm 前端插件,必须维护两套独立的通信逻辑代码,重复工作量大且难以同步更新。
- 异步处理复杂:原生协程与 HTTP/SSE 传输层的对接需要大量样板代码来处理背压和流式响应,调试耗时且容易引发内存泄漏。
- 功能扩展受限:想要暴露新的“资源”或“工具”给大模型,往往需要重写底层传输逻辑,导致业务迭代周期从几天延长至数周。
使用 kotlin-sdk 后
- 开箱即用:kotlin-sdk 封装了完整的 MCP 协议细节,只需定义简单的数据类即可自动处理消息序列化与状态管理,连接稳定性显著提升。
- 一次编写多端运行:依托 Kotlin Multiplatform 特性,同一套客户端或服务端代码可无缝编译运行在 JVM、Native 及 Wasm 环境,大幅降低维护成本。
- 协程原生支持:利用 kotlinx.coroutines 深度集成的 API,开发者可用自然的挂起函数处理流式数据传输,代码简洁且天然避免阻塞问题。
- 快速能力暴露:通过声明式接口即可快速注册 Prompts、Resources 和 Tools,业务团队能在几小时内完成新智能功能的上线与测试。
kotlin-sdk 通过标准化的协议封装与跨平台能力,让 Kotlin 开发者能以最低成本将传统应用平滑升级为具备上下文感知能力的 AI 原生应用。
运行环境要求
未说明
未说明

快速开始
MCP Kotlin SDK
适用于 Model Context Protocol 的 Kotlin 多平台 SDK。 它使面向 JVM、Native、JS 和 Wasm 的 Kotlin 应用程序能够使用标准化的协议接口实现 MCP 客户端和服务器。
目录
概述
Model Context Protocol 允许应用程序以标准化的方式为 LLM 提供上下文, 将提供上下文的关注点与实际的 LLM 交互分离。 该 Kotlin SDK 实现了 MCP 规范,使其易于:
- 构建可以连接到任何 MCP 服务器的 MCP 客户端
- 创建公开资源、提示和工具的 MCP 服务器
- 从单个代码库针对 JVM、Native、JS 和 Wasm 进行开发
- 使用标准传输层,如 stdio、SSE、可流式 HTTP 和 WebSocket
- 使用协程友好的 API 处理 MCP 协议消息和生命周期事件
安装
构件
io.modelcontextprotocol:kotlin-sdk– 总体 SDK(客户端 + 服务器 API)io.modelcontextprotocol:kotlin-sdk-client– 仅客户端 APIio.modelcontextprotocol:kotlin-sdk-server– 仅服务器 API
Gradle 配置 (JVM)
添加 Maven Central 仓库和 SDK 依赖项:
repositories {
mavenCentral()
}
dependencies {
// 请参阅上方徽章以获取最新版本
implementation("io.modelcontextprotocol:kotlin-sdk:$mcpVersion")
}
如果您只需要其中一方的 API,请使用 kotlin-sdk-client 或 kotlin-sdk-server:
dependencies {
implementation("io.modelcontextprotocol:kotlin-sdk-client:$mcpVersion")
implementation("io.modelcontextprotocol:kotlin-sdk-server:$mcpVersion")
}
多平台
在 Kotlin 多平台项目中,您可以将 SDK 添加到 commonMain:
commonMain {
dependencies {
// 既可用作公共依赖,也可用作平台特定依赖
implementation("io.modelcontextprotocol:kotlin-sdk:$mcpVersion")
}
}
Ktor 依赖项
Kotlin MCP SDK 使用 Ktor,但不会传递性地添加 Ktor 引擎依赖。 您需要自行声明 Ktor 客户端/服务器 依赖项(或复用项目中已有的依赖项),例如:
dependencies {
// 带有 Ktor 的 MCP 客户端
implementation("io.ktor:ktor-client-cio:$ktorVersion")
implementation("io.modelcontextprotocol:kotlin-sdk-client:$mcpVersion")
// 带有 Ktor 的 MCP 服务器
implementation("io.ktor:ktor-server-netty:$ktorVersion")
implementation("io.modelcontextprotocol:kotlin-sdk-server:$mcpVersion")
}
快速入门
让我们创建一个简单的 MCP 客户端和服务器,以演示 Kotlin SDK 的基本用法。
创建客户端
创建一个通过可流式 HTTP 传输连接到服务器并列出可用工具的 MCP 客户端:
import io.ktor.client.HttpClient
import io.ktor.client.plugins.sse.SSE
import io.modelcontextprotocol.kotlin.sdk.client.Client
import io.modelcontextprotocol.kotlin.sdk.client.StreamableHttpClientTransport
import io.modelcontextprotocol.kotlin.sdk.types.Implementation
import kotlinx.coroutines.runBlocking
fun main(args: Array<String>) = runBlocking {
val url = args.firstOrNull() ?: "http://localhost:3000/mcp"
val httpClient = HttpClient { install(SSE) }
val client = Client(
clientInfo = Implementation(
name = "example-client",
version = "1.0.0"
)
)
val transport = StreamableHttpClientTransport(
client = httpClient,
url = url
)
// 连接到服务器
client.connect(transport)
// 列出可用工具
val tools = client.listTools().tools
println(tools)
}
创建服务器
创建一个 MCP 服务器,该服务器公开一个简单工具,并在嵌入式 Ktor 服务器上运行,使用 Streamable HTTP 传输协议。 有关包含所有必需依赖项的完整工作项目,请参阅 simple-streamable-server 示例。
import io.ktor.server.cio.CIO
import io.ktor.server.engine.embeddedServer
import io.modelcontextprotocol.kotlin.sdk.server.Server
import io.modelcontextprotocol.kotlin.sdk.server.ServerOptions
import io.modelcontextprotocol.kotlin.sdk.server.mcpStreamableHttp
import io.modelcontextprotocol.kotlin.sdk.types.CallToolResult
import io.modelcontextprotocol.kotlin.sdk.types.Implementation
import io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities
import io.modelcontextprotocol.kotlin.sdk.types.TextContent
import io.modelcontextprotocol.kotlin.sdk.types.ToolSchema
import kotlinx.serialization.json.buildJsonObject
import kotlinx.serialization.json.put
fun main(args: Array<String>) {
val port = args.firstOrNull()?.toIntOrNull() ?: 3000
val mcpServer = Server(
serverInfo = Implementation(
name = "example-server",
version = "1.0.0"
),
options = ServerOptions(
capabilities = ServerCapabilities(
tools = ServerCapabilities.Tools(listChanged = true),
),
)
)
mcpServer.addTool(
name = "example-tool",
description = "一个示例工具",
inputSchema = ToolSchema(
properties = buildJsonObject {
put("input", buildJsonObject { put("type", "string") })
}
)
) { request ->
CallToolResult(content = listOf(TextContent("你好,世界!")))
}
embeddedServer(CIO, host = "127.0.0.1", port = port) {
mcpStreamableHttp {
mcpServer
}
}.start(wait = true)
}
你可以运行该服务器,然后使用客户端连接到它,或者使用 MCP Inspector 进行测试:
npx -y @modelcontextprotocol/inspector
在 Inspector 的 UI 中,连接到 http://localhost:3000/mcp。
核心概念
MCP 原语
MCP 协议定义了用于实现服务器与客户端之间通信的核心原语:
| 原语 | 服务器角色 | 客户端角色 | 描述 |
|---|---|---|---|
| 提示 | 提供带有可选参数的提示模板 | 请求并使用提示 | 用于 LLM 交互的交互式模板 |
| 资源 | 公开数据源(文件、API 响应等) | 读取并订阅资源 | 用于增强 LLM 上下文的上下文数据 |
| 工具 | 定义可执行函数 | 调用工具以执行操作 | LLM 可以调用以执行动作的函数 |
| 采样 | 向客户端请求 LLM 补全 | 执行 LLM 调用并返回结果 | 由服务器发起的 LLM 请求(反向方向) |
功能
功能定义了服务器或客户端支持哪些特性。它们在初始化时声明,并决定可用的操作。
服务器功能
服务器会声明其功能,以告知客户端它们提供的特性:
| 功能 | 特性标志 | 描述 |
|---|---|---|
prompts |
listChanged |
提示模板管理和通知 |
resources |
subscribelistChanged |
资源暴露、订阅及更新通知 |
tools |
listChanged |
工具发现、执行及列表变更通知 |
logging |
- | 服务器日志记录到客户端控制台 |
completions |
- | 参数自动补全建议 |
experimental |
自定义属性 | 非标准实验性功能 |
客户端功能
客户端会声明其功能,以告知服务器它们支持的特性:
| 功能 | 特性标志 | 描述 |
|---|---|---|
sampling |
- | 客户端可以从 LLM 中采样(执行模型请求) |
roots |
listChanged |
客户端暴露根目录并能通知更改 |
elicitation |
- | 客户端可以显示模式/表单对话框以获取结构化输入 |
experimental |
自定义属性 | 非标准实验性功能 |
服务器功能
Server API 使你只需几行 Kotlin 代码即可将提示、资源和工具连接起来。每个功能都在一开始就注册好,然后在客户端请求时才被延迟解析,因此你的处理程序可以保持简洁且可挂起。
提示
提示是用户可控的模板,客户端可以通过 prompts/list 发现它们,并在用户选择其中一个时通过 prompts/get 获取(类似于斜杠命令或保存的工作流)。它们最适合重复性的、结构化的起点,而不是临时的模型调用。
val server = Server(
serverInfo = Implementation(
name = "example-server",
version = "1.0.0"
),
options = ServerOptions(
capabilities = ServerCapabilities(
prompts = ServerCapabilities.Prompts(listChanged = true),
),
)
)
server.addPrompt(
name = "code-review",
description = "请求模型审查一个差异文件",
arguments = listOf(
PromptArgument(name = "diff", description = "统一格式的差异文件", required = true),
),
) { request ->
GetPromptResult(
description = "快速代码审查助手",
messages = listOf(
PromptMessage(
role = Role.User,
content = TextContent(text = "请审查以下更改:\n${request.arguments?.get("diff")}"),
),
),
)
}
将任何需要模板化的内容都使用提示词来处理:例如错误分类问题、入职检查清单或保存的搜索。仅当您的提示词目录可以在运行时发生变化,并且服务器会在发生变更时发出 notifications/prompts/list_changed 通知时,才设置 listChanged = true。
资源
资源是由应用程序驱动的上下文,客户端可以通过 resources/list 或 resources/templates/list 发现它们,然后使用 resources/read 获取。为每个资源注册一个稳定的 URI,并在被请求时返回 ReadResourceResult——内容可以是文本或二进制数据块。
val server = Server(
serverInfo = Implementation(
name = "example-server",
version = "1.0.0"
),
options = ServerOptions(
capabilities = ServerCapabilities(
resources = ServerCapabilities.Resources(subscribe = true, listChanged = true),
),
)
)
server.addResource(
uri = "note://release/latest",
name = "发布说明",
description = "最近一次部署摘要",
mimeType = "text/markdown",
) { request ->
ReadResourceResult(
contents = listOf(
TextResourceContents(
text = "版本42已成功部署到生产环境。",
uri = request.uri,
mimeType = "text/markdown",
),
),
)
}
资源可以是静态文本、生成的 JSON 数据或二进制数据——任何客户端可以呈现给用户或注入到模型上下文中去的内容。如果您会针对特定 URI 的变化发出 notifications/resources/updated 通知,则设置 subscribe = true;如果资源目录本身会发生变化,则设置 listChanged = true,以便在目录变更时发送 notifications/resources/list_changed 通知。
工具
工具是客户端向模型暴露的由模型控制的功能。客户端通过 tools/list 发现这些工具,使用 tools/call 调用它们,而您的处理器会接收 JSON 格式的参数,可以输出流式日志或进度信息,并返回 CallToolResult。对于敏感操作,请务必保留人工干预环节。
val server = Server(
serverInfo = Implementation(
name = "example-server",
version = "1.0.0"
),
options = ServerOptions(
capabilities = ServerCapabilities(
tools = ServerCapabilities.Tools(listChanged = true),
),
)
)
server.addTool(
name = "echo",
description = "将用户发送的内容原样返回给他们",
) { request ->
val text = request.arguments?.get("text")?.jsonPrimitive?.content ?: "(空)"
CallToolResult(content = listOf(TextContent(text = "回声:$text")))
}
根据需要注册任意数量的工具——长时间运行的任务可以通过请求上下文报告进度,而工具也可以在需要客户端的 LLM 时触发采样(见下文)。仅当您的工具目录可以在运行时发生变化,并且服务器会在发生变更时发出 notifications/tools/list_changed 通知时,才设置 listChanged = true。
补全功能
补全功能为提示词或资源模板提供参数建议。声明 completions 功能,并处理 completion/complete 请求,以返回最多 100 个排序后的值(如果分页显示,则应包含 total 和 hasMore)。
val server = Server(
serverInfo = Implementation(
name = "example-server",
version = "1.0.0"
),
options = ServerOptions(
capabilities = ServerCapabilities(
completions = ServerCapabilities.Completions,
),
)
)
val session = server.createSession(
StdioServerTransport(
inputStream = System.`in`.asSource().buffered(),
outputStream = System.out.asSink().buffered()
)
)
session.setRequestHandler<CompleteRequest>(Method.Defined.CompletionComplete) { request, _ ->
val options = listOf("kotlin", "compose", "coroutine")
val matches = options.filter { it.startsWith(request.argument.value.lowercase()) }
CompleteResult(
completion = CompleteResult.Completion(
values = matches.take(3),
total = matches.size,
hasMore = matches.size > 3,
),
)
}
使用 context.arguments 来优化依赖字段的建议(例如,根据所选语言筛选框架列表)。
日志记录
日志记录允许服务器使用 RFC 5424 级别(从 debug 到 emergency)向客户端流式传输结构化日志通知。声明 logging 功能;客户端可以通过 logging/setLevel 提升最低日志级别,而服务器则会发出带有严重性、可选的日志记录器名称和 JSON 数据的 notifications/message 通知。
val server = Server(
serverInfo = Implementation("example-server", "1.0.0"),
options = ServerOptions(
capabilities = ServerCapabilities(
logging = ServerCapabilities.Logging,
),
)
)
val session = server.createSession(
StdioServerTransport(
inputStream = System.`in`.asSource().buffered(),
outputStream = System.out.asSink().buffered()
)
)
session.sendLoggingMessage(
LoggingMessageNotification(
LoggingMessageNotificationParams(
level = LoggingLevel.Info,
logger = "startup",
data = buildJsonObject { put("message", "Server started") },
),
),
)
日志中应避免包含敏感数据,客户端应在自己的用户界面中展示这些日志。
分页
列表操作会返回分页结果,并附带一个不透明的 nextCursor。客户端需要将该游标传递回去以获取下一页内容。支持的列表调用包括:resources/list、resources/templates/list、prompts/list 和 tools/list。请将游标视为不透明对象——不要解析或在不同会话之间持久化它们。
val server = Server(
serverInfo = Implementation("example-server", "1.0.0"),
options = ServerOptions(
capabilities = ServerCapabilities(
resources = ServerCapabilities.Resources(),
),
)
)
val session = server.createSession(
StdioServerTransport(
inputStream = System.`in`.asSource().buffered(),
outputStream = System.out.asSink().buffered()
)
)
val resources = listOf(
Resource(uri = "note://1", name = "Note 1", description = "First"),
Resource(uri = "note://2", name = "Note 2", description = "Second"),
Resource(uri = "note://3", name = "Note 3", description = "Third"),
)
val pageSize = 2
session.setRequestHandler<ListResourcesRequest>(Method.Defined.ResourcesList) { request, _ ->
val start = request.params?.cursor?.toIntOrNull() ?: 0
val page = resources.drop(start).take(pageSize)
val next = if (start + page.size < resources.size) (start + page.size).toString() else null
ListResourcesResult(
resources = page,
nextCursor = next,
)
}
仅当还有更多项目时才包含 nextCursor;如果游标为空,则表示分页结束。
客户端功能
客户端在初始化时会公布其能力(如根目录、采样、诱导等)。此后,它们可以在响应来自服务器的请求的同时,继续发起诸如 listTools 或 callTool 之类的调用。
根目录
根目录允许客户端声明服务器被允许操作的范围。声明 roots 能力,响应 roots/list 请求,并在设置 listChanged = true 时发出 notifications/roots/list_changed 通知。URI 必须 是 file:// 路径。
val client = Client(
clientInfo = Implementation("demo-client", "1.0.0"),
options = ClientOptions(
capabilities = ClientCapabilities(roots = ClientCapabilities.Roots(listChanged = true)),
),
)
client.addRoot(
uri = "file:///Users/demo/projects",
name = "Projects",
)
client.sendRootsListChanged()
每当文件系统视图发生变化时,调用 addRoot/removeRoot,并使用 sendRootsListChanged() 通知服务器。确保根目录列表由用户控制,并撤销不再授权的条目。
择样
择样功能使服务器能够请求客户端调用其首选的大型语言模型。声明 sampling 能力(如果支持工具启用的择样,则还需声明 sampling.tools),并处理 sampling/createMessage 请求。审批流程中应始终有人工参与。
val client = Client(
clientInfo = Implementation("demo-client", "1.0.0"),
options = ClientOptions(
capabilities = ClientCapabilities(
sampling = buildJsonObject { putJsonObject("tools") { } }, // 如果不支持工具使用,则省略 tools
),
),
)
client.setRequestHandler<CreateMessageRequest>(Method.Defined.SamplingCreateMessage) { request, _ ->
val content = request.messages.lastOrNull()?.content
val prompt = if (content is TextContent) content.text else "your topic"
CreateMessageResult(
model = "gpt-4o-mini",
role = Role.Assistant,
content = TextContent(text = "Here is a short note about $prompt"),
)
}
在处理器中,您可以选择任何模型或提供商,要求审批,或拒绝请求。如果不支持工具使用,请在能力声明中省略 sampling.tools。
传输协议
所有传输协议共享相同的 API 接口,因此您无需修改业务逻辑即可更改部署方式。请选择最适合服务器运行环境的传输协议。
STDIO 传输协议
StdioClientTransport 和 StdioServerTransport 通过标准输入/输出隧道传输 MCP 消息,非常适合需要启动辅助进程的编辑器插件或 CLI 工具。无需任何网络配置。
可流式 HTTP 传输协议
StreamableHttpClientTransport 以及 Ktor 的 mcpStreamableHttp() 和 mcpStatelessStreamableHttp() 辅助函数,可通过单个 HTTP 端点暴露 MCP,支持可选的仅 JSON 或 SSE 流式响应。这是远程部署的推荐选择,并能很好地与代理或服务网格集成。
这些辅助函数会自动安装带有 McpJson 的 ContentNegotiation 插件——请勿自行安装,否则会记录警告信息。两者都接受 path 参数(默认为 "/mcp"),以便将端点挂载到任意 URL:
embeddedServer(CIO, port = 3000) {
mcpStreamableHttp(path = "/api/mcp") {
MyServer()
}
}.start(wait = true)
针对基于浏览器的客户端(例如 MCP Inspector)的 CORS 设置: 如果您从基于浏览器的客户端连接,需要安装 Ktor 的 CORS 插件,以允许并暴露 MCP 特定的头部信息:
install(CORS) {
anyHost() // 在生产环境中限制为特定来源
allowMethod(HttpMethod.Options)
allowMethod(HttpMethod.Get)
allowMethod(HttpMethod.Post)
allowMethod(HttpMethod.Delete)
allowNonSimpleContentTypes = true
allowHeader("Mcp-Session-Id")
allowHeader("Mcp-Protocol-Version")
exposeHeader("Mcp-Session-Id")
exposeHeader("Mcp-Protocol-Version")
}
SSE 传输
服务器发送事件仍可用于与旧版 MCP 客户端的向后兼容。提供了两个 Ktor 辅助函数:
Application.mcp { }— 自动安装 SSE 和带有McpJson的ContentNegotiation,然后在/路径下注册 MCP 端点。请勿自行安装ContentNegotiation——SDK 已经处理好了。Route.mcp { }— 在当前路由路径下注册 MCP 端点;需要先在应用中调用install(SSE)。使用此方法可以在其他路由旁边或特定路径前缀下托管 MCP:
embeddedServer(CIO, port = 3000) {
install(SSE)
routing {
route("/api/mcp") {
mcp { MyServer() }
}
}
}.start(wait = true)
对于新项目,建议使用可流式 HTTP。
WebSocket 传输
WebSocketClientTransport 结合相应的服务器工具,可以提供全双工、低延迟的连接——这在您预计会有大量通知或长时间会话,并且反向代理已经终止 WebSocket 连接的情况下非常有用。
ChannelTransport(测试)
ChannelTransport 提供了一种简单、无需网络的传输方式,适用于测试和本地开发。它使用 Kotlin 协程通道在客户端和服务器之间建立全双工连接,从而无需设置网络即可轻松测试 MCP 功能。
连接您的服务器
在端口 3000 上启动一个示例 HTTP 服务器:
./gradlew :samples:kotlin-mcp-server:run使用 MCP Inspector 或 Claude Desktop/Code 进行连接:
npx -y @modelcontextprotocol/inspector --connect http://localhost:3000 # 或 claude mcp add --transport http kotlin-mcp http://localhost:3000在 Inspector 中,确认提示、工具、资源、补全和日志是否正常显示。在本地反复迭代,直到您准备好将服务器部署到任何您希望的位置。
示例
samples 目录包含可运行的项目,展示了使用各种传输方式实现的 MCP 服务器和客户端。请参阅 samples 概览,其中提供了对比表格和详细说明。
文档
贡献
许可证
本项目对新贡献采用 Apache 2.0 许可证,现有代码则采用 MIT 许可证——详情请参阅 LICENSE 文件。
版本历史
0.11.02026/04/020.10.02026/03/260.9.02026/03/050.8.42026/02/170.8.32026/01/210.8.12025/12/040.8.02025/11/200.7.72025/11/100.7.62025/11/070.7.52025/11/060.7.42025/10/240.7.32025/10/210.6.12025/10/060.7.22025/09/190.7.2-alpha32025/09/190.7.2-alpha22025/09/190.7.2-alpha12025/09/180.7.12025/09/150.7.02025/09/110.6.02025/07/16常见问题
相似工具推荐
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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。