给审计人员使用的对话式关联方发现与核查工具。不会写程序也能用:把技能装好,在对话里说出被审计单位名称,后面的环境检查、登录检查、资料选择、查询、候选扩展和报告生成都交给智能助手。
本项目包含三部分,各自有独立的许可证:
以下文件是 CPA-Q(quanfanpro-code) 的原创作品,采用 GNU AGPL-3.0 发布:
SKILL.md— 核心工作流流程scripts/related_party_workflow.py— 工作流编排scripts/related_party_check.py— 核查报告引擎scripts/discover_scope.py— 候选范围控制scripts/discovery.py— 主动发现scripts/sync_upstream.py— 上游同步工具scripts/validate_bundle.py— 完整性校验scripts/tests/— 测试文件references/rules.md、cases.md、user-flow.md、dimensions.md— 参考文档agents/openai.yaml、test-prompts.jsonREADME.md、NOTICE
简单说:你可以自由使用和修改,但如果把你的修改版发布出去(包括挂网上给别人用),必须同样公开源代码。
scripts/cicpa/client.py、auth.py、exporter.py 改编自 nigo81/nigo-skills/cicpa-company-query(MIT 协议)。
上游作者 nigo(涂佳兵)。这部分保留 MIT 协议,你可以随便用,只要保留原作者版权。
scripts/cicpa/edge_bridge.py、opencli_setup.py、read_browser_cookies.ps1 改编自 jackwener/OpenCLI(Apache-2.0 协议)。
这部分保留 Apache-2.0 协议,你可以随便用,但不能拿我的专利告我。
见 NOTICE 和 references/SOURCES.json。
related-party-identification/
├── SKILL.md ← 核心工作流(智能助手读这个知道怎么干活)
├── README.md ← 就是当前这个文件
├── NOTICE ← 第三方来源和改造说明
├── requirements.txt ← 需要安装的 Python 依赖
├── test-prompts.json ← 用来自动测试的对话样例
├── agents/
│ └── openai.yaml ← 智能助手的配置
├── scripts/
│ ├── related_party_workflow.py ← 主工作流编排
│ ├── related_party_check.py ← 核查报告引擎
│ ├── discover_scope.py ← 候选范围控制
│ ├── discovery.py ← 主动发现
│ ├── sync_upstream.py ← 上游同步维护工具
│ ├── validate_bundle.py ← 完整性校验
│ ├── cicpa/
│ │ ├── client.py ← 注协查询客户端(MIT)
│ │ ├── auth.py ← 注协登录凭据管理(MIT)
│ │ ├── exporter.py ← 20 维批量及连续失败转逐项导出器(MIT)
│ │ ├── edge_bridge.py ← Edge/Chrome 登录桥接(Apache-2.0)
│ │ ├── opencli_setup.py ← OpenCLI 扩展安装引导(Apache-2.0)
│ │ └── read_browser_cookies.ps1 ← Cookie 读取(Apache-2.0)
│ └── tests/ ← 自动化测试
├── references/
│ ├── SOURCES.json ← 上游来源追踪记录
│ ├── rules.md ← 七类有效核查证据详解
│ ├── cases.md ← 处罚案例库
│ ├── user-flow.md ← 非技术用户逐句引导
│ └── dimensions.md ← 注协字段映射
本工具是一个 纯本地的 AI 技能包:
- ❌ 不上传你的代码或数据到任何服务器
- ❌ 不保存你的注协账号密码
- ❌ 登录态仅保存在当前 Windows 用户本地加密存储
- ❌ 日志和报告中不输出任何登录内容
⚠️ 审计底稿和核查报告请自行妥善保管
- 把整个 related-party-identification 文件夹或它的压缩包交给 WorkBuddy、Codex 等智能助手。
- 对智能助手说:"请帮我安装这个关联方识别技能,并确认安装后能够识别。"
- 新开一个对话,说:"请使用关联方识别与核查技能,查一下某某公司可能有哪些关联方。"
安装完成后,在对话里说下面这句话检查:
只检查 related-party-identification 技能是否已经安装生效,不要开始查询,不触发浏览器。
或者更简单:
检查技能是否装好。
出现以下结果,才算安装成功:
- 智能助手能说出技能名称;
- 智能助手知道它可以从一个被审计单位名称主动发现候选;
- 智能助手知道它也能核查已有名单或已有注协导出数据;
- 智能助手能读取技能文件夹中的随附工具和参考资料;
- WorkBuddy 的"已安装"页面中,该技能处于启用状态。
如果旧对话仍然看不到技能,先新开一个对话。仍然看不到时,再保存手头工作后由您自己刷新应用,不要让智能助手擅自关闭正在运行的任务。
下面这些说法都可以:
查一下四川某某科技有限公司可能有哪些关联方。
帮我发现这个被审计单位可能遗漏的关联方。
帮我查这家公司和客户、供应商之间有没有股权、人员、地址或电话方面的关系。
我已经有注协完整导出数据了,直接帮我做离线关联方核查。
技能安装正确时,智能助手会根据这些需求自动选择本技能。
如果电脑里装了很多技能,建议在第一句话中直接写明:
请使用 related-party-identification,也就是"关联方识别与核查"技能,查一下四川某某科技有限公司可能有哪些关联方。
在支持技能菜单的 WorkBuddy 或企业版中:
- 在对话输入框中先输入一个斜杠"/"。
- 从弹出的技能列表里选择"关联方识别与核查"。
- 继续输入您的具体需求。
即使不使用斜杠菜单,直接在对话中点名 related-party-identification 也可以。
在对话开头写:
$related-party-identification
然后紧接着写您的需求,例如:
$related-party-identification 请查一下四川某某科技有限公司可能有哪些关联方。
如果输入斜杠后能看到技能菜单,就选择 related-party-identification;如果列表中没有显示,直接在对话中写明"请使用 related-party-identification 技能"即可。
请使用 related-party-identification,也就是"关联方识别与核查"技能。被审计单位是四川某某科技有限公司。请先确认工商登记全称,再主动发现可能需要核查的关联方候选。先按默认两层执行,超过两层或候选超过一百家时再让我确认。需要登录时按技能的引导打开我平时使用的浏览器。
请使用 related-party-identification,也就是"关联方识别与核查"技能。被审计单位是四川某某科技有限公司。我已经准备好客户和供应商名单,请打开 Windows 文件选择窗口让我点选。本次只核查被审计单位和名单中的公司,不要自行扩大名单。
请使用 related-party-identification,也就是"关联方识别与核查"技能。我已经有注协完整导出数据,请打开 Windows 文件夹选择窗口让我点选解压后的数据目录。直接离线核查,不要登录,也不要联网。请在报告中说明实际覆盖的数据范围和缺失项目。
整个流程可以理解为:
您的对话需求 → 判断使用哪种入口 → 检查电脑环境 → 检查现有登录 → 取得或读取资料 → 扩展候选并控制范围 → 比对关系证据 → 生成报告 → 说明证据与限制
下面把每一步讲清楚。
智能助手先判断您属于以下哪一种情况:
- 只有一个被审计单位名称;
- 已经有若干公司名称;
- 已经有注协完整导出数据。
如果您已经把信息说清楚,它不会重复问。实在判断不出来时,也只会问一个简单问题。
智能助手会检查这台 Windows 电脑是否具备运行条件。
环境齐全时,它会直接继续,不向您展示一堆技术信息。
缺少必要组件时,它会先说明要装什么、装到哪里、有什么影响,并征得您的同意。建议把所需组件放在本技能自己的独立环境里,不影响您原有的软件。
每次调用都会先检查当前登录是否还能使用:
- 登录有效:直接查询,不让您重复登录;
- 登录失效:打开您平时使用的浏览器,请您正常登录;
- 已有数据离线核查:完全跳过登录和联网。
技能不会因为"上次登录过"就盲目认为一直有效,而是每次实际检查。
推荐顺序是:
- Firefox,步骤最少;
- Edge 或 Chrome,通过 OpenCLI 浏览器扩展连接。
技能使用当前 Windows 用户平时的浏览器和原有个人配置。浏览器里已经保存的用户名和密码可以照常使用,不会另开一个没有个性化设置的空白浏览器。
只有被审计单位名称时,技能先取得被审计单位自身的完整信息,再寻找候选。
已有名单时,只查询被审计单位和名单中的公司,不会擅自把范围越扩越大。
已有导出数据时,只读取所选目录,不重新访问外部网站。
主动发现默认按以下规则开始:
- 优先扩展持股比例不低于百分之二十的关系;
- 初始只查两层;
- 超过两层前必须让您确认;
- 最多查到五层;
- 候选超过一百家时必须暂停,让您决定收窄还是继续。
技能会保存每家候选是从哪里发现的,以及它与被审计单位之间经过了什么路径。
候选只是"值得进一步核查的对象",不等于已经认定为关联方。
本技能默认外部网站可能存在访问频率限制,因此所有查询按顺序执行,不会同时大量请求。
默认节奏是:
- 每分钟最多十五次;
- 每小时最多三百次;
- 普通查询之间随机等待两到五秒;
- 等待导出结果时随机间隔十到二十秒再查看一次。
这些数字是本技能主动采用的保守限制,不是中国注册会计师协会公布的官方限额。
因此,候选较多时运行会比较慢。这通常不是卡死,而是在按计划等待。智能助手应当持续告诉您当前进度,不需要您反复点击网页。
技能会从多个方向寻找关系,包括:
- 工商登记信息是否高度相似;
- 法定代表人、董事、监事、经理等关键人员是否交叉;
- 客户和供应商画像是否异常重合;
- 股权、投资和控制链条是否相连;
- 历史变更中是否留下共同痕迹;
- 担保、资金链等信息是否提示联系;
- 地址、电话、邮箱、网站和无形资产等是否共用。
它会区分:
- 直接而强的关系证据;
- 需要进一步核实的可疑信号;
- 只是为了扩大核查范围的候选线索;
- 数据缺失造成的无法判断。
公开客户关系和公开供应商关系只用于把交易对手加入候选范围。即使客户、供应商表的表头写着“关联方名称”,其中的公司名称也不能单独形成风险证据,必须继续核对工商、人员、股权等有效证据。
完成后,智能助手会先用大白话告诉您:
- 本次到底查了哪些公司;
- 哪些关系证据风险较高;
- 哪些只是可疑信号;
- 哪些数据缺失或查询失败;
- 下一步建议做哪些审计程序。
随后交付多工作表电子表格报告。
Firefox 路线最简单。
- 智能助手发现登录失效。
- 它按平时的方式打开您的 Firefox。
- 您在中国注册会计师协会行业执业知识库正常登录。
- 浏览器保存的用户名和密码可以照常使用。
- 技能检测到登录成功后,继续刚才的任务。
如果电脑没有 Firefox,智能助手可以打开 Mozilla Firefox 官方下载页面。安装完成后继续原任务即可。
Edge 和 Chrome 需要一次性安装 OpenCLI 浏览器扩展。OpenCLI 在这里可以简单理解为"让技能连接您平时浏览器的桥梁",不需要学习它的技术原理。
首次安装时:
- 智能助手先问您是否同意准备扩展。
- 您同意后,它从 OpenCLI 的 Gitee 国内镜像下载固定版本并完成校验。
- 它打开浏览器扩展管理页和已经准备好的扩展文件夹。
- 您打开扩展管理页右侧的"开发人员模式"。
- 您点击"加载解压缩的扩展"。
- 您在已经打开的文件夹窗口中选中扩展文件夹。
- 安装完成后回复"装好了"。
- 智能助手重新检查扩展,然后打开您平时使用的 Edge 或 Chrome。
- 您正常登录行业执业知识库,技能随后继续任务。
扩展装好以后,下一次不需要重复安装。正常使用时也不需要点击扩展图标,更不需要停留在扩展弹窗页面。
智能助手会根据页面表现分别处理:
- 账号无权限:请确认该账号能否访问行业执业知识库企业查询;
- 验证码不通过:在当前官方页面重新获取验证码;
- 页面打不开或超时:保留任务状态,稍后重试;
- 页面看起来已登录但检查仍失败:重新打开官方登录页完成一次登录;
- 任务中途登录失效:保存当前进度,重新登录后从断点继续。
您不需要把密码或浏览器内部数据复制到对话里。
最好提供被审计单位的工商登记全称。例如,"某某科技有限公司"比"某某科技"更容易准确匹配。
如果查到多个相近主体,智能助手会展示地区、登记状态和统一社会信用代码末几位,让您确认正确公司。
名单里至少应有一列公司名称。
如果表中同时出现"客户名称""开票单位""对方户名"等多个可能列,智能助手会让您选择,不会自行猜测。
请使用整理好的公司名单,不要直接选择总账、明细账或银行流水。
先把下载的压缩包解压,再选择包含注协导出文件的数据目录。
如果目录缺少主要人员、股东等内容,仍然可以生成报告,但报告会明确标注数据缺口,不能把"没有命中"理解成"没有关系"。
<公司名称>_关联方核查报告.xlsx;- 汇总判断;
- 各维度原始证据;
- 本次任务范围;
- 输入数据概览;
- 数据质量和限制;
- 建议进一步实施的审计程序。
<公司名称>_主动发现候选清单.xlsx;<公司名称>_注协原始导出文件夹,与核查报告放在同一个交付目录;- 每家候选的发现原因;
- 候选与被审计单位之间的发现路径;
- 本次停止在哪一层;
- 哪些候选因为范围限制没有继续扩展。
主动发现时,只有被审计单位本身保证取得固定 20 个关联方核查维度。向外扩展出的候选不会逐家做 20 维导出,所以报告会如实说明实际覆盖范围。
这个工具负责"找线索、留证据、排范围",不替审计人员作最终关联方认定。
- "候选"表示值得进一步查;
- "可疑信号"表示存在异常,但还不能直接定性;
- "高风险证据"表示关系较强,应当安排进一步审计程序;
- "数据缺口"表示目前无法判断,不表示没有关系;
- 报告中的自动判断是审计参考,不是最终结论。
对高风险项目,通常还需要结合询问管理层、函证、实地走访、资金流水核对、合同检查和会计准则判断。
依次检查:
- 是否安装了整个 related-party-identification 文件夹;
- 是否多套了一层同名文件夹;
- 真正的技能目录里能否直接看到 SKILL.md;
- WorkBuddy 的"已安装"页面中是否启用了该技能;
- 是否需要新开一个对话;
- 是否存在另一个同名旧版本遮住了新版本。
最省事的处理话术:
请检查 related-party-identification 的实际安装位置、目录层级和启用状态,找到为什么当前对话看不到它。只修复共同原因,修复后重新验证,不要让我手工排查文件夹。
这不符合本技能的正常流程。关闭那个空白窗口后,对智能助手说:
请停止当前登录尝试,重新按技能规定使用我平时的 Firefox,或者使用我平时的 Edge、Chrome 和已经安装的 OpenCLI 扩展。不要创建新的浏览器个人空间。
正常使用不需要停留在扩展弹窗。可以直接关闭弹窗,然后说:
请不要打开 OpenCLI 扩展弹窗页面,改用后台连接,并在我平时的浏览器中打开注协官方登录页面。
让它只重试一次官方登录检查:
我已经在当前浏览器登录好了。请重新检查一次官方登录状态;如果仍失败,请告诉我是账号权限、验证码、网络连接还是登录状态过期,不要反复打开新窗口。
候选越多,查询越久。技能会主动限制访问频率,并在请求之间随机等待。让智能助手报告"已经完成多少、正在等待什么、还能否从断点继续",不要要求它同时大量查询。
先核对工商登记全称。企业已经注销、名称已经变更或数据库尚未收录时,技能会把它列为数据缺口,不会直接判定为"没有关联"。
这是正常的范围确认点。智能助手会告诉您候选主要来自哪里,并建议优先保留哪些公司。您可以回复:
同意按建议收窄。
或者:
确认继续处理全部候选。
没有明确回复时,技能不会自行扩大范围。
直接说"重新选择名单"或"重新选择导出目录"。智能助手应重新打开 Windows 文件或文件夹选择窗口,不要求您手工输入地址。
这是错误流程。直接说:
本次使用已有注协导出数据,请停止联网和登录,回到离线核查入口。
绝大多数情况下,您只需要做下面几件事:
- 告诉智能助手被审计单位名称;
- 有名单或已有数据时,在 Windows 选择窗口中点选文件或文件夹;
- 登录失效时,在自己的浏览器里正常登录;
- 候选超过两层或一百家时,决定是否继续;
- 阅读报告,并对高风险证据实施进一步审计程序。
环境检查、查询节奏、断点恢复、候选路径、证据比对和报告生成都由智能助手处理。
- 把整个 related-party-identification 文件夹压缩成一个文件。
- 把压缩包和本 README.md 一起发给同事。
- 让同事把压缩包拖给自己的 WorkBuddy 或其他智能助手。
- 让同事复制本说明中的"自动安装话术"。
- 安装后,让同事用"只检查,不要开始查询"的话术验证。
- 验证通过后,再用一个真实被审计单位名称开始任务。
- 不要只发 SKILL.md;
- 不要更改 related-party-identification 文件夹名称;
- 不要删掉 scripts、references 或 agents 文件夹;
- 不要把自己电脑上的登录状态文件放进压缩包;
- 不要把技能再套进多层无意义文件夹;
- 压缩包解开后应当能直接找到完整技能目录。
把这个压缩包拖给你的 WorkBuddy 或其他智能助手,然后说"请帮我安装这个完整技能包并验证"。安装好以后,直接说"请使用关联方识别与核查技能,查某某公司可能有哪些关联方"。第一次需要登录时,优先用 Firefox;没有 Firefox,再按提示给 Edge 或 Chrome 装一次 OpenCLI 浏览器扩展。
本技能已经把原来的注协公司查询能力完整放进自己的文件夹,分发后不依赖另一个 cicpa-company-query 技能。
为了避免以后上游查询能力更新,而本技能一直停在旧版本,包内保留了受控同步入口和来源记录。维护者需要检查更新时,不要直接覆盖整个技能,可以把下面这段话交给智能助手:
请检查 related-party-identification 内置的注协查询能力是否落后于 cicpa-company-query 上游版本。先只做差异检查并向我汇报,不要直接覆盖。如果确实需要同步,请先备份现有技能,再使用包内的受控同步入口分阶段合并,只迁移真实存在的查询和导出能力,保留本技能自己的对话流程、浏览器登录路线、访问频率限制和报告规则。合并后运行完整校验,再告诉我结果。
普通使用者不需要处理这一部分。只有维护和发布新版本的人才需要检查上游更新。
不需要。本技能已经自包含注协公司搜索、详情、股东、主要人员、股权、子公司发现和 20 维批量导出及连续三次失败后逐项下载能力。
能。这正是"主动发现"入口。只要提供被审计单位工商登记全称,技能就会从该单位向外寻找候选。
不需要。每次调用先检查现有登录,能用就直接使用,失效时才让您重新登录。
能。Firefox 直接使用当前用户原有个人配置;Edge 和 Chrome 通过一次性安装的 OpenCLI 浏览器扩展使用原有个人配置。
因为步骤更少,不需要安装额外浏览器扩展。Edge 和 Chrome 也能用,只是第一次需要安装 OpenCLI 扩展。
技能默认外部网站可能限制访问频率,所以主动降低速度,避免连续高频查询。这个等待是正常运行逻辑。
不是。只有本次实际取得的数据才能参与比对。数据缺失、企业注销、名称错误或数据库未收录都可能造成没有命中。
不建议。报告用于识别线索和安排进一步审计程序,最终关联方认定仍需审计人员结合会计准则、交易背景和追加证据判断。
可以。本技能已经自包含运行所需的注协查询能力、登录流程、规则、报告工具和更新接口。请分发整个文件夹或完整压缩包。
- 联网核查不再一次请求行业库全部 61 个维度,只查询关联方规则实际使用的 20 个维度。
- 首轮按 10+10 串行导出;批量接口连续失败第 1、2 次仍批量重试,只有连续第 3 次失败才把所有尚未完成维度改为逐个下载;中间批量成功会把计数清零,成功或明确无数据的维度不重复下载。
- 普通请求、轮询、成功批次之间分别随机等待 2—5 秒、10—20 秒、15—30 秒;同一时刻只有一个下载任务在途。
- 每个批次 ZIP、逐维结果和文件哈希均保留;同名不同内容绝不覆盖,单维度仍失败时暂停,不带数据缺口进入候选扩展。
- 修复 Windows 偶发占用状态文件导致保存失败的问题,并让技能包校验忽略
.pytest_cache等标准缓存目录。 - 旧的全部维度等待任务和证据原样保留,但不在线续跑;新版任务从未完成维度恢复。
- 程序改造完成后自动测试达到 124 项、57 个子测试全部通过。四川江擎航空科技有限公司已完成真实查询:20 个固定维度全部取得终态,其中 11 个维度有数据、9 个维度经统计表明确确认为无数据;两组主批次均成功完成,程序保留了各批次原始压缩包,并生成 42 条主动发现候选及关联方核查报告。
- 修正公开客户、供应商的识别含义:注协导出表中的交易对手只作为候选,不再仅凭客户或供应商身份判定为关联方或硬关联。
- 即使表头写着“关联方名称”,也只把该列理解为当前公开交易关系中的对手方名称;必须继续核对工商、人员、股权、地址、电话等独立证据。
- 核查报告改为
<公司名称>_关联方核查报告.xlsx,主动发现候选清单改为<公司名称>_主动发现候选清单.xlsx,避免不同公司的成果相互覆盖。 - 在线取得的注协基础数据直接保存到报告同一目录下的
<公司名称>_注协原始导出文件夹,不再留在难以寻找的临时目录。 - 修正核查报告格式:第三行正确显示蓝底白字表头,数据从第四行开始使用风险颜色,冻结位置调整为
A4。 - 兼容注协导出文件中工作表范围信息不准确的情况,仍能正确读取客户、供应商表第八列的交易对手。
- 加强 Windows 文件名处理:自动替换非法字符,处理超长名称和系统保留名称;同名成果使用时间戳和连续编号,绝不覆盖已有报告。
- 统一规则和使用说明,将结果明确归纳为七类有效核查证据,并补充“候选不等于关联方、红旗不等于硬关联”的判断边界。
- 完整自动测试增加到一百零二项,分发包完整性、中文编码、登录流程、限速、断点恢复和成果输出均已重新验证。
- 发布首个自包含版本,将注协公司搜索、详情、股东、主要人员、股权、子公司发现和完整维度导出能力放入同一个技能包。
- 提供主动发现、名单核查、已有数据三种对话入口;只提供一个被审计单位名称也能开始寻找候选。
- 默认先穿透两层,经用户确认后最多穿透五层;候选超过一百家时暂停确认范围。
- 每次使用前自动检查登录状态;优先使用 Firefox,Edge 或 Chrome 使用 OpenCLI 扩展和用户平时的浏览器配置。
- 加入串行查询、随机等待、访问次数上限、有限重试和导出断点恢复,避免短时间连续请求。
- 增加面向普通使用者的安装、调用、登录、分发和常见问题说明。
作者:CPA-Q