元契(yotta-contract-review)
合同 / 条款审查云端服务:把合同文本提交给云端服务,返回带证据链的确定性审查报告。
解决什么问题
一句话:签合同之前,先把「付款、验收、违约、争议解决」这些容易吃亏的条款逐条过一遍。
场景例:用户发来一份《技术服务合同》说「帮我看看有没有问题」——元契把合同(文本或 Word 文档)提交云端审查,逐条对照合同风险 16 条(12 条基线 + 4 条增强)以及个人信息与数据出境条款,命中处给出原文证据与来源条款。
计费:云端按次付费 ¥1.00/次(以账单为准;账单金额由服务端下发)。
输出例(节选):
{
"findings": [
{
"rule_id": "CR-PAY-001",
"title": "出现价款 / 付款表述但缺少付款期限",
"severity": "high",
"evidence": [
{ "kind": "matched_span", "quote": "付款", "line": 3, "column": 5 }
],
"remediation": "补充付款期限:明确每期款项的支付时间、起算点与支付方式。",
"source": { "citation": "《中华人民共和国民法典》第四百七十条" }
}
],
"report_meta": {
"report_id": "SR-20261018-ab12cd34",
"report_sha256": "……"
}
}
(示例仅示意报告结构;实际结论以云端返回的报告为准。)
前置检查:当前智能体是否支持支付宝 AI 支付
发起请求前,先检查你的可用工具列表中是否存在名称包含 alipay 的支付工具
(如 alipay_pay、mcp__alipay__* 等,带前缀也算;存在任意一个即视为支持)。
只以你的工具列表为证据,本文档中提到的工具名不算;无法确认时按「不支持」处理。
- 支持:继续本 Skill 流程,不向用户提及本检查;
- 不支持:终止流程,不要发起请求。向用户说明结论与解决办法:
- 合作智能体(如 WorkBuddy):升级智能体到最新版本后重试;
- 开放智能体(如 OpenClaw / DeepSeek Harness):按 https://skillhub.cn/install/skillhub.md
安装@alipay/agent-payment; - 无法判断类型:升级智能体或安装支付宝 AI 支付插件后重试。
演示模式(免费)
想先看输出格式,可运行 demo 子命令(不消耗付费额度、不需要支付):
node scripts/contract-review-paid.mjs demo --service-url https://yottameta.cn/api/contract-review
# 无 Node 环境(POSIX sh + curl):
sh scripts/contract-review-paid.sh demo --service-url https://yottameta.cn/api/contract-review
demo 调用 GET <service-url>/demo,返回固定样例的真实引擎报告(code: "DEMO",含完整 report)。
工作流程
第一步:请求审查(未付款会返回 402)
node scripts/contract-review-paid.mjs probe \
--file contract.md \
--service-url https://yottameta.cn/api/contract-review
输出 JSON 包含:
status:402表示需要支付,200表示已付款可直接出报告;out_order_no:订单号(后续重试必须携带);payment_needed:账单(交给支付能力使用);amount_fen/amount_display:本次金额。
第二步:向用户申请支付授权
用买家侧官方支付能力完成付款:把第一步的 payment_needed 与 out_order_no
交给官方买家 CLI(alipay-bot 的 402-buyer-pay)或当前智能体的支付工具。
不要自行实现付款、签名或加解密;不要修改金额与订单号。
付款前预告:调起支付前,先向用户说明本次金额(用账单 amount_display,如「¥1.00」)
与本次交付物(交付四件套:一屏摘要卡 / 审查报告 / 整改清单 / 机器可读件;交付回执含报告编号 / 内容哈希,90 天内可回查与多格式导出)。
用户引导要求:凡需要用户扫码或确认的环节(钱包开通、付款确认),必须把支付工具返回的
二维码图片与链接直接显示在对话消息中(内联图片 / 可点击链接),不要只给文件路径:
- 钱包未开通时:引导用户开通,把授权二维码直接显示在消息里(扫码授权后自动绑定,
该路径不产生 6 位授权码); - 发起付款后:把支付链接 / 二维码直接显示在消息里,用户可直接扫码或点击完成付款。
常见错误处理:若支付工具报「买家和卖家不能相同」——说明当前智能体身份绑定的
支付宝账号与卖家相同(通常发生在商家用自己设备自测的场景,属支付宝防自买自卖风控)。
处理:更换为其他买家账号,或改用支持多 agent 身份的智能体(如 WorkBuddy 等);不要用原身份重试。
等待支付完成(自动轮询,必须执行)
发起付款后自动轮询支付状态,不要要求用户口头确认:
- 用
poll-payment-status(轮询直到完成);或每 2–5 秒执行一次
402-query-payment-status(查状态 + 请求资源 + 履约确认,一步到位); - 查到
active: true/success: true即自动继续(展示报告),用户无需再说任何话; - 轮询到账单过期(
pay_before)仍未支付:提示用户「支付超时,可重新发起」,不要空等。
第三步:付款后重试并获取报告(必须执行)
node scripts/contract-review-paid.mjs complete \
--file contract.md \
--service-url https://yottameta.cn/api/contract-review \
--out-order-no <第一步的 out_order_no> \
--payment-proof <付款后获得的 Payment-Proof>
成功后输出审查报告 JSON(含 findings / evidence / summary),同一订单重复执行
返回缓存结果(already_fulfilled: true),不会重复扣费。
交付回执与报告回查
complete 成功返回的 delivery 字段即交付回执:报告编号(report_id)、
报告内容哈希(report_sha256)、可导出格式(export_formats)与保留期
(retention_days / report_expires_at)。脚本会把回执摘要打印到标准错误,并
自动追加到本地回执历史(~/.yotta-review/receipts.jsonl,环境变量
YOTTA_REVIEW_HOME 可改目录)。请把回执与报告一起展示给用户。
凭回执可随时回查 / 导出(不重复扣费):
# 最近一条(自动读取本地回执历史)
node scripts/contract-review-paid.mjs report --last \
--service-url https://yottameta.cn/api/contract-review
# 列出本地回执历史
node scripts/contract-review-paid.mjs report --list
# 指定回执(换机器 / 手工持有回执时)
node scripts/contract-review-paid.mjs report \
--out-order-no <订单号> \
--report-sha256 <报告哈希> \
--service-url https://yottameta.cn/api/contract-review
报告导出(不重复扣费):--format markdown 主报告 / html 单文件网页(零外链零脚本,可直接转发客户)/
remediation 整改清单(按严重度 + 证据 + 改法 + 待补骨架)/ summary 一屏摘要卡(风险分布 +
最紧急 3 件事 + 下一步)/ fix 补正底稿(高危表述替换建议 + 【待补】骨架;只写新文件、拒绝覆盖)/
audit 审计底稿(七节 + 30 / 90 / 180 天整改时限)/ audience 角色视角(legal / tech / exec)/
gap 现实画像差距卡(需在审查时提供 reality_profile)/ ledger 留证台账 / path 路径矩阵 / pia PIA 清单 /
classification 分类分级 / hr HR 专项 / deadlines 整改时限(元渡专用;模板 + 缺项,不下结论)/
elements 关键要素 / party 甲乙方双视角(元契专用)/ compare 多版本对比(两份已履约报告,不重复收费)/
docx 批注版 DOCX 新文件(不覆盖原文、不写 Track Changes)/
json 机器可读件(含报告编号与内容哈希);
加 --out <path> 输出到文件(fix 必须用新路径,目标已存在时拒绝覆盖),加 --save-report <dir>
保存到目录(正文默认不自动保存;json 存 <报告编号>.json,文本格式存 <订单号>.md / <订单号>.html)。
complete 成功后脚本会在标准错误打印交付摘要(风险分布 + 最紧急 3 条 + 下一步建议)。
关键要素与甲乙方双视角(elements / party)
- 关键要素:元契合同审查的报告自动附带
key_elements(主体 / 标的 / 价款 / 期限 / 违约 / 解除 /
争议解决);每条只给原文引句与行 / 列,不猜测、不补写。导出:
report --last --format elements --out elements.md。 - 甲乙方双视角:
report --last --format party --out party.md输出甲方 / 乙方双视角的
风险优先级 + 谈判要点(每侧 ≥5 条);不改变规则命中,只做立场解释与排序。 - 边界:要素表与谈判要点均需人工核对;不替代律师或合规顾问。
多版本对比(--format compare,不重复收费)
report --format compare --compare-to <旧订单号> --compare-sha256 <旧报告哈希> --out diff.md
把当前订单报告视为新版、--compare-to 指向的报告视为旧版,输出:
- 差异总览(新增 / 已消失 / 风险升级 / 风险降级 / 证据变化 / 未变化);
- 风险变化提示(新增风险 / 已消失 / 升级 / 降级 / 证据变化);
- 逐条差异表(规则 + 旧 / 新严重度 + 旧 / 新证据),差异可定位到版本与条款。
边界:复用两份已履约报告,不重复收费;只覆盖规则命中与证据引句,未命中不代表条款未改动。
批注版 DOCX(--format docx,新文件)
report --last --format docx --out annotated.docx 生成批注版 DOCX 新文件:① 审查摘要;
② 逐条批注(严重度 / 规则 / 原文引句与行号 / 说明 / 建议 / 依据);③ 整改清单(含 30 / 90 / 180 天时限);
④ 免责与 90 天回查说明。
- 边界:不修改原文件、不写原生 Track Changes;文件是审查结果视图,不是对原文的自动改写。
- 目标文件已存在时拒绝覆盖;
--save-report <dir>也可保存(文件名由服务端给出)。 - 用法:
report --last --format docx --out annotated.docx。
数据与回查(保留 90 天)
- 报告在云端保留 90 天(自交付时间起),期间可随时凭回执回查 / 导出,不重复扣费;
- 到期后云端删除报告正文,仅保留最小订单台账(订单号 / 时间 / 金额 / 状态)与报告哈希锚点;
之后回查返回410 REPORT_EXPIRED; - 本地回执历史:
complete自动写入~/.yotta-review/receipts.jsonl(POSIX 权限 600;
YOTTA_REVIEW_HOME可改目录);报告正文默认不落盘,需要时用--save-report <dir>导出; - 交付时(必须执行):向用户一并告知「报告编号 / 内容哈希 / 云端保留 90 天 / 如何回查 /
建议保存本地副本」。
AI 回查流程:
- 用户问「上次那份报告」→ 先
report --list定位,再report --last(或按订单号 + 哈希)回查 / 导出; - 换机器 / 本地历史丢失 → 请用户提供交付回执(订单号 + 内容哈希)手工回查;两者都无 → 如实告知无法找回;
- 报告已过期(HTTP 410)→ 如实告知云端已清理;如之前导出过本地副本,可继续使用。
一步式(适合已具备支付能力的智能体):
node scripts/contract-review-paid.mjs run \
--file contract.md \
--service-url https://yottameta.cn/api/contract-review \
--auto-pay
HTTP 协议(无 Node 环境)
没有 Node.js 的宿主(或希望直接用 curl 的环境)可按下面的协议直连;随包提供的
scripts/contract-review-paid.sh(POSIX sh + curl)已封装同一流程,子命令与 .mjs 版对齐
(probe / complete / report / demo)。
- 请求审查(probe):
POST <service-url>,Content-Type: application/json;
body{"text":"<合同全文>"}(可选frameworks数组选择规则包)。
未付款时返回402,body 含out_order_no/amount_fen/amount_display/
"Payment-Needed"(账单字符串,交给支付能力)/expires_at。 - 付款后重试(complete):
POST <service-url>,同一 body;请求头加
Payment-Proof: <凭证>(可选X-Out-Order-No: <订单号>)。
200返回报告与交付回执(delivery.report_id/delivery.report_sha256)。 - 回查 / 导出(report):
POST <service-url>/report,body
{"out_order_no":"...","report_sha256":"...","format":"json"};format为markdown
时返回 Markdown 原文。 - 演示(demo):
GET <service-url>/demo,返回固定样例报告(免费)。
<service-url> = https://yottameta.cn/api/contract-review(或部署方提供的地址)。
回退脚本仅支持文本输入(≤ 256 KB);.docx 直传请使用 .mjs 版本。
输入与输出
- 输入:
.docx直传(≤ 2 MiB,云端零依赖解析正文 / 表格 / 页眉页脚);- UTF-8 文本 / Markdown(
.txt/.md/.markdown,单次 ≤ 256 KB); .doc/.pdf暂不支持,请先转成.docx或文本。- 输出:JSON 报告(
findings每条带原文evidence、rule_id、source条款引用;
summary给出严重度分布与覆盖范围;report_meta给出报告编号与内容哈希)。 - 规则包:
contract-risk(12 条)+contract-risk-plus(4 条)+pipl(11 条)+
data-export(4 条);可用--frameworks选择。
依赖
- Node.js 18+ 或 curl(二选一):
scripts/contract-review-paid.mjs(Node,零依赖)
或scripts/contract-review-paid.sh(POSIX sh + curl); - 买家侧支付:
@alipay/agent-payment(官方支付能力); - 服务端由提供方部署,本 Skill 只包含调用脚本,不含服务端源码。
边界
- 只做基于确定性规则的审查建议,不构成法律意见,不替代律师或合规顾问;
- 不判断合同效力、不预测诉讼结果;
- 支持
.docx直传;.doc/.pdf暂不支持,需先转成.docx或文本; - 只处理用户主动提交的合同 / 条款文本;不采集与本任务无关的数据;
- 付费技能:验付通过后才交付报告;报告云端保留 90 天(凭交付回执可回查 / 导出),
到期后仅保留订单台账(订单号 / 时间 / 金额 / 状态)与报告哈希锚点。
交付资产恢复与一键交付包
付款成功但由 alipay-bot 等外部支付工具自动履约时,先让服务端复核订单号与报告哈希,
再把交付回执补记到本地:
node scripts/skillpay-delivery-tool.mjs receipt-import --out-order-no <订单号> --report-sha256 <报告内容哈希> --service-url <服务地址>
补记后可用本技能脚本的 report --last 直接回查。服务端校验失败、报告已过期、
哈希不匹配或同一订单出现不同哈希时,工具拒绝写入,不伪造回执。
一键交付包:
node scripts/skillpay-delivery-tool.mjs pack --last --out ./交付包
产物包含摘要卡、Markdown 主报告、HTML 主报告、整改 / 修复清单、report.json、
manifest.json 与 README.txt。清单记录每个文件的 SHA-256 和服务端报告哈希,
便于交付、归档和复核;回查与打包不重复扣费。