智能表单 - 万能智能记账本、智能记事本、智能账单与信息汇总工具。支持支出账单、出货台账、运行日志等结构化数据记录,可附加图片/文档做存档,支持自动归类、周期报表、定时提醒。当用户说"记录/记账/备忘/表单/list/记一下/写下来/填表/台账/支出/消费/出货/日志/拍个照记一下/记事本/报表/账单/台账本/流...
---
name: list
description: 智能表单 - 万能智能记账本、智能记事本、智能账单与信息汇总工具。支持支出账单、出货台账、运行日志等结构化数据记录,可附加图片/文档做存档,支持自动归类、周期报表、定时提醒。当用户说"记录/记账/备忘/表单/list/记一下/写下来/填表/台账/支出/消费/出货/日志/拍个照记一下/记事本/报表/账单/台账本/流水/存档/存一下"等触发词时使用。Smart form, notes, bookkeeping, records, document archive.
---
# 📋 智能表单 · list
## 核心理念
**说"记一下"就完事了**。用户不需要选类型、填字段——说了就自动归类存好。
- 零门槛:`记一下 xxx` 即可
- 自动分类:根据内容判断是支出/出货/日志/其他
- 图片也可:发张收据说"记一下",自动识别并保存
## 数据存储
`workspace/memory/list-data/` 目录,每种记录类型独立 JSON:
```
memory/list-data/
├── expenses.json # 支出
├── shipments.json # 出货
├── logs.json # 运行日志
├── photos.json # 图片归档(自动识别类型时用)
└── ... # 自动创建的新类型
```
**记录格式**:
```json
{
"config": {"fields": {"category":"text","amount":"number","note":"text"}},
"records": [
{
"id": "uuid",
"timestamp": "2026-05-19T19:00:00+08:00",
"data": {"category":"餐饮","amount":200,"note":"晚饭"},
"tags": [],
"attachments": []
}
]
}
```
## 脚本工具
所有数据操作通过 `scripts/list.py`,模型不直接改 JSON:
| 操作 | 命令 |
|------|------|
| 新增记录 | `python3 scripts/list.py add <type> --data '{"k":"v"}' [--image <path>]` |
| 查询记录 | `python3 scripts/list.py query <type> [--from DATE] [--to DATE] [--filter JSON]` |
| 周期汇总 | `python3 scripts/list.py summary <type> [--from DATE] [--to DATE] [--by category]` |
| 列出类型 | `python3 scripts/list.py types` |
| 新增类型 | `python3 scripts/list.py new-type <type> --fields '{"字段":"类型"}'` |
| 删除记录 | `python3 scripts/list.py delete <type> <id>` |
## 核心工作流程
### 1. 自动分类录入(最常用)
用户说「记一下 XXX」,自动判断类型并保存:
**判断逻辑**(由上到下匹配):
1. 含金额数字 → **expenses**(支出),如"记一下今天吃饭200"
2. 含出货/发货/件数 → **shipments**(出货),如"记一下发了50件到广州"
3. 含日志/运行/状态 → **logs**(运行日志),如"记一下服务器正常"
4. 含图片附件 → **photos**(图片归档),无文本时用"图片归档"类型
5. 其他 → 问用户确认类型,或创建新类型
**操作步骤**:
1. 判断属于哪个类型
2. 提取关键字段(金额/分类/数量/目的地等)
3. 如该类型 JSON 不存在 → `new-type` 自动创建,按内容推断字段
4. `python3 scripts/list.py add <type> --data 'JSON' [--image <path>]`
5. 回复确认"已记录"
**判断示例**:
| 用户说 | 自动识别 | 存入 |
|--------|---------|------|
| "记一下今天吃饭200" | expenses | `{category:"餐饮",amount:200,note:"今天吃饭"}` |
| "记一下发了50件到广州" | shipments | `{product:"未指定",quantity:50,destination:"广州"}` |
| "记一下服务器宕机了" | logs | `{system:"服务器",status:"异常",detail:"宕机"}` |
| 拍收据说"记一下" | expenses | 存图片,自动尝试读取金额 |
### 2. 查询/筛选
用户问"查一下 x月花了多少" → `query` + 模型加工输出趋势。
### 3. 周期汇总
用户说"月底总结/本月花了多少" → `summary`,按分类聚合。
### 4. 图片/文档归档
用户发图片说"记一下":
1. 保存图片到 `memory/list-data/attachments/`
2. 如果模型支持图片识别 → 分析图片内容,提取关键信息
3. 用提取的信息填充字段(收据金额/合同日期等)
4. 保存记录 + 关联图片
> ⚠️ **注意**:图片自动识别需要大模型支持图片识别能力(如 GPT-4o、Claude 3.5 Sonnet 等)。如当前模型不支持,仅做图片存档,需用户手动补充描述。
### 5. 定时提醒
Cron 定时问用户要不要记一笔:
```
openclaw cron add \
--name list-remind-expense \
--cron "0 21 * * *" \
--tz "Asia/Shanghai" \
--message "list-remind: 睡前记账时间到~ 今天花了多少?" \
--channel feishu --to <目标> \
--session isolated --no-deliver
```
## 内置类型模板
模型在自动创建类型时参考以下模板结构:
**expenses(支出)** — 字段:category(text), amount(number), note(text)
- 分类:餐饮/交通/购物/娱乐/医疗/学习/生活/其他
**shipments(出货)** — 字段:product(text), quantity(number), destination(text), note(text)
**logs(运行日志)** — 字段:system(text), status(text), detail(text)
- 状态:正常/异常/维护
**photos(图片归档)** — 字段:description(text), tags(text), date(text)
不在模板中的类型由模型推断字段并 `new-type` 创建。
## 用户引导
### 首次使用
用户第一次触发 skill(或说「怎么用」)时,在回复末尾附上简短功能指引:
> 📋 智能表单已激活!试试:
> • **记一下** — "记一下今天吃饭200"(自动分类支出)
> • **查一下** — "查一下五月花了多少"
> • **月底总结** — "本月花了多少"
> • **拍照** — 发收据说"记一下",自动识别
> • 还能记录出货、运行日志等
### 每次回复后末尾提示
成功记录、查询、汇总后,末尾加一句简短引导:
| 场景 | 末尾提示 |
|------|---------|
| 记录成功 | ✅ 已记录 💬 回复「查一下」查看记录 |
| 查询完成 | 💬 回复「记一下」继续记录,或「月底总结」看汇总 |
| 汇总报表 | 📊 本月已汇总 💬 回复「流水」查看完整清单 |
### 不确定时主动问
用户说得太模糊时,先问清楚再操作:
> 你是想记一笔支出、出货,还是其他?或者直接说「记一下 xxx」我自己判断
don't have the plugin yet? install it then click "run inline in claude" again.