各行各业都在积极拥抱 AI,公司内部也欢迎大家提用 AI 提效的想法。我给内部提过一个需求:报销流程其实很适合做自动化,至少可以先把收票、整理票据、填单这些重复动作接过去。
这个需求不是凭空来的。对我这种出差比较多的人来说,一次四天左右的出差,打 8 到 12 次车很正常。到了报销的时候,要到网约车app开发票、到email收票,然后到本地要把这些发票和行程单一一对应,还得再关联到对应的出差申请。麻烦在于事情太碎。票据来源混杂,文件名不统一,抬头要核,网约车还要配行程单,最后进报销系统还要一条条填。
报销拖久了没有填或者提上去之后被系统规则退回来,人会直接不想报。我去年年底和今年年初就有几百块车费,过了时间点或者填错了单子被打回来,最后干脆没报。
需求提上去之后,还没有往下推进。上周末的晚上,突然想到为啥不自己做一个出来。于是我在家里花了大概两个小时,使用CODEX把第一个能用的发票报销助手跑通了,然后一周时间内它已经帮我填了三次出差报销的草稿。
主线很简单:
Gmail IMAP 收票 -> mail_sync.py 下载 -> invoice_organizer_longterm.py 整理 -> 报销系统主线程填写 -> 自动存为草稿
下面的图表示了报销助手的工作流程。
如果把这张图压缩一下,我和 Codex 主要一起做了三个模块。
第一个模块是收票(1)。它负责把 Gmail 里的发票附件和下载链接收下来,把重复处理和异常日志一起管住。
第二个模块是整理发票(2)。它负责把票据识别、重命名、配对、校验,再整理成
整理待上传、原件归档 和 invoice_index.csv这几个后面还能继续使用的结果。
第三个模块是报销系统填写(3\4\5)。它负责先根据报销单标题和关联申请单日期确定报销时间段,再按票据类型决定要上传什么票,把主线程里的重复动作接过去,最后自动存为草稿。只要出现票据异常、日期对不上或者页面填写异常,就回到人工处理。
在这三步中,我最核心的prompt就是下面四段
一、收票prompt
`我有一些邮箱里的发票邮件,我希望你能帮我定期把他们下载到本地的inbox文件中,
以便于我使用 inbox整理发票技能时对他们进行整理。我的邮箱主要是163和gmail邮箱。
你有哪些最快速高效的方法`
二、整理发票prompt
`- 你要做我的发票助手,第一步的工作是:
阅读我给你的 inbox 文件夹中的每一个 PDF 文件
(a) 订单发生的日期
(b) 消费类别(如:食物餐饮、出租车、火车等)
(c) 金额 d)发票或者是行程单
因为后续作为发票助手,你还需要在一个网页系统里把这些发票和行程单附加上去。
在附加行程单跟发票时,它会按照匹配要求,对应相关的日期和消费形式等内容。
帮我重新整理,你可以安装需要的插件以及 skills。我们先规划第一步。`
三、浏览器上传发票和填报销prompt
``我需要你操作chroma浏览器,帮我填入报销发票的草稿。
1、报销系统为XFX,https://xfX.XXXXchina.com/#/workbench。需要我登录信息,你才能填;
2、你要问我,需要填哪个报销单。我会告诉你报销单的单据编号
3、找到所要填的报销单路径为: 主页->左侧“我的报销”->中间根据单据编号直接点进去进行编辑。
你可以安装诸如Chrome-CLI 和其他所需skills来进行操作 `
`第一点,通过标题和关联申请单里面的日期来确定日期。
比如说我现在给你的这个编号,标题是 0318-21,那你应该合理猜测这个日期指的是 2026年3月18日到 2026年3月21号。
并且你看申请单上的日期也写了 3月18、3月19、20、21 这些时间段。 如果你发现申请单跟标题的日期对不上,你也要主动询问。
所以第一点是先要确认报销单的时间段是怎样的。然后你就知道在你的文件夹里面,哪些 PDF 是要填写的了,这就确定了大概有哪些 PDF 是要填的。
第二点,我们现在要做的事就是填写费用。你需要找到“添加费用”的按钮,大概在页面的中下部,有一个“添加费用”按钮。
第三点,进入添加费用之后,首先要上传发票文件,点击“上传发票文件”按钮。
第四点, 以出租车、网约车的发票为例,你点击“上传发票文件”按钮后,选择对应时间段的其中一张发票并点击上传。 上传之后,系统会让你填写新增费用信息:
第五点,以上面的方法逐个填写这个时间段内的出租车、网约车的发票和行程单。全填写完之后,再进行下一个类型的填写。`
后面一些小的补充、更进一步的说明,会让agent运行的更好,但主框架就是上面4个prompt。
(上面看起来文字也比较多,但是我是用口述的方式,由typeless帮我复述并且逻辑清楚的整理出来; 免费额度就够用了,手机和电脑端都可以,建议体验,链接为该软件https://www.typeless.com/refer?code=R752FG8)
我先处理的是票据入口。发票来源太散,有邮件附件,有邮件里的下载链接,也有滴滴这类平台发来的成套票据,火车票还会遇到 PDF 和 OFD 混在一起的情况。
所以我先把入口收了一下,尽量让电子发票发到 Gmail,然后用mail_sync.py走 IMAP 去抓。配置放在 mail_sync.toml,计划任务用 register_mail_sync_task.ps1注册。我现在设的是每周三 10:00 自动跑一次,另外登录电脑时补跑一次。
这些文件名看起来挺复杂的,但实际代码都是 Codex 迭代出来的,我自己没有写代码。
这样做完以后,至少“票从哪来”这件事先固定下来了。
票据下载到本地以后,我没有让agents直接往发票里塞。
我先跑invoice_organizer_longterm.py 把文件整理成后面能继续用的样子。这个脚本做的事很具体:
我现在长期用两个目录:
这一层整理做完以后,票据就从“邮箱里的一堆附件”变成了“已经分好类、能追踪、能复查的一批文件”。

还有一份invoice_index.csv把日期、金额、类型、状态这些信息都记下来。后面agent再处理的时候,就不用反复打开 PDF 耗费token去看内容了。
这里面有一类问题我专门做了显式标记,就是抬头不对。比如我现在目录里就有一张:

这种票不会混进正常结果里被报销系统抓现行,而是直接把问题挂在文件名上。后面一眼就能看出来。
这里的人和程序分工也比较清楚。
我先在系统里发起某一次出差的报销单,标题用“日期 + 出差”的形式,登录环节也由我自己完成。agent拿到要填写的报销单号之后,进入报销系统会先看报销单标题,再看关联申请单里的日期,先把这次报销的时间范围定出来。时间范围定下来以后,再去 整理待上传文件夹里找对应日期段内的票。
不同票据走的规则也不一样。网约车要同时带上同金额匹配到的行程单,火车票就直接取对应的铁路发票。只要票据异常,比如抬头不对、配对失败、识别不清,或者标题和申请单日期对不上,就先交给人工处理,不往下填。
在一周跨度内,我已经让agent帮我填了3次出差申请
这三张单子里,agent完成了:
最后都自动存成了草稿。
这一步agents用的是 Chrome CDP 这条路。导航相关脚本是xft_nav.mjs,网约车填写主脚本是 xft_fill_ridehail.mjs。做法也不复杂,就是把那些重复动作接过去,比如打开目标单据、点“添加费用”、上传发票、补附件、保存。

配图:agents根据我给他的单号,找到要填的报销单
配图:agents上传完发票后,还要选择消费日期、上传行程单、填写项目、出差备注
我没有让agent做全自动完成的流程。因为现在这套流程里,主线程填写跑完以后,收尾动作是自动存为草稿,最后的复核和确认还是我自己来做。
比如日期不对、系统默认值不靠谱、页面组件没按预期响应,这些都得自己看一眼。对自己负责。
我以前填报销,真的是经常烦躁。但又不能不报,用我一位同事的话说,填报销的时间是单位时间回报最高的时间。但是真的是麻烦:
收票,找票,改名,配对,核对,上传,填字段,检查,返工。
现在顺序变成了:我负责发起报销单和最后确认,收集票据、整理发票、填表和上传附件这些重复动作交给程序。
让agent先收票,再整理,再拿整理好的结果去填系统,最后我只盯异常和确认。
变化也不是“完全不用管了”。更直接的感受是,我终于不用从一堆混乱开始。
这套系统现在看起来就是三个模块,执行的速度也不快,但已经够我用了,给我的提效也很直接。后面我大概率不会在上面继续投入很多时间,最多是运行的时候碰到问题,再口头指导一下它。
但我已经不需要每次都从头整理一遍报销这件事。
它不大,也谈不上多先进。只是把我工作里反复出现的一小段麻烦,慢慢改成了一个能复用的流程。
我这次用到的工具并不复杂,核心就是:一个能听我指令去写脚本的 AI agents,我用的是 Codex;连接邮箱、读pdf、控制浏览器的工具都是agents根据需要自己下载和调用。
我总结下来,可以用最简单的三步来描述这个过程。
第一步,先挑一个很具体的小问题,比如:
问题越具体,越容易做出来。
第二步,把输入、输出和异常讲清楚。和 Codex 对话的时候,不要一上来就说“帮我做个自动化工具”,那样太空了。更有效的说法,是直接把场景讲清楚,比如:
“我有一批发票 PDF,在这个目录里。我想按日期、类型、金额重命名,输出到另一个目录。网约车发票要和同金额行程单配对,抬头不对的文件要单独标出来。”
或者:
“我想自动打开报销系统里的某张报销单,进入编辑页,上传整理好的发票,并在最后存为草稿。”
你把输入是什么、输出想变成什么、哪些情况算异常,直接说出来,Codex 才更容易把它变成程序。
第三步,先做最小可用版本,并且尽量把问题拆成几个小的可分别实现的模块,就像我把填报销系统这件事拆成了:收邮箱发票、整理发票文件和行程单、进入系统按规则填写。如果自己一开始拆不清,也没关系,也可以先让agent帮你拆流程,再一点点补:
我这次基本就是这么做的。很多东西并不是我一开始就想全了,而是先跑起来,再一点点修。
此处是戛然而止,未上价值的结束。
原网址: 访问
创建于: 2026-04-16 11:21:44
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论