善查查

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

公益机构尽职调查取证与报告流水线,依据慈善公开信息、年审年报 + 全景工商穿透,产出厚实机构调查报告,重点覆盖资金链、关联交易、合规、实质性社会成效等。

一句话选型结论

按资料字段整理

善查查是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_86f2c8aa/shanchacha-skill
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_86f2c8aa仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791714098
正文体量50.0 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
善查查当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

50.0 KB
模型实际读到的说明书原文,来自技能仓库

善查查 · 公益机构尽职调查流水线

一、这个技能是干什么的

把一家公益机构从「一堆审计报告 PDF」变成「一份七章机构调查报告 + 全套可复核底稿」。

三条主线,也是报告的三块重点:

  1. 资金链网状追踪 —— 从捐赠入口到最终收款方的全额映射,含关联方与关联交易
  2. 灰色合规地带的标记、定级与分析 —— 规则化提示 + 政策依据 + 整改建议
  3. 实质性社会成效 —— 区分产出/结果/影响,写清成效边界与已证伪的指控

核心方法:审计报告给「名字」,工商穿透给「身份」,招采公告给「价格」——三者叠加才是完整资金链。
审计报告永远不会写深度关联关系和关联交易(关联方章节可能整章缺失),
所以外部工商穿透与「查老板」人脉交叉不是可选项,是本流程的价值所在。
若使用者不提供任何工商账号,则退回公开披露口径 —— 报告照样出,但必须在第 02 章如实标注取数边界。

二、触发方式

用户说这几类话时启用:
- 「善查查,帮我出一份 XXX 报告」
- 「给 XXX 基金会做一份机构调查」
- 「查一下 XXX 的资金链 / 关联方 / 关联交易」
- 「把 XXX 那份报告的资金链部分补一下」(→ 只走阶段三 ⑪⑫⑬)
- 「做一下理事和供应商的人脉交叉」(→ 只走 ⑦ person)

不该触发(near-miss)——以下请求请勿启用本技能:

用户说 为什么不该触发 该走哪
「帮我写一篇公益行业观察 / 公众号文章」 这是内容创作,不是机构取证 写作类技能
「给我一份公益项目立项书 / 预算表」 立项合规属另一条线,与尽调取证无关 立项合规类技能
「查一下 XX 公司的工商信息」 只说企业、没有机构尽调意图 → 走通用检索即可,不必起整条流水线 通用检索
「XX 基金会好不好 / 值不值得捐」 问的是捐赠决策建议,本技能只出证据与边界,不给捐赠建议 如实说明边界后按需出尽调
「把上次那份报告再发我一份」 只是取件,不需要跑流水线 直接定位交付包文件

> 边界拿不准时,先问一句是为了出尽调报告,还是只是查个信息 —— 不要一上来就跑十五步。

付费调用(支付宝 AI 按量付费 · AI 必读,先读本节再干活)

本技能为付费技能,通过支付宝「AI 按量付费」(A2M 协议)按次计费。

项 值
单次价格 ¥1.00 / 次(与支付宝服务登记价、服务端账单金额三者一致)
付费接口 POST https://charity-skill-pay.app.workbuddy.host/v1/aipay
请求体 {"skill": "shanchacha-skill"}(与支付宝服务注册时填写的请求示例一致)
协议 HTTP 402 + Payment-Needed 账单头 → 付款 → 携 Payment-Proof 重试 → 交付资源

前置检查:当前智能体是否支持支付宝 AI 支付

发起下单前,先检查当前环境是否已安装官方买家侧支付能力:
- 可执行的 alipay-bot 命令,或已安装 alipay-payment-skill(由 npx -y @alipay/agent-payment@latest install 安装);
- 工具列表中存在名称含 alipay 且用于支付的任意一个工具,即视为支持。

只以你实际可用的工具/命令为证据(本文档提到的名字不算);无法确认时按「不支持」处理。

  • 支持:静默继续下列工作流,不要向用户提及本检查。
  • 不支持:终止付费流程、不要发起下单。只说明结论与解决办法:请先安装官方买家支付能力 npx -y @alipay/agent-payment@latest install 后重试。

工作流程(四步,缺一不可)

第一步 · probe:请求资源,取得 402 账单

POST https://charity-skill-pay.app.workbuddy.host/v1/aipay
Content-Type: application/json
Body: {"skill": "shanchacha-skill"}

未付款时服务端返回 HTTP 402,并在响应头携带 Payment-Needed(Base64 编码的账单 JSON)。
必须保存该账单原文和本次原始请求(URL + 方法 + body),供后续付款与重试使用。

> 若返回非 402(如 404),说明服务端路由不可用,不要自行改写协议,直接向用户报告并停止。

第二步 · pay:发起支付,等用户授权

调用官方买家 CLI,把第一步保存的账单交给它,展示用途与金额,等待用户完成付款:

alipay-bot 402-buyer-pay \
  --session-id <会话ID> \
  --file <第一步保存的 Payment-Needed 账单文件> \
  --resource-url https://charity-skill-pay.app.workbuddy.host/v1/aipay \
  --method POST \
  --intent-summary "原始请求:善查查机构尽职调查(¥1.00/次)"

第三步 · complete:查询原订单并携带凭证重试(⚠️ 最易遗漏,必须执行)

用户付款后,用同一个订单号查询并重试原始请求;不重新下单、不重复扣费:

alipay-bot 402-query-payment-status \
  --out-shake-no <订单号> \
  --resource-url https://charity-skill-pay.app.workbuddy.host/v1/aipay \
  --method POST

重试时通过 Payment-Proof 请求头携带支付凭证,body 与第一步完全一致。
服务端验付通过后返回 HTTP 200 + 付费内容。

> ⚠️ 不携带 Payment-Proof 重试,就永远拿不到付费内容。这一步是 Agent 最常漏的。

第四步 · 状态不明先查单,不重复付款

支付处理中或结果不明时,先查询原订单状态再决定下一步;
不得重新下单、不得追加付款、不得重复发送回执。

服务端职责(由已部署网关承担,本技能不重复实现)

