PROJECT / 002

西楚记账

Xichu Finance · AI Personal Finance Tracker

用 AI 辅助开发的开源 Android 个人记账应用:记录收支、管理账户与分类,查看统计分析与账单查询。

AndroidOpen SourceAPK v1.0.4Backend · HTTPS

项目简介

西楚记账是一款使用 AI 辅助开发的 Android 个人记账应用。你可以独立使用本地 Room 账本,也可以登录云端账本,通过 HTTPS 使用 FastAPI 与 PostgreSQL 服务。两个账本相互独立,源码、签名 APK 和自行部署文档均已公开。

实际截图

以下为 v1.0.4 在 Android 模拟器中的最新实际运行截图。金额与记录均为虚构示例;点击图片可查看完整画面。

下载与正式版本

Version
v1.0.4
APK
XichuFinance-v1.0.4.apk
APK Size
8,831,162 bytes
SHA256
e68da0f7e35091e0c32af90aa2e8e045c88245b444b08570b79713ba04b869bb

Android 8.0 及以上。已有同签名版本请覆盖安装,不要先卸载,以保留应用数据。

SHA256 校验文件 ↗

核心能力

  • 收入与支出记录:添加、修改和删除交易;v1.0.4 支持记账时创建并选择账户,保留收入与支出草稿。
  • 账户与分类管理:创建、重命名、删除,并保护已有交易引用的账户与分类。
  • Dashboard 与统计分析:月度收支、结余、每日支出趋势、分类分布与最大支出,金额由真实账本统计。
  • 标准 CSV 导入:云端预览、确认后导入和重复检测;原始微信、支付宝或银行导出需要先转换。
  • 智能分类:个人规则与共享关键词匹配;外部 AI Provider 当前未启用。
  • 自然语言账单查询:支持七类中文固定意图,数据库计算金额后按模板回答。
  • 本地存储与云端缓存:Room 保存本地账本及用户隔离缓存;离线可读已缓存数据。

项目架构

  1. Android App · Kotlin / Jetpack Compose
  2. HTTPS API
  3. FastAPI
  4. PostgreSQL

Room Local Database:本地账本独立保存在设备;云端账本缓存按用户隔离。刷新拉取服务器快照,离线写入队列尚未实现。

从源码到上线

  1. 下载正式 APK,或从 GitHub 获取源码
  2. 按入门指南使用本地账本或登录云端
  3. 按部署指南自行运行 FastAPI / PostgreSQL
  4. 按 Android 发布指南构建自己的签名版本

部署说明

Backend 已完成 Docker、PostgreSQL 与 HTTPS 部署验证。安装 App 不需要在手机或个人电脑上安装 Docker;自行托管后端请阅读 Deployment Guide。

Deployment Guide ↗

当前范围与限制

  • 当前仅支持人民币 CNY;本地与云端账本相互独立。
  • CSV 导入、云端写入和 Ask Finance 需要联网;离线可查看缓存,没有离线写入队列。
  • Ask Finance 使用规则、固定意图与数据库统计,不支持任意自然语言问答;外部 AI Provider 未启用。
  • Room 数据目前未加密;完整安全与隐私限制请先阅读仓库文档。
安全与隐私说明 ↗

EPISODE 006 · COPY & BUILD

视频配套提示词

下面是根据西楚记账开发过程整理的7组教学示例。逐组复制到 Codex,按自己的项目需求修改。

先把 Codex 工作目录设为自己的项目文件夹。克隆完整源码后先检查、运行已有功能;从空目录学习时逐步创建。每完成一步,确认结果后再继续。

先完成本地版:P01 → P02 → P06 → P07。需要云端账本时,再加入 P03、P04 和 P05,部署步骤见上方 Deployment Guide。

下载 Markdown下载 TXT

P01检查开发环境

先知道电脑缺什么,再开始开发。

请先检查当前项目的 Android 开发环境,列出已安装、缺失和版本冲突的工具。

1. 确认当前目录是我的项目文件夹。如果已有源码,检查 Git 版本与工作区;如果是空目录,说明尚未创建 Android 工程。
2. 检查 Git、Android Studio、Gradle Wrapper、JDK、Android SDK、Build Tools、依赖下载和模拟器。
3. 西楚记账实际使用过的组合是 JDK 21、SDK/Build Tools 36.1、AGP 9.1.1、Gradle 9.3.1。先以当前工程配置为准,不自动升级。说明 compileSdk 与 minSdk 的区别。
4. 本次先检查,不安装软件、不修改系统、不写业务代码。缺少工具时,告诉我具体安装位置和下一步。

请给出实际检查结果、命令和退出码。没有运行的检查明确标为未验证。
P02做出本地最小记账 App

先完成能保存数据的本地版,不必先买服务器。

请在我的项目里完成一个 Kotlin + Jetpack Compose + Room 的最小记账 App。

如果我已克隆西楚记账源码,先检查并运行已有功能,再列出需要调整的地方;如果是空目录,就分步骤创建工程。保留已有改动。

本次功能:
- 账户和分类管理。
- 新增、编辑、删除收入与支出。
- 用 Room 保存账目,关闭 App 再打开后数据仍在。
- 显示与实际账目一致的收支和余额。金额用整数分保存,避免浮点计算误差。
- 使用明确的示例账目。先不做服务器、云登录或外部 AI。

