AIlice

GitHub
1.4k 208 中等 1 次阅读 2天前MITAgent开发框架图像语言模型
AI 解读 由 AI 自动生成,仅供参考

AIlice 是一款基于开源大语言模型打造的全自动通用 AI 智能体,旨在成为像电影《钢铁侠》中 JARVIS 那样的独立私人助手。它主要解决了传统 AI 难以独立处理复杂、多步骤任务的问题,能够自主将宏大目标拆解为多个子任务,动态创建并协调不同的代理角色协同工作,最终整合结果。无论是深度主题研究、代码编写、系统管理还是文献综述,AIlice 都能高效应对,甚至具备自我进化能力,可自主扩展新功能。

该项目独特的 IACT(交互式代理调用树)架构是其核心亮点,赋予了系统极高的容错性和任务分解灵活性。此外,AIlice 不仅支持本地部署以保护隐私,还集成了实用的语音对话功能和最新的 MCP 工具扩展能力,让交互更自然、功能更强大。

AIlice 非常适合开发者、研究人员以及希望探索本地化高级 AI 应用的技术爱好者使用。对于想要摆脱云端依赖、在本地构建强大自动化工作流的用户来说,它是一个极具价值的开源选择。通过简单的配置,用户即可结合商业或开源模型,释放出大语言模型在现实世界中的真正潜力。

使用场景

一位独立开发者需要在周末紧急完成一个包含竞品数据抓取、代码原型编写及文献综述的复杂项目,但时间紧迫且缺乏助手。

没有 AIlice 时

  • 任务割裂严重:开发者需手动在浏览器搜索数据、切换 IDE 写代码、再打开论文网站查资料,上下文频繁中断,效率极低。
  • 容错成本高昂:一旦爬虫脚本因网站结构变化报错,或代码出现逻辑漏洞,必须人工逐行调试,耗费大量宝贵时间。
  • 难以处理复杂逻辑:面对“先分析数据再生成对应代码”的混合任务,传统单步 AI 工具无法自主拆解步骤,往往需要人类反复提示和纠偏。
  • 本地部署门槛高:想要保护数据隐私而使用本地大模型,却因配置繁琐、显存优化困难而被迫放弃,只能依赖不安全的云端服务。

使用 AIlice 后

  • 全流程自主闭环:AIlice 基于 IACT 架构自动将项目拆解为“数据收集”、“代码构建”、“文献整理”三个动态子智能体,并行执行并整合结果,开发者只需下达一个指令。
  • 高容错自我修复:当子任务遇到报错(如爬虫失效),AIlice 能自主诊断问题、调整策略并重试,无需人工介入即可恢复运行。
  • 复杂任务无缝协同:针对混合需求,AIlice 自动规划执行顺序,让负责研究的智能体输出结论,直接驱动编码智能体生成适配的业务逻辑,实现真正的“思考 - 行动”链。
  • 本地化强力运行:借助对开源大模型的深度优化,开发者可在本地电脑流畅运行类 JARVIS 助手,既保障了核心代码与数据安全,又节省了昂贵的 API 费用。

AIlice 将开发者从繁琐的工具切换与调试中解放出来,使其真正专注于创意决策,实现了单人团队具备完整研发流水线的效能飞跃。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU
  • 非必需
  • 若本地运行开源大模型或启用 Docker CUDA 支持,建议配备 NVIDIA GPU(需安装 nvidia-container-toolkit),Docker 示例中使用 CUDA 13.0
  • 若使用商业 API 则无特定显卡要求
内存

未说明(取决于所选用的大语言模型规模,本地运行大型模型通常建议 16GB+)

依赖
notes1. 支持多种运行方式:本地直接运行、Docker 沙箱、Docker + CUDA 加速、Docker + GUI(Linux 原生支持,Win/Mac 需特殊配置)。2. 核心架构依赖外部 LLM,可灵活配置商业模型(如 Claude, Gemini)或通过 Ollama、LM Studio 等推理服务连接开源模型。3. 具备语音对话功能(基于 ChatTTS)。4. 支持 MCP (Model Context Protocol) 工具扩展。5. 首次使用需配置 LLM API Key 或本地推理服务地址。
python未说明(通过 pip install -e . 安装,通常兼容 Python 3.8+)
nvidia-container-toolkit (可选,用于 Docker GPU 支持)
AIlice hero image

快速开始

Ailice

forks stars watchers Visitors license

快速入门演示开发TwitterReddit


注意!我们目前没有任何发行相关加密代币的计划。请保持警惕,识别诈骗以避免上当受骗。(更新于2025年1月6日)

:fire: 2025年3月22日:Ailice现在可以使用MCP工具了!点击这里

:fire: 2025年1月23日:更新了语音对话功能。得益于ChatTTS的出色实现,语音对话终于从实验阶段走向实用。

:fire: 2024年6月22日:我们已经进入了本地运行类似JARVIS的AI助手时代!最新的开源大模型使我们能够在本地执行复杂任务!点击这里了解更多。


Ailice是一个完全自主的通用型AI智能体。该项目旨在基于开源大模型打造一个类似于JARVIS的独立人工智能助手。借助其独特的IACT(交互式智能体调用树)架构,Ailice能够将复杂任务分解为动态构建的子智能体,并以高容错性整合结果。目前,Ailice在主题研究、编程、系统管理、文献综述以及更复杂的混合任务等方面表现出色。

我们的最终目标是实现AI智能体的自我进化。也就是说,AI智能体将自主构建自身的功能扩展和新型智能体,从而无缝地将大模型的知识与推理能力释放到现实世界中。


🚀 在线体验Ailice

立即在kragent.ai体验Ailice——这是一个基于Ailice构建的平台,无需本地部署即可探索其强大功能。非常适合测试并发现这款AI助手能做什么!

使用您自己的API密钥来配置强大的商用大模型,充分发挥其潜力(这将与默认的免费配置完全不同!)。为了获得最佳性价比,建议采用商用与开源大模型相结合的混合方案。推荐模型:Claude 3.5/3.7、Gemini 2.5 Pro


功能

Ailice的核心技术特点包括:

  • 针对专业领域的深度研究能力。
  • 阅读和分析文章及学术著作的能力。
  • 先进的编程与脚本执行自动化,可作为全面的编码工具和高效的系统管理工具,类似于AI驱动的操作系统。
  • 语音交互支持。
  • 兼容开源模型,并可无缝集成商用模型。
  • 所有智能体原生支持多模态。
  • 丰富的媒体界面,支持图片/视频/音频、LaTeX公式、代码高亮显示以及文件上传/下载。
  • 自然且高容错性的交互式智能体调用树架构。
  • 灵活解析大模型输出,支持更广泛的函数调用机制。
  • 能够自我构建并动态加载与环境交互的模块,为功能扩展提供无限可能。