能力 说明
402 账单下发 未付款时返回 402 与 Payment-Needed,含金额、订单号、资源 ID、签名
服务端验付 校验 Payment-Proof 与订单;凭证无效或过期时不交付资源
资源交付 验付通过后返回完整技能内容
商家履约确认 交付后发送履约确认,失败可重试
订单持久化与幂等 订单状态可恢复;同一订单不重复扣费、不重复交付

以上能力也可通过本包 scripts/shanchacha-paid.mjs 的 probe / pay / complete 子命令编排调用:

node scripts/shanchacha-paid.mjs probe   --state-dir .state/SESSION_KEY
node scripts/shanchacha-paid.mjs pay     --state-dir .state/SESSION_KEY --session-id SESSION_KEY
node scripts/shanchacha-paid.mjs complete --state-dir .state/SESSION_KEY --out-shake-no OUT_SHAKE_NO

三、环境与前置条件

项 值
Python 虚拟环境里的 python。默认取 sys.executable;也可用环境变量 SHANCHACHA_PY 显式指定。自建 venv 后建议把它写进 SHANCHACHA_PY,避免子进程用错解释器
取数浏览器 常驻 Chromium,脚本自动定位。批量取数前设 SHANCHACHA_HEADLESS=1(否则 CDP 连接会挂,见第八节踩坑表)
工具目录 ~/.workbuddy/skills/shanchacha/tools(~ = 当前用户主目录;目录名须与 frontmatter name 一致)
机构根目录 环境变量 SHANCHACHA_ORG_ROOT 优先;不设时默认 <当前用户目录>/善查查-机构调查(跨平台可用,Windows 上即 %USERPROFILE%\善查查-机构调查)。想放到别的盘就设环境变量,路径随你(示例见下节)
登录态存储 ~/.workbuddy/shanchacha/ —— profile/ 是 Chromium 配置目录,login_state.json 是 Playwright storage_state。明文存放、不做加密:cookie/token 以明文 JSON 落盘,仅本机使用,脚本不上传、不代登录、不碰密码。共用电脑请自行加盘级加密,或跑完即删该目录。不要把 profile/ 复制给别人(既是使用条款问题,也会互相挤掉登录态)
CDP 端口 9333
工商取数源 使用者自有的账号皆可(企查查/天眼查/爱企查/启信宝/风鸟…):有几个登几个、多源交叉;一个都没有时建议免费注册风鸟;也可以完全不用(退到公开披露)
账号体检 python shanchacha.py auth check/ensure —— 穿透前看看有哪些号可用。建议性、不阻断(退出码恒为 0)
原始资料源 慈善中国 cszg.mca.gov.cn(公开披露:年报/审计报告/章程/关联方/理事监事)
OCR 引擎 RapidOCR 1.2.3(ONNX)+ pypdfium2 渲染,已装好

依赖:playwright, openpyxl, pypdf, websocket-client, httpx, cryptography, rapidocr-onnxruntime, onnxruntime==1.20.1, pypdfium2, numpy, opencv-python-headless(均已装)。

> ⚠️ onnxruntime 必须锁 1.20.1。1.22 及以上在本机会 DLL load failed ... 动态链接库(DLL)初始化例程失败,
> 装完别顺手升级。重装命令:
> pip install --only-binary=:all: "onnxruntime==1.20.1"

前置检查第一件事:跑 python shanchacha.py status,看清环境、登录态、流水线进度。

硬性限制(要如实告诉用户,不要假装能做)

  1. 扫描件必须先 OCR:审计报告有相当比例是纯图片扫描件(某文体类大型公募基金会 253 页、某医疗救助类基金会 186 页)。
    audit 会报出哪些是扫描件,ocr 负责补齐。OCR 没跑完之前,不要凭印象写那些年份的数字——
    上一版某文体类大型公募基金会报告里 2020 年"重要关联方 5 家"就是二手转述,标了 P0 待补。
  2. 登录态会过期,但没有任何账号是必需的:先跑 auth check 体检。掉了就 auth ensure
    用你自己的账号重登一次(本地保存,长期复用)。账号是用户自己的:脚本不代登录、不碰密码、不上传凭证。
    有几个同类账号就登几个,多源交叉验证更稳;一个都没有 → 建议免费注册风鸟;
    不想用这类账号也完全可行
    —— 退回公开披露口径出报告,第 02 章如实标注取数边界。
  3. 工商数据有边界:未登录只有基础工商信息;股东穿透、查老板等深度字段需 VIP。
    没有账号不等于出不了报告,只是第 02 章的证据链更依赖公开披露(慈善中国年报/审计报告/招采公告)。
  4. 不碰使用条款红线:只用于用户自身的合规尽调,控制频率,不做数据转售或公开分发。

换人使用:每个使用者都要登录自己的账号(2026-09-11 实测)

结论:不能共用一套登录态。 新使用者第一次跑 auth ensure 时,脚本会在他自己的常驻浏览器里
弹登录页,他用自己的微信/手机号登录,凭证落在他本机 profile。不要把当前 profile 复制给别人——
既是使用条款问题,也会互相挤掉登录态。

站点 不登录能做什么(已实测) 免费额度 想解锁深层要什么
风鸟 riskbird 基本不行。首页直接弹「打开微信或风鸟App / 扫一扫登录」遮罩,搜索被挡死 登录即注册,注册送 5 年 SVIP。模糊搜索 500 次/日;企业详情(基础)、企业详情(高阶:股权穿透·司法案件·联系方式)、老板主页 各 50 次/日 查关系(SVIP 限次试用)、数据导出、企业报告 → 按需付费,无会员费
企查查 qcc 能开首页/搜索页,单个企业详情页可读到基础工商字段(名称·统一社会信用代码·法人·成立日期·注册资金·电话/邮箱/官网/地址);但连续几次访问就被 WAF 405 阻断,不可用于批量 登录免费号再加:对外投资、分支机构、变更记录、主要人员、风险条数、经营异常 股权穿透、关联图谱、报告下载、批量导出、无限查询 → 付费会员(VIP 数百元/年量级、SVIP 上千元/年,以官网为准)

取数优先级(使用者自选;脚本只提示、不强制):

