很多团队做税务智能体,像盼一个总算错账的学徒,靠老板多骂两句就突然会报税。我越来越确定:自进化不是调Prompt(提示词),是把改单写成eval(可反复运行的验收题)。Prompt是耳边风,eval是错题本。

用Codex(会读代码、改代码、跑命令的AI编程代理)来做这件事,差别尤其残酷。Codex很能干,也很会迎合。你给它一句含混的要求,它能体面地改出一堆像那么回事的东西;但没有一套能判死活的eval,它改得越勤,系统越像一位勤快而失忆的实习生。说得更直白些,就是那句:自进化不是调Prompt,是把改单写成eval。

最反常识的地方在这儿:大家以为“自进化”是模型在自省,仿佛关起门来想一想,它就会突然顿悟。税务世界没这么浪漫。税务的本质,不是把话说圆,而是遇到证据冲突时到底怎么判,缺材料时到底敢不敢停,边界案例到底按哪条规矩落账。系统不会因为你说得更诚恳而长大,只会因为你把错误钉在试卷上而成熟。

人们偏爱调Prompt,不只是技术懒,更是组织懒。调Prompt像在神龛前换一炷更贵的香,动作很忙,责任很轻。你不用明确写下什么算对,什么算错,谁的判断优先,缺到什么程度必须退回补材料。你只要补一句“更谨慎一点”。机器听上去更谦逊了,错误却只是换了件外套。

所谓把改单写成eval,说白了,就是把复核员今天改掉的那一单,不是留在群聊里叹口气,不是写进会议纪要里装深刻,而是做成以后每次改代码都要重跑的一道题:输入是什么,正确输出是什么,引用哪份证据,违反哪条规则,错了就不能上线。Prompt擅长定语气,eval擅长定边界。税务要的从来不是语气,税务要的是边界。

周一晚上十点四十,杭州滨江一间代账公司的小陈盯着一张奶茶票。抬头是公司名,备注写“客户沟通”,附件只有微信群截图。税务智能体把它归进业务招待,复核员一句话打回:这不是招待,这是打工人的嘴馋。团队第一反应是改Prompt:对疑似个人消费更保守。第二天,一张火锅票因为多了会议纪要,又被机器报成招待费。问题从来不在“保守”两个字不够重,而在这次改单没有变成明天还会重考的题。等他们把发票图像、附件、正确分类、拒绝理由写进eval,再让Codex去改证据权重和分类逻辑,机器才第一次学会:不是所有写着“沟通”的票,都配叫业务。

周三下午三点,深圳坂田做跨境电商的老吴,在一份CSV(逗号分隔表格文件)里翻平台流水:退款、广告返现、仓储赔付混在一起。智能体把退款冲回收入,把赔付也记成收入,数字漂亮得像坏账被化了妆。产品经理连改三版Prompt:注意区分不同资金性质。这句话像办公室墙上的标语,人人看得懂,系统一句也记不牢。后来财务挑出三类各十笔,写成eval:字段怎么映射、会计分录怎么落、解释必须引用哪一列。Codex一跑,哪一笔出错,屏幕就亮红。那时你会明白,所谓自进化,不是模型学会反省,是团队学会记仇。

报税季最后一个周六,南京新街口一位自由职业者来补个税。租房合同、显示器发票、网费账单摊满桌子,税务智能体殷勤得像个急于表现的店员,恨不得把半个客厅都算进办公支出。老会计看了两分钟,划掉一半:有些能扣,有些不能,有些证据不够,宁可退回补材料,也不能靠想象替人冒险。若只在Prompt里塞一句“更审慎地判断可扣除项”,机器下次还会在别的物件上犯同样的热心病。真正有效的是把这张改单写成eval:哪些证据必须同时出现,缺哪项只能输出“信息不足”。税务不是文学创作,不能靠灵感押韵。

你再往深处看,就会发现这根本不只是一个模型问题,而是一种组织问题。师傅带徒弟,最容易偷懒的地方,就是把判断藏在眉毛、口气和“你应该懂”的暗示里。写Prompt,保留的是这种暧昧;写eval,消灭的也是这种暧昧。前者靠气氛,后者靠档案。前者让经验附着在人身上,后者让经验长进系统里。真正自进化的,不是AI的灵魂,而是组织的记忆。

所以我对这件事的判断很简单,也很不客气:谁还把用Codex搭能自我改进的税务智能体,理解成多调几轮Prompt、多加一个“请反思一下”的环节,谁就是把制度问题当口才问题。税务不是被哄好的,系统也不是被劝大的。把改单写成eval,才是让Codex接过经验的那一刻。此前它只是会说话;此后它才开始长记性。