import os, textwrap, json
from pathlib import Path
from PIL import Image, ImageDraw, ImageFont
base = Path('/root/agent-guide-articles/anythingllm-basic-intro')
img_dir = base / 'images'
img_dir.mkdir(parents=True, exist_ok=True)
font_regular = '/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc'
font_bold = '/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc'
Cover 1200×630
img = Image.new('RGB', (1200, 630), '#f7f4ee')
d = ImageDraw.Draw(img)
subtle grid
for x in range(0, 1200, 48):
d.line((x, 0, x, 630), fill='#e9e1d6', width=1)
for y in range(0, 630, 48):
d.line((0, y, 1200, y), fill='#e9e1d6', width=1)
cards
for box, fill in [((70, 70, 520, 560), '#ffffff'), ((560, 90, 1130, 300), '#fffaf2'), ((560, 330, 1130, 560), '#ffffff')]:
d.rounded_rectangle(box, radius=28, fill=fill, outline='#d8cbbb', width=3)
title
ft = ImageFont.truetype(font_bold, 54)
fs = ImageFont.truetype(font_regular, 28)
fs2 = ImageFont.truetype(font_regular, 24)
d.text((110, 120), 'AnythingLLM 是什么?', font=ft, fill='#1f2937')
d.text((110, 198), '更像文档工作台,不是单纯聊天壳', font=fs, fill='#4b5563')
d.text((110, 255), '适合先做知识问答,再慢慢加 Agent 能力。', font=fs2, fill='#6b7280')
simple UI illustration
for i, label in enumerate(['文档', '知识库', '模型接入', 'Agent 扩展']):
x = 610 + (i % 2) * 255
y = 120 + (i // 2) * 120
d.rounded_rectangle((x, y, x+210, y+78), radius=18, fill='#f8fafc', outline='#b7c3d0', width=2)
d.text((x+24, y+22), label, font=fs, fill='#111827')
footer badge
badge = (110, 455, 450, 520)
d.rounded_rectangle(badge, radius=20, fill='#e8f1ff', outline='#9bb7e0', width=2)
d.text((135, 468), 'Agent 大全 · 基础篇', font=fs, fill='#1d4ed8')
img.save(img_dir / 'anythingllm-cover.jpg', 'JPEG', quality=86, optimize=True)
flow map
img2 = Image.new('RGB', (1200, 800), '#fbfbf8')
d = ImageDraw.Draw(img2)
ft2 = ImageFont.truetype(font_bold, 42)
fs3 = ImageFont.truetype(font_regular, 26)
d.text((60, 40), 'AnythingLLM 的位置:先管资料,再接执行层', font=ft2, fill='#111827')
boxes = [
((80, 170, 340, 300), '资料 / PDF / 笔记', '#ecfeff'),
((430, 170, 690, 300), 'AnythingLLMn知识入口', '#eef2ff'),
((780, 170, 1040, 300), 'Hermes / Dify / n8nn执行与编排', '#fff7ed'),
((430, 460, 690, 590), 'OpenWebUI / LobeChatn聊天前端', '#f0fdf4'),
]
for box, text, fill in boxes:
d.rounded_rectangle(box, radius=24, fill=fill, outline='#cbd5e1', width=3)
tx, ty = box[0]+26, box[1]+38
for j, line in enumerate(text.split('n')):
d.text((tx, ty + j*34), line, font=fs3, fill='#1f2937')
arrows
for p1, p2 in [((340,235),(430,235)), ((690,235),(780,235)), ((560,300),(560,460))]:
d.line((*p1,*p2), fill='#64748b', width=6)
if p2[0] > p1[0]:
d.polygon([(p2[0],p2[1]), (p2[0]-16,p2[1]-10), (p2[0]-16,p2[1]+10)], fill='#64748b')
else:
d.polygon([(p2[0],p2[1]), (p2[0]-10,p2[1]-16), (p2[0]+10,p2[1]-16)], fill='#64748b')
d.text((80, 690), '定位:知识中枢 / 不抢执行层的活', font=fs3, fill='#475569')
img2.save(img_dir / 'anythingllm-flow.png')
article = """—
title: "AnythingLLM 是什么?适合谁用,怎么开始最省事 | AnythingLLM"
date: 2025-06-04 10:26:00
description: "AnythingLLM 是什么?这篇文章用大白话讲清它在 Agent 体系里的定位、适合谁、不适合谁、最简部署思路,以及它和 Hermes、Dify、Flowise 这类工具该怎么分工。"
keywords: ["AnythingLLM", "Agent 平台", "知识库", "RAG", "本地 AI"]
author: "A7z-爱马仕"
它到底是什么?别把它只理解成“聊天壳”
按照 AnythingLLM 官网和 GitHub 的公开说法,它主打的是几件事:
1. 和文档聊天
2. 把资料做成知识库
3. 接不同的模型提供方,包括本地模型和在线模型
4. 提供 Agent / 工具扩展能力
5. 支持本地优先、自托管、桌面端等形态
所以它不是那种只给你一个输入框、背后接一个 OpenAI API 就完事的壳。
我更愿意把它理解成:“给普通用户准备的 AI 本地工作台”。
你把 PDF、笔记、网页内容、项目文档丢进去,先让模型能围着这些资料回答问题;如果后面还想继续扩展,再往 Agent、插件、工作流那边走。这个路径对很多新手很友好,因为它不像有些 Agent 框架那样,一上来就要求你先理解一堆节点、状态机、工具调用协议。
说白了,AnythingLLM 更像是在解决一个很常见的问题:
我不是先想“造一个超级 Agent”,我只是先想让 AI 读懂我的资料,然后稳定地帮我用起来。
如果你现在就是这个阶段,那它比一上来就啃复杂框架更顺手。
AnythingLLM 适合谁
1)手里已经有一堆资料,想先做“自己的知识问答”
比如你有:
- 公司内部文档
- 自己整理的笔记
- 一堆 PDF 手册
- 技术项目说明
- 客服 FAQ
你最先想做的,不是多 Agent 编排,也不是自动跑完整业务流程,而是先让模型围绕这些资料回答得更靠谱一点。
那 AnythingLLM 很合适。
因为这类工具的核心价值,不是“模型更聪明”,而是上下文终于不再只靠你手工粘贴。
2)想本地优先,比较在意隐私
AnythingLLM 官网公开写得比较明确:它强调 local-first、本地存储、本地运行优先。这个定位对很多个人用户、小团队、或者不想把资料随便传来传去的人来说,很有吸引力。
我自己现在也越来越认同这条路。尤其是一些带设备信息、后台配置、客户资料、站点运维流程的内容,你真要长期用 AI,就会发现“能不能自己控数据”比聊天界面花不花更重要。
3)不太想写代码,但又不满足于纯聊天
有些朋友不是程序员,但又已经不满足于普通聊天机器人了。
他们会想要:
- 上传文档
- 建知识库
- 切换不同模型
- 做一点 Agent 功能
- 后面再慢慢接自动化
这种人往往最怕两种东西:
- 一种太傻,只能聊天
- 一种太重,刚打开就一堆工程配置
AnythingLLM 处在中间地带,这就是它的价值。
它不太适合谁
1)你要的是“重自动化编排平台”
如果你核心诉求是:
- 多步骤流程编排
- 条件判断
- API 串联
- Webhook 自动化
- 业务系统集成
那你大概率会更偏向 n8n、Dify 工作流、Flowise 这一类。
AnythingLLM 不是不能扩展,而是它最顺手的起点并不在“流程编排”。它更像是从知识和对话出发,再逐步加能力。
2)你要的是“终端里直接干活的 Agent”
如果你想要的是真正能:
- 读文件
- 改代码
- 跑命令
- 查日志
- 操作服务器
那我会更建议你看 Hermes Agent、Codex CLI、Claude Code、OpenHands 这条线。
因为这类工具的重点是执行能力,不是“先围绕文档和知识库组织界面”。
我自己这套博客、路由器、模型线路、WordPress 发布链路,长期跑下来就越来越确定一件事:
真正干活的 Agent,和“把资料聊明白的 AI 工作台”,是两种不同定位。
AnythingLLM 更偏后者。
3)你想在很低配的旧设备上随便一装就飞
这点也得提前说。AnythingLLM 虽然强调本地优先,但本地优先不等于低配随便飞。
像我手上的玩客云 512MB 内存、OpenWrt 路由器这种设备,我会更愿意让它们做边缘节点、状态采集、轻量 API 转发,而不是直接承担一个图形化知识库平台的主力任务。
如果真要认真跑这类平台,我还是更推荐:
- N100 小主机:更稳,适合常驻
- RK3399 4GB 以上:可以折腾,但别期待和 x86 小主机一个体验
- 树莓派 4B:能玩,但更适合轻量学习环境
至于玩客云、360T7、AX1800 Pro 这种,我不建议拿来硬扛这类平台主任务。
最简使用 / 部署思路:先别想太复杂
如果你第一次接触 AnythingLLM,我建议用最朴素的顺序去理解。
第一步:先把它当“文档聊天 + 知识库入口”
别上来就想“我要做一个全自动公司大脑”。
先做最简单的一件事:
- 接一个你用得顺手的模型
- 建一个小型知识库
- 导入几份常用资料
- 问几个真实问题
比如:
- 某个项目的部署步骤是什么
- 某台设备的参数记录在哪
- 某个产品说明书里怎么设置
- 某篇历史文档里有哪些注意事项
如果这一步都没跑顺,后面谈 Agent 只是空转。
第二步:再决定你用本地模型还是在线 API
AnythingLLM 官方公开资料里提到支持很多模型提供方,也支持本地和云端两条线。
这里我的建议很现实:
- 新手先在线 API 起步,先把流程跑通
- 稳定后再考虑本地模型,尤其是你确实有隐私需求、或者长期调用成本高的时候
不要反过来。
很多人一上来就想“全部本地化”,结果最后卡在模型效果、机器性能、向量库、依赖环境,半天还没开始真正用。
第三步:把它当“资料中枢”,别急着让它包打天下
在实际分工里,AnythingLLM 最适合先站在这个位置:
- 管资料
- 管知识库
- 做带上下文的问答入口
- 给其他系统提供相对稳定的知识层
它不是非得一个人把所有 Agent 活都干完。
你真要长期搭系统,最怕的就是“一个工具必须兼顾所有事”。那样最后往往哪件都做得不舒服。

它和其它 Agent / 平台怎么分工,才不会越用越乱
这个问题其实特别关键。
因为新手最容易掉进一个坑:看到一个新工具,就想把旧东西全换掉。
我现在更认可的思路,是把工具放到各自擅长的位置上。
AnythingLLM:知识入口、资料工作台
适合做:
- 文档导入
- 知识库整理
- 带资料上下文的问答
- 面向非程序员的本地 AI 入口
Hermes Agent:真实执行层
适合做:
- 跑命令
- 改文件
- 批处理任务
- 调模型路由
- 管站点、管路由器、管发布流程
这条线我自己是长期在用的,所以更有发言权。比如站点巡检、文章生成、配图、WordPress 发布、日志处理,这些事情还是执行型 Agent 更顺手。
Dify / Flowise:流程编排层
适合做:
- 页面化搭建
- API 编排
- 对话工作流
- 面向产品化交付
如果你的目标是把“AI 能力”包装成固定流程,给团队或客户用,那这类平台会更直观。
n8n:系统连接层
适合做:
- Webhook
- 定时任务
- 第三方服务联动
- 把 AI 接进原来的自动化链路
所以一个比较自然的分工可能是这样:
AnythingLLM 管资料和知识入口,Hermes Agent 管执行,n8n 管外部自动化连接,Flowise / Dify 管页面化流程。
这样每个工具都舒服,也更容易维护。
我个人的建议:新手别追“全能”,先追“能用起来”
我真心觉得,AnythingLLM 这种工具最容易吸引人的地方,也是最容易让人误判的地方。
它看起来什么都能做一点,于是很多人就会自动脑补成:
- 既是知识库
- 又是 Agent 平台
- 又是自动化中枢
- 还能顺便替代所有别的工具
现实一般没这么理想。
更稳的思路是:
如果你现在是纯新手
先拿它做本地知识问答入口,这是最容易感受到价值的一步。
如果你已经在用 Dify / Flowise
那就别强行替换,可以考虑把 AnythingLLM 放在“资料和对话层”。
如果你已经在用 Hermes 这类执行型 Agent
那就把 AnythingLLM 当成“知识底座候选”,而不是主执行器。
如果你的硬件比较弱
先别急着全本地,在线 API 跑通再说。尤其是玩客云、低配路由器、512MB 这类机器,适合做轻节点,不适合啥都往上堆。
我现在越来越信一句很土但很实用的话:
工具不是越全越好,而是越清楚自己拿它干嘛越好。
AnythingLLM 最值得用的地方,不是“它是不是宇宙第一 Agent”,而是它把文档、知识库、聊天、模型接入这条新手最常走的路,尽量收拢到一个地方了。
这对很多人来说,已经足够有价值。
下期预告
下一篇我准备继续补 LobeChat / RAGFlow / Open WebUI 这一条里的另一个基础篇,重点会聊:
- 它更像聊天前端,还是更像平台?
- 和知识库、Agent、工作流到底是什么关系?
- 普通人第一次上手,最容易踩的误区有哪些?
- 如果你已经有 Hermes Agent,这类平台应该放在什么位置?
👇 觉得有用?
- 收藏一下,后面补平台大全时方便回来看
- 留言告诉我,你现在更想看 LobeChat、RAGFlow 还是 Open WebUI
- 关注本站,后面我会继续把 Agent 大全这条线补完整
*本文由 A7z-爱马仕 撰写,基于公开资料与实际搭建经验整理。*
*本站当前长期实用设备包括玩客云、RK3399、N100、OpenWrt 路由器等;AnythingLLM 本文未伪装实测,未亲测部分已明确说明。*