顺序 取数源 性质 说明
① 使用者已有的同类账号(企查查 / 天眼查 / 爱企查 / 启信宝 / 风鸟…) 首选 有几个登几个 —— 多源互相交叉验证,穿透结论最稳。你的号你自己授权,凭证只落本机。
② 一个账号都没有 → 建议注册风鸟 推荐兜底 风鸟微信扫码即注册、送 5 年 SVIP(免费)。只是建议,不是门槛。
③ 完全不用这类账号 也可以 穿透取数退回「公开披露」口径(慈善中国年报/审计报告 + 招采公告),第 02 章标注取数边界即可。

> ✅ 没有任何账号是"必需"的。 auth check 只是一份体检报告,退出码恒为 0、不阻断流程:
> 有号就登(有几个登几个、多源交叉),没号就靠公开披露,"不想用"也完全可行。
> 唯一要守住的纪律:没有账号时不要在报告里假装做过工商穿透 —— 如实写"未做穿透 / 未查到"。

四、流水线(分三阶段,共十五个子步骤)

每一步都通过统一入口调用,产出自动作到机构交付包里。

cd "~/.workbuddy/skills/shanchacha/tools"     # ~ 即当前用户主目录(Windows 下形如 %USERPROFILE%)
python shanchacha.py <子命令> [--org "机构全称"]

> 下文出现的 ~\... 均为开发机示例路径,
> 换机器请整体替换为自己的路径;改路径不必动代码 —— 用环境变量覆盖即可:
> SHANCHACHA_ORG_ROOT(机构交付根目录)、SHANCHACHA_PY(python)、
> SHANCHACHA_OUT(底稿输出)、SHANCHACHA_CHROME(Chromium 可执行文件)。

阶段一 · 资料准备

⓪ 从慈善中国自动取原始资料(推荐先做)

python shanchacha.py cszg search --org "中国XX基金会"   # 先看有没有、ID 是多少
python shanchacha.py cszg pull   --org "中国XX基金会"   # 全量:下载 + 逐标签截图 + 文本快照

→ 自动检索机构 → 打开公开详情页 → 下载全部可下载项(年报/年检报告/审计报告/章程),
并逐标签截图(基本信息 15 个子标签 + 6 个主标签)。
产出落在 原始资料\慈善中国-{年报,审计报告,章程,页面截图}\ 与 慈善中国-抓取记录\。
这一步能顶掉大量人工搬运——尤其审计报告与章程,后面 audit/ocr 直接接手。

> ⚠️ 该站有反爬:连续快速访问约 16 次会被整体拦到滑块验证页(slideCaptcha)。
> 工具内置限速(CSZG_PACE,默认 2.5 秒);站点若弹出人机校验,脚本按页面提供的验证流程处理,通过与否取决于站点,不保证成功,失败即转人工。使用者需自行确认符合该站点使用条款;
> 自动失败会转人工(把窗口推前台请你滑一下)。附件下载接口不受拦截影响,已抓到的 rid 仍可取。

① new — 建机构脚手架

python shanchacha.py new --org "中国XX基金会"

→ 之后请用户把审计报告/年报/章程/制度放进 原始资料\。

② audit — PDF 文本层体检(先做这一步)

python shanchacha.py audit --org "中国XX基金会"

→ 报出每个 PDF 是 OK / THIN / SCAN。审计报告里扫描件占比很高,先摸清家底再往下走。

③ ocr — 扫描件 OCR 还原

python shanchacha.py ocr --org "中国XX基金会" --workers 3
python shanchacha.py ocr --org "..." --only 2020     # 只跑指定年份

→ 约 16 秒/页,必须放后台任务跑。逐页缓存支持断点续跑。
产出 02_过程数据/报告文本/<原名>.ocr.txt。OCR 没跑完不要写那些年份的数字。

④ extract — 报告 PDF → 文本

python shanchacha.py extract --org "中国XX基金会"

→ 报出「可直接解析 / OCR 补齐 / 仍需 OCR」。已有 .ocr.txt 的会自动采用 OCR 文本。

⑤ targets + people — 生成取证清单

python shanchacha.py targets --org "中国XX基金会" --top 40
python shanchacha.py people  --org "中国XX基金会"

→ 自动从"大额支付对象/关联方"段落抽主体并分级。
先 --dry 看一遍,自动抽取会混进会计师事务所、银行之类的噪声,人工剔除后再落盘。

阶段二 · 取证

⑥ auth / browse / login — 备好浏览器与账号(穿透前的准备,不阻断)

# 1) 账号体检:看看有哪些号可用(有几个登几个,多源交叉)
python shanchacha.py auth check          # 只体检,永远退出码 0;有号没号都不拦流程
python shanchacha.py auth ensure         # 想登录时:在你当前常驻浏览器里开登录页,等你登
python shanchacha.py auth ensure --site 天眼查 --wait 900   # 也可点名补某站
# 2) 常驻浏览器(必须在后台任务里跑,否则命令一结束浏览器就被回收)
python shanchacha.py browse --serve

> 为什么账号体检要放在这里、而不是报告出完之后:资金链/关联方是第 02 章的主体,
> 穿透结论会反转定性(见第五节第 4 条)。若先出报告再补穿透,第 02 章与结论都要重写,
> 违背"最小改动"铁律。所以在动笔之前先把能取的穿透数据取齐。
>
> 账号怎么关联:用 auth ensure 时脚本只负责打开登录页 + 检测成功 + 落盘,
> 登录动作由你本人完成(扫码/验证码)。凭证只存本机
> ~\.workbuddy\shanchacha\profile 与 login_state.json,不上传任何服务器、不代管密码。
> 跨机构复用,登录一次长期可用,过期了重登一次即可。
>
> 没有账号怎么办:不用卡住 —— 直接往下走,穿透取数退回公开披露口径,
> 但报告第 02 章要如实标注"未做工商穿透 / 未查到",不能拿二手信息补空。

⑦ fetch — 列表页批量(用你已登录的账号)

python shanchacha.py fetch --all        # 或 --p0 / --name "上海均奕"

⑧ deep — 详情页深挖(股东/高管/变更)

python shanchacha.py deep --all

⑨ person — 查老板(本流程的杀手锏)

python shanchacha.py person --org "中国XX基金会"

