文档体检台Doc Health Check 问题点 · 业务影响 · 该找谁确认the problem · the cost · who to ask

不以 AI 验 AI拒绝幻觉膨胀拒绝废话文档

危险的不是写错了,
是把没定的事,写成了定了的事。

参数表左边是精确默认值,右边小字写着「需确认」——读的人只记得左边。

一份方案里最要命的地方,往往长得最像规格:参数表左边给出精确默认值,右边小字写着「需业务确认」;数据源第一行标着「待定」,后面十一章的公式照样算得天衣无缝。读的人只看见公式,于是整条链路在一个不存在的输入上开工。

输出长这样
悬空依赖L507 ↗

「专利」这一环还是空的,下游已经有 3 处在用它算

输入还没拿到,依赖它的公式、指标、图表却已经写完了。

不处理的话,业务上会怎样真开工第一步就卡住。等的那段时间里,所有人都以为方案已经就绪。
找谁 · 能回答「这数据到底拿不拿得到」的人现在到底能不能拿到?谁在推、卡在哪一步、预计什么时候有?
AI 痕迹不计入问题L231 ↗

11 个章节标题各重复 4 次以上,是同一套骨架套出来的

措辞是软的,因为这是台阶哪几节其实是为了对齐格式才填的?直接删掉或标「本章不适用」就行,不丢人。

No AI judging AINo hallucinated bulkNo filler docs

The danger isn't being wrong.
It's typesetting what isn't decided as what is.

A precise default on the left, "needs sign-off" in small type on the right. Readers only remember the left.

The most dangerous part of a spec is usually the part that looks most like a spec. A parameter table gives a precise default on the left and admits in small type on the right that nobody has signed off. A data-source list says "TBD" on row one, and eleven chapters of formulas downstream compute perfectly anyway. Readers see the formulas, and the whole chain gets built on an input that doesn't exist.

what it gives you
Dangling inputL507 ↗

"Patents" is still empty, and 3 places downstream already compute with it

The input hasn't arrived, but the formulas, metrics and charts that depend on it are already written.

If nobody fixes thisDay one of implementation stops here. During the wait, everyone believes the plan is ready.
Ask · whoever can say if this data is obtainableCan we actually get it? Who is chasing it, where is it stuck, when does it land?
AI tracesnot countedL231 ↗

11 section headings repeat 4+ times — a template was filled in

The wording stays soft, because this is a way outSome sections look like they exist to keep the structure. Deleting them or marking them "not applicable" costs nothing.

为什么这件事必须有工具

因为成本是不对称的。而且这个不对称,全部由不写文档的那个人承担。

生产一份看起来很完整的方案

30 秒

提示词一敲,结构严密的专业黑话、架构图、接口定义哗啦啦吐出来。写的人不必验,因为验不验都不影响它「看起来完整」。

把里面的假逻辑挑干净

3 天

逐条分辨哪些是规格、哪些是愿望,哪个包名是真的、哪个是编的。这几天不计入任何人的工作量,挑漏一个就是一次线上返工。

制造垃圾的成本趋近于零,清理垃圾的成本高上天。这个工具做的,是把那 3 天压缩成 10 秒——而且把结论变成一句能当面问出口的话。

Why this needs a tool at all

Because the cost is asymmetric. And the asymmetry is paid entirely by the person who didn't write the document.

Producing something that looks complete

30 sec

One prompt, and out comes tight professional vocabulary, architecture diagrams, interface definitions. The author never has to verify any of it, because verifying changes nothing about how complete it looks.

Clearing the false logic out of it

3 days

Sorting specs from wishes line by line, checking which package names are real and which were invented. Those days appear on nobody's plan, and missing one means a production rollback later.

Producing slop costs nothing. Clearing it costs everything. Brandolini's law, now running at machine speed. This tool compresses those three days into ten seconds — and turns the result into a sentence you can say out loud.

它找的是一种特定的病:因果链被折叠

真实的工程是严格的状态机:上一步的输出质量和异常边界,决定下一步的数据结构。假方案把这条链直接折叠了——假装所有输入都已就位,于是每一步都能一口气写完。

