本地优先的财务AI助手:OpenClaw插件连接Open Accountant实现隐私安全查询
1. 项目概述与核心价值如果你和我一样既对个人财务数据敏感希望所有数据都牢牢掌握在自己手里又渴望能有一个智能助手能让你用自然语言随时查询“我这个月餐饮花了多少”、“储蓄目标完成了百分之几”那么openaccountant/openclaw-plugin这个项目可能就是你在寻找的那个“桥梁”。简单来说它是一个连接器一头连着你的本地财务数据中枢Open Accountant 的 Wilson 项目另一头连着强大的 AI 对话界面OpenClaw让你能像和真人会计聊天一样用最自然的方式获取自己财务状况的洞察。这个插件的核心魅力在于它坚守了“本地优先”和“隐私至上”的原则。你的财务数据——那些包含收入、支出、账户余额的敏感信息——从头到尾都不会离开你的电脑。插件本身并不直接读取你的 SQLite 数据库文件而是通过 HTTP 与你本地运行的 Wilson 仪表盘服务器通信。这意味着即使你的数据库使用了 SQLCipher 进行加密插件也能正常工作因为它根本“看不见”原始数据库文件只是向一个已经过认证和授权的本地服务发送请求。这种设计在 AI 工具满天飞、数据动不动就上云的今天显得尤为可贵。它把 AI 的便利性带给了你却没有以牺牲数据主权和隐私为代价。2. 架构设计与安全考量2.1 为什么是“插件”而非“直接集成”在深入配置之前理解这个插件的架构设计思路至关重要。它没有选择将财务查询逻辑硬编码到 OpenClaw 中也没有让 OpenClaw 直接去操作 SQLite 数据库而是采用了“插件化”和“服务代理”的模式。这背后有几个非常实际的考量职责分离与安全性WilsonOpen Accountant 的后端已经是一个成熟的项目它负责数据存储、业务逻辑如计算利润、预算对比和最重要的——权限控制RBAC。如果让 OpenClaw 插件直接读数据库就绕过了 Wilson 的权限墙也增加了数据库文件被误操作的风险。通过 HTTP API 交互插件只是在扮演一个“授权客户端”的角色所有操作都必须经过 Wilson 服务器的校验包括用户认证和基于角色的访问控制。这相当于在你的数据和 AI 之间加了一道由你完全掌控的安检门。兼容性与加密支持Wilson 支持使用 SQLCipher 对数据库文件进行加密。如果插件直接读取.db文件就需要处理复杂的解密逻辑和密钥管理这既增加了插件的复杂性也引入了新的安全风险密钥可能泄露。通过连接至 Wilson 的本地仪表盘加解密的工作完全由 Wilson 在内存中处理插件只接触已经过验证的、明文返回的 HTTP 响应数据完美避开了这个难题。开发与维护的独立性插件模式使得 Open Accountant 和 OpenClaw 两个项目可以独立演进。Wilson 的 API 更新了插件可以相应更新OpenClaw 增加了新功能插件也可以适配。这种松耦合让整个生态更健壮。2.2 安全边界与风险自评项目文档中已经给出了明确的警告这里我想结合自己的理解再深入聊聊。这个方案的安全基石建立在几个前提上网络边界Wilson 仪表盘默认绑定在localhost:3141这意味着只有你本机上的应用能访问它。这是一个非常强的隔离。认证壁垒你需要创建账户并获取 Bearer Token承载令牌来配置插件。这个令牌是插件与 Wilson 通信的“钥匙”。工具白名单插件提供的9个查询工具如oa_summary,oa_transactions在 OpenClaw 配置中默认是关闭的你必须手动将它们加入“允许”列表。这是一种最小权限原则的体现。但是最大的风险转移点在于 OpenClaw 网关本身。这也是文档中警告的核心。想象一下这个场景你配置好了插件现在可以愉快地在 OpenClaw 的网页界面或命令行里问“帮我看看这个月的净收入”。这很安全因为交互只发生在你的电脑上。然而OpenClaw 的强大之处在于它可以连接外部通道比如 Discord、Slack 或 Telegram。如果你将 OpenClaw 网关连接到了某个 Discord 服务器的频道那么任何能向该频道发送消息的人理论上都可以通过 你的机器人来触发这些财务查询工具。你的财务数据就会通过 AI 的回复泄露到那个 Discord 频道里。我的实操心得因此我强烈建议仅在你个人独享、且未连接任何第三方通讯工具的 OpenClaw 网关实例上使用此插件。把它当作一个纯粹的、本地的、增强版的财务命令行工具或私人助手来用而不是一个可以分享给社群或团队的公共机器人。如果你的 OpenClaw 需要服务多人或多渠道请务必通过 OpenClaw 的配置精细控制哪些工具可以在哪些通道使用或者干脆不为这些通道启用财务插件。3. 从零开始的完整配置指南假设你是一个从零开始的新手下面是我一步步走通的配置流程包含了一些官方文档可能没细说的“坑点”。3.1 环境准备打好地基首先确保你的系统满足以下条件这就像盖房子前要平整土地Node.js 环境插件要求 Node.js 版本 22。我推荐使用nvm(Node Version Manager) 来管理多个 Node 版本这样可以轻松切换。# 安装 nvm (以 macOS/Linux 为例) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重新打开终端安装并使用 Node 22 nvm install 22 nvm use 22使用node --version确认版本。Wilson CLI 安装这是 Open Accountant 的数据引擎和仪表盘。根据你的操作系统从 Wilson GitHub Releases 页面下载最新的预编译二进制文件。比如在 macOS 上# 下载版本号请替换为最新 curl -L -o wilson.tar.gz https://github.com/openaccountant/wilson/releases/download/v0.10.0/wilson-x86_64-apple-darwin.tar.gz # 解压 tar -xzf wilson.tar.gz # 将可执行文件移动到系统路径例如 /usr/local/bin/ sudo mv wilson /usr/local/bin/ # 验证安装 wilson --version对于 Linux 或 Windows过程类似选择对应的压缩包即可。OpenClaw 网关运行你需要一个正在运行的 OpenClaw 网关实例。如果你还没安装可以参考 OpenClaw 的官方文档进行安装和基本配置。确保你的openclaw命令行工具可用。3.2 启动 Wilson 仪表盘并获取令牌这是关键一步目的是启动本地数据服务并拿到访问凭证。启动仪表盘wilson --dashboard正常情况下终端会输出服务启动在http://localhost:3141的信息。保持这个终端窗口运行。初始化与获取 Token打开浏览器访问http://localhost:3141。首次访问系统会引导你创建一个管理员账户。填写邮箱和密码这个密码仅用于 Wilson 仪表盘登录请妥善保管。登录成功后你会进入 Wilson 的主界面。现在最关键的一步来了获取 Bearer Token。打开浏览器的开发者工具F12切换到Network网络标签页。在 Wilson 仪表盘页面进行任意操作比如点击一个报表。在网络请求中找到一个向/api/某个端点发起的请求。点击这个请求在Headers请求头选项卡中找到Authorization字段。它的值看起来像Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...一串很长的字符串。复制Bearer后面的那部分即eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...这就是你的authToken。请将它保存在一个安全的地方比如密码管理器。注意事项这个 Token 通常有有效期。如果未来插件突然报“认证失败”你可能需要重新登录 Wilson 仪表盘并按照上述步骤获取一个新的 Token 来更新配置。3.3 安装与配置插件现在我们将插件安装到 OpenClaw 中并告诉它如何连接 Wilson。安装插件openclaw plugins install openaccountant/openclaw-plugin这个命令会从 npm 仓库下载并安装插件。配置 OpenClaw OpenClaw 的配置文件通常是~/.openclaw/config.jsonLinux/macOS或%APPDATA%\.openclaw\config.jsonWindows。用文本编辑器打开它。 你需要将插件配置添加到plugins.entries部分并将工具添加到白名单。注意这是一个合并操作不要覆盖你原有的其他配置。假设你原来的配置是空的或只有其他内容完整的配置示例如下{ plugins: { entries: { openaccountant: { config: { wilsonUrl: http://localhost:3141, authToken: 你刚才复制的很长的Token字符串 } } } }, tools: { allow: [ oa_summary, oa_profit_loss, oa_budgets, oa_savings, oa_alerts, oa_net_worth, oa_net_worth_trend, oa_transactions, oa_goals ] } }wilsonUrl: 确保和 Wilson 仪表盘启动的地址端口一致默认就是http://localhost:3141。authToken: 粘贴你之前获取的令牌。tools.allow: 这里列出了所有可用的财务查询工具。你可以根据需求只启用其中一部分。例如如果你不关心预算可以去掉oa_budgets。重启 OpenClaw 网关 修改配置后需要重启 OpenClaw 网关以使配置生效。找到你运行 OpenClaw 网关的命令行窗口通常是用openclaw start启动的先按CtrlC停止它然后重新运行openclaw start。4. 工具详解与实战对话示例插件提供了九个工具每个都对应一个常见的财务查询场景。下面我结合具体的、假设的对话示例来展示它们如何工作并解释其背后的数据逻辑。4.1 核心概览与流水查询 (oa_summary,oa_transactions)oa_summary(月度支出分类概览)你问“帮我总结一下2024年5月的开销情况。”AI理解与执行AI 会识别出时间“2024年5月”和意图“总结开销”。它调用oa_summary工具参数为month: 2024-05。插件动作插件向http://localhost:3141/api/summary?month2024-05发送带 Token 的请求。Wilson 响应返回一个 JSON包含“餐饮”、“交通”、“娱乐”等各个类别的总支出。AI 回复你“2024年5月你的总支出为 ¥8,500。其中餐饮占比最高35%¥2,975其次是购物25%¥2,125和交通15%¥1,275。其他类别占25%。”背后逻辑这个工具通常对应 Wilson 中一个按月份和类别聚合支出的 API。它帮助你快速抓住消费大头。oa_transactions(交易流水查询)你问“我想看看四月份所有金额超过500块的消费记录按时间倒序排。”AI理解与执行AI 识别出时间范围“四月份”、过滤条件“金额500”、排序“时间倒序”。它调用oa_transactions工具参数可能为startDate: 2024-04-01,endDate: 2024-04-30,minAmount: 500,sortBy: date,sortOrder: desc。插件动作插件向 Wilson 的 transactions 查询端点发送一个复杂的过滤请求。AI 回复你以清晰的列表形式返回交易记录包括日期、描述、类别、金额。我的使用技巧这是我最常用的工具之一用于复查大额支出或寻找特定交易。你可以结合描述关键词搜索例如“查找所有包含‘星巴克’的交易”。4.2 损益与净值分析 (oa_profit_loss,oa_net_worth,oa_net_worth_trend)oa_profit_loss(损益表)你问“我这个季度赚了多少钱又花了多少钱”AI理解与执行AI 识别季度时间范围调用oa_profit_loss参数为startDate: 2024-04-01,endDate: 2024-06-30。Wilson 响应返回该时间段内的总收入、总支出和净利润。AI 回复你“2024年第二季度你的总收入为 ¥30,000总支出为 ¥22,000净收入为 ¥8,000。储蓄率约为26.7%。”核心价值这是衡量你财务健康度的核心指标比只看支出更全面。oa_net_worth(净资产快照) oa_net_worth_trend(净资产趋势)你问“我现在总资产和负债是多少净资产多少”AI 使用oa_net_worth给你一个当前时间点的快照“截至今日你的总资产现金、投资、房产估值为 ¥1,200,000总负债贷款、信用卡欠款为 ¥300,000净资产为 ¥900,000。”你接着问“那过去一年的净资产变化趋势呢”AI 切换使用oa_net_worth_trend可能会返回月度数据点并总结道“过去12个月你的净资产从 ¥750,000 增长至 ¥900,000呈稳步上升趋势主要增长来源于投资账户增值和储蓄积累。”数据来源解读这些数据依赖于你在 Wilson 中正确配置和更新的账户余额。资产账户银行卡、投资平台和负债账户房贷、信用卡的当前余额差值就是净资产。4.3 预算、储蓄与目标追踪 (oa_budgets,oa_savings,oa_goals,oa_alerts)这部分是财务规划的核心插件让你能动态监控计划执行情况。oa_budgets(预算执行情况)你问“我这个月‘餐饮’预算超支了吗”AI理解与执行AI 调用oa_budgets可能默认查询当前月或根据你的问题指定类别category: 餐饮。Wilson 响应返回“餐饮”类别的预算金额、实际支出、剩余金额/超支金额。AI 回复你“本月你为‘餐饮’设定的预算为 ¥2,000。截至今日已支出 ¥2,350超支 ¥350超出预算17.5%。需要注意控制后续开销。”前提条件这需要你事先在 Wilson 的仪表盘里为不同类别设置好月度或周期预算。oa_savings(储蓄率趋势)你问“过去半年我的储蓄率怎么样”AI理解与执行调用oa_savings参数为过去6个月。AI 回复你可能以图表描述或数据列表形式回复“1月储蓄率15%2月18%…6月25%呈现逐步提升的良好趋势。平均储蓄率为20%。”计算公式储蓄率通常指收入 - 支出/ 收入。这个工具帮你宏观把握财务积累能力。oa_goals(财务目标进度)你问“我的‘年底旅行基金’攒了多少了”AI理解与执行调用oa_goals。Wilson 响应返回所有活跃目标包括目标名称、总金额、当前已存金额、进度百分比、截止日期。AI 回复你“‘年底旅行基金’目标金额 ¥10,000目前已积累 ¥6,200完成度62%。按当前进度预计在10月中旬可达成目标。”联动性这个工具和oa_net_worth中的储蓄账户余额是联动的。你需要将某个储蓄账户关联到这个目标。oa_alerts(消费警报)你问“最近有什么需要我注意的超支预警吗”AI理解与执行调用oa_alerts。Wilson 响应返回系统根据你设定的规则如“单类别月度预算超支80%”、“单笔交易超过X元”生成的警报列表。AI 回复你“有一条警报娱乐类别本月预算 ¥1,000目前已花费 ¥950接近预算上限请注意。”5. 常见问题与故障排查实录在实际搭建和使用过程中我遇到并解决了一些典型问题。这里整理出来希望能帮你少走弯路。5.1 连接与认证失败这是最常见的问题症状是 AI 回复“无法获取财务数据”或直接报错。问题现象可能原因排查步骤与解决方案插件报错Failed to connect to Wilson dashboard1. Wilson 仪表盘未运行。2. 配置的wilsonUrl错误。3. 防火墙/安全软件阻止了本地回环地址通信。1.检查 Wilson 进程在终端运行 ps aux插件报错Authentication failed或401 Unauthorized1.authToken过期或无效。2. Token 配置格式错误。1.重新获取 Token按照3.2节的步骤重新登录 Wilson 仪表盘从浏览器开发者工具中获取新的 Token。2.检查配置确保config.json中的authToken字段的值是纯令牌字符串以eyJ...开头不要包含Bearer前缀。插件会自动添加这个前缀。3.检查 Wilson 用户权限确认你用来登录获取 Token 的账户在 Wilson 中具有足够的查询权限。OpenClaw 完全无法识别oa_开头的工具1. 插件未成功安装。2. 插件已安装但未在配置中启用工具。3. OpenClaw 网关配置未重载。1.检查插件列表运行openclaw plugins list查看openaccountant/openclaw-plugin是否在列表中且状态正常。2.核对工具白名单仔细检查config.json中tools.allow数组是否包含了你想使用的工具名拼写必须完全正确。3.重启网关任何配置修改后务必重启 OpenClaw 网关(CtrlC后重新openclaw start)。5.2 数据查询异常当连接和认证都正常但查询结果不对或为空时。问题现象可能原因排查步骤与解决方案查询某个月份数据返回为空1. Wilson 数据库中该月份没有交易数据。2. 时间参数格式错误。1.确认数据存在直接打开 Wilson 仪表盘 (http://localhost:3141)在界面上查看对应月份是否有数据。插件的数据源就是 Wilson。2.检查日期格式AI 在调用工具时传入的日期参数通常是YYYY-MM或YYYY-MM-DD格式。确保你的提问能被正确解析例如“查看2024年5月数据”比“查看五月数据”更明确。分类或账户名称不匹配你在提问中使用的分类/账户名称与 Wilson 中记录的名称不一致。1.统一命名在 Wilson 中建立一套清晰、一致的分类和账户命名规则。例如统一叫“餐饮”而不是混用“吃饭”、“外卖”、“餐费”。2.使用模糊查询或列表对于oa_transactions可以尝试用关键词搜索或者先问“我有哪些消费分类”这需要 Wilson API 支持或你手动在 Wilson 中查看。oa_net_worth计算不准确Wilson 中资产或负债账户的余额未及时更新。净资产是快照数据其准确性完全依赖于 Wilson 中各账户余额的时效性。你需要定期如每周或每月在 Wilson 仪表盘中更新你的现金账户余额、投资账户市值、贷款剩余本金等。插件只是忠实地计算你录入的数据。5.3 性能与使用技巧首次查询慢如果 Wilson 数据库很大首次执行某些聚合查询如跨度很长的oa_net_worth_trend时可能会感觉响应慢。这是 Wilson 在后台进行数据计算属正常现象。后续查询相同数据会快很多。AI 理解偏差有时 AI 可能误解你的意图调用错误的工具或传递错误的参数。你可以尝试更精确地提问例如“使用利润损失工具查看本季度的数据”或者直接在 OpenClaw 的上下文中指定工具。数据隐私再强调永远不要在连接了 Discord/Slack 等公开或群组频道的 OpenClaw 网关上启用这些工具。最好的实践是专机专用。在一台你个人使用的电脑上运行一个只为你服务的 OpenClaw 网关实例和 Wilson实现真正的私人财务 AI 助手。通过以上步骤和解析你应该能够顺利搭建起这个连接本地财务世界与 AI 智能的桥梁。它的价值在于将静态的、需要手动查询的财务数据变成了一个可以动态对话、智能洞察的伙伴。所有操作都在本地完成在享受 AI 便利的同时牢牢守住了数据隐私的底线。