ALF 是一个自托管、常驻在线的私人 AI 助手,以 Go 语言编写,运行在用户自己的硬件上,主要通过 Telegram 聊天与用户交互。它连接用户选择的 LLM,并围绕其构建语义长期记忆、可配置响应层级、语音转写、媒体处理与 Web 控制中心,全部封装在用户可控的单个 Docker 容器中。该项目强调隐私与自控,除所配置的后端外不依赖其他云服务。
【主要能力】 后端灵活:支持三类后端家族,并可在不同响应层级中混用。CLI 后端可走本地安装的 Claude Code(使用 Claude Pro/Max 订阅,固定费率)或 OpenAI Codex(使用 ChatGPT Plus 订阅的 codex exec)。API 后端兼容任意 OpenAI 兼容 HTTP 端点,预置 OpenRouter(单密钥访问 200+ 模型)、OpenAI、Anthropic API,也可注册自定义 base_url。本地后端支持 Ollama,可用任意本地模型,无需 API 密钥。对话上下文可在后端切换时无缝流转。 语义长期记忆:使用 sqlite-vec 做向量相似度搜索、FTS5 做关键词匹配,结合 Go 原生 ONNX Runtime 推理(all-MiniLM-L6-v2)实现嵌入,无需 Python 依赖。提供三个记忆工具:recall(混合语义与关键词检索)、remember(存储事实、偏好、决策、摘要)、forget(按 ID 删除记忆)。记忆会在相关对话中自动召回,批量提取器会定期将对话日志提炼为新记忆。 可配置响应层级:定义不同能力的响应层级,由 LLM 分类器读取消息并路由。问候语由廉价模型即时回复,复杂任务进入多轮深度模型会话并开放完整工具访问。 语音与媒体:Telegram 语音消息由独立的 whisper-service 容器(faster-whisper)转写后按普通消息处理。图片转发给模型视觉能力(后端支持时);视频/GIF 提取关键帧生成联系表并转写音频;PDF 用 pdftotext 提取文本;文档附带适当上下文传给模型。 工具与技能:启动时发现 CLI 工具与技能。系统工具位于 tools.d/(只读),用户工具位于 tools/;技能同理使用 skills.d/ 与 skills/。所有工具支持 --help,ALF 首次使用前会运行它。添加能力只需向 tools/ 放入可执行文件或向 skills/ 放入技能定义。 多智能体协调:编排器(Opus)可拆解请求,将子任务委派给研究、写作、审查等智能体,审查结果并综合最终答案。各智能体在隔离会话中工作,上下文不互相渗透。团队以 JSON 文件定义在 config.d/agents/,附带一个入门团队,可通过“use agents”等指令或按 --tier agent 调度触发。 定时任务:基于 Cron 并支持时区,提供四种执行模式:LLM 任务(按层级运行提示词)、直接任务(执行 bash 命令)、编排器任务(协调多个智能体)、提醒(直接向 Telegram 发送消息)。每个任务可配置超时,记录执行日志,每日摘要汇总任务结果,并支持通过 --skills 注入技能。 Web 控制中心:端口 8080,含侧边栏导航。功能包括:聊天(SSE 流式、媒体上传、回应、多会话标签、Markdown 渲染);主页(工作区文件浏览、记忆投喂、管理操作);终端(容器内交互式 shell);任务(监控与启动智能体任务、批准/拒绝、删除已完成任务);计划(创建、编辑、监控定时任务并查看执行日志与筛选);日志(守护进程日志搜索与会话过滤);层级(实时配置响应层级);防火墙(出站访问的网络防火墙规则,支持仅记录或强制执行模式);保险库(带 OAuth2 浏览器流程的密钥保险库、文件存储、服务凭据);设置(配置编辑器、Telegram 设置、后端注册);文档(内置文档);应用(ALF 生成的自包含应用,可含后台服务,自动出现在侧边栏)。支持深/浅主题(default、catppuccin、sage)和移动优先响应式布局及底部导航。认证通过 Telegram 魔法链接(/login 命令)或 bearer token 与会话 cookie;签发新魔法链接会撤销此前所有会话;重复认证失败后按可配置阈值与时长封禁 IP。 对话引擎与交互特性:统一对话存储以 JSONL 环形缓冲区记录丰富消息历史(文本、工具调用、工具结果、思考块),跨后端切换保留上下文。层级可设 force_command: true 以指令直接调用(如 /opus 分析这个),会话锁定该层级直到 /new 或会话超时;也可只发指令锁定而不发送消息。消息表情回应可触发行为学习:负面回应会促使 ALF 询问问题所在并提取经验,正面回应强化良好行为。ALF 可在 data/apps/ 生成自包含 Web 应用,每个应用有侧边栏入口、CSP 沙箱化服务及可选的受守护进程监督的后台服务(崩溃自动重启、指数退避)。首次用户会在首次对话中收到自动引导提示,Telegram /start 命令可重新触发。ALF 还带有轮换人格层——16 种情绪(犀利、哲学、讽刺、顽皮、暴躁、禅意、侦探等)按日期循环,仅影响语气不影响能力。
【使用方式】 前提条件:Docker 与 Docker Compose;建议至少 2 GB 内存;可选 Telegram 机器人令牌(通过 @BotFather)与聊天 ID;以及一种受支持的后端(Claude Pro/Max 订阅、ChatGPT Plus 订阅、任意 OpenAI 兼容 API 密钥,或本地 Ollama 安装)。 安装:交互式向导会引导选择安装目录、配置 Telegram 凭据、设置仪表板访问(HTTP 或 Let's Encrypt 的 HTTPS)、启动容器、认证所选后端(Claude CLI、Codex CLI 或 API 密钥)。容器运行后,控制中心设置向导可从浏览器引导后端选择(CLI、Codex、API/OpenRouter/OpenAI/Ollama 等)、层级预设与可选 Telegram 配置。 使用:在 Telegram 上向机器人发送消息即可。
【系统要求】 操作系统为 Linux 或 macOS(需 Docker)。内存最低 512 MB,推荐 2 GB(语音转写需要)。磁盘约 800 MB 用于 Docker 镜像,首次语音消息时额外约 600 MB(Whisper 模型)。网络需要出站 HTTPS 至 Telegram 及所配置后端的 API 端点(Anthropic、OpenAI、OpenRouter、Ollama 主机等)。
【安全与隔离】 入口点先以 root 安装软件包与设置权限,随后通过 setpriv 降权到 alfd(uid 1001)并仅保留最小能力(setuid、setgid、sys_admin、sys_chroot、chown)。LLM 子进程以 alf(uid 1000)运行,零能力且环境变量经过净化。用户分离、文件系统隔离(config.d/ 只读,tools.d/ 只读可执行,数据目录读写)、Docker secrets 机制存储密钥、安全响应头(HSTS、X-Frame-Options DENY、带 SRI 的 CSP、nosniff)、速率限制(匿名全局 15 次/分钟,认证用户 600 次/分钟;认证端点 5 次/分钟;终端/SSH 端点 30 次/分钟,控制中心 API 启用 CORS)、认证与 IP 封禁、SSRF 防护(保险库代理阻断私有/链路本地 IP 段并做 DNS 级校验)、出站防火墙(按域名的 HTTP/HTTPS 代理允许/拒绝规则)。所有 Docker 镜像使用 Cosign 通过 GitHub OIDC 无密钥签名,并附带 SPX-JSON 的 SBOM 证明,文档中提供验证镜像签名的方法。
【内部架构】 内部代码围绕五个核心关注点组织:Capability(工具/技能/应用)由 AI 执行,在 Sandbox 中受 Policy 约束地对 Memory 分级访问,Runtime 负责编排这四者。其余为用户侧消费者(cli/、controlcenter/、telegram/、voice/、scheduler/)与运维管道(internal/platform/)。依赖规则由 CI(internal/archtest/)强制:仅 runtime/ 可导入四个内部块,消费者只依赖 runtime/。
【限制】 资料未提供具体的收费价格、模型效果评测、各类后端的具体配置步骤与性能数据,这些内容暂未提供。