文档里看起来的样子 数据源指标公式 图表结论 真开工时的样子 待定 指标公式 图表结论 ↑ 这四格全部作废,返工量按整条链路算 第一环没拿到
两张图的差别,就是「这份文档能不能照着干」的全部内容。

It looks for one specific disease: a folded causal chain

Real engineering is a strict state machine: the output quality and failure modes of step one determine the data structures of step two. Fake plans fold that chain flat — assume every input is already there, and every step after it can be written in a single pass.

how it reads in the document data sourcemetricsformulas chartsconclusions how it goes when you build it TBD metricsformulas chartsconclusions ↑ all four are void; rework is the whole chain step one never arrived
The gap between those two pictures is the entire question of whether a document can be built from.

市面上的 AI 检测,解决不了这件事

常见的 AIGC 检测

本文 87% 疑似 AI 生成

所以呢?你能拿这句话去干什么——把文档退回去?在我们这种业务里,这个问题本身就没有意义:答案永远是「是」,而且本来就该是。现在没人全手写文档,也不必。

这里查的是另外三件事

  1. 问题点具体在第几行,原文照抄出来
  2. 业务影响不处理的话,下游会发生什么
  3. 该找哪个活人确认什么一句能当面问出口的话

只说「这里有问题」而不说「不处理会怎样」和「去找谁」,等于没说。

AI detectors don't solve this

A typical AI detector

87% likely AI-generated

And then what? Send it back? In real work the question is meaningless: the answer is always yes, and it should be. Nobody hand-writes documents any more, and nobody should have to.

Three different things get checked here

  1. The problemwhich line, quoted from the source
  2. The business costwhat happens downstream if it's ignored
  3. Which human to ask, and whata sentence you can say out loud

Saying "there's a problem here" without saying what it costs and who to ask is the same as saying nothing.

在一份真实的 6 万字 PRD 上

产业分析类需求文档,11 章,239 个标题,102 张表。打开页面、粘进去、拿到结果,全程不到十秒。

4阻断项 · 不回答没法开工
4待澄清 · 开工前要有答案
2AI 痕迹 · 备注,不算问题
2545行原文,逐行标出位置
未决伪装L137 ↗

这张表 38 行参数,30 行自己标着「需确认」

同一行在说两件相反的事:左边给出精确默认值,右边承认没人定过。读的人只会记住左边那个数。

不处理的话,业务上会怎样下游会把 30 个没定的数当成定了的数写进代码。等真定下来,牵连的计算、图表、结论要全部回炉,而返工不会被算作任何人的工作量。
未验证具体物L111 ↗

19 个包名 / CLI / 接口地址,没有一个标注验证过

模型最擅长编造的就是这种长得很像真的的名字。它们看上去是全文最硬的部分,实际是幻觉率最高的部分。

不处理的话,业务上会怎样验证成本全部落在接手的人身上。只要有一个是假的,照着搭的那一段就是白干。

On a real 60,000-character PRD

An industry-analysis requirements doc: 11 chapters, 239 headings, 102 tables. Open the page, paste it, read the result — under ten seconds, start to finish.

4blocking · work can't start
7to clarify · needs an answer first
2AI traces · a note, not a problem
2545lines, each finding anchored to one
Undecided, typeset as decidedL137 ↗

38 parameters in one table, 30 of them marked "needs sign-off"

One row says two opposite things: a precise default on the left, an admission on the right that nobody agreed to it. Readers only remember the left.

If nobody fixes thisDownstream treats 30 unsettled numbers as settled. When a value changes, every calculation, chart and conclusion built on it is redone — and that rework lands on whoever implemented it.
Unverified specificsL111 ↗

19 package / CLI / endpoint names, none marked as verified

Exactly what models are best at inventing. They look like the hardest facts in the document and they are the highest-hallucination part of it.

If nobody fixes thisVerification time lands entirely on whoever builds from it. If even one is invented, that part of the build is wasted.

