unity-sdk
unity-sdk 是 IBM 专为 Unity 游戏引擎打造的开发工具包,旨在帮助开发者轻松将 IBM Watson 的人工智能服务集成到游戏或交互式应用中。通过它,用户可以快速赋予应用语音识别、自然语言理解、情感分析等高级认知能力,从而解决传统游戏交互方式单一、缺乏智能反馈的痛点,让虚拟角色能“听懂”玩家指令或“感知”文本情绪。
这款工具主要面向熟悉 Unity 环境的软件开发者和技术研究人员。其核心亮点在于提供了针对 Unity 架构优化的 API 接口,简化了云端 AI 服务与本地游戏逻辑的对接流程。不过需要注意的是,随着 IBM 产品线的调整,该仓库目前已进入维护模式,部分旧版服务(如语气分析器)已被移除或计划停用,官方建议新用户迁移至更强大的“自然语言理解”服务。尽管如此,社区仍欢迎提交代码贡献,适合需要基于现有架构进行二次开发或维护旧项目的技术团队使用。
使用场景
一家独立游戏工作室正在开发一款面向全球市场的叙事驱动型冒险游戏,需要让玩家通过语音或文字与 NPC 进行自然的情感互动。
没有 unity-sdk 时
- 开发者必须手动编写复杂的 HTTP 请求代码来调用 IBM Watson 服务,处理鉴权、序列化及错误重试逻辑耗时且易错。
- 难以实时分析玩家对话中的情绪色调(如愤怒、悲伤),导致 NPC 只能机械回复,无法根据玩家情绪动态调整语气和剧情走向。
- 缺乏原生的文本分类能力,团队需自行训练模型或硬编码关键词匹配规则,无法准确识别玩家意图(如“攻击”、“求助”或“交易”)。
- 跨平台部署困难,每次更新 AI 逻辑都需要重新底层适配不同操作系统的网络库,严重拖慢迭代速度。
使用 unity-sdk 后
- 直接通过封装好的 API 接口一键接入 Watson 服务,自动处理认证与数据流转,将后端集成时间从数天缩短至几小时。
- 利用内置的自然语言理解模块,实时捕捉玩家输入的情感倾向,让 NPC 能即时做出符合情境的共情反应,大幅提升沉浸感。
- 借助预制的分类模型精准识别玩家指令意图,无需维护庞大的关键词库,即可实现流畅的多轮对话交互。
- 依托 Unity 原生兼容性,一套代码即可无缝发布到 PC、主机及移动端,确保 AI 功能在所有平台上稳定运行。
unity-sdk 将复杂的认知智能服务转化为游戏开发者的直观工具,让创建拥有“情感”的智能 NPC 变得像编写普通脚本一样简单高效。
运行环境要求
- Windows
- macOS
未说明
未说明

