@openilink/app-expense

March 30, 2026 · View on GitHub

微信记账本 -- 支持记账、月报和分类统计,纯 SQLite 存储,零外部依赖。

一键安装 -- 前往 OpeniLink Hub 应用市场 搜索「记账」,点击安装即可在微信中使用。

功能亮点

  • 快速记账 -- 自然语言输入,AI 自动识别金额、描述和分类
  • 月度报表 -- 总支出 + 分类占比,一目了然
  • 分类统计 -- 按分类维度查看支出分布
  • 模糊搜索 -- 快速检索历史账单
  • 零外部依赖 -- 纯 SQLite 存储,无需第三方 API Key

使用方式

安装到 Bot 后,直接用微信对话即可:

自然语言(推荐)

  • "午饭花了 35 块"
  • "打车 28 元,交通分类"
  • "这个月花了多少钱"

命令调用

  • /add_expense --amount 35 --description 午饭 --category 餐饮

AI 自动调用 -- Hub AI 在多轮对话中会自动判断是否需要调用记账功能,无需手动触发。

AI Tools

工具名说明
add_expense添加一笔支出记录
list_expenses查询支出记录(按月份或最近条数)
delete_expense删除一笔支出记录
monthly_report月度支出报表(总支出 + 分类占比)
category_report按分类统计支出
search_expenses模糊搜索支出记录
部署与开发

快速开始

npm install
npm run dev

Docker 部署

docker-compose up -d

环境变量

变量名必填默认值说明
HUB_URL--OpeniLink Hub 服务地址
BASE_URL--本服务的公网回调地址
DB_PATHdata/expense.dbSQLite 数据库文件路径
PORT8095HTTP 服务端口

API 路由

方法路径说明
POST/hub/webhook接收 Hub 推送的事件
GET/oauth/setup启动 OAuth 安装流程
GET/oauth/redirectOAuth 回调处理
POST/oauth/redirect模式 2 直接安装
GET/manifest.json返回应用清单
GET/health健康检查

安全与隐私

本 App 需要存储账单金额、描述和分类。所有数据:

  • 严格按用户隔离 -- 每条记录绑定 installation_id + user_id,不同用户之间完全隔离
  • 无法跨用户访问 -- 所有查询、删除操作均在 SQL 层面强制过滤用户归属
  • 数据存储在 SQLite -- 数据文件位于 data/ 目录,不上传到任何云端
  • 代码完全开源 -- 接受社区审查

如果您对数据隐私有更高要求,建议自行部署:docker compose up -d,所有数据仅存储在您自己的服务器上。

License

MIT