快速入门

快速安装

使用以下命令安装并运行 Ailice。Ailice 启动后,用浏览器打开它提供的网页,对话界面就会出现。通过对话向 Ailice 发出指令来完成各种任务。首次使用时,可以尝试 COOL things we can do 部分中提供的命令,快速上手。

本地运行:

git clone https://github.com/myshell-ai/AIlice.git
cd AIlice
pip install -e .
ailice --contextWindowRatio=0.2

沙箱运行:

git clone https://github.com/myshell-ai/AIlice.git
cd AIlice
docker build -t ailice .
docker run -it -p 127.0.0.1:5000:5000 --name ailice ailice --expose=1 --contextWindowRatio=0.2

支持 CUDA 的沙箱运行(请先安装 nvidia-container-toolkit):

git clone https://github.com/myshell-ai/AIlice.git
cd AIlice
docker build --build-arg BASE_IMAGE=nvidia/cuda:13.0.0-cudnn-devel-ubuntu24.04 -t ailice .
docker run --gpus all -it -p 127.0.0.1:5000:5000 --name ailice ailice --expose=1 --contextWindowRatio=0.2

支持 GUI 的沙箱运行(仅限 Linux,Windows 和 macOS 需特殊配置):

git clone https://github.com/myshell-ai/AIlice.git
cd AIlice
docker build -t ailice .
docker run -it -p 127.0.0.1:5000:5000 \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    --name ailice \
    ailice --expose=1 --contextWindowRatio=0.2

COOL Things We Can Do

快速入门示例

  • “列出当前目录的内容。”
  • “查看今天旧金山的天气。”
  • “计算 e^(-x^2) 从负无穷到正无穷的积分,并给出详细的推导步骤。”
  • “使用任意算法生成分形可视化图像。”

系统管理

  • “在本系统上安装 Google Chrome 浏览器。下载最新稳定版本,验证安装并确认其正常工作。”

软件开发与分析

  • “从 GitHub 克隆 GiraffeCV 项目,分析其架构,识别主要模块接口,并提供详细报告。”

人工智能

  • “使用 SDXL 生成一张‘一只胖乎乎的橙色猫’的图片。参考其 Hugging Face 页面上的示例代码,保存到当前目录并展示结果。”

网页开发

  • “为 GitHub 上的 AIlice AI 代理项目生成一个专业的主页。在本地端口 59001 上运行,界面美观,包含图片和文字内容。”

工程设计与仿真

  • “设计一个频率调制 (FM) 无线电接收器并进行仿真。提供原理图和仿真结果。”
  • “使用 CadQuery 生成一个具有自定义参数的齿轮。生成后提供多角度的投影视图。”

网络安全

  • “对 kragent.ai 网站进行全面的安全扫描。检查常见漏洞,并提供包含建议的详细安全评估报告。”

学术研究与文献综述

  • “查找一篇关于黑洞信息悖论的最新综述论文。利用该论文收集过去五年内的重要文献链接,阅读这些文献,并汇报该领域的研究进展。”

理论物理

  • “推导波动方程和干涉理论,创建数值模拟和可视化效果,生成 LaTeX 格式的 PDF 幻灯片。”

数学

  • “创建微分几何中整体性的三维可视化效果。”
  • “生成傅里叶级数逼近中的吉布斯现象动画演示。”

医学研究

  • “调查目前治疗心脏结节病的方法。检索 2022 至 2025 年间的最新文献,分析临床试验结果,编写一份关于新兴治疗方式的综合报告。”

计算生物学

  • “利用分子系统发育数据和比较基因组学,计算人类与猫之间的最近共同祖先 (MRCA) 时间。”

天文学与天体物理学

  • “使用地平坐标系(高度角和方位角)计算从加州观测到的火星当前位置。”

文档生成

  • “生成一篇科学风格的 PDF 论文,格式规范,内容自定。”

数据集构建与自动化采集

  • “在互联网上搜索 100 篇涵盖各分支的物理教程,并将 PDF 文件下载到名为 ‘physics’ 的文件夹中。按子学科(力学、电磁学、量子物理等)整理,并创建带有元数据的索引。”

视频处理与 AI 分析流水线

任务: 通过完整的 AI 流水线处理费曼的物理讲座

步骤:

  1. 在 YouTube 上找到费曼的讲座视频,下载到 Feynman/ 子目录中(需先创建文件夹)
  2. 从视频中提取音频,保存到 Feynman/audio/
  3. 使用 whisper-large-v3 将音频转换为文本(参考 Hugging Face 示例代码),合并成一个文档
  4. 从转录文本中提取答案:“为什么我们需要反粒子?”

此多步骤任务需要与 AI 代理进行交互式沟通,必要时使用“中断”按钮引导流程。

扩展性与模块开发

  1. “编写一个扩展模块,通过关键词获取维基百科页面内容。”
  2. “加载新实现的维基百科模块,并用其查询相对论条目。”

AI 代理能够自主构建外部交互模块(ext-modules),只需简单的提示即可实现无限的扩展性。

安装与使用

系统要求

如果用户不打算在本地运行大语言模型,那么运行 Ailice 几乎没有硬件要求。对于希望在本地运行大语言模型的用户,目前只有参数量达到 700 亿或以上的模型才能较好地完成任务,因此至少需要两块 RTX 4090 显卡(每块显卡配备 48GB 显存)才能有效执行任务。

  • Ailice 是在 Ubuntu 上开发的,因此在 Ubuntu 上安装和使用有最佳的保障。
  • MacOS 环境下的可用性与 Ubuntu 环境相似。
  • 对于 Windows 用户,使用 Docker 或安装 WSL(Windows Subsystem for Linux),并在 WSL 中运行 Ailice 是更好的选择,尤其是需要执行编程任务的用户——我尚未集成 Windows 的命令执行工具(未来会考虑这一点,但命令行工具的灵活性对 AI 代理来说非常重要,这也使得 Linux 平台更具优势)。此外,在 Windows 上缺乏充分测试会显著增加出现 bug 的可能性;如果您遇到相关问题,请提交 issue 以寻求解决。

