Encrypted Local-first Ledger

legdger加密的本地优先账本

记账领域的 Obsidian:本地优先、端侧 AI 财务副驾、插件系统开放给各种 AI 接入。所有账目数据在本机加密,AI 分析也不出设备;只有同步需要登录并收费,本地能力永久免费。

ledger-cli
01$ ledger-cli doctor
02{ "ok": true, "store": "ledger-mac.store", "readonly": true }
03
04$ ledger-cli stats --month 2026-09
05{ "monthExpense": 12483.20, "monthIncome": 32000.00,
06 "netWorth": 486210.55, "wallets": 7 }
$

数据是你的,AI 只是住在你设备里的财务副驾。

Design

设计要点

这个工具为什么这么做,以及这样做换来了什么。

双端分工

iOS 是易用记账端,随手记;macOS 是完整数据终端,承载插件系统、AI 接入与批量整合。

百年内核

袋子统一、每币种求和为零、开账交易三动词校验门——数据模型确定后不再推翻重来。

同步设计

UUIDv7 主键 + HLC 版本号 + 实体状态镜像同步,服务端只留最新密文,不积历史。

AI 接入

ledger-cli 以只读方式打开本地库,令牌由 Mac App 生成与撤销,附带审计日志。

Highlights

能力一览

  • 本地优先 + 端侧 AI:统计、问答与闲聊全部在设备内完成
  • 复式记账内核:一条账目 = 一组求和为零的 Leg,余额永远派生不落库
  • 十一类钱包袋型:资产、负债、证券、加密持仓、待对账、分账中间袋
  • 端侧 OCR 小票识别:Vision 解析 → 规则引擎 → 确认卡入库
  • 原生 App Intents 与快捷指令:「记一笔」一句话完成
  • ledger-cli:只读 CLI + 令牌授权,供外部 AI Agent 安全接入分析
Metrics

设计指标

每一条都对应实现里的一个具体决定。

云端明文数据
0

账目在本机加密存储,云端只保留最新密文

钱包袋型
11 类

资产、负债、证券、加密持仓、待对账、分账中间袋等

内核测试
127+

LedgerCore 是独立 Swift Package,内核有完整测试覆盖

余额字段
0 个

余额永远由 Leg 派生计算,不存在对不上的缓存值

同步体积
仅最新

实体状态镜像同步,服务端不积历史版本

AI 数据出口
设备内

统计、问答与闲聊全部端侧完成

Platforms

平台支持

内核与界面分离之后,每个平台的支持程度可以单独推进。

macOS
完整

完整数据终端:插件系统、AI 接入与批量整合

iOS
完整

随手记账端,App Intents 与快捷指令、小组件

CLI
完整

只读命令,JSON 输出,为 Agent 而生

Windows
规划中

内核为跨平台设计,壳层待排期

Android
规划中

同内核,端侧 AI 依赖平台能力适配

Comparison

与常见做法的差别

差别通常不在功能表上,而在「边界画在哪里」。

数据存放
本地优先 + 本机加密,云端只有密文
账目明文存云端,隐私取决于服务商
余额一致性
复式记账,每币种求和为零,余额派生不落库
余额作为字段存库,改动时靠代码保证一致
AI 能力
端侧模型推理,数据不出设备;能力不足自动降级规则引擎
把账目上传到云端做分析
对外接入
只读 CLI + 令牌授权 + 审计日志,AI 能读不能写
要么完全封闭,要么导出全量数据给第三方
收费边界
本地能力永久免费,只有同步需要登录并付费
基础功能即订阅,导出数据还要额外付费
Commands

命令速览

完整手册见 CLI 手册页。全部命令默认输出结构化结果。

完整命令表
ledger-cli doctor

自检:库文件位置、只读状态、内核版本与加密状态

--json
ledger-cli stats

统计月度收支、净资产与钱包分布

--month YYYY-MM--wallet <id>
ledger-cli wallets

列出钱包与各自的袋型(资产 / 负债 / 证券 / 加密持仓等)

ledger-cli query

按标签、时间区间与金额范围检索账目

--tag <tag>--from--to--min
In Practice

实际输出

ledger-cli
01$ ledger-cli doctor
02{ "ok": true, "store": "ledger-mac.store", "readonly": true }
03
04$ ledger-cli stats --month 2026-09
05{ "monthExpense": 12483.20, "monthIncome": 32000.00,
06 "netWorth": 486210.55, "wallets": 7 }
Source

代码模块

3 组、10 个模块,全部来自仓库真实目录结构。

SwiftUI · SwiftData · Swift 6 · FoundationModels · Vision · GRDB (V1) · CLI
内核包

LedgerCore 是一个独立 Swift Package,App 与 CLI 共用同一份实现。

LedgerCore

复式记账内核:Leg 求和为零、余额派生、开账交易三动词校验门

LedgerCore/Sources/LedgerCore
LedgerCoreStorage

存储层:SwiftData 模型与本地库读写,CLI 以只读方式打开

LedgerCore/Sources/LedgerCoreStorage
LedgerCoreCrypto

加密层:本机加密存储,云端只留密文

LedgerCore/Sources/LedgerCoreCrypto
LedgerCoreSync

同步层:UUIDv7 主键 + HLC 版本号 + 实体状态镜像同步

LedgerCore/Sources/LedgerCoreSync
双端与扩展

iOS 随手记,macOS 是完整数据终端。

ledger-ios

iOS 端:记账主入口、App Intents 与快捷指令、小组件

ledger-ios/
ledger-mac

macOS 端:完整数据终端、插件系统与批量整合

ledger-mac/
Intelligence

端侧智能:FoundationModels 推理 + 规则引擎降级 + Vision OCR 小票识别

ledger/Intelligence
Import / LAN

数据导入(标准格式)与局域网同步通道

ledger/{Import,LAN}
AI 接入

让外部 Agent 安全地读你的账本——只读。

ledger-cli

只读 CLI:doctor / stats 等命令,JSON 输出供 AI Agent 消费

ledger-cli/Sources/ledger-cli
令牌授权

令牌由 Mac App 生成与撤销,附带审计日志

ledger-mac/
其他工具
Get in touch

把身份、Agent 与私域的复杂度,交给一套可治理的内核

无论你是要替换现有的 IAM、搭建 Agent 中台,还是想把企微私域真正运营起来——先从一次 30 分钟的架构沟通开始。我们会先判断问题是不是我们擅长解的那类,不合适会直接说。