AI核对型 AI 工具

成本与存货技能包(免费版)

完全本地运行:批量壳与 14 项成本与存货检查规则都打包在本技能里(scripts/engine/)。 不对外发材料、不写任何材料文件(结果只打到 stdout)、没有次数上限。

什么时候用

谁会在什么时候用:制造业 / 商贸 / 生鲜 / 工程的成本会计,在每月成本结账之前。要核的不是一个数,

而是十几张互相关联的底稿:库存账实、出入库与加权平均成本、跌价准备、报废审批、BOM 用量与损耗、

材料领用与定额、材料成本差异分摊、投入产出与报废率、委外加工费、甲供材料、工程材料调拨、

工时与人工分摊、固定资产盘点、生鲜损耗 —— 一张张手核既慢,又说不清哪一项这次到底核没核。

这个工具做什么:--input 客户目录 时,目录里每个子目录就是一个客户(一套成本存货底稿);

本工具逐客户跑 14 项成本与存货检查(每一项内部还有若干子检查),最后每个客户输出一行结论:

客户名 / 14 项各自「通过 / 有问题(几条) / 未执行」/ 问题条数与 P0、P1 计数。

每条问题都带客户名 + 原文文件与行号(例如 成本存货底稿.txt:4),可被第三方用同一份材料复算;

某个客户没交材料时,那个客户单独标「未执行」,不会拖累其他客户,也不会被算成"没问题";

只交了一部分材料时(只覆盖了部分检查项),会额外报一条 P2 检查项未执行(材料只覆盖了一部分),

把"没核的那几项"点名列出 —— 绝不能因为跑了几项就当成 14 项都跑过了。

本包包含以下 14 项检查(每项都是一个独立引擎,逐字节复用,规则一行没改)

  1. 库存账实核对(inventory-check)
  2. 存货出入库与加权平均成本(inventory-cost-flow-check)
  3. 存货跌价准备(inventory-provision-check)
  4. 存货报废与审批(inventory-scrap-approval-check)
  5. BOM用量与损耗差异(bom-consumption-variance-check)
  6. 材料领用与定额损耗(material-usage-loss-check)
  7. 材料成本差异分摊(material-cost-variance-check)
  8. 生产投入产出与报废率(production-yield-scrap-check)
  9. 委外加工费与损耗(outsourced-processing-fee-check)
  10. 甲供材料与分包领用(owner-supplied-material-check)
  11. 工程材料调拨与领用(project-material-transfer-check)
  12. 工时与人工成本分摊(labor-cost-allocation-check)
  13. 固定资产盘点账实(fixed-asset-count-check)
  14. 生鲜损耗与盘点差异(fresh-loss-check)

这个免费版查什么(分层如实说明)

免费版是完整可用的核心产出——"一次跑完所有客户"这件事本身就在免费版里做完了:

(材料只覆盖一部分时明确报一条,见上)。

跨客户汇总台账、跨客户风险排序处理清单、跨客户共性问题归类、台账导出(Markdown / CSV)。

"差异率超阈值提示")。它们在那 14 个上游免费包里就没实现,本包只是复用它们的规则,绝不会因为

"另有完整档"就假装跑过。这些项在结果里叫 scope.sub_checks_not_run,每一项各自列出,一条都不藏。

怎么用

node scripts/run.mjs --sample                    # 单客户样例(内置,14 项全跑)
node scripts/run.mjs --sample-batch              # 3 个客户样例(干净 / 有一处硬伤 / 没交材料)
node scripts/run.mjs --input 客户目录             # 批量:每个子目录 = 一个客户
node scripts/run.mjs --input 客户目录 --json      # 机器可读

客户目录这样放(每个客户的一套底稿里,每张表用 === 检查名 === 分段,Tab 分隔最稳):

客户目录/
  豫州精工制造有限公司(2026-02 成本结账)/成本存货底稿.txt
  中岳食品加工有限公司(2026-02 成本结账)/成本存货底稿.txt

一个文件里放全部 14 张表、或者拆成 14 个文件放进同一个子目录,都可以——引擎按表头认表。