最有用的那几条检查,不需要懂你的业务

它看不懂你的公式合不合理——这个它从不假装。但有一类问题是纯算术,谁都能判定,而且对方无法辩论:

≠100%声明为权重的百分比,加起来不是 100
5 ≠ 6写着「5 项:」,后面列了 6 个
100% + 前提一边写「全自动」,一边写「前提是数据源可接入」
20% / 15%同一个名目,这份文档一个数,那份另一个数

不需要争论「这样写好不好」,只需要回答「哪个是对的」。这就是为什么输出是问题而不是评分。

The most useful checks need no knowledge of your business

It can't tell whether your formula is sound — it never pretends to. But one class of problem is pure arithmetic: anyone can adjudicate it, and there is nothing to argue about.

≠100%percentages declared as weights don't sum to 100
5 ≠ 6says "5 items:" and then lists 6
100% + if"fully automated" next to "provided the source can be connected"
20% / 15%same name, one number here, a different one there

Nobody has to debate whether this is well written. They only have to say which one is correct. That's why the output is questions, never a score.

一份查不出来的,一套才查得出来

一套材料里最危险的问题,不在任何一份文档里面。

文档 A

C 运行保障支撑度 2 项 20%
D 产出与贡献 3 项 20%

30 + 30 + 20 + 20 = 100 ✓ 自洽

文档 B

C 运行保障支撑度(2 项,15%)
D 产出与贡献(3 项,25%)

30 + 30 + 15 + 25 = 100 ✓ 也自洽

两份单独读都挑不出毛病,只有并排放才看得见。把一整套拖进去,它把所有「同一个名目、不同数字」的地方列给你,标明各自出自哪份的第几行。

What one document hides, a set reveals

The most dangerous problem in a document set is in none of the documents.

Document A

C  Operational support  2 items  20%
D  Outcomes  3 items  20%

30 + 30 + 20 + 20 = 100  ✓ internally consistent

Document B

C Operational support (2 items, 15%)
D Outcomes (3 items, 25%)

30 + 30 + 15 + 25 = 100  ✓ also consistent

Read either one alone and nothing is wrong. Only side by side does it show. Drop the whole set in and it lists every place the same name carries a different number, with the file and line for each.

两个模式,措辞完全不一样

默认是自检。这是有意的——一个只能用来挑别人毛病的工具,第一次用完就会被所有人记恨。

默认

自检 · 我自己写的

发出去之前先过一遍。不挑错,只告诉你哪几处会让接手的人卡住,以及你现在能动手补什么。导出是一份自查清单。

它会这样说在「专利」真拿到之前,把依赖它的那几节折叠起来,或标上「待数据到位后补」。现在就写完整,等于交出一份看着能开工、其实开不了工的文档。

切换

体检 · 别人给我的

判断这份能不能照着干。每条给出问题点、业务影响、该找哪个活人确认什么。导出是一条可以直接发群的消息。

它会这样说「专利」现在到底能不能拿到?谁在推、卡在哪一步、预计什么时候有?拿不到的话,依赖它的那几节是先砍掉还是整体暂停?

你得能说「我自己每份文档发出去之前都过一遍」,别人用它才不觉得被针对。

Two modes, deliberately different wording

Self-check is the default. That's on purpose — a tool that can only be used to find fault with other people gets resented the first time it's used.

default

Self-check · I wrote this

Read it once before sending. It doesn't grade you; it shows where the next person will get stuck and what you can fix right now. Exports as a personal checklist.

it says things likeUntil "Patents" actually lands, collapse the sections that depend on it or mark them "to be filled once data arrives." Writing them out in full now means handing over a document that looks buildable and isn't.

switch

Review · someone sent me this

Decide whether you can build from it. Each finding gives the problem, the business cost, and which human to ask what. Exports as a message you can send.

it says things likeCan we actually get "Patents" today? Who is chasing it, where is it stuck, when does it land? If it doesn't, do we cut the parts that depend on it or pause the whole thing?

You need to be able to say "I run this on everything I send." That's what makes it safe for anyone else to use.

