本地优先的个人记账 PWA — 自然语言就能记账
ChatGPT 式对话记账 · AI 工作台 · 账单导入 · 模糊去重
数据全部存浏览器 IndexedDB · API Key 本地加密 · AI 请求脱敏
| 对话记账 / Chat entry | 统计 / Stats |
|---|---|
![]() |
![]() |
- ChatGPT 式交互:说一句话就能记一笔、查账单、改分类、删记录
- 5 种意图识别:记一笔 / 查询 / 修改 / 删除 / 闲聊,数据变更前弹出确认卡片
- 混合解析策略:本地规则 5 阶段管线 + LLM 增强,速度快又准
- 四类 AI 任务:综合审计 · 自动归类 · 智能查重 · 月度摘要
- 逐条审核:AI 建议全部人工确认后应用,不瞎改数据
- 结果缓存:按流水签名缓存,重跑不重复消耗 API
- 超量分批:数据多也不怕,带进度条,可强制刷新
- 月度摘要:任意月份一键生成
- 基于相似度 + 时间窗的可配置查重算法
- amount 排序剪枝,大数据量也很快
- 保留 A / 保留 B / 忽略,三键操作
- 分类饼图 · 趋势折线 · 预算追踪
- 全量明细搜索筛选,支持多维度过滤
storage.persist()防浏览器驱逐- 自动防抖快照(保留 10 份)+ 手动备份/恢复
- 删除 / 去重合并 / 应用分类均支持 5 秒撤销
- API Key 用 AES-GCM 加密存本地
- AI 请求自动脱敏:手机号 / 订单号 / 身份证 / 邮箱 / 带称呼姓名
- 可安装到桌面,离线可用
- 路由级懒加载,首屏 ~150kB gzip
# 安装依赖
npm install
# 开发服务器
npm run dev
# 构建生产版本
npm run build
# 代码检查 & 单测
npm run lint
npm testAI 配置在「设置」页:选服务商预设(DeepSeek / OpenAI / 通义千问 / OpenCode Go / 自定义),填 API Key 与模型。 未配置时 AI 工作台自动回退到本地启发式规则,不影响基础使用。
应用不要求登录或 API Key。启动后可直接新增记录,或在设置页导入 public/sample-data.csv 体验统计、预算、导出和本地规则;只有显式启用在线 AI 服务时才会发送已脱敏的请求。
| 类别 | 技术 |
|---|---|
| 框架 | React 19 · Vite · TypeScript |
| 样式 | Tailwind CSS v4 · framer-motion |
| 数据库 | Dexie (IndexedDB) |
| 图表 | recharts |
| PWA | vite-plugin-pwa |
| 测试 | vitest |
Dexie schema 演进至 v12,升级自动迁移:
| 版本 | 内容 |
|---|---|
| v1–v5 | transactions / categories / budgets / settings / classificationCache / parseCache / billTemplates |
| v6 | aiSuggestions(AI 工作台建议) |
| v7 | dedupStrategies / dedupRecords(模糊去重) |
| v8 | backups(自动/手动数据备份) |
| v9 | auditCache(AI 审计结果缓存) |
| v10 | billTemplates 增加 importCount 索引(修复设置页 orderBy 白屏) |
| v11 | chatMessages(首页对话历史持久化) |
| v12 | learningRules(AI 学习规则:商户→分类映射,本地识别进化) |
npm ci
npm run lint
npm test
npm run build
npm run test:e2e单元测试使用 fake-indexeddb;E2E 使用 mock LLM,不需要真实 API Key。CI 对 Pull Request 执行质量检查和关键路径 E2E。
- 当前稳定 Release:
v1.4.0。 - 定位:local-first AI personal finance product,基础记账不依赖账号或 API Key。
- 维护优先级:稳定性、账单导入兼容、AI 记账体验、数据安全、双语文档、Demo 与 Release 质量。
- 不以无限增加功能作为路线图目标。
- 提升支付宝、微信支付和银行账单导入兼容性及错误诊断。
- 加固备份、恢复、数据库迁移和异常回退。
- 改进 AI 建议的可解释性、确认流程与离线回退。
- 维持可复现 Demo、截图、Changelog 和 SemVer Release。
- 数据默认只在当前浏览器或桌面容器的 IndexedDB 中;跨设备迁移依赖导出/导入。
- 清除站点数据、隐私模式或浏览器存储策略可能导致本地数据丢失,应定期导出备份。
- 在线 AI 请求会发送到用户配置的第三方 provider;应用会脱敏,但 provider 的处理政策仍由其自身决定。
- PWA 后台能力受浏览器和操作系统限制,不能替代银行或专业财务系统。
安全边界与漏洞报告方式见 SECURITY.md。
Q:数据存在哪里?换电脑怎么办? A:全部存在浏览器 IndexedDB。换电脑用「设置 → 导出备份」+「导入备份」即可迁移。
Q:支持哪些账单导入? A:支付宝 CSV、微信支付 Excel、平安银行 Excel,含模板自适应学习与硬去重。
Q:没有 API Key 能用吗? A:能。基础记账、统计、导入完全本地运行;AI 工作台会回退到本地启发式规则。
详见 Releases 页面。
欢迎提 Issue 和 PR!有任何想法或 bug 都欢迎反馈。
MIT © Justin Ju
如果觉得好用,点个 ⭐ Star 就是最大的支持~