在安装 Ailice 之前,强烈建议先安装 Anaconda 并创建虚拟环境(您也可以使用其他喜欢的工具,如 venv)。您还需要 Chrome 浏览器,因为 Ailice 需要它来进行网页浏览。对于希望在完全受控的容器或虚拟机中运行 Ailice 的用户,您需要 Docker(或其他虚拟机工具,如 VirtualBox)。

如果您想在虚拟机中运行 Ailice,请确保关闭 Hyper-V(否则无法安装 llama.cpp)。在 VirtualBox 环境下,可以通过以下步骤禁用 Hyper-V:在虚拟机的 VirtualBox 设置中,禁用 PAE/NX 和 VT-X/AMD-V(即 Hyper-V),并将“半虚拟化接口”设置为默认值,同时禁用嵌套分页。

环境配置与安装

您可以使用以下命令来安装 Ailice:

git clone https://github.com/myshell-ai/AIlice.git
cd AIlice
pip install -e .

安装完成后,Ailice 的运行速度可能会较慢,这是因为长期记忆模块中的嵌入式模型计算可能正在 CPU 上运行。在这种情况下,可以尝试运行以下命令来启用 GPU 加速:

ailice_turbo

对于需要使用 PDF 阅读、语音对话、Hugging Face 模型或模型微调功能的用户,可以使用以下命令之一(安装过多功能会增加依赖冲突的可能性,因此建议仅安装必要的部分):

pip install -e .[pdf-reading]
pip install -e .[speech]
pip install -e .[huggingface]
pip install -e .[finetuning]

现在您可以运行 Ailice 了!请参考 使用方法 中的命令。

如果您需要频繁使用 Google

默认情况下,Ailice 中的 Google 模块是受限的,重复使用可能会导致错误,且需要一定时间才能解决。这在 AI 时代是一个令人尴尬的现实:传统搜索引擎只允许真正的用户访问,而 AI 代理目前并不属于“真实用户”的范畴。尽管我们有替代方案,但这些方案都需要配置 API 密钥,这对普通用户来说门槛较高。不过,对于那些需要频繁访问 Google 的用户,我相信您愿意承担申请 Google 官方 API 密钥的麻烦(我们指的是 Custom Search JSON API,该 API 在创建时需要指定搜索整个互联网)。对于这类用户,请打开 config.json 文件,并使用以下配置:

{
    ...
    "services": {
        ...
        "google": {
          "cmd": "python3 -m ailice.modules.AGoogleAPI --addr=ipc:///tmp/AGoogle.ipc --api_key=YOUR_API_KEY --cse_id=YOUR_CSE_ID",
          "addr": "ipc:///tmp/AGoogle.ipc"
        },
        ...
    }
}

然后安装 google-api-python-client:

pip install google-api-python-client

最后只需重启 Ailice 即可。

使用方法

您可以直接从下面的典型用例中复制命令来运行 Ailice。

ailice   # 使用 config.json 文件中 agentModelConfig 字段下为不同智能体单独配置的模型。
ailice_web --speechOn=1 --ttsDevice=cuda --sttDevice=cuda
ailice --modelID=anthropic:claude-sonnet-4-20250514 --contextWindowRatio=0.2
ailice --modelID=openrouter:z-ai/glm-4.5 --chatHistoryPath=./chat_history --contextWindowRatio=0.2
ailice --modelID=mistral:mistral-large-latest --prompt="researcher"
ailice --modelID=deepseek:deepseek-chat
ailice --modelID=hf:Open-Orca/Mistral-7B-OpenOrca --quantization=8bit --contextWindowRatio=0.6
ailice --modelID=groq:llama3-70b-8192
ailice --modelID=openrouter:google/gemini-2.5-pro
ailice --modelID=lm-studio:qwen2-72b --contextWindowRatio=0.5

需要注意的是,最后一个用例需要您先配置 LLM 推理服务,请参阅 如何添加 LLM 支持。使用 LM Studio 等推理框架,可以在有限的硬件资源下支持更大的模型,提供更快的推理速度和更快速的 Ailice 启动速度,因此更适合普通用户。

首次运行时,系统会提示您输入 API 密钥。您也可以通过编辑 config.json 文件来修改 API 密钥。请注意,首次使用开源 LLM 时,下载模型权重需要较长时间,请确保您有充足的时间和磁盘空间。

首次开启 speechOn 开关时,启动过程中可能需要等待较长时间。这是因为语音识别和 TTS 模型的权重正在后台下载。

如示例所示,您可以通过 ailice 使用智能体功能,并且它提供了 Web 对话界面。您可以通过以下命令查看每个参数的默认值:

ailice --help

所有命令行参数的默认值都可以通过修改 config.json 中对应的参数进行自定义。

  • --modelID:模型配置有两种模式。第一种模式是统一通过 modelID 指定模型;第二种模式则是不同类型智能体会运行在不同的模型上。当该参数为空字符串(未指定)时,将自动采用第二种模式,即使用 config.json 文件中 agentModelConfig 字段下为不同智能体单独配置的模型。详细信息请参阅 在不同智能体中使用不同模型。当前支持的模型可在 config.json 中查看。
  • --quantization:量化选项,可选择 4bit 或 8bit。默认为不进行量化。
  • --maxMemory:显存容量限制,默认不设置。设置格式为 {0:"23GiB", 1:"24GiB", "cpu": "64GiB"}
  • --prompt:指定要执行的提示词,即智能体类型。默认为 'main',该智能体会根据您的需求决定调用合适的智能体类型。您也可以直接指定某一特定类型的智能体并与之交互。
  • --temperature:设置 LLM 推理的温度参数,默认为零。
  • --flashAttention2:启用 Flash Attention 2 以加速推理的开关。可能会对输出质量产生一定影响。
  • --contextWindowRatio:用户指定的比例系数,在某些情况下用于确定推理过程中构建的提示长度上限占 LLM 上下文窗口的比例。默认值为 0.6。
  • --speechOn:启用语音对话的开关。
  • --ttsDevice:指定文本转语音模型使用的计算设备。默认为 "cpu",如果有足够的显存,可以设置为 "cuda"。
  • --sttDevice:指定语音转文本模型使用的计算设备。默认为 "cpu",如果有足够的显存,可以设置为 "cuda"。
  • --resetApiKey:是否在启动后重置模型的 API 密钥。
  • --chatHistoryPath:用于指定聊天历史数据的存储目录。
  • --certificate:Web 界面的证书设置。最简单的选项是空字符串,此时 UI 页面将使用 HTTP 协议。设置为 'adhoc' 将使用自生成的证书,为 UI 和服务器之间的数据流提供加密,但需要忽略浏览器的安全警告。最安全的方法是申请证书,并将此参数设置为 {"cert": "your_cert.pem", "key": "your_key.pem"}
  • --expose:是否对外公开访问。
  • --share:为 Ailice 创建一个可公开分享的链接。(出于安全考虑,我们暂时移除了此功能。待 UI 实施更多安全措施后,该功能将重新启用。请确保 app.py 提供的服务不会暴露到任何不受信任的网络中。)