→ 对治理层(理事/监事)与交易对手自然人逐个查其在营企业,并与供应商名单自动交叉。
这是回答"有没有'人'层面的利益闭环"的唯一手段。

⑩ build — 生成穿透底稿

python shanchacha.py build --org "中国XX基金会"

阶段三 · 成稿交付

⑪ chapters — 列出章节锚点

python shanchacha.py chapters --org "中国XX基金会"

⑫ assemble — 安全替换指定章节

python shanchacha.py assemble --org "中国XX基金会" --chapter 2 --src "...\ch2.html"

→ 自动备份 + 锚点校验。新章节文件必须含 id="s2",否则中止(防误删)。

⑬ export — 落交付包 + 渲染 PDF

python shanchacha.py export --org "中国XX基金会" --v 1

⑭ 同步资料库 — 把 HTML 上传到 WorkBuddy 资料库(一键命令,已固化进技能包)

# 1) 先换票(ToolSearch → DeferExecuteTool,skill_id=library),拿到 token
# 2) 一键同步:建文件夹→首传→记录 node_block_id;改版自动原地更新(URL 不变)
printf '%s' "<token>" | python shanchacha.py sync --org "中国XX基金会" --token-stdin
# 指定源 / 只检查不上传:
python shanchacha.py sync --org "XX" --token-stdin --src "其它报告.html"
python shanchacha.py sync --org "XX" --token-stdin --dry
  • 脚本自动定位资料库 skill(SHANCHACHA_LIBRARY_DIR / CODEBUDDY_SKILL_DIR 或内置默认路径),无需手动拼 LIB 变量。
  • 首次:建分类文件夹「机构调查报告(善查查)」→ 导入 HTML(挂到文件夹下)→ 记录 node_block_id。
  • 改版:用 --node-block-id 原地更新,URL 不变(避免资料库堆出 v1/v2/v3 多个链接)。
  • 回执的 node_block_id / url 写入 02_过程数据/资料库同步.json,并回填 交付说明.md(标记 <!-- LIBRARY_SYNC --> 幂等替换)。
  • 沙箱模式(X_IDE_IS_CLOUDSTUDIO=true)免 token,由 auth-proxy 注入身份;客户端模式必须带 token。
  • 回执给 KS_IMPORT_OK 里的 url。不上传数据库绑定(报告是纯展示静态页)。

> ⚠️ 这一步是固定程序,漏做不会报错——出完报告务必跑一次 sync,否则报告只落在本地交付包、没进资料库(仁泽首跑就因跳过这步、报告没进库)。以后每次 export 出新版,紧接着 sync 一次即可原地更新。

上传前先跑图片外链硬门检查(报告一般全是内联 SVG,<img> 数为 0,直接通过)。

⑮ verify — 完整性自证(出报告前必跑)

python shanchacha.py verify --org "中国XX基金会"          # 三层全跑
python shanchacha.py verify --org "..." --layer 1         # 只查采集完整性

→ 产出 02_过程数据/完整性自证报告.md,退出码 = FAIL 项数。逐条核完再定稿(详见第五节)。

五、如何保证完整、可提取、不遗漏(三层自证)

问题:慈善中国分页、按需 AJAX、弹窗附件、扫描件、格式混杂 —— 任何一环静默失败都会丢信息。
而"丢了没丢"若靠人眼比对,换个人来用必然翻车。所以把这三件事做成机器自证:

层 保证什么 机制(自证锚点) 不过关
① 采集完整性 慈善中国的资料下载齐 逐表对账「页面声明条数 vs 实抓条数」;子标签内容指纹(点了不切换即报警);附件存在性/大小/文件头魔数/哈希;年报 rid↔下载数对账;截图 md5 查重(雷同=没导航成功) verify 报 FAIL,退出码非 0
② 解析覆盖 任何格式都能提取到有效信息 认文件头不认扩展名(pdf/docx/xlsx/doc/xls/zip/html/图片);pdf 文本层弱→自动采用 .ocr.txt;图片走 RapidOCR;旧版 doc/xls 明示"需另存"(不静默丢) 覆盖表标 THIN / IMG? / UNSUPPORTED
③ 分析覆盖 报告不遗漏必查项 固定《必查清单》40 项,报告逐项对照,未出现即提示"确无此项?还是漏了?" 列出未覆盖项

一条命令跑完三层:

python shanchacha.py verify --org "中国XX基金会"              # 三层全跑
python shanchacha.py verify --org "..." --layer 1             # 只查采集完整性
python shanchacha.py verify --org "..." --report <报告.html>   # 附带必查项覆盖

FAIL = 必处理(丢数据/坏文件);WARN = 需人工确认一次。逐条核完再出报告。

三层的落地细节(换人用也不会漏):
- 采集:每张表都记录「页面声明 N 条」,抓完立刻与实抓行数对比。该机构实证:理事会声明 19 条,
旧版跨页去重误删成 18 行,verify 当场报 FAIL(已修:去重改为只在跨页之间做,页内重复保留)。
- 解析:原始资料/ 每个文件都必须在 报告文本/ 有对应 .txt;文本提取覆盖.json 逐份记录
格式/策略/字数/判定。扫描件 PDF 若无 .ocr.txt 就报 pdf:NEED_OCR,绝不假装读到了。
- 分析:references/必查清单.md 是唯一的"分析不遗漏"清单,verify 第③层直接拿它对报告。

> 换人使用的关键:这三层都不依赖账号 —— 采集与解析是公开数据,分析清单是文本比对。
> 别人拿到技能,只要跑 verify,就能自己发现"哪里没下全、哪里没提取到、哪里没分析"。

五.二、评测基线(让 skill 可回归 · v0.9)

v0.7 的 verify 是对单次跑出来的产物做体检;v0.9 的 eval 是对一份已知正确结果的 case 做回归测试。

eval_set/                       ← ⚠️ 本机回归用,**不随分发包走**(含真实机构数据)
├── base-a-2024.json          ← 基线①:中等非公募(docx审计+PDF年报)→ 19/19+3/3+2/2 = 100
├── base-b-2025.json          ← 基线②:中小公募(全PDF年报·无独立审计)→ 12/12+1/1+1/1 = 100
├── base-c-2025.json          ← 基线③:亿级公募(扫描PDF+cszg页面文本)→ 16/16+3/3+2/2 = 100
└── *.report.html             ← 各 case 上次跑的报告(带颜色、绿黄红)

