基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
  • 知识卡片碎片时间过考点
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
    • AI 热点每日 AI 资讯与动向
AI 工作台
简历
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
编程提效2026-11-08 02:58

AI 文档审查:事实自动核验,承诺明确归属

dev.to · AI#文档工程#自动校验#责任归属
Editor brief · 编辑速览

将模型生成文档的错误拆成两类:参数、默认值等事实由代码提取的事实包核验,支持周期、安全声明等承诺由责任表限定起草权限。该流程把机器校验与人工授权分开,减少逐行审稿仍遗漏错误的问题。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

AI 写文档,最麻烦的错误有两类:一类是参数、默认值写错,另一类是替团队许下了没人批准的承诺。作者的核心主张是,把前者交给程序校验,把后者交给明确的负责人,别让人工逐行审稿承担所有责任。

这套方案用代码生成「事实包」,限制模型能写的内容,再用检查器拦截错误。方向值得借鉴,但原文给出的实现比它宣称的保障范围窄。读懂这层差距,才能把示例改成真正有用的文档检查流程。

先确定谁能负责,再决定模型能写什么

不存在的参数,可以拿代码核对;「这个版本提供多久的安全修复」,却未必能从代码里找到答案。后者需要团队先作出决定,再由具体的人确认。

作者因此要求,生成文档之前先给内容块分类。模型只允许起草 reference 和 procedure,也就是参考资料和操作步骤。支持期限、设计理由、安全表述等内容则由人负责,不能混进模型生成的文件。

下面这段标记,用来让责任归属跟着文档一起进入版本管理:

<!-- owner: model | class: reference -->
| Flag | Default | Notes |
|---|---|---|
| `--timeout` | 10 | seconds |

<!-- owner: avery.lin | class: commitment -->
Version 2.x receives security fixes for 12 months from release.

要看的是第二个 owner:Version 2.x 发布后提供 12 months 安全修复,是需要负责人确认的承诺。这里的名字只是示例,并不代表这项承诺已经得到验证。

事实是否正确,与谁有权作出承诺,需要两套检查。

不过,原文提供的分类规则并不完整。作者说有两类可以起草、四类不能起草,却没有展示所指的完整分类表;后面的代码只列出 commitment、rationale、security 三类人工负责内容。团队采用时,需要先补齐规则。

事实包的作用,是缩小模型可以发挥的范围

作者把 docsgen/facts.json 设为起草阶段唯一允许使用的事实来源。它不是另一份手工维护的说明书,而是从代码提取出来的结构化数据。

示例脚本通过 Python argparse 的 parser._actions 读取参数,记录 dest、default、choices、required 和 takes_value。默认值除 None 外转成字符串,选项值排序;action.nargs != 0 用来判断参数是否接收值。

模块部分通过抽象语法树(AST)提取名称:用 ast.parse 解析 Python 文件,只收集顶层 ast.FunctionDef 和 ast.ClassDef,并排除下划线开头的名字。输出格式标为 docfacts/1。

运行时,先执行 mkdir -p docsgen,再执行 python tools/docsgen/fact_bundle.py > docsgen/facts.json。示例中的 mypkg.cli、build_parser 和 Path('mypkg') 都需要按项目入口替换。事实包提交到仓库,和代码一起评审,并在 CI 中重新生成。

模型的约束则直接写成一份起草契约:

You draft only blocks of class `reference` or `procedure`.
The only permitted facts are in docsgen/facts.json. Quote flags, defaults, choices,
and paths exactly as they appear there. If a needed fact is absent, emit TODO(fact)
and stop that block.
Never write: dates, support windows, benchmarks, cost, security posture,
comparisons with other tools, or the words fast, secure, scales, best.
One `<!-- owner: model | class: ... -->` header per block. No prose outside blocks.

这里最有用的是 TODO(fact):缺少事实就停止当前块,把资料缺口显露出来。相比补出一段流畅但无依据的说明,这种失败方式更方便后续处理。

作者称,自己在 MonkeyCode 免费模型档位上,为一个小型 CLI 参考文档目录跑过起草流程。原文也披露,这是 MonkeyCode 产品推广合作内容。运营方声称免费额度包含 10M-token,作者要求使用前核对条款,并自行统计每次 token 消耗。它不能直接作为今天的容量承诺,更不是质量验证结果。

