用AI Agent搞定公文排版:我的第一次实践
在体制内工作过的朋友,应该都遇到过这种情况。需要出具一份正式公文,无论是通知、请示还是函件。
打开Word,选定字体,调整行距,完成排版,反复检查后提交给领导。领导却回复:"行距不对,重新排版。"
修改行距后再次提交。领导又说:"页边距不对,上边距应该是37毫米。"
继续修改,再次提交。又发现问题:"页码格式不对,首页不能有页码,奇偶页要区分。"
一份几百字的公文,排版就要折腾大半天。提交后还可能被上级单位退回。
第一次遇到这种情况时,我在工位上愣住了。一份公文而已,怎么会有这么多讲究?
后来我才明白,这些规定并非人为随意制定,而是有国家标准的——GB/T 9704-2012及2022党政机关公文格式。此外,各地、各单位和各机构还有许多自己的标准或惯例。
仅国标的最低要求就包括:37毫米上边距、28磅行距、二号方正小标宋简体标题、三号仿宋正文、"— N —"格式页码、奇数页居右偶数页居左、首页不显示页码、成文日期右空四字。条款繁多,细则达几十条。
这并非我一个人的困扰。
试想,每天全国有多少体制内同仁在与Word或WPS的格式纠缠?有多少公文因页码、行距、字体问题被反复退回?有多少时间被消耗在这些缺乏创造性的重复劳动上?
那么,能否让Agent来处理这些规范呢?
不是那种宏大的AI,不是那种"赋能千行百业"的AI。只是那种能帮我正确排版Word文档的AI,直接生成一份排好版的文件。
于是,便有了今天要分享的内容。
一个名为"公文排版"的Skill。这是我开发的第一个Skill,也是我第一次真切感受到,AI与实际工作的距离可以如此之近。
我组建了一个名为"熊出没"的Agent团队,目前拥有熊大、熊二、光头强、梅西、星月和火娃六位Agent。他们分别基于OpenClaw、Hermes和WorkBuddy等平台,这次我启用的是"Hermes 梅西"和"WorkBuddy 熊大"。梅西担任验证者,熊大担任执行者,帮我生成Word文档。
试试看吧,不行就算了。
然而打开python-docx文档后,我发现事情远比想象中复杂。
python-docx是一个用于操作Word文档的Python库,但其设计初衷是处理简单文档。而公文这类文档,页码需插入域代码、字体需精确到run级别、页边距要用厘米而非英寸。每一项国家标准背后,都对应着一行甚至十几行代码。
我就是这么一步一步踩坑走过来的。
最初只有一个create_doc.py,能生成A4纸张并设置页边距。试了试,页面尺寸对了,但字体不对。于是添加了set_font.py。
再试,标题和正文格式不同。于是添加了add_heading.py和format_body.py。
继续尝试,公文还需要落款、发文字号、签发人、版记……
等我回过神来,已经写了七个Python脚本。
V1版本跑通时我很兴奋。赶紧让熊大生成一份通知。打开Word一看——标题字体不对,页码显示的是"— PAGE —"无法自动更新,段落间距也不对。
那种心情,怎么说呢,就像装机装了半天却点不亮一样。
试了,不行。但没有放弃。
第一版失败后,我开始认真对待。
让熊大熟读GB/T 9704-2012等参考文件的格式要求,然后突然发现GB/T 9704-2012竟然不是最新版本,最新的是GB/T 9704-2022。傻眼了,推倒重来。
然后一轮又一轮修改,一轮又一轮发版。
v2.2.0是第一个真正拿得出手的版本。页面设置完善了,字体映射有了,15种公文文种模板有了,版记有了,落款有了。熊大跑了一遍,输出的文档已经相当像样了。
但问题隐藏在细节中。
例如"右空四字"。国家标准明确规定,成文日期要右空四字——向右缩进四个字宽度。听起来简单对吧?但第一版我只是做了右对齐,完全不对。后来改成right_indent=Pt(64),才终于正确。
再比如字体。公文正文要求仿宋_GB2312,Windows上安装了这个字体没问题。但Mac上没有。如果在Mac上打开这个文档,仿宋_GB2312会回退成一个奇怪的字体。这又逼我做了一套跨平台字体映射逻辑。
最离谱的是页码。
公文页码使用的是域代码,不是直接输入的文字。需要插入一个PAGE域,Word打开时自动计算当前页码。python-docx对域代码的支持,坦率地讲,一言难尽。网上能找到的写法千奇百怪,试了好多种。
你猜怎么着?v2.2.3版本,SKILL.md里的示例代码还是错的。
这个bug藏了两三版才被发现。脚本里其实已经修好了,但SKILL.md里的示例代码忘了同步。谁要是看着文档照抄,一运行就报错。
这让我意识到一件事:当你让AI帮你做工具时,代码本身好修,但"让AI知道怎么用"这件事比写代码还难。SKILL.md里写的是AI会读的指令和示例,代码改了但指令没同步,AI还是按老的方式运行。这算是我踩过的最大的坑之一了。
经过六个版本迭代,从试试看,到v2.2.6的体系化。代码在变,文档在变,思路也在变——从"能不能跑"到"能不能用",从"能不能用"到"能不能让别人也用上"。
到目前为止,这个Skill迭代到了v2.2.6。我已经上传到clawhub上,欢迎大家试用。用这段咒语即可安装skill:
"请先检查是否已安装SkillHub商店,若未安装,请根据https://skillhub.cn/install/skillhub.md安装Skillhub商店,但是只安装CLI,然后安装gov-doc-format技能。若已安装,则直接安装gov-doc-format技能。"
https://skillhub.cn/skills/gov-doc-format
六次版本迭代,修复了几十个bug,写了上千行代码。最终的成果是,一个让熊大说"帮我排一份公文"就能搞定的事情。
这个Skill具体能做什么:
而且这还只是一个开始。我还手搓的一个企业工会经费预决算审核的skill,也一同发布——我也正在把越来越多的体制内具体工作场景"Skill化"。让AI去处理那些规则明确、重复性高、但又不能出错的事情。
做这个Skill的过程中,有几个感触特别深。
第一个是,标准的魅力在于细节。
GB/T 9704这个标准我以前听过但没仔细看过。真正一条一条读下来,才发现它为什么存在。37毫米上边距是为了给装订留空间,28磅行距是为了阅读舒适度,奇偶页不同页码是因为你在翻页时页码应该在同一个位置。这些规则每一个都有它的理由,是几十年的公文实践沉淀出来的。
第二个是,做成一个"能用"的东西,和做成一个"好用"的东西,中间隔了一百次迭代。
V1版本我也觉得"能用"。但真正用了才发现不对。每发现一个问题就修一次,修着修着就到了v2.2.6。没有前面那几次的"不行",就没有第六次的"行"。
第三个是,AI的价值不在宏大叙事里,在具体的场景里。
这一年AI很热。各种发布会、各种愿景、各种"赋能"。但我越来越觉得,AI真正的价值不在那些宏大叙事里,就在这种具体的、琐碎的、每天都在发生的场景里。
一个能帮你把公文排对版的AI,比一百个只会画饼的AI有用。
公文排版只是第一个尝试。它证明了AI可以做好一件具体的、规则明确的、重复性高的工作。那下一个呢?
合同审核?政策合规检查?报告自动生成?很多都已经有现成的解决方案了,我也不准备重复造轮子,推荐大家分享你觉得好用的skill。
这些事每天都在消耗大量的人力。如果都能像公文排版一样,被做成Skill,让机器去做那些重复劳动,让人去做真正需要判断和创造的事情——这个画面,我想想就觉得很兴奋。
做这个Skill的起因其实很简单:就是我自己排公文排烦了。
试试看的心态,一步一坑地踩过来,从V1到v2.2.6,从七个Python脚本到一个体系化的Skill。
现在熊大帮我干活,我说"出一份正式通知",它十几秒就把Word文档吐给我。页边距对的,字体对的,页码对的,发给领导直接能用。那个被退回三次的下午,再也不会发生了。
这只是一个Skill。但这可能是第一次,让AI真正接入了一个体制内的具体工作场景。
AI不应该只在云端做那些高大上的事情。它应该走进办公室,走进工位,帮每一个具体的人解决具体的问题。
从神坛到现实,从概念到实践。这是我的一小步,但可能是迈向超级个体、甚至是超级组织的一大步。
如果你也在跟公文排版较劲——或者你在任何一个具体的工作场景里,觉得AI应该能做点什么——希望这篇文章能给你一个开始。
去试试看。
📢 一个征集
你工作中是不是也有这样的场景——规则明确、重复性高、每次都一样,但就是特别耗时间?
留言区告诉我,你工作中最希望AI帮你优化的场景是什么。
只要这篇文章点赞、在看、转发够多,我就一个一个安排,把你说的工作场景做成Skill。
当然我得坦白,我还是个菜鸟新手,太复杂的不一定能搞定。但在能力范围内的,我一定安排上。
——把你在和格式、数据、表格、报告较劲的故事写在评论区,说不定下一篇Skill就是为你做的。
评论区见。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
谢谢你看我的文章,我们,下次再见。