配置扩展模块和 MCP 服务器

Ailice 的配置文件名为 config.json,其位置会在 Ailice 启动时输出到命令行中。在这一节中,我们将介绍如何通过配置文件来扩展 Ailice 的外部交互能力。

在 Ailice 中,我们使用“模块”一词特指那些提供与外部世界交互功能的组件。每个模块都作为一个独立的进程运行;它们可以与核心进程运行在不同的软件或硬件环境中,从而使 Ailice 具备分布式能力。我们在 Ailice 运行所需的配置文件中提供了一系列基础模块配置(如向量数据库、搜索、浏览器、代码执行等)。你也可以添加新模块的配置。模块配置非常简单,仅包含两项:

  "services": {
    ...
    "scripter": {"cmd": "python3 -m ailice.modules.AScripter --addr=tcp://127.0.0.1:59000",
	               "addr": "tcp://127.0.0.1:59000"},
    ...
  }

其中,“cmd”项是一个用于启动模块进程的命令行。当 Ailice 启动时,它会自动运行这些命令来启动模块。用户可以指定任意命令,这提供了极大的灵活性。你可以在本地启动模块进程,也可以利用 Docker 在虚拟环境中启动进程,甚至可以启动远程进程。有些模块有多种实现方式(如 Google/Storage),你可以在这里进行配置以切换到另一种实现。

“addr”指的是模块进程的地址和端口号。用户可能会感到困惑,因为在默认配置中,许多模块的“cmd”和“addr”都包含了地址和端口号,似乎存在冗余。这是因为“cmd”原则上可以包含任何命令(其中可能包含地址和端口号,也可能不包含)。因此,需要单独的“addr”项来告知 Ailice 如何访问模块进程。

Ailice 可以使用来自各种 MCP 服务器的工具,只需用 ailice_mcp_wrapper 命令将 MCP 服务器封装起来,即可将其作为 Ailice 的标准扩展模块使用。

对于以 stdio 模式在本地启动的 MCP 服务器,假设启动命令为 mcp_echo hello,我们使用以下配置将其作为 Ailice 的标准服务启动。

  "services": {
    ...
    "mcp_echo": {"cmd": "ailice_mcp_wrapper --addr tcp://127.0.0.1:59200 stdio mcp_echo hello",
                 "addr": "tcp://127.0.0.1:59200"},
    ...
  }

对于 SSE 模式的 MCP 服务器,假设其服务地址为:http://example:8000/sse,我们使用以下配置将其连接起来。

  "services": {
    ...
    "mcp_echo": {"cmd": "ailice_mcp_wrapper --addr tcp://127.0.0.1:59200 sse --server_url http://example:8000/sse",
                 "addr": "tcp://127.0.0.1:59200"},
    ...
  }

对于在配置文件中设置的扩展模块,Ailice 会在启动后自动加载,并为当前任务选择合适的工具。除了使用 config.json 外,你还可以在运行时向 Ailice 提供扩展模块进程的地址和端口,这样它就可以动态加载并使用该模块。

实用提示

Ailice 是一个基于多智能体协作的代理,而作为用户,你也是其中的一个“智能体”。因此,当 Ailice 需要更多信息时,它会向你寻求输入,而你提供的信息是否详尽,对她的成功至关重要。

中断。中断是 Ailice 支持的第二种交互模式,它允许你在任何时候打断并提示 Ailice 的智能体,以纠正错误或提供指导。在 ailice 中,在 Ailice 执行任务的过程中,输入框右侧会出现一个中断按钮。按下它会暂停 Ailice 的执行,并等待你的提示信息。你可以将提示内容输入到输入框中,然后按 Enter 键将消息发送给正在执行子任务的智能体。 熟练使用此功能需要对 Ailice 的工作原理有很好的理解,尤其是智能体调用树架构。此外,在 Ailice 执行任务时,还需要更多地关注命令行窗口,而不是对话界面。总体而言,这是一个非常有用的功能,尤其是在性能较弱的语言模型设置下。

在语音对话模式下,你可以让 Ailice 在不同的音色之间切换,直到找到你喜欢的音色(它会记住你偏好的音色)。

LLM 的选择与配置

LLM 选择指南

更新于 2025 年 8 月 15 日。

目前,Ailice 可以使用本地运行的 72B 开源模型(qwen-2.5-72b-instruct 在 4090x2 上运行)处理更复杂的任务。考虑到开源模型的成本较低,我们强烈建议用户从这些模型开始使用。此外,将 LLM 运行本地化可以确保绝对的隐私保护,这在当今的 AI 应用中是非常难得的品质。点击这里了解如何在本地运行 LLM。对于 GPU 条件不足以运行大型模型的用户,可以使用在线推理服务(如 openrouter,稍后会提到)来访问这些开源模型(尽管这会牺牲隐私)。你可以根据不同模型的优势和劣势,让智能体发挥出最佳效果。有关详细信息,请参阅在不同智能体中使用不同模型

claude-3-5-sonnet/claude-3-7-sonnet/claude-sonnet-4/gemini-2.5-pro 提供了最佳性能。

z-ai/glm-4.5 的性能非常接近顶级水平。

qwen-2.5-72b-instruct 在 70B 级别中提供了最佳性能。

gpt-4-turbo/gpt-3.5-turbo 表现得异常懒惰,我们始终无法找到稳定的提示表达方式。 gpt-4o 曾经拥有顶级性能,但目前(与之前的 turbo 型号类似)在函数调用方面也出现了懒惰问题。我们不再推荐使用它们。

对于硬件能力不足以在本地运行开源模型,且无法获取商用模型 API 密钥的用户,可以尝试以下选项:

  • openrouter/apipie 这些服务可以将你的推理请求路由到各种开源或商用模型,而无需在本地部署开源模型或申请各种商用模型的 API 密钥。它们是非常棒的选择。Ailice 自动支持 OpenRouter/Apipie 中的所有模型。感谢 @babybirdprd 向我推荐了 OpenRouter。

