☰
OpenChronicle 配置完全指南:Ollama 全本地部署与 4 阶段 LLM 调优清单
2026/10/1 2:13:11 网站建设 项目流程

OpenChronicle 配置完全指南:Ollama 全本地部署与 4 阶段 LLM 调优清单

【免费下载链接】OpenChronicle项目地址: https://gitcode.com/gh_mirrors/op/OpenChronicle

OpenChronicle 是一款开源、本地优先的 AI Agent 记忆系统:它在你的 Mac 上捕获真实工作上下文,并沉淀为人类可读的 Markdown 记忆,供任意支持工具调用的 LLM Agent 查询。用好它的关键在OpenChronicle 配置——本文作为一份完整指南,带你完成 Ollama 全本地部署(无需 API Key、不依赖云端),并给出一份 4 阶段 LLM 调优清单:每个阶段该配什么模型、哪些坑必须避开。

config.toml 在哪里,如何查看

  • 运行时配置位于~/.openchronicle/config.toml(或用$OPENCHRONICLE_ROOT整体迁移目录)。
  • 首次运行openchronicle status时自动按默认值生成,无需手写。
  • 随时查看已解析的生效配置:openchronicle config。
  • 所有 LLM 阶段都走 litellm,官方默认模板可直接参考 src/openchronicle/config.py 中的DEFAULT_CONFIG_TEMPLATE。

Ollama 全本地部署:最小配置 3 行搞定

OpenChronicle 对云端提供商没有任何硬依赖——任何 litellm 够得着的模型都能用,包括本地 Ollama 服务。最小配置如下:

[models.default] model = "ollama/qwen2.5:14b" # 任意已 pull 的模型,加 ollama/ 前缀 base_url = "http://localhost:11434" api_key_env = "" # 留空——Ollama 不需要 key

这段配置里有 3 个新手必踩的坑:

  1. 模型名必须加ollama/前缀,litellm 靠它路由到 Ollama。
  2. base_url指向本机 Ollama 地址http://localhost:11434,否则请求会发到 OpenAI。
  3. api_key_env留空。若保留默认的OPENAI_API_KEY而系统里又没导出该变量,litellm 会报错——尽管 Ollama 根本用不到 key。

4 阶段 LLM 调优:按阶段分配模型

OpenChronicle 的记忆管线有4 个 LLM 阶段,节奏与精度敏感度各不相同。分层分配(tiered assignment)通常非常值得——timeline 每分钟都触发,classifier 又极度怕弱模型:

阶段触发节奏职责选型建议
timeline有捕获时每 60s把 1 分钟捕获窗口归一化为结构化活动记录,原文逐字保留“便宜但不弱”的小模型
reducer每 5 分钟 flush + 会话结束把一个会话的 timeline 块压缩成一条 event-daily 记录中等模型,精度决定时间范围与应用归属的质量
classifier每 30 分钟 + 会话结束通过工具调用把长期事实提取到user-/project-/tool-/topic-/person-/org-*.md精度敏感,弱模型会“毒化”去重
compact文件超阈值后重写过胖的记忆文件,名词短语丢失 >5% 即拒绝与 classifier 同级或更强

推荐的本地分层配置(详见 docs/config.md):

[models.timeline] model = "ollama/qwen2.5:7b" # 便宜但不弱,常驻运行 [models.reducer] model = "ollama/qwen2.5:14b" # 压缩整个会话,精度重要 [models.classifier] model = "ollama/qwen2.5:14b" # 工具调用;弱模型会毒化去重 [models.compact] model = "ollama/qwen2.5:14b" # 与 classifier 同级或更强

💡 每个阶段小节都完整继承[models.default]的字段,只覆盖自己写出的项。想全局共用一个模型?只填[models.default],其余留空即可。

本地模型预检清单:4 项硬性检查

选完模型后,先对照 docs/config.md 的 “Things to check” 清单过一遍,能省掉大量排障时间:

  • ✅Tool-calling(工具调用)支持——classifier 硬性要求。它靠函数调用循环驱动append/create/supersede。qwen2.5、llama3.1、mistral-nemo、command-r均可用;小尺寸 Llama-3.2 与 Phi 系列表现不可靠。
  • ✅JSON mode——timeline 与 reducer 硬性要求。两阶段以response_format={"type":"json_object"}调用,litellm 会转成 Ollama 的format: "json"。模型若不遵守、返回散文,日志里会出现成片的解析错误——这时别调 prompt,换更大的模型。
  • ✅上下文窗口(num_ctx)要够大。timeline 块为 1 分钟粒度,reducer 一次 flush 消费约 5 个块,2 小时的会话最多可堆约 24 个块。建议 Ollamanum_ctx对 timeline ≥16k,对 reducer/classifier ≥32k。默认 2–4k 会静默截断,症状极隐蔽。
  • ✅api_key_env保持为空,避免 litellm 因缺失环境变量直接拒绝请求。

验证配置:改完跑一次status,一行命令全知

守护进程只在启动时读取一次配置。编辑config.toml后:

openchronicle stop && openchronicle start openchronicle status

status会打印每个阶段解析出的模型,并对每个阶段的提供商做迷你探测(max_tokens=4,约 5 秒超时),每行显示三种结果之一:

  • ✓ 234 ms—— 提供商正常应答;
  • ✗ AuthenticationError: …—— 模型名拼错、api_key_env缺失、base_url写错、key 过期,全部会在这第一次status就暴露,而不是几小时后在 writer 里静默失败;
  • 相同(model, base_url, api_key)的阶段会去重探测,四阶段共用一个模型时只发一次网络请求。

在飞机上或 CI 环境想跳过网络探测,可设 mock 环境变量:

OPENCHRONICLE_LLM_MOCK=1 openchronicle status # 各行显示 ✓ mocked

常见问题速查表

症状原因与修复
timeline / reducer 日志刷解析错误模型忽略 JSON mode,尺寸太小——换更大模型
日志出现classifier ended without commit at iter N模型太弱,走不完工具调用协议——升级[models.classifier]
classifier 每个会话都写重复事实模型跳过了search_memory去重检查——升级模型,不要加代码
启动报Address already in use8742 端口被占用,lsof -i :8742找出占用进程
reducer 连续失败日志见reducer failed (retry N/5);5 次失败后写heuristic兜底条目,会话永不丢失

排障时优先看这三个日志(均在~/.openchronicle/logs/下):writer.log(reducer/classifier 工具调用)、session.log(flush 与 tick)、timeline.log(窗口归一化)。完整排障手册见 docs/troubleshooting.md。

延伸阅读

  • 配置与模型设置:docs/config.md
  • 4 阶段管线与触发模型:docs/writer.md
  • LLM 封装与 status 探测源码:src/openchronicle/writer/llm.py
  • 配置默认值与继承逻辑:src/openchronicle/config.py
  • 会话切分与调优:docs/session.md

【免费下载链接】OpenChronicle项目地址: https://gitcode.com/gh_mirrors/op/OpenChronicle

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询