目录里没有子目录时,直接把每个文件当一个客户;.json 文件里若写 {"text":"…"} 就按 JSON 取正文。

规则是哪来的(复用,不是重写)

那 14 项成本与存货检查(含各自的子检查逻辑)是逐字节拷贝进本技能包 scripts/engine/parts/ 的,

本包只做"客户目录 → 逐客户跑 14 项 → 每个客户一行结论"的编排与汇总,没有改写任何一条核对规则。

常见错法(这个产品专属,逐条都真实踩过)

  1. --input 指到了"某个客户的文件",却以为在跑批量:--input 指向的应当是客户目录

(里面每个子目录才是一个客户)。直接指一个客户的文件,就只会出 1 个客户的结果。

  1. 把 === 检查名 === 分段行删掉了:引擎按表头找表,分段行不是必需的,但分段名是派发的第一依据,

删了之后某些表可能被"先跑通的那一段"抢走;分段名本身也是"这个客户到底核了哪几项"的证据。

  1. 一个客户的底稿放进了另一个客户的目录:结论会挂在错的客户名下,而且跨客户共性问题会被算错。

交付前扫一眼每行结论里的客户名与问题明细里的 文件:行号。

  1. 把「未执行」读成「没问题」:材料没交、表头认不出时,本工具不给结论,只标「未执行」。

把「未执行」当通过,是这类批量工具最常见的翻车方式。

  1. 用空格而不是 Tab 分隔列:解析优先按 Tab,其次按"2 个及以上空格"。金额里带空格(如 1 000.00)

会被拆成两列,凭空多出"关键字段缺失"。从 Excel 复制时用 Tab。

  1. 合计行没写在第一列:合计行要写在身份列(品类 / 编码 / 项目 …)那一格为「合计 / 总计 / 小计」。

写到别的列上不会被当成合计行,而是当成一条明细,于是"合计与明细之和不符"这种误报就出来了。

  1. 把两个客户的表拼成一个文件当一个客户跑:14 项会全部命中同一个客户的行号,结论对不上人。

一个客户一个子目录,是本工具的基本假设。

使用次数与完整档

本免费版每次运行结束后会向服务端做一次匿名次数统计:只发送本包标识和一个不含任何材料的匿名安装标识(由主机名与用户名做短哈希得到),不发送你的材料、不写任何文件。

· 前 3 次:服务端不返回任何内容,输出与现在完全一样;

· 第 4 次起:服务端会返回一段完整档说明(完整档是另一个独立商品,条款与价格以它自己的商品页为准),届时才会打印这一行;

· 统计不可用(离线/超时/被拦截)时什么都不做,核对结果与退出码不受任何影响。

本版本不包含的检查项见上一节;需要完整档时按服务端返回的官方口令执行,付款由用户本人确认。

需要完整档时(可选)

本免费版是完整可用的核心产出,本版本不包含下面这些项:

同名工具的完整档是另一个独立商品(条款与条件以它自己的商品页为准);两档的差别就是上面这些,没有别的。

边界(请务必知道)

本工具不做引擎 CHECKS_OUT_OF_SCOPE 里列的那些判断(判断存货该按哪种方法计价、该不该计提跌价准备、

定额与损耗率是否合理、代替成本结账、出审计或鉴证意见、核对实物是否真的存在、读 ERP/MES/WMS 导出文件);

材料不足时不给结论(认不出表头就不出结论,绝不套用默认值)。**它只核表内与表间的算术和勾稽关系,

不替代你的专业判断。**

装到本地或在线用

· SkillHub(免费版):https://www.skillhub.cn/skills/user_ef162806/cost-inventory-pack-free

· 全部免费工具:https://chenqg618.github.io/compliance-skills/

完整档(离线、无次数上限):SkillPay 买断 ¥9.9,跑多少次都不再收费;免费档与完整档的检查项差别见上面的说明。

怎么装:
https://chenqg618.github.io/compliance-skills/

免费版会明确列出哪些检查没有执行,不会让你以为已经全查过。