最出色的开源模型

我们将选择当前性能最佳的开源模型,为使用开源模型的用户提供参考。

  • 所有模型中表现最佳的是:z-ai/glm-4.5。该模型性能卓越,但其硬件需求远超大多数用户的设备能力,因此不适合在本地运行。

  • qwen-2.5-72b-instruct:通义千问2.0-72B-Instruct是首个具备实用价值的开源模型,而2.5版本在此基础上进一步优化。它提供了适用于相对简单任务的低成本模型,同时也是大多数用户能够在本地运行的最佳选择。

如果您发现更好的模型,请告知我们。

如何添加LLM支持

对于高级用户来说,尝试更多模型是不可避免的。幸运的是,实现这一点并不困难。

通过推理服务使用LLM

对于OpenAI、Mistral、Anthropic和Groq等模型,您无需进行任何操作。只需使用由官方模型名称加上“oai:”、“mistral:”、“anthropic:”或“groq:”前缀组成的modelID即可。如果需要使用Ailice不支持的模型,您可以通过在config.json文件中添加该模型条目来解决这个问题。添加方法是直接引用类似模型的条目,将contextWindow修改为实际值,保持systemAsUser与类似模型一致,并将args设置为空字典。

您可以使用任何兼容OpenAI API的第三方推理服务器来替代Ailice内置的LLM推理功能。 只需采用与OpenAI模型相同的配置格式,并修改baseURL、apikey、contextWindow等参数(实际上,Ailice正是通过这种方式支持Groq模型的)。

对于不支持OpenAI API的推理服务器,您可以尝试使用litellm将其转换为兼容OpenAI的API(我们将在下文提供示例)。

需要注意的是,由于Ailice的对话记录中包含大量SYSTEM消息,而这并非LLM的常见用例,因此对此类服务的支持程度取决于这些推理服务器的具体实现方式。在这种情况下,您可以将systemAsUser参数设置为true以规避问题。虽然这可能会使模型无法以最佳性能运行Ailice,但也让我们能够兼容各种高效的推理服务器。对于普通用户而言,这种做法带来的好处大于弊端。

示例1:ollama + litellm

我们以Ollama为例,说明如何为这类服务添加支持。 首先,我们需要使用Litellm将Ollama的接口转换为与OpenAI兼容的格式。

pip install litellm
ollama pull mistral-openorca
litellm --model ollama/mistral-openorca --api_base http://localhost:11434 --temperature 0.0 --max_tokens 8192

然后,在config.json文件中添加对该服务的支持(该文件的位置会在Ailice启动时提示)。

{
  "maxMemory": {},
  "quantization": null,
  "models": {
    "oai": {
      ...
    },
    "ollama": {
      "modelWrapper": "AModelChatGPT",
      "apikey": "fake-key",
      "baseURL": "http://localhost:8000",
      "modelList": {
        "mistral-openorca": {
          "formatter": "AFormatterGPT",
          "contextWindow": 8192,
          "systemAsUser": false,
          "args": {}
        }
      }
    },
    ...
  },
  ...
}

现在我们可以运行Ailice:

ailice --modelID=ollama:mistral-openorca

示例2:LM Studio

在这个示例中,我们将使用LM Studio运行我见过的最强大的开源模型:Qwen2-72B-Instruct-Q3_K_S.gguf,从而让Ailice在本地机器上运行。

使用LM Studio下载Qwen2-72B-Instruct-Q3_K_S.gguf的模型权重。

在LM Studio的“LocalServer”窗口中,如果您只想使用GPU,请将n_gpu_layers设置为-1。将左侧的“Context Length”参数调整为16384(或根据您的可用内存选择较小的值),并将“Context Overflow Policy”改为“保留系统提示和第一条用户消息,截断中间内容”。

启动服务。假设服务地址为“http://localhost:1234/v1/”。

然后,打开config.json并进行如下修改:

{
  "maxMemory": {},
  "quantization": null,
  "models": {
    "oai": {
      ...
    },
    "lm-studio": {
      "modelWrapper": "AModelChatGPT",
      "apikey": "fakekey",
      "baseURL": "http://localhost:1234/v1/",
      "modelList": {
        "qwen2-72b": {
          "formatter": "AFormatterGPT",
          "contextWindow": 32764,
          "systemAsUser": true,
          "args": {}
        }
      }
    },
    ...
  },
  ...
}

最后,运行Ailice。您可以根据可用的VRAM或内存空间调整‘contextWindowRatio’参数。该参数越大,所需的VRAM空间就越多。

ailice --modelID=lm-studio:qwen2-72b --contextWindowRatio=0.5

示例3:添加开源多模态模型支持

与上一节类似,我们在使用LM Studio下载并运行LLAVA后,按如下方式修改配置文件:

{
  "maxMemory": {},
  "quantization": null,
  "models": {
    "oai": {
      ...
    },
    "lm-studio": {
      "modelWrapper": "AModelChatGPT",
      "apikey": "fakekey",
      "baseURL": "http://localhost:1234/v1/",
      "modelList": {
        "llava-1.6-34b": {
          "formatter": "AFormatterGPTVision",
          "contextWindow": 4096,
          "systemAsUser": true,
          "args": {}
        }
      },
    },
    ...
  },
  ...
}

然而,需要注意的是,目前的开源多模态模型还远远不足以完成智能体任务,因此这个示例更适合开发者而非普通用户。

Huggingface上的开源模型

对于Huggingface上的开源模型,您只需了解以下信息即可添加新模型的支持:模型的Huggingface地址、模型的提示格式以及上下文窗口长度。 通常只需一行代码即可添加新模型,但有时也可能需要十几行代码。

以下是完整的新增LLM支持方法: 打开config.json文件,您应将新LLM的配置添加到models.hf.modelList中,其格式如下:

