一句话:AI输出质量不稳定,不能直接用。写了一个脚本让AI输出后先自检再交给你——4项检查(格式/逻辑/来源/行动项),每次从15分钟压到2-3分钟。附完整Python源码。
📌 "一人公司AI内容生产系统"系列 第07篇/共48篇
◆ 当前阶段:启动篇 第7篇
◆ 适合谁:AI输出质量忽高忽低、每篇都要自己通读才放心的人
◆ 阅读方式:这篇需要先装好Python来跑脚本,不懂Python也不影响理解逻辑
◆ 系列总纲:一个人+AI=一家公司
这篇给这样的人
你是不是也这样——AI今天写得很好,明天产出同样流畅但全是错的。每篇都要自己通读一遍才放心,但AI产出越来越多,时间上撑不住。如果这就是你,这篇就是写给你的。
读者速览
- 核心产出:可直接运行的Python质量门脚本(复制即用)
- 阅读时长:约8分钟(代码部分可跳过)
一、是什么卡住了我
AI写的文章质量忽高忽低。有时候流畅但全是错的,有时候编了一个看起来像真的的案例但不存在。
这不是AI的问题——AI的能力本来就不稳定。问题在于:AI输出之后,我怎么判断它能不能用?
我之前的做法是每篇自己通读判断,但AI产出越来越多,时间上撑不住了。于是我写了一个脚本——质量门,让AI输出后先跑一遍,再交给我。
二、底层逻辑:让AI先检查一遍,缩小你的判断范围
质量门做4件事:
- 格式检查:标题层级、代码块闭合、列表符号
- 逻辑检查:举例后是否跟了具体内容、结论是否有支撑
- 来源检查:提到了数据是否有来源标注
- 行动项检查:行动指令是否够具体
它不是替代你判断,是帮你把判断范围从100件事缩小到40件。
三、外部验证
雷可扬(成都创业者,搭建了1000+Agent跑通50+企业场景)做过一个"审计师·分身"——他把一位20年经验的CPA的判断能力封装成AI,让AI读完合同和原始凭证后主动告诉用户"这笔收入分类有问题",用户只需点"同意"或"不同意"。
这个逻辑和质量门一模一样:让AI先检查一遍,把明显的错误筛掉,人类只做最关键的那个判断。
GitHub CI/CD里也有类似理念——代码提交后先跑自动化测试,测试通过了才进入人工审核环节。不是自动化替代人工,是自动化把低级错误挡在门外,人工只需要看真正需要判断的部分。
四、脚本源码
#!/usr/bin/env python3""" 质量门脚本 — AI输出质检器 用法: python3 check_output.py <输入文件> """importsysimportredefcheck_format(text):"""格式检查"""issues=[]lines=text.strip().split('\n')# 标题层级是否跳跃prev_level=0fori,lineinenumerate(lines):m=re.match(r'^(#{1,6})\s',line)ifm:level=len(m.group(1))ifprev_level>0andlevel>prev_level+1:issues.append(f"行{i+1}: 标题层级跳跃 h{prev_level}→h{level}")prev_level=level# 列表符号是否混用chars=set()forlineinlines:m=re.match(r'^(\s*)[\*\-\+]\s',line)ifm:chars.add(line.strip()[0])iflen(chars)>1:issues.append(f"列表符号混用:{' '.join(chars)}")# 代码块是否闭合cb=[ifori,linenumerate(lines)ifl.strip().startswith('```')]iflen(cb)%2!=0:issues.append("代码块未闭合")returnissuesdefcheck_logic(text):"""逻辑连贯性检查"""issues=[]lines=text.strip().split('\n')fori,lineinenumerate(lines):ifre.search(r'(例如|比如):?$',line):ifi+1<len(lines)andlen(lines[i+1].strip())<10:issues.append(f"行{i+1}: 举例后缺少内容")# 结论区不确定词cz=lines[-max(len(lines)//3,5):]forlineincz:forwin['可能','也许','大概']:ifwinline:issues.append(f"结论区有不确定词'{w}'")returnissuesdefcheck_sources(text):"""来源检查"""issues=[]dps=re.findall(r'\d+[%\%]|\d+万',text)ifdpsandnotre.search(r'(来源|数据来源|据.*?报告)',text,re.I):issues.append(f"有数据{dps[:3]}但未标注来源")returnissuesdefcheck_actions(text):"""行动项检查"""issues=[]forlineintext.split('\n'):ifany(vinlineforvin['打开','复制','设置']):iflen(line)<15:issues.append(f"行动项太简略: '{line.strip()}'")returnissuesif__name__=='__main__':iflen(sys.argv)<2:print("用法: python3 check_output.py <输入文件>")sys.exit(1)withopen(sys.argv[1],'r')asf:text=f.read()all_issues=[]all_issues.extend(check_format(text))all_issues.extend(check_logic(text))all_issues.extend(check_sources(text))all_issues.extend(check_actions(text))ifnotall_issues:print("✅ 质量门通过")else:print(f"⚠️ 发现{len(all_issues)}个问题:")fori,issueinenumerate(all_issues,1):print(f"{i}.{issue}")使用方法:
- 把AI输出保存为文件:
output.md - 运行:
python3 check_output.py output.md - 有问题让AI改,没问题直接用
五、这篇你可以直接带走的东西
交付物:上面的Python脚本,复制到本地保存为check_output.py。
使用说明:python3 check_output.py 你的文章.md
质量门Python源码可直接复制使用。资源文件见评论区置顶。
不确定这个脚本能不能解决你的问题?回复’诊断’,我每周免费帮5个人做系统检查,先看看你的卡点在哪。
下一篇:AI输出质量可控了。但一个人面对多个任务时,怎么让AI分工协作?下一篇讲3个角色设定。
- 你遇到过AI编案例、数据错误的情况吗?
A. 经常遇到,已经不敢直接用AI输出了
B. 偶尔遇到,会自己检查一遍
C. 还没遇到,可能是我用得不够多