接入模型
人格用的模型分三个角色(规划和判断、写回复、后台学习),可以各接一家;检索记忆用的向量模型另算。所有模型调用都走一个客户端,带限流、并发和花费的闸。
服务商
[models] 里五家各一节:deepseek、openai、anthropic、qwen、ollama,每节有 base_url、model、api_key(写环境变量的名字,不写原文)。active_provider 选默认用哪家(默认 deepseek)。
兼容 OpenAI 接口的服务(自己的代理、别的服务商):改所用那一家的 base_url、model(桌面版在首次配置「它的大脑 → 高级」里改)。本机的 Ollama 走它的 OpenAI 兼容接口(http://127.0.0.1:11434/v1),不要 key。
三个角色
[models.roles] 里给每个角色指定一家(空着 = 跟 active_provider 一样):
planner(规划和判断):要想一想的时候规划一步、判断是不是指令、急不急、点哪个表情、解析管理动作。replyer(写回复):写回复、把管理动作的结果说成人话。background(后台学习):记忆整理里的复核和归纳、学说话方式和黑话、刷新对人的印象。
闸
[model_runtime]:
- 并发:
max_parallel_requests(默认 4)、max_parallel_focus(同时专注回话的数,默认 1)。 - 每分钟:请求数
max_requests_per_minute(60)、估算的 token 数max_estimated_tokens_per_minute(12 万),后台任务单独一道background_max_estimated_tokens_per_minute(2.4 万)。 - 主动联系另有每天的生成上限(
[proactive].proactive_generation_daily_budget,默认 12)。
向量模型(检索用)
记忆检索、知识库检索、说法检索要把文字变成向量。[semantic_memory]:
- 默认
provider = "sentence_transformers",模型是一个多语言的小模型,在本机算,不花钱。编译好的运行时走 ONNX,不带 torch。 - 第一次用时下载模型文件;官方源下不动就换镜像,下完按钉死的 SHA-256 核对,对不上不用。没下好之前先用字面检索。
- 也可以接一个兼容 OpenAI 的向量接口(
provider、base_url、api_key)。
对应的代码
- 所有模型调用:
src/aeria/deepseek.py(名字是历史原因;role="planner" / "replyer" / "background")。 - 配置:
src/aeria/config.py的ModelsConfig、ModelEndpointConfig、ModelRolesConfig、ModelRuntimeConfig、SemanticMemoryConfig。 - 向量:
src/aeria/embeddings.py、src/aeria/onnx_embeddings.py(钉死的哈希)。 - 桌面版首次配置预填的服务商:
desktop/src/api.ts的PROVIDER_DEFAULTS。
没做到的
- 不会自动切换服务商:一家挂了,那一轮就失败,不会改用另一家。
- 每分钟的 token 上限按字数估(汉字约一个、其他字符约四个算一个),和服务商实际计费的数对不上。