{
  "maxMemory": {},
  "quantization": null,
  "models": {
    "hf": {
      "modelWrapper": "AModelCausalLM",
      "modelList": {
        "meta-llama/Llama-2-13b-chat-hf": {
          "formatter": "AFormatterLLAMA2",
          "contextWindow": 4096,
          "systemAsUser": false,
          "args": {}
        },
        "meta-llama/Llama-2-70b-chat-hf": {
          "formatter": "AFormatterLLAMA2",
          "contextWindow": 4096,
          "systemAsUser": false,
          "args": {}
        },
        ...
      }
    },
  ...
  }
...
}
  • “formatter” 是一个定义 LLM 提示词格式的类。你可以在 core/llm/AFormatter 中找到它们的定义。通过阅读这些代码,你可以确定要添加的模型需要哪种格式。如果找不到合适的格式,就需要自己编写一个。幸运的是,Formatter 的实现非常简单,通常十几行代码就能完成。相信在阅读了几份 Formatter 源码之后,你就能明白该如何操作。

  • 上下文窗口是 Transformer 架构的 LLM 通常具有的一个属性,它决定了模型一次能够处理的文本长度。你需要将新模型的上下文窗口设置为“contextWindow”键对应的值。

  • “systemAsUser”:我们使用“system”角色来表示函数调用返回的消息发送者。然而,并非所有 LLM 都对 system 角色有明确的定义,而且也不能保证 LLM 能够适应这种做法。因此,我们需要通过 systemAsUser 来设置是否将函数调用返回的文本放入用户消息中。建议先将其设置为 False。

一切就绪!只需在模型名称前加上“hf:”作为前缀,形成 modelID,然后将新模型的 modelID 作为命令参数传递给 Ailice 即可启动!

在不同智能体中使用不同模型

Ailice 具有两种运行模式。一种模式是使用单一的 LLM 驱动所有智能体,而另一种模式则允许每种类型的智能体指定对应的 LLM。后一种模式使我们能够更好地结合开源模型和商业模型的能力,在降低成本的同时获得更好的性能。要使用第二种模式,首先需要在 config.json 中配置 agentModelConfig 项:

  "modelID": "",
  "agentModelConfig": {
    "DEFAULT": "openrouter:z-ai/glm-4.5",
    "main": "openrouter:anthropic/claude-sonnet-4",
    "search-engine": "openrouter:qwen/qwen-2.5-72b-instruct"
  },

首先确保 modelID 的默认值被设置为空字符串,然后在 agentModelConfig 中为每种类型的智能体配置对应的 LLM。

最后,可以通过不指定 modelID 来实现第二种运行模式:

ailice

开发

设计

设计 Ailice 时的基本原则是:

  • 通过高度动态的提示词构建机制丰富 LLM 的行为;
  • 尽可能地分离不同的计算任务,利用传统计算中的递归和分治思想来解决复杂问题。
  • 智能体之间应能进行双向交互。

下面简要解释这些基本原则。

从最直观的角度来看,高度动态的提示词构建机制可以降低智能体陷入循环的可能性。来自外部环境的新变量不断输入到 LLM 中,有助于其避免陷入死循环。此外,向 LLM 提供当前可用的所有信息,可以显著提升其输出质量。例如,在自动化编程中,解释器或命令行返回的错误信息可以帮助 LLM 不断调整代码,直到得到正确的结果。另外,在动态提示词构建过程中,提示词中的新信息也可能来自其他智能体,这相当于一种联动推理计算,使得系统的计算机制更加复杂多样,从而产生更丰富的行为。

从实际角度来看,分离计算任务主要是因为我们的上下文窗口有限。我们不可能指望在几千个 token 的窗口内完成一项复杂的任务。如果能够将复杂任务分解成若干子任务,让每个子任务都在有限资源内解决,那将是理想的结果。在传统的计算模型中,我们一直采用这种方法,但在以 LLM 为中心的新计算模式中,要做到这一点并不容易。问题在于,一旦某个子任务失败,整个任务都有可能失败。递归则更为棘手:如何确保每次调用时,LLM 只解决子问题的一部分,而不是将全部负担转交给下一层调用?我们在 Ailice 中通过 IACT 架构解决了第一个问题,而第二个问题理论上并不难解决,只是可能需要更智能的 LLM 才能做到。

第三个原则正是目前大家都在努力的方向:让多个智能体相互协作,共同完成更复杂的任务。这一原则的实现实际上也解决了前面提到的子任务失败问题。多智能体协作对于智能体在运行中的容错能力至关重要。事实上,这可能是新计算范式与传统计算之间最大的区别之一:传统计算精确无误,子任务仅通过单向通信(函数调用)分配;而新计算范式则容易出错,需要计算单元之间进行双向通信来纠正错误。这一点将在接下来关于 IACT 框架的章节中详细说明。

计算模型:交互式智能体调用树

IACT IACT 架构图。用户要求构建一个用于图片收集和展示的页面,该需求被动态分解为两个任务:coder_spider 和 coder_website。当 coder_spider 遇到困难时,会主动向其调用者 proxy_cat_gallery 寻求帮助。proxy_cat_gallery 随即创建另一个智能体 researcher_api,并委托其解决问题。

Ailice 可以被视为 一台由 LLM 驱动的计算机,其特点包括:

  • 以文本形式表示输入、输出、程序和数据。
  • 使用 LLM 作为处理器。
  • 通过连续调用基本计算单元(类似于传统计算中的函数),将计算任务分解为多个子任务,而这些基本计算单元本质上就是各种功能型智能体。

因此,用户输入的文本命令会被当作一种程序执行,分解为多个“子程序”,并由不同的智能体负责处理,这构成了 Ailice 的基础架构。接下来,我们将详细探讨这些基本计算单元的本质。

一个自然的想法是,让大语言模型通过与外部调用者及外围模块进行多轮对话,在最简单的计算单元中解决某些问题(如信息检索、文档理解等)。我们暂时将这个计算单元称为“函数”。然后,类比传统计算,允许函数之间相互调用,并最终引入线程的概念来实现多智能体交互。然而,我们其实可以构建一种更为简单且优雅的计算模型

关键在于,封装了大语言模型推理能力的“函数”实际上可以被多次调用并返回。具备编码功能的“函数”在编码过程中遇到需求不明确时,可以暂停工作,向其调用者返回一条查询语句。如果调用者对答案仍不清楚,则会继续向上一级调用者提问。这一过程甚至可以一直传递到最终用户的聊天窗口。当有新信息加入时,调用者可以通过传入补充信息重新激活编码者的执行流程。由此可见,这种“函数”并非传统意义上的函数,而是一个可以被多次调用的对象。正是大语言模型的高度智能使得这一特性成为可能。你也可以将其视为由调用关系串联起来的智能体,每个智能体既可以创建和调用更多的子智能体,又能够与其调用者对话以获取补充信息或汇报进展。在Ailice中,我们将这种计算单元称为**“AProcessor”**(本质上就是我们所说的智能体)。它的代码位于core/AProcessor.py。