请实际构建并运行适用测试。在我的模拟器上安装启动,检查新增、编辑、删除、统计和关闭重开。分别告诉我构建、测试、安装和业务检查的结果;失败先修复再继续。
P03在本机运行后台

需要云端账本时,先把后台在自己的电脑上跑通。

请为我的记账项目建立或检查 FastAPI + PostgreSQL + Docker 后台,先在本机运行。

先检查已有代码和 Docker Client/Server,复用当前项目配置。只使用本项目的测试容器、网络和专用数据库,不删除已有数据卷。API 先仅供本机访问,数据库不公开到公网。

请实际检查:health、数据库迁移、示例用户注册和登录、账户、分类、收入支出接口、不同用户的数据隔离以及金额计算。只使用示例账目,不连接作者的在线服务或生产数据库。

需要本地私密配置时,先告诉我文件位置和用途;凭据不要写进源码或公开输出。环境缺失时说明缺项,不把配置文件存在当作服务已经运行。

请列出实际启动命令、检查结果和失败原因。本次不部署云服务器。
P04让安卓 App 连接自己的后台

检查登录、刷新、错误提示和缓存。

请让我的 Android App 连接已经在本机运行的测试 API。先检查现有实现,再做必要修改。

1. 区分 Android 模拟器和真实手机访问电脑服务时的地址;正式 Release 保留 HTTPS 要求,Debug 按现有开发配置运行。
2. 登录和加载时显示等待状态,失败时给出可理解的提示。
3. 用示例用户创建账户和账单,刷新后确认 App 与后台数据一致。
4. 断网时可以读取已同步的缓存,云端写入明确提示需要联网。
5. 切换测试用户或服务地址时检查缓存隔离,避免显示另一个用户的数据。

只连接我的测试 API,不使用作者的账户、会话或在线账本。不要输出登录 token。

请实际构建、运行适用测试,并在我的测试设备上核对以上流程。说明每项实际结果;配置了 URL 不代表登录和业务流程都通过。
P05一次增加一个功能

把需求说清楚,每项完成后再继续下一项。

请先让我从 CSV 导入、统计分析、分类建议、账单查询中选择一个具体功能,再检查已有实现并完成这一项。不要一次改完全部功能。

根据所选功能写清楚输入、预期结果和验收方法:
- CSV:先按项目支持的标准 UTF-8 格式处理;预览不写入交易,确认后才导入,并检查重复与错误格式。银行或支付平台原始导出先转换格式。
- 统计:按指定月份核对收入、支出和分类汇总,结果要与示例账目一致。
- 分类:按用户规则、共享关键词、默认分类的顺序处理,检查命中、回退和用户隔离。
- 账单查询:按项目已有的有限中文意图查询数据库并生成回答;不把它改写成任意聊天或理财建议。当前外部 AI Provider 未启用。

只使用示例数据。请实际构建、运行适用测试,列出输入、期望与实际结果。发现问题先修复,通过后再讨论下一项功能。
P06复现问题、修复并回归

告诉 Codex 现象和期待结果,让它用实际检查闭环。

请检查我的记账工程,实际运行 Build、Lint 和适用单元测试,再验证模拟器里的主要使用流程。发现失败后,先复现,再修复,最后回归。

每个问题请记录:当前版本、前置条件、复现步骤、实际现象、我期待的结果。不要为了演示而破坏已经正常的功能。

重点检查空账户场景:是否有创建入口、创建后能否自动选中、创建或取消后金额/描述/日期/类型是否保留、有效账户和分类就绪后能否保存。

请将构建成功、测试通过、安装成功和业务检查分别报告。测试数量只统计当前版本的同一轮结果,不把不同阶段的数量相加。保留实际命令、退出码和报告位置。

只用示例账目。修复后重新走完整用户路径;没有运行的项目明确写未验证。
P07生成自己的签名 APK

拿到可安装的正式包,并检查签名、安装和数据保留。

请为我的 Android 项目生成正式签名的 Release APK,并验证安装与主要功能。

先检查适用测试和 Lint,以及 package、versionName、versionCode、正式 API 配置和 HTTPS 要求。告诉我需要准备哪些签名配置,再使用我自己的签名密钥;不要读取或复用作者的私钥。

签名文件放在仓库外,由签名工具使用,密钥和密码不要写入源码或公开输出。提醒我妥善备份:后续更新继续使用同一份签名。缺少配置时说明缺项,不用 Debug 包代替正式包。

请实际执行 Release 构建与签名,核对 APK 文件名、大小、SHA256、包名、版本、minSdk 和公开签名信息。然后在我的 Android 模拟器上安装启动,新增示例账目,关闭重开并确认数据保留;云端检查只连接我自己的测试服务。

自己签名的包不能直接覆盖作者签名的 App。模拟器通过后,我还需要在自己的手机上检查安装与运行。请分别报告构建、签名、安装和业务结果。本次只生成本地 APK,不上传 GitHub 或应用商店。

建议先用示例账目练习。签名密钥由你自己保管并备份;本地账本可以独立使用,云端账本需要你自己的服务环境。

对应视频

观看视频 ↗

相关内容

浏览全部项目 →