快速开始
IBM Watson SDK for Unity
停用通知
本仓库及其相关发布的二进制文件已被弃用。虽然IBM团队将不再对此仓库提供主动支持,但我们仍然欢迎社区通过PR提交贡献,并会对这些贡献进行评审。请注意,后续更新将不再发布到正式的二进制版本中,因此在此更新之后所做的更改需要由用户自行编译。
使用此SDK在Unity中构建基于Watson的应用程序。
公告
音调分析器弃用
自本次主要版本6.0.0起,音调分析器API已被移除,以准备正式弃用。如果您希望继续使用此SDK调用音调分析器服务直至其最终停用,您需要使用之前的版本。
2022年2月24日,IBM宣布音调分析器服务将被弃用。该服务将于2023年2月24日起停止提供。自2022年2月24日起,您将无法再创建新的实例。现有实例将继续得到支持,直到2023年2月24日为止。
作为替代方案,我们建议您考虑迁移到IBM Cloud上的自然语言理解服务。通过自然语言理解服务,您可以使用预构建的分类模型来进行语调分析,从而轻松检测书面文本中的语言语调。更多信息请参阅从Watson音调分析器客户互动端点迁移到自然语言理解。
自然语言分类器弃用
自本次主要版本6.0.0起,NLC API已被移除,以准备正式弃用。如果您希望继续使用此SDK调用NLC服务直至其最终停用,您需要使用之前的版本。
2021年8月9日,IBM宣布自然语言分类器服务将被弃用。该服务将于2022年8月8日起停止提供。自2021年9月9日起,您将无法再创建新的实例。现有实例将继续得到支持,直到2022年8月8日为止。任何在该日期仍存在的实例都将被删除。
作为替代方案,我们鼓励您考虑迁移到IBM Cloud上的自然语言理解服务。该服务利用深度学习技术,可以从文本中提取关键词、类别、情感、情绪和语法等数据及洞察,并具备先进的多标签文本分类功能,从而为您的业务或行业提供更丰富的见解。更多信息请参阅迁移到自然语言理解。
更新watsonplatform.net的API端点URL
watsonplatform.net上的Watson API端点URL正在发生变化,自2021年5月26日起将不再有效。请更新您的调用以使用新的端点URL。更多信息请参阅https://cloud.ibm.com/docs/watson?topic=watson-endpoint-change。
开始之前
请确保您已满足以下先决条件:
配置Unity
- 在Unity中更改构建设置(“文件 > 构建设置”),选择除Web Player/WebGL之外的任何平台。IBM Watson SDK for Unity不支持Unity Web Player。
- 如果您使用的是Unity 2018.2或更高版本,则需要在构建设置中将“脚本运行时版本”和“API兼容性级别”设置为“.NET 4.x等效”。我们需要访问安全选项来启用TLS 1.2。
将MacOS升级到Mojave可能会导致Unity无法使用麦克风。如果您遇到此问题,请参阅这些指南,以配置Mojave下的麦克风。
获取Watson SDK并将其添加到Unity
您可以通过点击这里获取最新版本的SDK。同时,您还需要点击这里下载最新的IBM Unity SDK Core版本。
将SDK源代码安装到您的Unity项目中
将**unity-sdk和unity-sdk-core目录移动到您的Unity项目的Assets**目录下。可选:将SDK目录重命名为Watson,将Core目录重命名为IBMSdkCore。
配置您的服务凭据
要创建Watson服务实例及其凭据,请按照以下步骤操作。
注意: 服务凭据不同于您的IBM Cloud账户用户名和密码。
- 确定需要配置哪些服务。
- 如果您已经配置过这些服务,请完成以下步骤。否则,请跳至第3步。
- 登录到IBM Cloud网站:https://cloud.ibm.com。
- 单击您想要使用的服务。
- 单击“服务凭据”。
- 单击“查看凭据”以访问您的凭据。
- 如果您需要配置想要使用的服务,请完成以下步骤。
- 登录到IBM Cloud网站:https://cloud.ibm.com。
- 单击“创建服务”按钮。
- 在“Watson”类别下,选择您想要创建实例的服务并单击该服务。
- 为服务和凭据命名,选择计划,然后单击底部的“创建”按钮。
- 单击“服务凭据”。
- 单击“查看凭据”以访问您的凭据。
- 您的服务凭据可用于在应用程序中实例化Watson服务。大多数服务还支持令牌,您也可以使用令牌来实例化服务。
每个服务的凭据包含“用户名”、“密码”和端点“URL”,或者“API密钥”和端点“URL”。
警告: 您有责任妥善保管自己的凭据。任何拥有您服务凭据的人都可以访问您的服务实例!
Watson 服务
要在 Unity 中开始使用 Watson 服务,请按照链接查看代码。
- Assistant V1
- Assistant V2
- Compare Comply V1
- Conversation(已弃用 - 请使用 Assistant V1 或 Assistant V2)
- Discovery
- Language Translator V3
- Natural Language Classifier
- Natural Language Understanding
- Personality Insights
- Speech to Text
- Text to Speech
- Tone Analyzer
- Visual Recognition
身份验证
Watson 服务正在迁移到基于令牌的身份和访问管理 (IAM) 身份验证。
获取凭据
要确定使用哪种身份验证方式,请查看服务凭据。对于所有 Watson 服务,获取用于身份验证的服务凭据的方式相同:
- 前往 IBM Cloud 的 仪表板 页面。
- 单击现有的 Watson 服务实例,或单击 创建。
- 单击 显示 查看您的服务凭据。
- 复制
url以及apikey或username和password。
在您的代码中,您可以将这些值用于服务构造函数,或者在实例化服务后通过方法调用来使用它们。
IAM
部分服务使用基于令牌的身份和访问管理 (IAM) 身份验证。IAM 身份验证使用服务 API 密钥获取访问令牌,并在每次调用时传递该令牌。访问令牌的有效期约为一小时,必须重新生成。
您可以提供 IAM 服务的 API 密钥 或 访问令牌:
- 使用 API 密钥时,SDK 将管理访问令牌的生命周期。SDK 会请求访问令牌、确保其有效,并在必要时刷新它。
- 如果您希望自行管理访问令牌的生命周期,则可以使用访问令牌。有关详细信息,请参阅 使用 IAM 令牌进行身份验证。如果您想切换到 API 密钥,可以在协程中用 IAM API 密钥覆盖存储的 IAM 凭据,并等待直到凭据对象
HasIamTokenData()返回true。
提供 IAM API 密钥
Authenticator authenticator;
AssistantService assistant;
string versionDate = "<service-version-date>";
IEnumerator TokenExample()
{
// 使用 IAM 令牌选项创建身份验证器
authenticator = new IamAuthenticator(apikey: "<iam-api-key>");
while (!authenticator.CanAuthenticate())
yield return null;
assistant = new AssistantService(versionDate, authenticator);
assistant.SetServiceUrl("<service-url>");
assistant.ListWorkspaces(callback: OnListWorkspaces);
}
private void OnListWorkspaces(DetailedResponse<WorkspaceCollection> response, IBMError error)
{
Log.Debug("OnListWorkspaces()", "响应:{0}", response.Response);
}
提供访问令牌
Authenticator authenticator;
AssistantService assistant;
string versionDate = "<service-version-date>";
void TokenExample()
{
// 使用 Bearer 令牌创建身份验证器
authenticator = new BearerTokenAuthenticator("<bearer-token>");
assistant = new AssistantService(versionDate, authenticator);
assistant.SetServiceUrl("<service-url>");
assistant.ListWorkspaces(callback: OnListWorkspaces);
}
private void OnListWorkspaces(DetailedResponse<WorkspaceCollection> response, IBMError error)
{
Log.Debug("OnListWorkspaces()", "响应:{0}", response.Response);
}
用户名和密码
Authenticator authenticator;
AssistantService assistant;
string versionDate = "<service-version-date>";
void UsernamePasswordExample()
{
Authenticator authenticator = new BasicAuthenticator("<username>", "<password>", "<url>");
assistant = new AssistantService(versionDate, authenticator);
assistant.SetServiceUrl("<service-url>");
}
提供身份验证器
有两种方法可以将上述找到的身份验证器提供给 SDK 以进行身份验证。
凭据文件(更简单!)
使用凭据文件时,您只需将文件放置在正确的位置,SDK 就会自动解析并完成身份验证。您可以通过在服务实例的 管理 选项卡中点击凭据的 下载 按钮来获取此文件。
下载的文件名为 ibm-credentials.env。这是 SDK 会查找的文件名,必须 保留此名称,除非您想配置文件路径(稍后会详细介绍)。SDK 会在以下位置按顺序查找您的 ibm-credentials.env 文件:
- 您系统的主目录
- 您正在使用 SDK 的项目的顶级目录
只要正确设置了这些位置,您就不需要在代码中设置任何身份验证选项。例如,如果您为 Discovery 实例创建并下载了凭据文件,只需执行以下操作:
public IEnumerator ExampleAutoService()
{
Assistant assistantService = new Assistant("2019-04-03");
// 等待授权令牌
while (!assistantService.Authenticator.CanAuthenticate())
yield return null;
var listWorkspacesResult = assistantService.ListWorkspaces();
}
就这么简单!
如果您在代码中同时使用多个服务,并获得了两个不同的 ibm-credentials.env 文件,只需将内容合并到一个 ibm-credentials.env 文件中,SDK 就会自动为相应的服务分配身份验证器。
如果您想配置凭据文件的位置或名称,可以设置名为 IBM_CREDENTIALS_FILE 的环境变量。这将优先于上述指定的位置。 设置方法如下:
export IBM_CREDENTIALS_FILE="<path>"
其中 <path> 类似于 /home/user/Downloads/<file_name>.env。
手动方式
如果您更倾向于在代码中手动设置身份验证值,SDK 同样支持这种方式。具体操作方式取决于您的服务实例提供的身份验证器类型。
回调函数
必须提供成功回调。您可以在回调中指定返回类型。
AssistantService assistant;
string assistantVersionDate = "<assistant-version-date>";
Authenticator assistantAuthenticator;
string workspaceId = "<workspaceId>";
DiscoveryService discovery;
string discoveryVersionDate = "<discovery-version-date>";
Authenticator discoveryAuthenticator;
private void Example()
{
assistant = new AssistantService(assistantVersionDate, assistantAuthenticator);
assistant.SetServiceUrl("<service-url>");
discovery = new DiscoveryService(discoveryVersionDate, discoveryAuthenticator);
discovery.SetServiceUrl("<service-url>");
// 使用特定的回调进行调用
assistant.Message(
callback: OnMessage,
workspaceId: workspaceId
);
discovery.ListEnvironments(
callback: OnGetEnvironments
);
}
private void OnMessage(DetailedResponse<MessageResponse> response, IBMError error)
{
Log.Debug("ExampleCallback.OnMessage()", "收到响应:{0}", response.Response);
}
private void OnGetEnvironments(DetailedResponse<ListEnvironmentsResponse> response, IBMError error)
{
Log.Debug("ExampleCallback.OnGetEnvironments()", "收到响应:{0}", response.Response);
}
由于成功回调的签名是泛型的,而失败回调的签名始终相同,因此可以使用一组回调来处理多个调用。
AssistantService assistant;
string assistantVersionDate = "<assistant-version-date>";
Authenticator assistantAuthenticator;
string workspaceId = "<workspaceId>";
DiscoveryService discovery;
string discoveryVersionDate = "<discovery-version-date>";
Authenticator discoveryAuthenticator;
private void Example()
{
assistant = new AssistantService(assistantVersionDate, assistantAuthenticator);
assistant.SetServiceUrl("<service-url>");
// 使用通用回调进行调用
JObject input = new JObject();
input.Add("text", "");
assistant.Message(
callback: OnSuccess,
workspaceId: workspaceId,
input: input
);
discovery = new DiscoveryService(discoveryVersionDate, discoveryAuthenticator);
discovery.SetServiceUrl("<service-url>");
discovery.ListEnvironments(
callback: OnSuccess
);
}
// 通用的成功回调
private void OnSuccess<T>(DetailedResponse<T> resp, IBMError error)
{
Log.Debug("ExampleCallback.OnSuccess()", "收到响应:{0}", resp.Response);
}
您还可以使用匿名回调:
AssistantService assistant;
string assistantVersionDate = "<assistant-version-date>";
Authenticator assistantAuthenticator;
string workspaceId = "<workspaceId>";
private void Example()
{
assistant = new AssistantService(assistantVersionDate, assistantAuthenticator);
assistant.ListWorkspaces(
callback: (DetailedResponse<WorkspaceCollection> response, IBMError error) =>
{
Log.Debug("ExampleCallback.OnSuccess()", "ListWorkspaces 的结果:{0}", response.Response);
},
pageLimit: 1,
includeCount: true,
sort: "-name",
includeAudit: true
);
assistant.SetServiceUrl("<service-url>");
}
您可以通过检查 error 响应来确定调用是否出现错误。
AssistantService assistant;
string assistantVersionDate = "<assistant-version-date>";
Authenticator assistantAuthenticator;
string workspaceId = "<workspaceId>";
private void Example()
{
assistant = new AssistantService(versionDate, authenticator);
assistant.Message(OnMessage, workspaceId);
}
private void OnMessage(DetailedResponse<MessageResponse> response, IBMError error)
{
if (error == null)
{
Log.Debug("ExampleCallback.OnMessage()", "收到响应:{0}", response.Response);
}
else
{
Log.Debug("ExampleCallback.OnMessage()", "收到错误:{0}, {1}, {3}", error.StatusCode, error.ErrorMessage, error.Response);
}
}
自定义请求头
您可以通过将自定义请求头添加到服务中来发送它们。
AssistantService assistant;
string assistantVersionDate = "<assistant-version-date>";
Authenticator assistantAuthenticator;
string workspaceId = "<workspaceId>";
void Example()
{
assistant = new AssistantService(assistantVersionDate, assistantAuthenticator);
// 向 REST 调用添加自定义头
assistant.WithHeader("X-Watson-Metadata", "customer_id=some-assistant-customer-id");
assistant.Message(OnSuccess, "<workspace-id>");
}
private void OnSuccess(DetailedResponse<MessageResponse> response, IBMError error)
{
Log.Debug("ExampleCallback.OnMessage()", "收到响应:{0}", response.Response);
}
响应头
您可以在 DetailedResponse 中的 headers 对象中获取响应头。
AssistantService assistant;
string assistantVersionDate = "<assistant-version-date>";
Authenticator assistantAuthenticator;
string workspaceId = "<workspaceId>";
void Example()
{
assistant = new AssistantService(assistantVersionDate, assistantAuthenticator);
assistant.Message(OnMessage, "<workspace-id>");
}
private void OnMessage(DetailedResponse<MessageResponse> response, IBMError error)
{
// 列出响应头对象中的所有头
foreach (KeyValuePair<string, object> kvp in response.Headers)
{
Log.Debug("ExampleCustomHeader.OnMessage()", "{0}: {1}", kvp.Key, kvp.Value);
}
}
事务ID
每个 SDK 调用都会返回一个响应,其中 X-Global-Transaction-Id 头部包含事务 ID。结合服务实例所在的区域,此 ID 可帮助支持团队从相关日志中排查问题。
public void ExampleGetTransactionId()
{
AssistantService service = new AssistantService("{version-date}");
service.ListWorkspaces(
callback: (DetailedResponse<Workspace> response, IBMError error) =>
{
if(error != null)
{
Log.Debug("AssistantServiceV1", "事务 ID: {0}", error.ResponseHeaders["X-Global-Transaction-Id"]);
}
else
{
Log.Debug("AssistantServiceV1", "事务 ID: {0}", response.Headers["X-Global-Transaction-Id"]);
}
}
);
}
然而,如果 API 因某种原因未返回响应,则事务 ID 将不可用。在这种情况下,您可以在请求中设置自己的事务 ID。例如,在下面的示例中,将 <my-unique-transaction-id> 替换为唯一的事务 ID。
public void ExampleSetTransactionId()
{
AssistantService service = new AssistantService("{version-date}");
service.WithHeader("X-Global-Transaction-Id", "<my-unique-transaction-id>");
service.ListWorkspaces(
callback: (DetailedResponse<Workspace> response, IBMError error) =>
{
if(error != null)
{
Log.Debug("AssistantServiceV1", "事务 ID: {0}", error.ResponseHeaders["X-Global-Transaction-Id"]);
}
else
{
Log.Debug("AssistantServiceV1", "事务 ID: {0}", response.Headers["X-Global-Transaction-Id"]);
}
}
);
}
TLS 1.0 支持
Watson 服务已将其主机升级到 TLS 1.2。达拉斯地区有一个适用于流媒体的 TLS 1.0 端点。要在其他地区进行流媒体传输,请使用 Unity 2018.2,并在构建设置中将 脚本运行时版本 设置为 .NET 4.x 等效。若要在较早版本的 Unity 中支持语音转文本功能,请在达拉斯地区创建实例。
禁用 SSL 验证
您可以在进行服务调用时禁用 SSL 验证。
AssistantService assistant;
string assistantVersionDate = "<assistant-version-date>";
Authenticator assistantAuthenticator;
string workspaceId = "<workspaceId>";
void Example()
{
authenticator.DisableSslVerification = true;
assistant = new AssistantService(assistantVersionDate, assistantAuthenticator);
// 禁用 SSL 验证
assistant.DisableSslVerification = true;
}
IBM Cloud Pak for Data(ICP4D)
如果您的服务实例属于 ICP4D,则以下是初始化助理服务的两种方法。
1) 提供 username、password、icp4d_url 和 authentication_type
SDK 将为用户管理令牌
CloudPakForDataAuthenticator authenticator = new CloudPakForDataAuthenticator("<url>", "<username>", "<password>");
while(!authenticator.CanAuthenticate())
{
yield return null;
}
service = new AssistantService(versionDate, authenticator);
2) 提供访问令牌
BearerTokenAuthenticator = new BearerTokenAuthenticator("<accessToken>");
while(!authenticator.CanAuthenticate())
{
yield return null;
}
service = new AssistantService(versionDate, authenticator);
IBM Cloud Private
Watson Unity SDK 不支持 IBM Cloud Private,因为 UnityWebRequest 不支持通过代理连接。
文档
文档可以在此处找到[文档]。您也可以通过选择 Watson 菜单中的 API 参考(Watson -> API 参考)来访问文档。
入门视频
您可以在 YouTube 上观看 IBM Watson SDK for Unity 的入门视频。
问题
如果您在使用 API 时遇到问题,或对 Watson 服务有任何疑问,请参阅 Stack Overflow。
IBM 开源项目
您可以在 IBM Github 页面上找到更多开源项目。
许可证
本库采用 Apache 2.0 许可证。完整的许可证文本可在 LICENSE 中找到。
贡献
请参阅 CONTRIBUTING.md。
特色项目
我们非常乐意展示使用本 SDK 的优秀开源项目!如果您希望将自己的项目加入列表,请随时提交一个链接到该项目的问题。
版本历史
v6.0.02022/03/21v5.2.02021/09/14v5.1.22021/08/24v5.1.12021/06/16v5.1.02021/06/10v5.0.22021/03/05v5.0.12020/12/21v5.0.02020/12/10v4.8.02020/08/25v4.7.12020/06/17v4.7.02020/06/03v4.6.12020/05/22v4.6.02020/04/24v4.5.02020/02/25v4.4.02020/02/13v4.3.02020/01/23v4.2.12020/01/17v4.2.02020/01/16v4.1.12019/12/04v4.1.02019/11/27常见问题
相似工具推荐
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,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