> ⚠️ eval_set/ 不进分发包。 这些基线里是真实机构的名称、统一社会信用代码与理事监事
> 信息,属于尽调结论,不能随公开分发包外发(sc_pack.py 已把 eval_set 列入 SKIP_DIRS)。
> 别人装完之后要跑回归,请按 references/eval_baseline_模板.md 用自己的机构自建基线。

思路:把已知正确结果的 case 反向提炼成"必须出现的关键词",每次 skill 迭代完跑一遍 eval,看分有没有掉。
三个 case 特意覆盖三种量级与三种年报形态,确保任何迭代改动都能在差异形态上回归:docx 审计报告路径 / 全 PDF 年报(无审计)路径 / 扫描件PDF + cszg 页面文本路径。

核心产物:
- tools/sc_eval.py —— 跑分引擎(build_corpus 含四层:顶层产物 / 报告文本 / 工商抓取 / cszg 页面文本)
- references/eval_baseline_模板.md —— schema 手册
- eval_set/base-a-2024.json / base-b-2025.json / base-c-2025.json —— 三个基线

支持 4 类测试:
| 类型 | 用途 |
|---|---|
| expectations (must_hit) | 一项里的关键词全部命中 → HIT;缺失 → MISS;部分命中 → PARTIAL |
| red_flags | 同上,但权重更高(×0.3) |
| negative_tests.expect_keyword_in_json | 产物文件里必须有 |
| negative_tests.forbidden_keyword | 整库都不该出现 |
| negative_tests.forbidden_pair | 两词必须不同段出现(专测"误识别 X 为 Y") |

进入版本迭代期后必做:每次改完一个工具,跑一次 shanchacha.py eval 看分变化。
若总分掉 ≥3 分,必须找出掉分项(看 <case_id>.report.html 的 MISS 项)再发版。

六、我要做的判断(不只跑脚本)

