legdger加密的本地优先账本
记账领域的 Obsidian:本地优先、端侧 AI 财务副驾、插件系统开放给各种 AI 接入。所有账目数据在本机加密,AI 分析也不出设备;只有同步需要登录并收费,本地能力永久免费。
01$ ledger-cli doctor02{ "ok": true, "store": "ledger-mac.store", "readonly": true }0304$ ledger-cli stats --month 2026-0905{ "monthExpense": 12483.20, "monthIncome": 32000.00,06 "netWorth": 486210.55, "wallets": 7 }数据是你的,AI 只是住在你设备里的财务副驾。
设计要点
这个工具为什么这么做,以及这样做换来了什么。
iOS 是易用记账端,随手记;macOS 是完整数据终端,承载插件系统、AI 接入与批量整合。
袋子统一、每币种求和为零、开账交易三动词校验门——数据模型确定后不再推翻重来。
UUIDv7 主键 + HLC 版本号 + 实体状态镜像同步,服务端只留最新密文,不积历史。
ledger-cli 以只读方式打开本地库,令牌由 Mac App 生成与撤销,附带审计日志。
能力一览
- 本地优先 + 端侧 AI:统计、问答与闲聊全部在设备内完成
- 复式记账内核:一条账目 = 一组求和为零的 Leg,余额永远派生不落库
- 十一类钱包袋型:资产、负债、证券、加密持仓、待对账、分账中间袋
- 端侧 OCR 小票识别:Vision 解析 → 规则引擎 → 确认卡入库
- 原生 App Intents 与快捷指令:「记一笔」一句话完成
- ledger-cli:只读 CLI + 令牌授权,供外部 AI Agent 安全接入分析
设计指标
每一条都对应实现里的一个具体决定。
账目在本机加密存储,云端只保留最新密文
资产、负债、证券、加密持仓、待对账、分账中间袋等
LedgerCore 是独立 Swift Package,内核有完整测试覆盖
余额永远由 Leg 派生计算,不存在对不上的缓存值
实体状态镜像同步,服务端不积历史版本
统计、问答与闲聊全部端侧完成
平台支持
内核与界面分离之后,每个平台的支持程度可以单独推进。
完整数据终端:插件系统、AI 接入与批量整合
随手记账端,App Intents 与快捷指令、小组件
只读命令,JSON 输出,为 Agent 而生
内核为跨平台设计,壳层待排期
同内核,端侧 AI 依赖平台能力适配
与常见做法的差别
差别通常不在功能表上,而在「边界画在哪里」。
命令速览
完整手册见 CLI 手册页。全部命令默认输出结构化结果。
ledger-cli doctor自检:库文件位置、只读状态、内核版本与加密状态
--jsonledger-cli stats统计月度收支、净资产与钱包分布
--month YYYY-MM--wallet <id>ledger-cli wallets列出钱包与各自的袋型(资产 / 负债 / 证券 / 加密持仓等)
ledger-cli query按标签、时间区间与金额范围检索账目
--tag <tag>--from--to--min实际输出
01$ ledger-cli doctor02{ "ok": true, "store": "ledger-mac.store", "readonly": true }0304$ ledger-cli stats --month 2026-0905{ "monthExpense": 12483.20, "monthIncome": 32000.00,06 "netWorth": 486210.55, "wallets": 7 }代码模块
3 组、10 个模块,全部来自仓库真实目录结构。
SwiftUI · SwiftData · Swift 6 · FoundationModels · Vision · GRDB (V1) · CLILedgerCore 是一个独立 Swift Package,App 与 CLI 共用同一份实现。
LedgerCore复式记账内核:Leg 求和为零、余额派生、开账交易三动词校验门
LedgerCore/Sources/LedgerCoreLedgerCoreStorage存储层:SwiftData 模型与本地库读写,CLI 以只读方式打开
LedgerCore/Sources/LedgerCoreStorageLedgerCoreCrypto加密层:本机加密存储,云端只留密文
LedgerCore/Sources/LedgerCoreCryptoLedgerCoreSync同步层:UUIDv7 主键 + HLC 版本号 + 实体状态镜像同步
LedgerCore/Sources/LedgerCoreSynciOS 随手记,macOS 是完整数据终端。
ledger-iosiOS 端:记账主入口、App Intents 与快捷指令、小组件
ledger-ios/ledger-macmacOS 端:完整数据终端、插件系统与批量整合
ledger-mac/Intelligence端侧智能:FoundationModels 推理 + 规则引擎降级 + Vision OCR 小票识别
ledger/IntelligenceImport / LAN数据导入(标准格式)与局域网同步通道
ledger/{Import,LAN}让外部 Agent 安全地读你的账本——只读。
ledger-cli只读 CLI:doctor / stats 等命令,JSON 输出供 AI Agent 消费
ledger-cli/Sources/ledger-cli令牌授权令牌由 Mac App 生成与撤销,附带审计日志
ledger-mac/使用场景
4 个典型场景,每个都拆成可照做的步骤。
通过 App Intents 与快捷指令,不用打开 App 就能记账。
- 1对 Siri 或快捷指令说「记一笔,午饭 38」
- 2端侧规则引擎解析金额、类目与时间
- 3命中钱包与袋型,生成一组求和为零的 Leg
- 4确认卡展示解析结果,确认即入库
端侧 OCR 识别小票,全程不出设备。
- 1拍照或从相册选择小票图片
- 2Vision 框架完成端侧文字识别
- 3规则引擎抽取商户、金额与日期
- 4生成确认卡,人工核对后入库
问「这个月餐饮花了多少」,答案在设备内算出来。
- 1FoundationModels 端侧推理理解自然语言问题
- 2内核把问题翻译成对本地账本的只读查询
- 3统计结果在设备内生成,无网络请求
- 4模型能力不足时降级到规则引擎,保证可用
只读授权 + 审计日志,AI 能看不能改。
- 1在 Mac App 内生成接入令牌
- 2Agent 通过 ledger-cli 以只读方式打开本地库
- 3JSON 结构化输出交给 Agent 分析
- 4每次调用写入审计日志,令牌可随时撤销
数据边界与安全
这类工具的价值很大一部分在于「它不做什么」。下面每一条都标注了实现位置。
账目数据在本机加密,云端只留最新密文,服务端读不到明文。
LedgerCoreCryptoledger-cli 以只读方式打开本地库,任何写操作在存储层被拒绝。
ledger-cli doctor → readonly: true接入令牌由 Mac App 生成与撤销,附带审计日志,随时可断。
ledger-cli token revoke统计与问答在设备内完成,AI 分析不会把数据送出去。
FoundationModels · Intelligence开账交易三动词校验门,数据模型确定后不再推翻重来。
LedgerCore 校验门实体状态镜像覆盖式同步,服务端不积历史,减少泄露面。
LedgerCoreSync版本节奏
已发布的写清交付了什么,开发中的写清正在做什么。
v0.6已发布内核- 复式记账内核与 Leg 求和为零
- 十一类钱包袋型
- SwiftData 本地存储与加密层
- iOS 记账端与 App Intents
v0.9已发布智能与接入- 端侧 AI 统计与问答
- Vision OCR 小票识别
- ledger-cli 只读接入与令牌
- macOS 完整数据终端
v1.0开发中同步与插件- UUIDv7 + HLC 实体镜像同步上线
- 插件系统开放第三方 AI 接入
- 批量整合与对账工作流
- 多币种汇率与折算
v1.2规划中扩展- Windows / Android 端
- 共享账本与家庭协作
- 投资组合分析视图
- 标准格式导入导出生态
常见问题
不会。账目在本机加密存储,只有开启同步时才会上传最新密文,服务端不保留明文也不积历史版本。AI 统计与问答全部在设备内完成。
代码模块
3 组、10 个模块。路径直接对应仓库目录,方便工程同学定位。
LedgerCore 是一个独立 Swift Package,App 与 CLI 共用同一份实现。
LedgerCore复式记账内核:Leg 求和为零、余额派生、开账交易三动词校验门
LedgerCore/Sources/LedgerCoreLedgerCoreStorage存储层:SwiftData 模型与本地库读写,CLI 以只读方式打开
LedgerCore/Sources/LedgerCoreStorageLedgerCoreCrypto加密层:本机加密存储,云端只留密文
LedgerCore/Sources/LedgerCoreCryptoLedgerCoreSync同步层:UUIDv7 主键 + HLC 版本号 + 实体状态镜像同步
LedgerCore/Sources/LedgerCoreSynciOS 随手记,macOS 是完整数据终端。
ledger-iosiOS 端:记账主入口、App Intents 与快捷指令、小组件
ledger-ios/ledger-macmacOS 端:完整数据终端、插件系统与批量整合
ledger-mac/Intelligence端侧智能:FoundationModels 推理 + 规则引擎降级 + Vision OCR 小票识别
ledger/IntelligenceImport / LAN数据导入(标准格式)与局域网同步通道
ledger/{Import,LAN}让外部 Agent 安全地读你的账本——只读。
ledger-cli只读 CLI:doctor / stats 等命令,JSON 输出供 AI Agent 消费
ledger-cli/Sources/ledger-cli令牌授权令牌由 Mac App 生成与撤销,附带审计日志
ledger-mac/技术栈
分层设计
从内核到界面,每一层负责什么、用什么实现。这类工具的核心设计是「内核与界面分离」。
Ledger / Wallet / Transaction / Term 四实体 + Leg 值对象
复式 Leg 求和为零,余额 = 期初 + Σ 袋子腿,即时派生
FoundationModels 端侧推理 + 规则引擎降级 + Vision OCR
UUIDv7 身份 + HLC 版本 + 实体镜像覆盖式同步(V1)
ledger-cli 只读 CLI、令牌授权、JSON 输出供 AI Agent 消费
SwiftUI · SwiftData · Swift 6 · iOS 17.6+ · macOS
多端支持
同一个内核,不同平台只是换一层壳。支持程度可以按平台单独推进。
完整数据终端:插件系统、AI 接入与批量整合
随手记账端,App Intents 与快捷指令、小组件
只读命令,JSON 输出,为 Agent 而生
内核为跨平台设计,壳层待排期
同内核,端侧 AI 依赖平台能力适配
技术栈
命令手册
6 条命令。设计前提:输出结构化、退出码语义化,让脚本和 AI Agent 都能可靠消费。
ledger-cli doctor自检:库文件位置、只读状态、内核版本与加密状态
--jsonledger-cli stats统计月度收支、净资产与钱包分布
--month YYYY-MM--wallet <id>ledger-cli wallets列出钱包与各自的袋型(资产 / 负债 / 证券 / 加密持仓等)
ledger-cli query按标签、时间区间与金额范围检索账目
--tag <tag>--from--to--minledger-cli export结构化导出,供外部 AI Agent 消费
--format json|csv--monthledger-cli token查看或撤销接入令牌(撤销需在 Mac App 内确认)
listrevoke <id>输出约定
CLI 是给程序用的接口,人只是顺便看得懂。
默认输出 JSON,字段名稳定。人可读的格式化由调用方决定,不由 CLI 猜测。
成功、失败、用法错误分别返回不同退出码,脚本与 Agent 据此分支,不用解析文本。
自动发现本地令牌文件,避免在命令行明文传凭据(会被写入 shell 历史与进程列表)。
一次实际调用
01$ ledger-cli doctor02{ "ok": true, "store": "ledger-mac.store", "readonly": true }0304$ ledger-cli stats --month 2026-0905{ "monthExpense": 12483.20, "monthIncome": 32000.00,06 "netWorth": 486210.55, "wallets": 7 }把身份、Agent 与私域的复杂度,交给一套可治理的内核
无论你是要替换现有的 IAM、搭建 Agent 中台,还是想把企微私域真正运营起来——先从一次 30 分钟的架构沟通开始。我们会先判断问题是不是我们擅长解的那类,不合适会直接说。