跳到主要内容

第十四节 — 部署形态

这一节回答:FinBayes 在用户本地如何部署?多种部署形态各自的拓扑是什么样?

三种部署形态

FinBayes 支持三种部署形态。第一阶段主推本地优先单机,混合与托管形态作为演化路径预留接口。

形态第一阶段描述
本地优先单机✅ 主推所有容器(含 State Store / Cache)都在用户本机;LLM / 数据 Provider 可云端可本地
本地 + 远程 Provider✅ 支持容器仍本机,但 LLM 与数据 Provider 走云端 API(用户配置)
未来托管部署远期容器迁移到云端服务;多用户共享;超出第一阶段范围

部署形态变化时 runtime 接口契约不变——这是可演化性质量属性的工程承接(详见架构目标与质量取舍章节)。


本地优先单机部署的物理拓扑

这张图表达什么:所有 FinBayes 容器与持久化都在用户本机;外部 Provider(云端 LLM / 数据 / Data Horizon)通过 HTTPS 访问;本地 LLM 是可选安装(用于 L2 降级或用户主动选择)。

这张图特意不表达什么:容器内部组件细节(在 CHAP-09 已展开);远程托管形态的拓扑(在下面单独描述)。

怎么读这张图:实线箭头是必要数据流,虚线箭头是可选数据流(如本地 LLM)。同一框内的组件共享主机资源。


部署形态对各容器的影响

容器本地优先单机本地 + 远程 Provider未来托管
入口适配全部本机全部本机Web API 迁云,其他容器(CLI / TUI)仍本机
Core Runtime本机进程本机进程云端服务进程
Provider Adapter Pool本机本机 + 调云 LLM云端
State StoreSQLite 本地文件SQLite 本地文件远程数据库(PostgreSQL 候选)
Cache内存 LRU 或本地 Redis同左远程 Redis 集群
Config Store本地配置文件本地配置文件用户级账户存储
Credential StoreOS KeychainOS Keychain云端密钥管理

重要约束:所有形态共用同一 runtime 接口契约。从本地优先单机演化到远程托管时,应用代码不变——仅 Provider Adapter Pool 和 State Store 的实现替换。这是接口版本化的回报。


用户首次安装与初始化流程

关键设计

  • 用户至少要有一种 LLM 可用才能用 FinBayes 完整功能(云端或本地);都没有时进入 L3 / L4 受限模式(明示)
  • 本地 LLM 安装是可选,不强制(增加部署门槛与下载量)
  • 默认 Session 在初始化时自动创建(用户不需手动建第一个 Session)

配置文件与数据文件的路径约定

按 OS 平台不同,FinBayes 的本地文件遵循各 OS 的标准目录约定(XDG Base Directory Specification on Linux / macOS 标准 / Windows AppData):

平台配置目录数据目录缓存目录
macOS~/Library/Application Support/finbayes/config/~/Library/Application Support/finbayes/data/~/Library/Caches/finbayes/
Linux$XDG_CONFIG_HOME/finbayes/(默认 $HOME/.config/finbayes/$XDG_DATA_HOME/finbayes/(默认 $HOME/.local/share/finbayes/$XDG_CACHE_HOME/finbayes/(默认 $HOME/.cache/finbayes/
Windows%APPDATA%\finbayes\config\%APPDATA%\finbayes\data\%LOCALAPPDATA%\finbayes\cache\

不变量

  • 凭证类不进入这些目录的任何文件(凭证走 OS Keychain)
  • 配置文件可被用户直接编辑(YAML 格式)
  • 数据文件(State Store SQLite)不建议用户直接编辑(需用 FinBayes CLI 操作)

升级流程

升级类型处理
FinBayes 软件版本升级runtime 启动时检查 State Store schema 版本,按需运行 migration 脚本(schema 演化策略详见演化与版本管理章节)
接口契约版本升级major 升级时拒绝过期客户端连接,提示用户升级;minor 升级保持向后兼容
LLM Provider API 变化Provider Adapter 内部适配,runtime 业务代码不变
本地 LLM 模型升级用户主动操作(Ollama pull);FinBayes 重新探测 Readiness

回滚策略:State Store 在 schema migration 前自动备份(SQLite 文件复制),失败时回滚。详见数据存储划分章节。


卸载与数据清理

用户卸载 FinBayes 时:

数据类型默认行为用户可选
安装的二进制 / 程序文件删除
配置文件保留(方便重装)明示选择"完全删除"
数据文件(State Store)保留明示选择"完全删除"(不可恢复警告)
缓存文件删除
OS Keychain 中的 Provider 凭证删除
本地 LLM 模型(Ollama 下载的)不删(由 Ollama 管理)用户在 Ollama 中删除

关键约束:用户清空画像 ≠ 卸载 FinBayes ≠ 删除 State Store。三种动作明确区分,避免误操作。


部署形态相关的未决问题

未决但第一阶段不抢答

  • 远程托管形态下的多用户隔离(待第一阶段冷启动数据验证商业模式后定)
  • 跨设备同步(用户在多台机器上的 FinBayes 状态是否同步)
  • 企业部署形态(如团队共享 Watchlist / 团队级审计)

这些都在战略未决问题范围内(详见上位继承与不变量章节)。