Skip to content

安装指南 ​

本文覆盖三种安装路径:Windows 源码运行(开发者 / 推荐)、Windows 一键安装(普通用户)、Docker Relay(仅部署交换所/中继)。Familiars 是 Windows-first 应用,以下以 Windows 为主;macOS 支持有限,详见文末。


一、前置要求 ​

依赖最低版本说明
Python3.10+后端 bridge 及全部 AI 模型均运行在此进程
Node.js18+Electron 前端渲染 + Vite 开发服务器
npm9+随 Node.js 自带
Git任意克隆仓库
CUDA Toolkit12.6(推荐)本地 GPU 推理所需;无 GPU 也可纯 API 运行(mode0)
NVIDIA 驱动≥535配合 CUDA 12.6;nvidia-smi 可查
Visual C++ Redistributable2015–2022部分 Python 包(hnswlib、insightface)依赖

GPU 分级 ​

Bridge 启动时通过 nvidia-smi 读取显卡显存,自动分为四个等级(源码:src/base/gpu_tier.py):

等级显存阈值行为
mode0无独显 / <1 GBAPI-only:所有本地模型回退到云端 LLM;无 decider、无本地 rewriter
tier41–5 GB(默认 FAMILIARS_TIER4_MAX_MB=5000)4-bit 量化 + 顺序加载模型(rewriter 用完驱逐再加载 reranker);decider/memorizer 队列触发
tier65–7.5 GB(默认 FAMILIARS_TIER6_MAX_MB=7500)rewriter+embedder+reranker 共载;允许语音通话(纯音频);decider/memorizer bf16
tier8≥7.5 GB全功能:所有模型同时加载,最高精度

缓存文件为 workspace/gpu_tier.json。可通过环境变量覆盖:

  • FAMILIARS_GPU_TIER=tier6 — 手动指定等级(用于在高端卡上测试低等级回退路径)
  • FAMILIARS_TIER4_MAX_MB=5000 — 调整 tier4 上界(MiB)
  • FAMILIARS_TIER6_MAX_MB=7500 — 调整 tier6 上界(MiB)
  • FAMILIARS_GPU_TIER_FORCE_REDETECT=1 — 强制重新探测,忽略缓存

Apple Silicon 没有 nvidia-smi,默认解析为 mode0(API-only)。如需强制启用本地推理,可手动设置 FAMILIARS_GPU_TIER=tier4(MPS 后端),但性能和稳定性不保证。


二、源码运行(推荐) ​

2.1 克隆仓库 ​

bash
git clone <repo-url> familiars
cd familiars

2.2 Python 虚拟环境 ​

bash
# 创建虚拟环境
python -m venv .venv

# 激活(PowerShell)
.venv\Scripts\Activate.ps1

# 激活(CMD)
.venv\Scripts\activate.bat

# 激活(Git Bash / WSL)
source .venv/bin/activate

2.3 安装 Python 依赖 ​

关键:PyTorch 必须从官方索引安装 CUDA 12.6 版本,否则 pip install torch 会从 PyPI 拉取 CPU 版本,导致本地 QLoRA 模型推理慢 10 倍以上。

bash
# Windows(CUDA 12.6)
pip install -r requirements.txt --index-url https://download.pytorch.org/whl/cu126

# macOS(CPU / MPS)
pip install -r requirements.txt --index-url https://download.pytorch.org/whl/cpu

国内网络慢?加镜像参数:-i https://pypi.tuna.tsinghua.edu.cn/simple(PyTorch 索引地址不变,镜像只加速 PyPI 侧包)。

requirements.txt 关键依赖一览 ​