检查器能拦住什么,要看代码实际检查了什么

作者提供的检查器读取事实包,再遍历 docs 下的 Markdown。执行命令是 python tools/docsgen/check_docs.py docsgen/facts.json。

它输出格式为 doccheck/1 的 JSON 报告,发现问题退出码为 1,否则为 0。检查规则包括:

  • 文档出现事实包之外的长参数,报告 unknown-flag。
  • --flag=value 中的值与已记录默认值不同,报告 default-mismatch。
  • owner: model 的块属于指定人工分类,报告 class-not-draftable。

这些规则能演示流程,但还不能兑现原文描述的全部保障。

最直接的问题是,前面的表格把 --timeout 和默认值 10 放在两个单元格里。检查器能找到参数,却不会读取默认值所在列。把表格里的 10 改错,它也未必报错。

反过来,示例命令中的 --timeout=30 可能只是用户主动设置超时,并没有声称默认值为 30。检查器却会把等号后的值当作默认值比较,产生误报。

它也没有强制每个块都带责任标记,没有全面拒绝未知分类,更没有校验 choices、路径和模块名称。提取器只保存 action.option_strings[0],同一参数的其他别名可能被遗漏;异步函数和类方法也不在上述名称提取范围内。

作者要求先跑失败样例,确认检查器确实会拦截错误,但提供的原文没有附上这组样例。CI 重新生成事实包之后,如何比较仓库版本并使任务失败,也没有给出配置。

退出码为零,只能说明现有规则没有发现问题。

我的判断

我认同把人工审查集中到责任和语义上。参数是否存在,可以自动核对;支持期限是否合理、安全表述是否成立,需要负责人判断。让两类问题各有去处,比要求审稿人记住所有细节更容易执行。

但这是一套有价值的流程草案,还不是经过充分验证的方案。作者没有提供错误检出率、误报率、节省审稿时间,或与普通人工审稿的对照数据。「第一次参数改名就能回本」属于经验判断,原文没有证明。

对于 CLI 参考资料,确定性的模板生成也是一个直接替代方案。既然参数、默认值和选项已经结构化,表格可以直接渲染。模型更适合承担需要组织语言的部分;即便是操作步骤,也可能依赖事实包尚未覆盖的环境条件和执行顺序。

原文建议把检查部署到 MonkeyCode 免费服务器,通过定时任务或 pre-receive 检查运行。短 Python 脚本的资源要求确实不高,但「放在应用流水线之外才能长期启用」没有对照证据。独立任务若不能及时关联文档变更,反馈也可能滞后。

它适合受版本管理的技术参考资料。以叙事、营销为主的文档,无法在 CI 重建事实包的项目,以及缺少负责人制度的团队,都很难直接套用。作者也明确要求:草稿发布前,仍需具名负责人确认。

能拿来做什么

  • 从仓库里一页 CLI 参数表开始,先提取参数和默认值,验证代码修改后事实包能否同步变化,并在 CI 中比较差异。
  • 如果维护 Node CLI,先围绕项目实际使用的参数解析器编写提取器。原文只覆盖 Python argparse,不能原样迁移。
  • 按文档结构校验默认值,区分「默认值表格」和「命令示例」,并加入未知参数、错误默认值、合法自定义值的正反样例。
  • 在日常 AI 文档任务中采用 TODO(fact) 和责任标记,把缺少依据的内容留给补充资料,把支持期限、安全承诺交给具名负责人确认。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
Puppet 漏洞链可能危及证书签发密钥
下一篇
重构安全切换:让新旧代码用同一批输入对账

资讯速览

dev.to · AI · 2026-11-08 02:58

AI 评分 8.0 / 10

相关标签

#文档工程#自动校验#责任归属

继续阅读

  • 多 Agent 共用终端时如何保住命令历史
  • Puppet 漏洞链可能危及证书签发密钥
  • 重构安全切换:让新旧代码用同一批输入对账
  • 服务器中断后,模型调用如何对账
  • 录制模型响应,让 CI 离线回放