基本计算单元:LLM与解释器的太极图

接下来,我们将详细阐述AProcessor内部的结构。AProcessor的内部是一次多轮对话。“定义AProcessor功能”的“程序”是一种提示词生成机制,它根据对话历史生成每一轮对话的提示词。这种对话属于一对多的形式:外部调用者输入请求后,大语言模型会与外围模块(我们称之为SYSTEM)进行多轮对话,大语言模型会以各种语法形式输出函数调用,系统则调用外围模块生成结果,并将结果放入回复消息中。最后,大语言模型得到答案并回复外部调用者,本次调用结束。但由于对话历史仍然被保留,调用者可以再次发起调用,继续执行更多任务。

我们最后要介绍的是用于解析大语言模型输出的模块。事实上,我们将大语言模型的输出文本视为一种半自然语言、半形式语言的“脚本”,并使用一个简单的解释器来执行它。我们可以利用正则表达式来描述精心设计的语法结构,将其解析为函数调用并执行。在这种设计下,我们可以设计更加灵活的函数调用语法形式,例如带有特定固定标题的部分(如“UPDATE MEMORY”),也可以直接被解析出来并触发相应动作的执行。这种隐式的函数调用无需让大语言模型意识到它的存在,只需要严格遵循某种格式规范即可。为了应对最极端的情况,我们还留有一定的余地。这里的解释器不仅可以使用正则表达式进行模式匹配,其Eval函数还是递归的。我们尚不清楚这会被用于何种场景,但留下这样一个酷炫的可能性似乎也不错,不是吗?因此,在AProcessor内部,计算是由大语言模型和解释器交替完成的,它们的输出互为输入,形成一个循环。

智能体设计:实现解释器框架

在Ailice中,解释器是智能体中最核心的组件之一。我们利用解释器将大语言模型输出中符合特定模式的文本映射为具体动作,包括函数调用、变量定义与引用,以及任何用户自定义的动作。有时这些动作会直接与外围模块交互,影响外部世界;另一些则用于修改智能体的内部状态,从而影响其未来的提示词。

解释器的基本结构非常简单:一组模式-动作对。模式由正则表达式定义,动作则由带有类型注解的Python函数指定。由于语法结构可能存在嵌套,我们将顶层结构称为入口模式。运行时,解释器会主动检测大语言模型输出文本中的这些入口模式。一旦检测到入口模式(且对应的动作返回数据),它就会立即终止大语言模型的生成过程,以执行相关动作。

Ailice中智能体的设计包含两个基本方面:基于对话历史和智能体内部状态生成提示词的逻辑,以及一组模式-动作对。本质上,智能体通过一组模式-动作对实现了解释器框架的一部分;它本身也成为解释器不可分割的一部分。智能体的内部状态是解释器动作的目标之一,而内部状态的变化会影响未来提示词的方向。

从对话历史和内部状态生成提示词的过程几乎是标准化的,尽管开发者仍有自由选择完全不同的生成逻辑。开发者面临的主要挑战是设计系统提示词模板,这是智能体的核心所在,往往也是需要投入最多精力去完善的部分。不过,这项工作完全围绕着撰写自然语言提示词展开。

脚本语言:从文本到现实

Ailice利用一种内嵌于文本中的简单脚本语言,将大语言模型的文本处理能力映射到现实世界。这种简洁的脚本语言包括非嵌套的函数调用、变量的创建与引用机制,以及文本内容的拼接操作。其目的是让大语言模型能够更自然地对世界产生影响:从更流畅的文本操作能力,到简单的函数调用机制,再到多模态的变量操作能力。最后需要指出的是,对于智能体的设计者而言,他们始终拥有扩展该脚本语言新语法的自由。这里介绍的是一个最小化的标准语法结构。

基本语法如下:

变量定义: VAR_NAME := <!|"SOME_CONTENT"|!>

函数调用/变量引用/文本拼接: !FUNC-NAME<!|"...", '...', VAR_NAME1, "执行以下代码:\n" + VAR_NAME2, ...|!>

基本变量类型包括 str、AImage 和各种多模态类型。str 类型与 Python 的字符串语法一致,支持三重引号和转义字符。

这构成了嵌入式脚本语言的全部内容。

变量定义机制引入了一种扩展上下文窗口的方式,允许 LLM 将重要内容记录到变量中,以防止遗忘。在系统运行过程中,各种变量会自动被定义。例如,如果在文本消息中检测到用三重反引号包裹的代码块,系统会自动创建一个变量来存储该代码,从而使 LLM 可以通过引用该变量来执行代码,避免了完整复制代码所需的时间和 token 开销。此外,某些模块函数可能会返回多模态类型的数据,而不是纯文本。在这种情况下,系统会自动将这些数据定义为相应多模态类型的变量,以便 LLM 能够引用它们(LLM 可能会将它们发送到另一个模块进行处理)。

多模态:富文本与变量机制的协同

从长远来看,LLM 必然会演变为能够“看”和“听”的多模态模型。因此,Ailice 各个智能体之间的交互应采用富文本形式,而不仅仅是纯文本。虽然 Markdown 提供了一些标记多模态内容的能力,但仍然不够充分。因此,未来我们需要一种扩展版的 Markdown,以支持嵌入视频、音频等各种多模态数据。

我们以图像为例来说明 Ailice 中的多模态机制。当智能体接收到包含 Markdown 标记图像的文本时,系统会自动将其输入到多模态模型中,以确保模型能够“看到”这些内容。通常,Markdown 使用路径或 URL 来标记图像,为此我们扩展了 Markdown 语法,允许使用变量名来引用多模态内容。

另一个小问题是,拥有各自内部变量列表的不同智能体如何交换多模态变量。解决方法很简单:系统会自动检查从一个智能体发送到另一个智能体的消息中是否包含内部变量名。如果包含,则会将变量内容一同传递给下一个智能体。

既然使用路径和 URL 标记多模态内容更加方便,为什么我们还要费心实现额外的多模态变量机制呢?这是因为基于本地文件路径标记多模态内容,只有在 Ailice 完全运行于本地环境时才可行,而这并非我们的设计初衷。Ailice 的设计目标是分布式运行,核心和各个模块可能分别运行在不同的计算机上,甚至可以加载互联网上的服务来进行某些计算。这样一来,直接返回完整的多模态数据就更具吸引力。当然,这些面向未来的设计也许有些过度工程化,如果是这样,我们会在未来对其进行调整。