包版本用途
torch2.9.0+cu126PyTorch 核心(CUDA 12.6)
torchvision0.24.0+cu126视觉模型
torchaudio2.9.0+cu126音频处理
transformers4.57.3HuggingFace 模型加载
sentence_transformers5.2.2嵌入模型
FlagEmbedding1.4.0RAG 重排
fastapi0.136.1HTTP API 框架
hypercorn[h2]≥0.16.0HTTP/2 服务器
onnxruntime1.28.0ONNX 推理(背景去除等)
openai2.36.0LLM API 客户端
httpx0.28.1异步 HTTP 客户端
apscheduler3.11.2定时任务调度
faster-whisper≥1.0.0语音识别(ASR)
playwright1.59.0浏览器自动化
pydantic-settings≥2.5.0环境变量校验
python-dotenv≥1.0.0.env 加载
cryptography45.0.5敏感信息加密
paddleocr3.5.0OCR 文字识别
insightface0.7.3人脸检测(数字人)
mediapipe0.10.35面部/手势追踪

平台限定包(requirements.txt 已自动处理):

  • Windows only:uiautomation、wcferry(WeChat RPC)、pycaw、comtypes、wmi、pywin32
  • macOS only:AppKit、Quartz(pyobjc)

2.4 安装 Playwright 浏览器 ​

bash
playwright install chromium

2.5 配置 .env ​

复制 .env.example 为 .env(或在仓库根目录新建),必须填写以下字段:

必填环境变量 ​

变量类型说明示例
BASE_URLstringOpenAI 兼容 API 端点https://api.familiars.cn/v1
API_KEYstringLLM 服务商 API 密钥sk-xxxxx
DEFAULT_MODELstring默认对话模型名gpt-4o

MANAGER_MODEL 默认值为 gpt-4o,用于管理者(agent 0)的高管摘要与 persona 进化,通常选择更强的模型。

可选模型配置 ​

变量默认值说明
MANAGER_MODELgpt-4o管理者专用模型
MINI_MODELQwen2.5-1.5B本地轻量模型(decider 等)
FAST_MODEL空(回退到 DEFAULT_MODEL)低延迟云端快速模型(草稿解析、快速分类)
EMBEDDING_MODELBAAI/bge-m3嵌入模型(sentence-transformers 名称或 HuggingFace 路径)
RERANKER_MODELBAAI/bge-reranker-v2-m3重排模型

运行时调优 ​

变量默认值说明
MAX_TURNS50单次对话最大工具调用轮数
TIMEOUT300HTTP 请求超时(秒)
DIALOGUE_EXPIRE_TIME3600对话空闲过期时间(秒)
SLIDE_WINDOW_SIZE5滑动窗口上下文条数
TOP_K5RAG 检索返回条数

FAMILIARS_* 前缀环境变量 ​

变量默认值说明
FAMILIARS_TIER4_MAX_MB5000GPU tier4 显存上界(MiB)
FAMILIARS_TIER6_MAX_MB7500GPU tier6 显存上界(MiB)
FAMILIARS_GPU_TIER自动探测强制指定 GPU 等级(mode0/tier4/tier6/tier8)
FAMILIARS_GPU_TIER_FORCE_REDETECT0设为 1 强制重新探测 GPU
FAMILIARS_APPROVAL_DISABLED0设为 1 关闭所有工具审批(慎用,仅限开发环境)
FAMILIARS_DB_PATHworkspace/familiars.dbSQLite 数据库路径(测试可用 :memory:)
FAMILIARS_HTTP_INSECURE0设为 1 回退到 HTTP + uvicorn(不走 HTTPS/2 + hypercorn)
FAMILIARS_BROKER_ADVERTISE_URL空Broker 联邦公网/LAN 基础 URL
FAMILIARS_BROKER_BIND127.0.0.1Bridge HTTP 绑定地址(0.0.0.0 暴露跨机器访问)
FAMILIARS_FRAMEWORK_DOCS_TOPK—框架文档 RAG 检索条数

RAG 调优 ​

变量默认值说明
RAG_DENSE_TOPK20稠密召回候选数
RAG_CHUNK_SIZE800分块目标大小(字符)
RAG_RERANK_MIN_SCORE0.0重排最低分数阈值(0=保留全部)
RAG_RRF_K60Reciprocal Rank Fusion 常数
RAG_MULTIQUERY_N1本地 rewriter 查询变体数(1=单查询)

