Receipt Tracker (Трекер расходов по чекам)
Overview
Этот навык предназначен для автоматического извлечения данных из фотографий кассовых чеков, категоризации покупок и ведения базы данных расходов в формате CSV. Он позволяет пользователю просто отправить фото чека в чат, а агент сделает всю остальную работу: распознает текст, определит категории и запишет результат.
База данных хранится в файле: INLINECODE0
Категории расходов (Categories)
При анализе чека используйте следующие основные категории:
- 1. Продукты (Groceries)
- Заправка (Gas/Fuel)
- Аптека/Медицина (Pharmacy/Medical)
- Такси/Транспорт (Taxi/Transport)
- Животные (Pets)
- Дом/Быт (Household)
- Развлечения (Entertainment)
- Одежда (Clothing)
- Прочее (Other - для всего, что не подошло)
Workflow (Алгоритм работы)
1. Получение и распознавание чека (OCR & Analysis)
Когда пользователь присылает фото чека:
- 1. Возьмите путь к присланному файлу (например,
/opt/.openclaw/.../file_XX.jpg). - Используйте инструмент
sessions_spawn (runtime="subagent", mode="run"), чтобы запустить изолированного субагента для анализа картинки.
-
ВАЖНО: Обязательно укажите параметр
model: "google/gemini-2.5-flash" (или
gemini-2.5-flash, как указано в запросе пользователя), так как эта модель быстрая, дешевая/бесплатная и отлично справляется с OCR и анализом одновременно.
- В
attachments передайте путь к фото чека.
- В
task попросите субагента:
"Прочитай чек на фото. Извлеки все позиции, их стоимость и дату покупки. Каждой позиции присвой одну из категорий: Продукты, Заправка, Аптека, Такси, Животные, Дом, Развлечения, Одежда, Прочее. Верни результат строго в формате JSON: [{"date": "YYYY-MM-DD", "item": "Название", "category": "Категория", "price": 100.50}]"
2. Сохранение данных (Database Entry)
- 1. Получив JSON от субагента, проверьте корректность данных.
- С помощью скрипта или инструмента
exec (bash/python) допишите эти данные в файл /opt/.openclaw/.openclaw/workspace/memory/expenses.csv. - Формат CSV: INLINECODE10
- Если файла еще нет, сначала создайте его с заголовком:
Date,Item,Category,Price
- Убедитесь, что формат цен - это числа (с точкой для копеек).
3. Отчетность (Reporting)
Когда пользователь просит
"Отчет за месяц" или
"Сколько я потратил":
- 1. Прочитайте файл
expenses.csv (например, через exec(cat expenses.csv) или read). - Сгруппируйте расходы по категориям за запрошенный месяц.
- Посчитайте общую сумму затрат.
- Выведите пользователю красивый и читаемый отчет (например, в виде Markdown-таблицы или маркированного списка с суммами по категориям и итогом).
Example: Saving to CSV (Пример записи)
Вы можете использовать Python для добавления строк:
CODEBLOCK0
Правила (Rules)
- - Всегда используйте
gemini-2.5-flash для чтения чеков (это экономит ресурсы и деньги). - Не запрашивайте подтверждение на каждый товар, если распознавание прошло уверенно. Просто покажите пользователю итог: "Добавил в базу 5 позиций на сумму 1500 руб."
- При сомнениях в категории, ставьте "Прочее", но старайтесь быть точным.
Receipt Tracker (收据追踪器)
概述
此技能旨在自动从收据照片中提取数据,对购买进行分类,并以CSV格式维护支出数据库。用户只需在聊天中发送收据照片,智能代理将完成所有后续工作:识别文本、确定类别并记录结果。
数据库存储文件: /opt/.openclaw/.openclaw/workspace/memory/expenses.csv
支出类别
分析收据时,请使用以下主要类别:
- 1. 食品杂货
- 加油/燃料
- 药店/医疗
- 出租车/交通
- 宠物用品
- 家居/日用品
- 娱乐
- 服装
- 其他(适用于所有未归类的项目)
工作流程
1. 获取并识别收据(OCR与分析)
当用户发送收据照片时:
- 1. 获取所发送文件的路径(例如 /opt/.openclaw/.../fileXX.jpg)。
- 使用 sessionsspawn 工具(runtime=subagent,mode=run)启动一个隔离的子代理来分析图片。
-
重要: 务必指定参数 model: google/gemini-2.5-flash(或 gemini-2.5-flash,根据用户请求),因为该模型速度快、成本低/免费,且能同时出色完成OCR和分析任务。
- 在 attachments 中传递收据照片的路径。
- 在 task 中要求子代理:
读取照片中的收据。提取所有商品、价格和购买日期。为每件商品分配以下类别之一:食品杂货、加油、药店、出租车、宠物用品、家居、娱乐、服装、其他。严格以JSON格式返回结果:[{date: YYYY-MM-DD, item: 商品名称, category: 类别, price: 100.50}]
2. 保存数据(数据库录入)
- 1. 收到子代理返回的JSON后,检查数据的正确性。
- 使用脚本或 exec 工具(bash/python)将这些数据追加到文件 /opt/.openclaw/.openclaw/workspace/memory/expenses.csv 中。
- CSV格式:Date,Item,Category,Price
- 如果文件尚不存在,请先创建包含标题行的文件:Date,Item,Category,Price
- 确保价格格式为数字(小数点表示分)。
3. 报告生成
当用户要求
月度报告 或
我花了多少钱 时:
- 1. 读取 expenses.csv 文件(例如通过 exec(cat expenses.csv) 或 read)。
- 按请求的月份将支出按类别分组。
- 计算总支出金额。
- 向用户展示美观易读的报告(例如以Markdown表格或带类别金额和总计的列表形式)。
示例:保存到CSV
您可以使用Python添加行:
python
import csv
import os
file_path = /opt/.openclaw/.openclaw/workspace/memory/expenses.csv
fileexists = os.path.isfile(filepath)
data = [
{date: 2026-03-10, item: 牛奶, category: 食品杂货, price: 89.90},
{date: 2026-03-10, item: 猫粮, category: 宠物用品, price: 450.00}
]
with open(file_path, a, newline=, encoding=utf-8) as f:
writer = csv.writer(f)
if not file_exists:
writer.writerow([Date, Item, Category, Price])
for row in data:
writer.writerow([row[date], row[item], row[category], row[price]])
规则
- - 始终使用 gemini-2.5-flash 读取收据(这可以节省资源和费用)。
- 如果识别结果可靠,无需对每件商品进行确认。只需向用户显示结果:已将5件商品(总计1500卢布)添加到数据库。
- 对类别有疑问时,设置为其他,但尽量保持准确。