自我扩展:像树一样生长

Ailice 的目标之一是实现自我反思和自我扩展(这也是我们标志中蝴蝶倒映在水中的原因)。这将使她能够理解自己的代码并构建新的功能,包括新的外部交互模块(即新功能)和新型智能体(APrompt 类)。这样一来,LLM 的知识和能力将得到更充分的释放。

实现自我扩展涉及两个方面。一方面,需要在运行时动态加载新的模块和新型智能体(APrompt 类),并自然地融入计算系统参与处理,这被称为动态加载。另一方面,Ailice 需要具备构建新模块和新型智能体的能力。

动态加载机制本身具有重要意义:它代表了一种全新的软件更新机制。我们可以让 Ailice 在互联网上搜索自己的扩展代码,对代码进行安全性检查、修复 bug 和兼容性问题,并最终将扩展作为自身的一部分运行起来。因此,Ailice 的开发者只需将自己的贡献代码发布到网上,无需合并到主代码库中,也不必考虑其他安装方式。动态加载机制的实现正在不断完善。其核心在于扩展包提供一段描述其功能的文本。在运行时,Ailice 中的每个智能体都会通过语义匹配等方式,为自己找到合适的功能或智能体类型来解决子问题。

构建新模块是一项相对简单的任务,因为模块需要满足的接口约束非常明确。我们可以通过示例来训练 LLM 构建新模块。更为复杂的则是新型智能体(APrompt 类)的自我构建,这需要对 Ailice 的整体架构有很好的理解。尤其是系统提示词的构建,极为精细,即使对人类来说也是一项挑战。因此,我们寄希望于未来更强大的 LLM 实现自我反思,让 Ailice 通过阅读自己的源代码来理解自己(对于像程序这样复杂的事物,最好的介绍方式就是由其自身呈现),从而构建出更好的新型智能体

开发者入门指南

  • 对于开发智能体而言,Ailice 的主循环位于 AiliceMain.py 或 ui/app.py 文件中。要进一步了解智能体的构建过程,需要阅读 “prompts” 文件夹中的代码,通过这些代码可以理解智能体的提示词是如何动态构建的。

  • 对于希望深入了解 Ailice 内部运行逻辑的开发者,请阅读 core/AProcessor.py 和 core/Interpreter.py。这两份文件总共约三百行代码,却包含了 Ailice 的基本框架。

项目开发标准与约束

  • 在本项目中,实现AI Agent的预期功能是首要目标,其次才是代码的清晰与简洁。目前AI Agent的实现仍处于探索阶段,因此我们希望尽量减少软件中的刚性组件(如对后续开发造成限制的架构或接口),并为应用层提供最大的灵活性(例如提示词类)。抽象、去重和解耦并非当前的优先事项。

  • 在实现某个功能时,应选择最优方法,而非最直观的方法。所谓“最优”,通常包括从更高维度简化问题、保持代码的清晰简洁,以及确保改动不会显著增加整体复杂度或限制软件未来的扩展性。

  • 添加注释并非强制要求,除非绝对必要;应力求使代码足够清晰,无需额外解释。虽然这对喜欢注释的开发者来说可能不是问题,但在AI时代,我们可以随时生成详细的代码说明,从而避免使用结构松散、难以维护的注释。

  • 添加代码时应遵循奥卡姆剃刀原则,绝不添加不必要的代码行

  • 核心模块中的函数或方法不应超过60行

  • 虽然没有明确的编码风格约束,但仍需在命名和大小写使用上与原有代码保持一致或相似,以避免影响代码可读性。

Ailice的目标是在5000行以下的规模内实现多模态和自我扩展功能,并在当前阶段达到最终形态。追求简洁的代码不仅因为精炼的代码往往代表更好的实现方式,还因为它能够让AI尽早具备自我反思能力,从而更好地进行自我扩展。请严格遵守上述规则,认真对待每一行代码。

未来开发路线图

Ailice的根本任务有两个:一是将基于文本的LLM能力充分释放到现实世界中;二是探索更优的长期记忆机制,形成对海量文本的一致性理解。我们的开发工作将围绕这两个核心展开。

如果您对Ailice本身的开发感兴趣,可以考虑以下几个方向:

  • 探索改进的长期记忆机制,以提升各Agent的能力。我们需要一种能够持续理解大量内容并促进知识关联的长期记忆机制。目前最可行的方案是用知识图谱替代向量数据库,这将极大提升对长篇文本或代码的理解能力,并帮助我们构建真正的个人AI助手。

  • 多模态支持。多模态模型的支持已经完成,当前的开发重点正转向外围模块的多模态支持。我们需要一个能够基于屏幕截图操作计算机、模拟鼠标和键盘输入的模块。

  • 自我扩展支持。我们的目标是让语言模型能够自主编写代码并实现新的外围模块或Agent类型,然后动态加载以供立即使用。这一能力将实现系统的自我扩展,使其能够无缝集成新功能。我们已完成大部分相关功能,但仍需进一步开发构建新型Agent的能力。

  • 更丰富的UI界面。我们需要将Agent的输出组织成对话窗口中的树状结构,并动态更新所有Agent的输出。同时,还需在Web界面上接收用户输入,并将其传递给脚本执行器的标准输入,这一点在使用sudo时尤为重要。

  • 基于现有框架,开发具有各种功能的Agent

  • 探索IACT架构在复杂任务中的应用。通过构建交互式Agent调用树,我们可以将大型文档拆解以提升阅读理解能力,也可以将复杂的软件工程任务分解为更小的模块,通过迭代逐步完成整个项目的构建与测试。这需要一系列精细的提示词设计和测试工作,但为未来带来了令人期待的前景。IACT架构能够显著缓解上下文窗口带来的资源限制,使系统能够动态适应更复杂的任务。

  • 利用自我扩展机制构建丰富的外部交互模块!这将在AiliceEVO中实现

  • 探索将Ailice用作强化学习的执行环境,以优化小型语言模型的性能。在Agent应用中,模型的知识量不如其推理能力和工具使用能力重要。而后者在很大程度上取决于模型对其运行环境的理解,强化学习(RL)可能是培养这种理解的最佳途径。

版本历史

v0.2.0-alpha2024/02/07

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

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 真正成长为懂上

155.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|4天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|5天前
插件Agent图像

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 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架