脚本只负责取数与搬运,报告质量取决于这些判断:

  1. 报告正文必须我写(流水线不代写)。先读 references/报告规范.md 定骨架,
    第 02 章按"五层"(流入/沉淀/流出/关联节点/人脉交叉)组织,配一张 SVG 资金链网络图。
    关键认知:本 skill 没有任何"自动生成全部七章报告"的命令。chapters 只列锚点、
    assemble 只做单章锚点替换(假设已有含 s1~s6 锚点的基础报告 HTML)、export 只做
    "复制 HTML + 渲染 PDF"。所以七章报告由我(AI)手作:按 报告规范.md 写一个完整的
    报告.html(含 <h2 id="s0">~<h2 id="s6"> 全部锚点、CSS、目录、SVG 资金链图、风险表),
    再用 shanchacha.py export --org X --src 报告.html --v 1 渲染交付。
    assemble 只在"只改某一章、其他章不动"的最小改动场景用,不是生成入口。
  2. 每个数字都要能溯源。转引、倒推、估算的必须标注来源;查不到写"未查到"。
  3. 风险标记按 references/风险规则.md 打,输出"主体 | 风险项 | 等级 | 依据"。
    规则是提示不是结论,措辞用"建议/需关注/高亮预警"。
  4. 穿透后要回头改定性。今天验证过的典型:
    - 名义上的"关联闭环"在股权层被证伪(经销商 = 商业关系,不是股权关联)→ 必须明写"股权层不成立"
    - 公司名含知名集团但实为自然人持股 → 标为"名称巧合",避免误导
    - 原本存疑的供应商其实是某大集团全资子公司且有资质 → 降级
  5. 区分"立案/质疑"与"认定违规"。供应商被立案 ≠ 基金会违规。
    属地部门已澄清的指控必须标注"已澄清",不能当结论用。
  6. 保留原目录结构。用户明确要求:只补充/更新指定章节,
    其他章节"因为新查询的关联和交易等必须修改时再修改"——最小改动。
  7. 终版纪律(硬约束,2026-09-17 立):报告 HTML 每一版都必须是可直接交付的成品。
    正文禁止出现任何 vN —— 唯一例外是封面/页脚的 报告版本 vN。
    (v2 已用年报核对)/v1 曾写/v3 补入/本版/本轮/待补入 vN/以 vN 为准
    一律不许写。
    ⚠️ 修订/更正 不在一刀切禁止之列 ——「章程历次修订记录」「核实并更正」是正当业务用语,
    只有自述修订(特此更正/予以更正/勘误)才算违规。
    数据拿不到时写成结论(「该字段公开渠道未披露」),不是写成进度(「本轮未取得」)。
    过程性说明的唯一归宿是 交付说明.md。详见 references/报告规范.md 第七章。
    export 在拷贝前跑 check_final_edition,命中即 exit 2 拒绝出包(--force 才放行);
    同一环节还校验 01_底稿/ 必须非空,并把旧版自动移入 02_过程数据/版本备份/。
    交付包根目录只保留当前版的报告 html/pdf。

  8. 每个"成功"都必须能指到证据,不能只指到"我执行过了"(硬约束,2026-09-17 立)。
    整条流水线出现过的 bug,根因几乎都是同一个:成功信号不是从证据得出,而是从"这个动作我做过"推出。
    具体形态与修法:
    - 退出码:子脚本"零命中/空产出"必须返回非零,入口必须原样透传(raise SystemExit(main() or 0))。
    少任何一环,"硬阻断"就退化成假绿灯 —— 实测同一份脏报告,直调 sc_export.py 得 exit 2,
    走总入口却得 exit 0。sc_pack.py 已把这变成打包前的固定检查(凡有 __main__ 却无
    任何非零退出路径的脚本即 FAIL),不靠人记得。
    - 空产出不许落盘、不许报 OK:0 关键人 / 0 家主体 / 0 条关联方,都不算"跑完了"。
    打印 [OK] …(共 0 人)、[√] 已保存 都是错的 —— 下游会把空清单当有效输入。
    - 判据要件名,不要件数:check_digest 一开始只查"有没有 .xlsx",于是空表也算通过;
    改成"底稿必须非空"才拦得住。
    - "我扫过了"不等于"没命中":体检/校验必须把"扫描口径 + 命中数"打出来,否则会出现
    "实测正文含 17 处版本痕迹却报 0 残留"这种谎报(sc_export.py 的 BANNED 清单因此改为
    从 references/报告规范.md 的 ``banned-regex 块**单一来源**读取,两边不一致即告警)。 - **文档与代码只有一份真相**:默认值、禁用规则、依赖清单、界面文案,改了代码就必须同步改文档 (本轮实测踩到两处:SKILL.md 的默认值、README 的export示例,都还在说上一版的话)。 - **体检不能满屏假阳性**:一个"每次都报一堆不需要管的东西"的体检,只会被--force` 掉,
    然后连真问题一起放过。规则要分级(阻断 / 待确认),且必须能区分代码面与文档面。
    自检话术:说"做完了"之前,先能指着证据说出——退出码是几、断言是什么、文件内容长什么样、
    外部回执写了什么。指不出来,就是没做完。

七、目录规范(不得随意变)

<ORG_ROOT>\<机构全称>\
├── 原始资料\                            用户投放处
└── <机构全称>调查报告<YYYY年M月D日>\      交付包
    ├── <机构全称>_机构调查报告_v<N>.html
    ├── <机构全称>_机构调查报告_v<N>.pdf
    ├── 交付说明.md
    ├── 01_底稿\
    ├── 02_过程数据\{工商抓取,报告文本,章节源文件,版本备份}\
    └── 03_脚本归档\

所有交付物都落在这个机构文件夹里,不落桌面。

八、踩过的坑(照抄别重犯)

坑 正确做法
用 find('章节标题') 定位章节 → 命中目录,删掉半份报告 只用 <h2 id="sN"> 锚点
浏览器在普通命令里启动,命令一结束就被回收 必须跑在后台任务
本地 9222/9333 请求被环境代理拦成 502 代码里已清空代理变量;curl 加 --noproxy '*'
360 浏览器有自我保护,会反复退出 不用它,用 ms-playwright 自带 Chromium
读 cookie 库被文件独占锁死 不读它,用持久化 profile 复用登录态
详情页股东明细默认折叠,解析为空 用 parse_deep.slice_section 按锚点切段
openpyxl 读表 r[0] 是 int(年份列) 别用 isinstance(r[0], str) 过滤
中文路径在 bash 双引号里被截断 用 /c/... 形式或 heredoc
误把上市公司子公司标为"微型企业" 规模标签按参保人数算,先确认是否为集团法人主体
onnxruntime 装最新版 → OCR 全挂 本机必须锁 1.20.1;1.22+ 报 DLL load failed ... 初始化例程失败,不是缺 VC 运行库
OCR 跑太慢(单页 15–20 秒) 关 use_angle_cls、rec_batch_num=16、3 worker + 每进程 OMP_NUM_THREADS=1;工具已内置
扫描件抽不出字,就当"该年未披露" 抽不出 ≠ 没披露。同年材料要交叉——审计报告读不了就用《专项信息审核报告》《年度工作报告》补。某文体类大型公募基金会 2019 年就是这么被误判的
关键数字用公开转述凑 一律追到原件。v2 报告 2020 年那行来自二手,OCR 一通就现形
OCR 结论只写进报告、不落盘 还原全文必须留在交付包 报告文本/*.ocr.txt,让用户能逐字复核
原始 PDF 是 0 字节/损坏,OCR 跑出空文件 audit 已加 EMPTY / ERR 判定;遇到就如实告诉用户"这份文件需重新下载",不要当成"该年无内容"。某文体类大型公募基金会《2016 年工作报告》就是 0 字节
报告改版在资料库堆出多个链接 改版必须用 import_html.py --node-block-id <上次回执的 node_block_id> 原地更新;首次上传后把该 id 记进 交付说明.md
慈善中国连续快速访问约 16 次 → 整站拦到滑块 sc_cszg.py 内置限速(CSZG_PACE 默认 2.5s)+ 人机校验处理(不保证成功);附件接口 /mz/upload/pub/load/resource_download.html 不受拦截影响,已抓到的 rid 随时可补下
过了滑块却还在验证页 → 取不到内容 直接在页面上下文调 slideCaptchaCheck 只会解锁会话,不会自动跳转;过关后必须重新 goto 目标页
详情页内容"抽不到" 主标签内容是按需 AJAX 加载的,必须逐标签即时抓取;初始 HTML 只有空壳
用"个人中心/工作台"判风鸟是否登录 → 永远判未登录 风鸟登录后头部实际是 积分: / 余额:0.00元 / 导出记录 / 手机号;判定用正向正则(auth 已内置),别看"登录"二字——公告里到处都是
凭 cookie 判登录 → 假阳性/假阴性 cookie 名不可靠(企查查风控 cookie _c_WBKFRo 会被误当票据,QCCSESSID 匿名也有)。以页面文案为准,cookie 只作辅助;session.py 已加噪声名单
报告写完才发现要补穿透 → 第 02 章返工 动笔前先 auth check 把能取的穿透数据取齐;穿透会反转定性,不能事后补。没账号就退公开披露,但必须在第 02 章标注边界
把风鸟当成"必需"、没登就卡住流程 没有任何账号是必需的。auth check 只体检(退出码恒 0);有号登号、没号退公开披露、"不想用"也行
只穿透交易对手、漏穿透"主体自己" ★ 必修。被执行人/限制高消费/对外投资/招投标/曾用名这些只挂在主体自身。sc_targets.py 已内置"自我"目标(role=self、P0、置首),别删。某北京中医药类基金会就因漏抓主体,漏掉"限制高消费 + 对外投资 49% 未披露"
机构"成立年份"与"慈善组织认定年份"混淆 慈善中国「基本信息」同时有 成立时间 与 慈善组织认定登记日期,两者常差若干年(该机构:成立 2006、认定 2016)。写沿革要分清;另注意"曾用名"(工商字段)——该机构曾用名"北京市某中医药基金会"
同城异名机构张冠李戴 用户口述的"曾用名"要回工商/民政核:核对统一社会信用代码。某北京中医药类基金会((信用代码从略),2006) ≠ 某北京基金会((信用代码从略),2016,曾用名依次 北京(曾用名甲)慈善基金会 → 北京(曾用名乙)公益基金会 → 某北京基金会)。代码不同 = 两家法人;用户在慈善中国上看到"(曾用名甲)→(曾用名乙)→某北京基金会"的年报序列,属后者,不是本机构
慈善中国列表页只读第 1 页,多页表格悄悄丢数据 ★ 必修(v0.6)。理事会成员 19 条/3 页、专项基金 21 条/3 页、本组织制度 17 条/3 页——harvest() 原只抓第 1 页 8 行。已加通用翻页 read_all_pages()(识别「第X页/共Y页」→ 循环点「下一页」→ 按 行内容+rid 去重合并),文本快照同步补「后续页」段。看到「第1页/共N页」必须翻完
年报 docx 里"业务活动表"的数字抽不到(只出"收入合计 11") 表格跨页/合并单元格会让一次抽取错位。必须二次定位:搜 其中:捐赠收入 那行的 6 个数字(上年非限定/上年限定/上年合计/本年非限定/本年限定/本年合计)。2025 年"捐赠收入=0"就是二次挖出来的
年报只上架近 6 年,就以为机构只存在 6 年 慈善中国部分机构只挂 2020 年起年报(如该机构),但上海站、民政部站实测均上架 2016 起(某上海公募基金会 2016–2025、某全国性公募基金会 2016–2025)——"只挂 2020 起"非铁律。边界按实际抓取结果写:哪年有哪年没有,分别标注,不要默认早年无数据 = 无业务
年报列表里"点击查看"型和"点击下载"型混排 v0.11 已修。早年多是"点击下载"(带 onclick(resourceid),可直下);近年(约 2019 起)多是"点击查看"(普通 href + target=_blank,附件 id 只挂在子页)。旧版 parse_rows 只认 a[onclick] → 这类行 rid 为空 → 整条跳过(红榜 RF02,某全国性公募基金会 2019–2025 全漏)。修法:①「点击下载」型走 onclick="Download('rid')" → 直连 resource_download.html?resourceid=;②「点击查看」型是 onclick="window.open('/biz/.../csmhdOpenattach.html?aaex3001=<32位>')",年报本体是 zwxt 在线表单 iframe(网页、非 PDF,下不下来),可下载的是两个附件 —— fileId 在页面 JS 变量 var shenji="…"(审计报告)/var zhuanxiang="…"(专项信息审核报告);③ 换直链必须在页面内 fetch(resolve_file_url),ctx.request.post 直打会 500;④ 子页会被滑块拦 → 导航走 goto();⑤ 别扫 onclick 的 Download(...) —— 该页「承诺书在线下载」的 Download('ff80…') 会被误当附件抓下。函数链:parse_rows 抓 view → download_from_detail → viewer_file_ids/resolve_file_url/download_file_url。实证:某全国性公募基金会 2025 审计报告 5.6MB 已取到
用 ctx.request 直打接口 500,但页面里同样请求能过 有些接口只认页面上下文发出的请求:ctx.request.post 即便 payload/headers 与页面自己的 XHR 完全一致也返回 500。改用 page.evaluate 里的 fetch 拿到结果(此处=换出直链),再拿带 accesskey 的直链用 ctx.request.get 下文件(直链不受此限)。实证:zwxt jmgc-charity-api/public/file/getFileUrl
PDF 年报(慈善中国下载的年度工作报告)是左右两栏 8 列表格 pdfplumber 把右栏行号前缀错位进左栏数字(如"货币资金 期末数"被识成 6143,904,156.),数字不可信。只有现金流量表(3 列:项目/行次/金额)结构稳定可干净抽。sc_fin.parse_pdf 据此只把现金表入矩阵,资产负债/业务活动表落 pdf_raw 并标"待 OCR/人工复核"
关键人清单只扫 报告文本/工商,漏掉 cszg 页面文本里的理事/监事 扫描件 PDF 机构(某全国性公募基金会)报告文本为空 → 名单为 0。sc_people 已加 cszg 回退:从 理事会成员/监事成员/执行机构成员 页面快照 TSV 抽 姓名+职务,扫描件机构也能出清单
关联交易(重大事件·关联交易情况)以为"需登录态"才能抓 实测 cszg 自动采集已能抓到该子栏(某全国性公募基金会 365 条、结构化 199 条 重大交易及资金往来)。sc_relate_extract.harvest_cszg_related_tx 据此产出「关联交易全集」,纠正了旧判断
_year_from_name 用 re.search(r"20\d{2}") 当年份捕获 无捕获组 → m.group(1) 抛 IndexError;必须写成 (20\d{2})。sc_fin 已修:优先"YYYY年度">"YYYY年">首个20xx
以为有"自动生成全部七章报告"的命令 ★ 必修(v0.11)。流水线到 export 只渲染 PDF;assemble 只换单章。七章报告必须 AI 手作 报告.html(含 s0~s6 锚点)再 export。别等一个命令吐出整本报告——没有。
某上海公募基金会 cszg「审计报告」栏只有一份《严正声明》 某上海公募基金会该栏仅 1.7MB 声明文件,非三表、非审计意见;财务章只能量化"现金流量表"(8 年可干净抽),资产负债/业务活动表两栏 8 列 pdfplumber 错位未进矩阵。公开募捐情况丢行 323/531、慈善项目丢 8/216——属取数边界,eval 红榜已标。报告据此标 R-审计/N1/G2/G5/W1
某全国性公募基金会 cszg「审计报告」栏 0 文件 + 年报扫描件/点击查看型 某全国性公募基金会该栏0 文件;2016-2018 年报为纯扫描件(需 OCR,本机 OCR 曾跑 19+ 分钟未出)、2019-2025 为"点击查看"型未自动下 → 财务三表 0 年不可量化,财务章红框标边界。但关联交易 199 条(资金链主证)、关联方 112、关键人 24 来自 cszg 页面文本,足以支撑资金链章。风险 R-审计(高)/G2/G5/W1
verify / export 不传 --report / --src 会读旧版 HTML 不带 --report 时 verify 第③层默认读 P["report_html"],而该值指向交付包根旧 vN.html(即上次 export 复制出去的版本),不是 02_过程数据/报告.html(AI 手作的最新版)。结果:名称沿革/资金链/项目状态等必查项会"未命中"被误报 WARN/漏检。同理 export 不带 --src 会用旧源渲染。→ 重跑 verify、出新版务必 --report / --src 显式指向 02_过程数据/报告.html。仁泽实证:补抓与两处 Edit 后,旧 v1 漏检、显式指定最新源后第③层 FAIL 0·WARN 0。
慈善项目 cszg 原采集分页缺口须回写采集记录 cszg 对"慈善项目有关情况"因分页只抓到约 48 行(平台声明 113),verify 第①层会报 FAIL(声明≠实抓)。二次补抓(_scrape_projects_*.py 逐页翻取 goPage)拿到全量 113 条后,须把结果回写 慈善中国-抓取记录/org.json 的 tables.慈善项目有关情况(保留前 10 行机构信息、追加 113 个项目行,每行 {"tds":[编号,名称,简介,"查看详细"],"rid":"","view":"","href":""}),否则 verify 持续 FAIL。回写是诚实补全(数据已全),非编造。仁泽实证:回写后 声明 113 = 实抓 113 → 第①层 OK。
★ 有头 Chromium 153 下 connect_over_cdp 永久挂起(2026-09-16 实测) Chrome 153 有头模式会挂出 chrome://webui-toolbar.top-chrome、chrome://omnibox-popup 等 browser_ui 类型 target,playwright connect_over_cdp 在 attach 这些 target 时永久挂起(超时 180s 也出不来),表现为 browse 起来了、/json/version 有响应,但 cszg search 卡死。<br>修法:browser.py 已加 --headless=new 开关(SHANCHACHA_HEADLESS=1),headless 无此类 target,连接秒通。<br>用法:批量取数一律 SHANCHACHA_HEADLESS=1;需要人工扫码登录(auth ensure)时才用有头模式(此时不要用 playwright 连 CDP,改用 session.py 独立窗口)。
风鸟不可达 / 爱企查滑块 → 穿透取数怎么退 2026-09-16 实测:riskbird.com 直连与代理均返回 000(站点不可达),sc_fetch_list/deep 全量报"输入失败";改走爱企查 aiqicha.baidu.com 会触发百度滑块验证码(wappass.baidu.com/static/captcha/tuxing_v2.html)。<br>纪律:不要把"抓取失败"当成"查无此企业"。退到公开检索(WebSearch + 聚合站页面)时,报告必须标注"公开检索、非登记原件、不可对外引证";股东穿透与人脉交叉做不到就如实写"未做",禁止用二手信息冒充穿透结论。恢复路径:风鸟可达后重跑 fetch/deep/person;或让用户在有头浏览器里过一次爱企查滑块再抓。
Git Bash 下给 Windows python 传路径要用 C:/... 形式 Git Bash 的 /c/ 挂载路径直接传给 Windows python 会 No such file or directory(pip install -r 踩到)。另外本机 Git Bash 初始 PATH 缺 /usr/bin,ls/sleep 会报 command not found,先 export PATH=&quot;/usr/bin:/bin:$PATH&quot;。
资料库同步回执分隔符不同(⑭ sync 必看) 资料库 skill 两个回执格式不一致:KS_FOLDER_CREATE\t&lt;id&gt;\tfolder\t&lt;url&gt;(制表符分隔),而 KS_IMPORT_OK &lt;JSON&gt;(空格分隔,JSON 紧跟前缀后)。sc_sync_library.py 的 parse_kv 必须按"前缀后的剩余串"取 payload,不能一律按 \t 切——否则导入回执的 node_block_id/url 解析成空,脚本误判成功、却把空链接写进 交付说明.md,且真实页面节点已建好(改版时若元数据为空会再建重复页)。仁泽首跑即踩此坑:页面节点实为 ydgXfZGvNsFQSFGVQdHtWp、链接 https://www.workbuddy.cn/space/d/ydgXfZGvNsFQSFGVQdHtWp,因解析空而漏记;已修 parse_kv + _patch_delivery_md 幂等(先删正文所有「资料库链接」段再追加一份)。

九、参考文件

  • references/工作流.md — 十四个子步骤全量命令与说明
  • references/报告规范.md — 七章骨架、第 02 章五层结构、HTML 技术约定、写作纪律(含 ```banned-regex 单一来源)
  • references/风险规则.md — 单主体 R1—R9 / 交易结构 N1—N8 / 治理合规 G1—G8
  • references/必查清单.md — 分析覆盖必查项(verify 第③层据此扫报告查漏)
  • references/eval_baseline_模板.md — 评测基线 schema 手册(回归测试用)
  • references/打包与分发.md — 打包上传 / 发给同行的维护者须知(使用者可跳过)
  • templates/交付说明模板.md — 交付包里的说明文档模板

十、迭代

这个技能会持续演进。用户补充新机构材料后,如果发现:
- 新的风险规则 → 追加到 references/风险规则.md
- 新的数据源或更优取数路径 → 更新 references/工作流.md 与 tools/
- 新的报告结构偏好 → 更新 references/报告规范.md

遇到规则误判(如把集团子公司标成小微企业)时,当场修规则文件,不要只在对话里说。

十一、发版

本包只含当前有效规则,不含变更历史 —— 变更史属维护者资料,写在包外。

发版须同步两处:① 顶部 version: 字段(SemVer X.Y.Z,禁止写 vX.Y);
② 归档文件夹 / zip 名带 vX.Y.Z。

十二、打包与分发

见 references/打包与分发.md(面向要把本 skill 打包上传 / 发给同行的维护者,使用者可跳过)。

一条命令跑完全流程:python shanchacha.py pack —— 建快照 → 分发前体检 → 打 zip → 开箱模拟,
版本号自动读 frontmatter。不要手工打包。

常见问题

5 问
答案由本站依据条目字段整理
善查查怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_86f2c8aa/shanchacha-skill。安装方式为未标注。装完刷新技能列表或重开客户端。

善查查支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

善查查权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

善查查收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

善查查用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。