熔断器 ​

变量默认值说明
CB_FAILURE_THRESHOLD5熔断前失败次数
CB_RECOVERY_SECONDS30.0熔断恢复尝试间隔(秒)
LLM_MAX_RETRIES3单次 LLM 调用最大重试次数
LLM_GATE_DISABLEDfalse设为 true 关闭并发门控(无限制)

第三方服务(可选) ​

变量说明
HUGGING_FACE_API_KEYHuggingFace API 密钥
UPDATE_URLOTA 更新 feed 基础 URL(空=禁用)
UPDATE_CHECK_INTERVAL_HOURS更新检查间隔(默认 24 小时)

2.6 Electron 前端 ​

bash
cd electron
npm install

主要前端依赖(electron/package.json):

包版本用途
vue^3.5.41前端框架
electron^30.0.0桌面壳
pinia^2.1.7状态管理
@vue-flow/core^1.48.2图表可视化(recipe/flow 编辑器)
axios^1.7.0HTTP 客户端
markdown-it^14.3.0Markdown 渲染
highlight.js^11.11.1代码高亮
mermaid^11.16.0流程图渲染
katex^0.17.0数学公式渲染
onnxruntime-web^1.26.0浏览器端 ONNX 推理
@ricky0123/vad-web^0.0.30语音活动检测(VAD)
electron-updater^6.8.9OTA 自动更新

三、启动 ​

方式 A:Electron 全栈开发模式(推荐) ​

bash
cd electron
npm run electron:dev

