关于 AON
AON 是可自托管的 AI Agent,在个人硬件上运行本地模型,支持对话、工具、长期记忆和文档搜索。它面向希望本地运行 Agent 的个人或团队,可通过 Web、Android、Telegram 和 MCP 使用。
主要功能
- 01运行本地模型和 Agent 工具
- 02搜索跨对话的长期记忆
- 03索引并搜索带引用的文档
- 04导入和创建 Agent 技能
- 05连接 MCP 服务或作为 MCP 服务运行
- 06通过 Web、Android 或 Telegram 使用
适用场景
- 01使用本地模型让 Agent 回答问题
- 02找回在对话中保存的信息
- 03在文档集合中查找内容
- 04通过 MCP 客户端调用 AON 任务和记忆
MCP 相关
`aon mcp` 可将 AON 作为 MCP 服务,供 Claude Desktop、Claude Code 和 Cursor 等客户端使用。它提供任务、记忆和文档工具;通过 MCP 不允许执行 shell 命令或写入文件。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🛰️ AON:自包含的无约束 AI
你自己的无审查 AI Agent。一块 GPU。无需云端。没有过滤。
⚡ 快速开始 · 💡 为什么选择 AON · 🔌 MCP 服务 · 📱 Android · 🔑 在线实例 · 🎬 演示
| 💬 聊天 | 🗺️ 地图 |
|---|---|
![]() | ![]() |
AON 是一个可自托管的 AI Agent,使用本地模型运行在你自己的硬件上。它可以回答问题、运行工具(文件、Shell、网页搜索、地图)、在多次聊天之间记住你、读取你的文档,还能通过新模型、技能和 MCP 服务扩展自身。你可以通过 Web、Android 应用、Telegram 使用它,也可以通过其 MCP 服务连接 Claude Desktop、Claude Code 和 Cursor。
重要
🔒 所有数据都留在你的设备上。 聊天运行在你自己 GPU 上的 vLLM 或 Ollama 上,嵌入模型运行在 Ollama 上。无需云端大模型,无 API 费用, 也没有服务提供商过滤或记录日志。
⚡ 快速开始
pipx install aon-agent # 1. install
aon init # 2. create ~/.aon with a starter config
aon serve # 3. open http://127.0.0.1:8700
提示
你需要安装 Ollama,并准备好
nomic-embed-text和一个支持 工具调用的聊天模型:ollama pull nomic-embed-text && ollama pull qwen3:14b。然后运行aon mcp, 将 AON 接入 Claude Desktop(操作方法)。
💡 为什么选择 AON
记忆和 RAG 如今已是基本配置。AON 更进一步:
- 🔓 完全解除限制,完全属于你。 在一张消费级 GPU(RTX 4090)上运行的无审查(“解除限制”)27B 模型。你的聊天、记忆和文档永远不会离开这台设备。
- 🧬 它会自我扩展。 粘贴一个链接,AON 就会判断链接的内容:它可以拉取的 GGUF 模型(会先检查显存预算和工具支持情况)、可连接的 MCP 服务、可导入的技能仓库,或可供学习的文档。它还能根据任意网页起草新技能并进行测试。
- 🔌 接入你已在使用的 AI 应用。
aon mcp可将 AON 变成 MCP 服务,供 Claude Desktop、Claude Code 和 Cursor 使用,让它们可以交付任务,并搜索 AON 的记忆和你的文档。 - 👥 一张 GPU,为整个团队提供私有 AI。 vLLM 可同时为多位用户提供服务,通过 Cloudflare Access 电子邮件 PIN 保护,并由管理员逐一批准每位用户。
- 🛡️ 设计上值得信赖。 Shell 命令和文件写入操作都要等你批准。未经工具执行却声称“已完成”的回复不可信。机密信息绝不会保存到记忆中。
- 🗺️ 有据可依,而非凭空猜测。 地点和路线来自基于 3D 地球仪的 OpenStreetMap 路线规划;距离和时间均通过计算得出,而非由模型编写。
| 🛰️ AON | ☁️ 常见云端 AI 聊天 | |
|---|---|---|
| 在你自己的硬件上运行 | ✅ | ❌ |
| 聊天和文件由你掌控 | ✅ | ❌ |
| 服务商的内容过滤 | ❌ 无 | ✅ |
| 费用 | 你的 GPU 电费 | 订阅费或按 Token 计费 |
| 长期记忆 + 你的文档(RAG) | ✅ | ✅ |
| 在你的服务上运行命令(需你批准) | ✅ | ❌ |
| 通过链接安装新模型、MCP 服务和技能 | ✅ | ❌ |
| 可从 Claude Desktop / Cursor 作为工具使用(MCP) | ✅ | ❌ |
| 一张 GPU 为整个团队提供服务 | ✅ | ❌ |
🔌 MCP 服务
在 Claude Desktop、Claude Code、Cursor 和其他任何 MCP 客户端中使用 AON。
aon mcp 会将 AON 作为 Model Context Protocol 服务运行。它随 aon-agent 软件包一同发布(源代码);你的 MCP 客户端会负责启动它。
| 工具 | 功能 | 权限 |
|---|---|---|
ask_aon | 向 AON 交付任务或提问;它会使用自己的模型、记忆、文档和工具作答。传入 chat 可继续对话。 | ✍️ 写入 |
search_memory | 搜索 AON 关于你的长期记忆 | 👀 读取 |
remember | 将事实保存到 AON 的记忆中 | ✍️ 写入 |
search_documents | 按含义和精确词语搜索你的文档库 | 👀 读取 |
list_documents | 列出文档库内容 | 👀 读取 |
add_document | 向文档库添加文本文件 | ✍️ 写入 |
说明
通过 MCP 调用时,Shell 命令和文件写入操作始终会被拒绝:在其他应用中没有人可以批准这些操作。
Claude Desktop 和 Cursor
- Claude Desktop:进入设置 → 开发者 → 编辑配置(
claude_desktop_config.json),然后重启应用。 - Cursor:编辑
~/.cursor/mcp.json,或项目中的.cursor/mcp.json。
{
"mcpServers": {
"aon": { "command": "aon", "args": ["mcp"] }
}
}
如需使用其他主目录,请将 "--home", "/path/to/home" 添加到 args 中。如果客户端找不到 aon,请使用 which aon 获取完整路径。
🎬 演示
✨ 功能
| 🛠️ 带工具的 Agent | 读取、写入和编辑文件,运行 shell 命令,搜索和获取网页内容,显示地图。执行命令和写入文件前会请求批准。 |
| 🧠 长期记忆 | 记录关于你的事实,可按含义搜索,并在事实变化时合并;可按含义和精确字符串回忆本次及其他聊天中的较早对话;还会滚动更新摘要,并为你提出的所有问题编制编号大纲。 |
| 📚 文档库(RAG) | 支持文本、代码、Markdown、HTML、Word 和 PDF,可从“文档”面板导入,也可通过聊天附件添加。混合搜索(SQLite FTS5 + 向量);回答会注明引用的文档。 |
| 📏 上下文预算 | 每次请求都会根据服务端的精确 token 数量适配模型的上下文窗口,因此长对话也不会超出限制。 |
| 🧩 技能 | Agent Skills(SKILL.md):可从 zip、GitHub URL 或粘贴的文本导入;可根据网页起草技能;还可运行评测。 |
| 🔌 双向 MCP | 可连接 stdio 和 HTTP MCP 服务(在 Hub 中浏览 Glama 目录),自身也可作为 MCP 服务。 |
| 📎 附件 | 可在聊天中发送文件和照片;图像会交给视觉模型处理。 |
| 🗺️ 地图 | 在 MapLibre 3D 地球仪上显示来自 OpenStreetMap(Nominatim、OSRM)的地点和路线。 |
| 👥 多用户 | 在 vLLM 上聊天,可同时为多位用户提供服务;通过 Cloudflare Access 登录。 |
| 📱 随处使用 | Web UI、Android 应用和可选的 Telegram 机器人。 |
🏗️ 架构
flowchart TB
subgraph clients["Clients"]
direction LR
W["🌐 Web UI"] ~~~ A["📱 Android"] ~~~ T["💬 Telegram"] ~~~ M["🤖 Claude / Cursor"]
end
S["🛰️ AON server · FastAPI + agent loop"]
subgraph backends["Behind AON"]
direction LR
TL["🛠️ Tools"] ~~~ DB[("🧠 Memory + docs")] ~~~ V["⚡ vLLM"] ~~~ O["🦙 Ollama"] ~~~ X["🔌 MCP servers"]
end
clients -- "HTTPS via Cloudflare Access, or MCP over stdio" --> S
S --> backends
📱 Android 应用
260 KB,Android 7.0 或更高版本。
- 在手机上打开链接并下载 APK。
- Android 询问时,允许通过浏览器安装应用(安装未知应用),然后点按安装。
- 打开 AON,使用已获批准的电子邮件地址登录(参见试用在线实例)。
应用默认打开 https://aon.vulkron.uk。若要使用自己的服务,请在应用中按返回,
然后选择更改服务,例如在家庭网络中输入 http://192.168.1.50:8700。
此 APK 已签名(APK Signature Scheme v2,证书 CN=AON, O=Vulkron, C=GB);其 SHA-256
值见发布页面。
🔑 试用在线实例
访问 https://aon.vulkron.uk 需经批准:
- 📝 申请访问权限。 创建一个议题, 标题为 Access request,说明你是谁,以及你想用 AON 做什么。请 不要在议题中发布你的电子邮件地址;维护者会回复并告知你如何发送。
- ⏳ 等待批准。 申请由人工审核。申请获批后,你的电子邮件地址 将被加入允许列表,议题也会附上说明后关闭。
- ✅ 登录。 打开 https://aon.vulkron.uk,输入获批的电子邮件地址,然后输入 通过电子邮件发送给你的一次性 PIN。PIN 登录由 Cloudflare Access 处理。
警告
访问权限可能随时被撤销。此实例运行在容量有限的私有硬件上: 请勿将其用于任何非法用途、自动化或批量流量,或处理他人的个人数据;多人同时使用时, 请预期需要短暂等待。
📦 安装
要求
- Linux(在 Ubuntu 上运行)、Python 3.11 或更新版本。
- Ollama,以及一个嵌入模型(
ollama pull nomic-embed-text)和一个支持工具调用的聊天 模型(例如ollama pull qwen3:14b),除非聊天运行在 vLLM 上。 - 可选:运行 vLLM 的 GPU 服务(
vllm/)。 - 可选:用于基于
npx的 MCP 服务的 Node.js 20。
安装
pipx install aon-agent # or: pip install aon-agent
aon init # --ollama URL --model NAME --bind HOST:PORT --home DIR
AON 保存的所有内容(配置、聊天记录、记忆、文档、技能)都位于其主目录中:
--home DIR,否则使用 $AON_HOME,再否则使用 ~/.aon。
从源代码安装(用于开发)
git clone https://github.com/leo007-htun/AON.git && cd AON
python3 -m venv venv && venv/bin/pip install -e ".[test]"
venv/bin/aon init
⚙️ 配置
aon init 会在主目录中写入 config.toml;可根据需要编辑。请将 context_window
设置为与 vLLM 的 --max-model-len(或 Ollama 模型的上下文长度)相同。
所有 config.toml 配置项
| 配置项 | 含义 | 示例 |
|---|---|---|
ollama_base_url | Ollama 的 OpenAI 兼容端点(用于嵌入;若未设置 chat_base_url,也用于聊天) | "http://localhost:11434/v1" |
default_model | UI 未选择模型时使用的模型 | "qwen3:14b" |
workdir | Agent 的工作区;聊天记录和文档存储于此 | "~/.aon/workspace" |
bind | Web UI 的地址和端口。AON 没有登录功能:除非所有可访问它的设备都可信,否则请将其绑定到 127.0.0.1 | "127.0.0.1:8700" |
max_steps | 每个请求允许的工具调用次数 | 40 |
command_timeout | shell 命令停止前的秒数 | 120 |
always_ask | 始终需要审批的额外工具 | [] |
embed_model | Ollama 上的嵌入模型 | "nomic-embed-text" |
context_window | 聊天模型的上下文长度,单位为 token | 16384 |
reply_reserve | 为思考和回答预留的 token 数 | 6144 |
history_tokens | 逐字发送的近期聊天轮次所占 token 数 | 5000 |
cross_chat_recall | 也从你的其他聊天中检索相关轮次 | true |
chat_base_url | 可选的独立聊天后端(vLLM) | "http://gpu-box:8001/v1" |
chat_model | 此处提供的模型名称;只有此模型会发送到 chat_base_url | "aon" |
chat_temperature、chat_top_p、chat_repetition_penalty | 聊天后端的采样参数 | 0.2、未设置、1.15 |
chat_vision | 聊天后端模型是否接受图像 | true |
telegram_bot_token、telegram_allowed_chat_ids | 可选的 Telegram 机器人 | ""、[] |
🚀 运行
aon serve # web UI on the bind address from config.toml
aon serve --port 9000 # or override host/port
aon --help
在后台运行
setsid nohup aon serve >> ~/.aon/aon.log 2>&1 < /dev/null &
pgrep -af '[a]on serve' # is it running?
tail -f ~/.aon/aon.log # its log
pkill -f '[a]on serve' # stop it
作为 systemd 服务运行(开机启动,故障时重启)
sudo tee /etc/systemd/system/aon.service >/dev/null <<'EOF'
[Unit]
Description=AON agent
After=network-online.target
Wants=network-online.target
[Service]
User=ubuntu
Environment=AON_HOME=/home/ubuntu/.aon
ExecStart=/home/ubuntu/.local/bin/aon serve
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && sudo systemctl enable --now aon
journalctl -u aon -f
请根据你的设置修改 User、AON_HOME 和 aon 路径(which aon)。
对于某些模型,Ollama 一次只处理一个请求。要同时服务多个用户,可在 vLLM 上运行聊天模型,并将 AON 指向它:
chat_base_url = "http://<gpu-box>:8001/v1"
chat_model = "aon"
default_model = "aon"
context_window = 16384
vllm/ 包含 systemd 单元、聊天模板和所用的准确软件包版本。在一台 RTX 4090(24 GB)上使用 27B 4-bit 模型进行测量:16K 上下文可同时处理 2–3 个完整长度的请求,其余请求排队;8K 可处理 4 个。
🌐 远程访问
AON 没有自带登录功能。请将 bind 保持在局域网内;如需从外部访问,请将其置于带身份验证的代理之后,例如使用 Cloudflare Access(电子邮件 PIN)的 Cloudflare Tunnel。地图中的地理位置功能需要 HTTPS。
🧪 开发
pip install -e ".[test]"
pytest -q
项目结构
| 路径 | 内容 |
|---|---|
src/aon/cli.py | aon 命令:init、serve、mcp |
src/aon/main.py | 根据 config.toml 构建 AON(由 serve 和 mcp 共用) |
src/aon/mcp_server.py | 将 AON 用作 MCP 服务 |
src/aon/web.py | FastAPI 应用:REST API 和聊天 WebSocket |
src/aon/engine.py | Agent 循环(工具调用、审批、循环防护) |
src/aon/router.py | 规划器:直接回答、提问或规划工具步骤 |
src/aon/llm_client.py、backends.py | 模型调用;每个模型使用 Ollama 或 vLLM |
src/aon/context.py | 将请求适配到上下文窗口 |
src/aon/recall.py、summary.py | 聊天回忆、滚动摘要、提纲 |
src/aon/memory*.py | 情景记忆、提取、整合 |
src/aon/docs.py | 文档库(RAG) |
src/aon/skills.py、skill_*.py | 技能:存储、导入、编写、评估 |
src/aon/mcp_client.py、mcp_tools.py、hub.py | MCP 服务和 Glama 中心 |
src/aon/tools/ | 内置工具(文件、shell、网页、地图) |
src/aon/static/ | 网页 UI(index.html)、图标、字体、地图库 |
src/aon/default_skills/ | 由 aon init 复制到新主目录的技能 |
tests/ | 测试套件 |
specs/ | 设计说明 |
vllm/ | vLLM 服务设置 |
💾 数据
AON 将数据保存在其主目录中:workspace/app.db(聊天)、workspace/docs.db(文档库)、memory/episodes.db(记忆)和 workspace/uploads/(附件)。此仓库包含这些数据截至 2026-10-14 的快照。全新安装会创建空文件;如要从干净状态开始,请在首次运行前将其删除。Glama API 密钥保存在 .glama_key 中,该文件已加入 git 忽略列表。
🤝 贡献
欢迎提交问题和拉取请求。对于修复以外的较大改动,请先提出问题,以便讨论。提交拉取请求前,请运行 pytest -q。
📄 许可证
AON 依据 MIT License 发布。© 2026 Sithu Htun (@leo007-htun)。
捆绑的第三方文件保留各自的许可证,许可证文件均与其放在一起: CybercoreCSS(MIT)、 MapLibre GL JS(BSD-3-Clause)、 highlight.js(BSD-3-Clause),以及 Exo 2、JetBrains Mono、Orbitron 和 Rajdhani 字体 (SIL Open Font License)。
如果 AON 对你有用,请给它一个 ⭐。这能帮助其他人找到它。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。