AI 痕迹会标出来,但那是台阶,不是罪状

标出来只为两件事:

  • 给读的人一个心理准备。哪几段可能没经过人工核对,看的时候多留一个心眼。
  • 给写的人一个退路。「这段是我的 AI 自己加的,删掉就行」,比「我写错了」容易说出口一百倍。

指出问题如果等于指控对方能力有问题,对方只能硬撑,事情就谈不下去。把锅留给模型,沟通才能发生。

所以这一档单独算,不计入「必须回答的问题」,提问的措辞也是软的。

同样的理由,这里永远不给文档打分。分数会被辩论(「你凭什么说我 60 分」),问题不能被辩论——对方只能回答,或者回答不上来。

AI traces are flagged, but as a way out, not a charge

The flag does two things:

  • It warns the reader.Knowing which sections came out in one pass makes you read them with one eye open.
  • It gives the author a way out."That part was my AI, just delete it" is a hundred times easier to say than "I got it wrong."

If pointing at a problem means accusing someone of incompetence, they can only dig in, and the conversation dies. Leave the blame with the model and people keep a way out.

So this tier is counted separately and never added to the questions that must be answered.

Same reason there is never a score. A score invites argument ("who says I'm a 60?"). A question doesn't — you either answer it or you can't.

它自己不用 AI。一行都没有。

全是确定性正则,在你的浏览器里跑完。这不是省钱,是三个换来的东西:

  • 不会幻觉。用 AI 去查 AI 的膨胀,查出来的东西自己也会膨胀。
  • 文档不出本机。没有后端、没有账号、不联网、断网也能用——这是同事敢把保密文档粘进去的唯一前提。
  • 零成本零延迟。不用申请 key,不用等预算,打开就能用。
  • 可验证。代码公开,一共一个 HTML 文件。不用信这段话,自己搜 fetch,一个都没有。

It uses no AI. Not one line.

Deterministic regex, running in your browser. That isn't about saving money. It buys three things:

  • It can't hallucinate.Using AI to audit AI inflation produces inflated audits.
  • Your document never leaves your machine.No backend, no account, no network calls, works offline — the only reason a colleague will paste a confidential spec into it.
  • Zero cost, zero latency.No key to request, no budget to wait for. Open it and it works.
  • It's checkable.The source is public and it is one HTML file. Don't take this paragraph's word for it — search it for fetch. There isn't one.

这个工具查不了什么

写明边界是它存在的理由本身。一份不肯说自己做不到什么的文档,正是它要查的东西。

  • 查不了内容对错。它不懂你的业务,公式合不合理、指标有没有意义,一概不知,也不装懂。
  • 口径冲突只查得到数值层面的。同名参数不同值、符号复用、权重不配平、单位粒度不一致、窗口长度不一致,这五类查得到。用文字描述出来的定义分歧——两章对同一个概念说法不同、但都没给数——查不到,这需要真正理解语义,仍是缺口。
  • 查不出「写得对但做不到」。资源、排期、人力、授权,文档里不写就看不见。
  • 命中不等于有罪。每条只是「这里需要一个人回答」。答得上来就划掉。
  • 它绝不聪明。没有模型参与,所以不会幻觉,代价是它只认得出结构,认不出意思。

What this tool cannot check

Stating its own limits is the whole reason it gets to exist. A document that refuses to say what it can't do is exactly what it was built to find.

  • It can't tell right from wrong.It doesn't know your business. Whether a formula is sound or a metric means anything — no idea, and no pretending.
  • Definition clashes only at the numeric level.Same parameter, different values; a symbol reused; weights that don't sum; mismatched units. A disagreement written out in prose it cannot see. Known gap, not patched.
  • It can't see "correct but undoable."Headcount, budget, schedule, access — not in the document, not visible.
  • A hit is not a verdict.Each one only means "a human needs to answer this here."
  • It is never clever.No model anywhere, so it never hallucinates — and it only recognises structure, never meaning.

下一份文档发出去之前,先让它过一遍。

Run it once before the next document goes out.