这会:

  1. 启动 Vite 开发服务器(http://localhost:5173)
  2. 等待 Vite 就绪后启动 Electron 窗口
  3. Electron 自动 spawn Python bridge 子进程(.venv/Scripts/python -m src.bridge.run)
  4. Bridge 服务地址:https://127.0.0.1:18711(hypercorn + HTTP/2 + 自签证书自动生成于 workspace/.bridge.crt)

方式 B:仅后端 Bridge(后端测试 / 无 GUI) ​

bash
.venv/Scripts/python -m src.bridge.run

⚠️ 不要使用 uvicorn src.bridge.app:app --reload —— 会丢失 HTTP/2 支持,且 reload 机制在 worker 线程上 race 初始化 CUDA,Windows WDDM 下直接崩溃。

方式 C:CLI 驱动(需先启动 bridge) ​

bash
python main.py agents list --pretty
python main.py chat stream --prompt "你好" --agent-id 1
python main.py todos create --title "买牛奶" --deadline 2026-07-05T18:00

CLI 认证通过 X-Bridge-Token 头,自动从 workspace/.bridge_token 读取。可用 --token 或环境变量 BRIDGE_TOKEN 覆盖。


四、Windows 一键安装(普通用户) ​

安装包制作方式(开发者视角):

  1. 进入 electron/,运行 npm run electron:build(Vite 打包 renderer + electron-builder 产出 Windows NSIS 安装包)。
  2. 安装包默认把 Python 侧依赖打进 extraResources;首次启动自动生成 workspace/ 与 .env。
  3. 用户双击安装 → 首次启动引导填入 LLM API 端点(BASE_URL / API_KEY / 模型名)。

安装器配置(electron/package.json → build.nsis):

  • oneClick: false — 非一键安装,允许选择目录
  • createDesktopShortcut: true — 创建桌面快捷方式
  • createStartMenuShortcut: true — 创建开始菜单快捷方式
  • 发布 feed:https://api.familiars.cn/_app-updates/(electron-updater generic provider)

五、Docker Relay(仅部署交换所/中继) ​

如需自托管 Broker 交换所(relay):

bash
cd deploy/relay/app
cp .env.example .env   # 填 DOMAIN / CLOUDFLARE_API_TOKEN 等
docker compose up -d

架构链路:Cloudflare → Caddy:443 (DNS-01 TLS) → relay:18712。

详见 deploy/relay/app/README.md。


六、macOS 说明 ​

本仓库 Python 侧与 Electron 侧以 Windows 为主。部分文件存在 macOS 分支但功能落后:

文件macOS 状态
src/models/assistant.py有 macOS 分支
src/utils/autorun.py有 macOS 分支(launchd)
src/base/auth/device.pymacOS 有真实实现(Keychain);Windows 仅 hostname 指纹
src/utils/daily_tools.pymacOS 导入 AppKit/Quartz(条件导入)

macOS 安装时 PyTorch 用 CPU 索引:

bash
pip install -r requirements.txt --index-url https://download.pytorch.org/whl/cpu

七、常见安装错误与解决 ​

问题原因 / 解决
pip install 报 Could not find a version that satisfies the requirement torch==2.9.0+cu126没加 --index-url https://download.pytorch.org/whl/cu126,PyPI 上没有 +cu126 后缀的包
AttributeError: _ARRAY_API not foundonnxruntime 版本过低(<1.28)与 NumPy 2.x 不兼容;确保 requirements.txt 中 onnxruntime==1.28.0
pip install 非常慢加国内镜像:-i https://pypi.tuna.tsinghua.edu.cn/simple(PyTorch 索引地址不变)
启动报 self-signed cert 不信任Electron 自动信任 workspace/.bridge.crt;CLI / 浏览器手动信任一次即可
端口 18711 被占用Bridge 自动调用 pickFreePort() 选新端口,写入 workspace/.bridge.port;CLI 自动读取该文件
ModuleNotFoundError: No module named 'pydantic_settings'pydantic-settings>=2.5.0 未安装;python-dotenv>=1.0.0 同理
nvcc not found / CUDA 编译失败安装 CUDA Toolkit 12.6 + 对应版本 NVIDIA 驱动;或改用预编译 wheel
uiautomation 安装失败(macOS)requirements.txt 已用 sys_platform == "win32" 限定;macOS 不应尝试安装
首次启动很慢(1-2分钟)正常——bridge 需预热 embedder(bge-m3)、rewriter、rembg 等模型,首次还需下载
双 bridge 实例冲突Electron 有 single-instance lock(app.requestSingleInstanceLock()),第二次启动会自动聚焦已有窗口而非启动新实例
torch 用了 CPU 版本检查 pip show torch 的 Version 字段是否含 +cu126;否则重新安装
lunardate 找不到农历日期转换库,requirements.txt 已包含;如漏装请 pip install lunardate==0.3.0

八、启动后的文件结构 ​

首次启动后 workspace/ 目录自动生成:

workspace/
├── .bridge_token          # Bridge 认证令牌(CLI 自动读取)
├── .bridge.port           # Bridge 实际端口(18711 被占时为非默认值)
├── .bridge.crt            # 自签 HTTPS 证书
├── .bridge.key            # 自签 HTTPS 私钥
├── .bridge.log            # Bridge 运行日志
├── .bridges.json          # Bridge 实例信息(PID + port)
├── familiars.db           # SQLite 主数据库
├── gpu_tier.json          # GPU 等级缓存
├── SECRET.json            # 加密敏感信息(令牌等)
├── .paths_aliases.json    # 路径迁移别名记录
├── AGENTS.md              # 项目级 Agent 规则
├── USER.md                # 用户画像(memory writer 滚动更新)
├── IDENTITY.md            # 身份定义
├── agents/
│   └── agent_<id>/        # 每个 agent 的独立目录
│       ├── dialogue_<n>/  # 对话树数据
│       └── reports/       # 日报/周报/月报/年报
├── manager/
│   ├── entries/           # 桌面壳图标资源
│   └── flows/             # 已安装的 flow 模板
└── rewriter/
    └── prompt.md          # 查询改写提示词

下一步:五分钟上手 →

Familiars · 多 Agent AI 桌面应用