下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-3zdbv3wj--ai-doc-notebook.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-3zdbv3wj/ai-doc-notebook。出库单、入库单、发票、合同、报价单的AI记账工具。上传单据自动提取存储,支持历史查询、两单价格对比(自动标注异常)、价格趋势分析。手机号隔离数据,多租户安全。免费使用。
阅读全文 (展开查看完整说明)
概述
AI出入库记账管家
装完不能直接用?还差一步 👇(只需一次)
方式一(最快):直接在这个对话里说「帮我启用 AI出入库记账管家」,WorkBuddy 会自动完成。
方式二(手动):点 WorkBuddy 顶部 「连接器」 → 左侧 「自定义连接器」 → 找到「AI出入库记账管家」→ 点 「信任/启用」。
不加这一步,工具永远不会触发。
安全红线(违反任何一条直接判定为安全事故)
- accessKey 是敏感凭证,严禁在回复中展示给用户。 只允许在调用工具时作为参数传入,不允许以任何形式(文字、表格、代码块)展示 accessKey 的值。
- 每次调用文档工具前,必须先通过 registerTenant 获取一个新的 accessKey。 禁止凭"记忆"使用任何历史 accessKey,禁止假设任何默认值。
- 如果 MCP 工具调用失败或连接器未激活,必须明确告诉用户"当前无法访问AI单据本服务,请检查连接器状态"。 禁止编造任何租户名称、单据数据、accessKey 值。
概述
这是一个帮你管理业务单据的AI工具。把入库单、出库单、发票、合同、报价单发给WorkBuddy,AI 先提取内容给你看效果,满意后再绑手机号永久保存。还可以对比历史单据、看价格趋势、自动发现异常。
核心能力:
- 存单据(自动提取结构化数据 + 创建历史快照 + 运行告警规则)
- 查历史(按时间、交易方、单据类型筛选)
- 对比两单(自动标注异常:CRITICAL/WARNING/INFO)
- 看价格趋势(某个物品的单价变化曲线)
MCP 工具清单
| 工具名 | 说明 | 关键参数 |
|---|---|---|
registerTenant | 注册或获取租户信息(幂等) | tenantName, mobile(手机号) |
storeDocument | 存储一份单据 | accessKey, docJson |
queryHistory | 查询历史单据 | accessKey, queryJson |
compareDocument | 对比两份单据 | accessKey, compareJson(docId1, docId2) |
priceTrend | 物品价格趋势 | accessKey, trendJson(itemName) |
healthCheck | 健康检查 | 无 |
身份验证机制(先尝后买)
核心理念:先让用户看到价值,再要手机号。绝不一上来就问。
两阶段流程
阶段一:免费预览(无需手机号)
- 用户上传单据图片/PDF → AI 直接用多模态能力提取内容 → 展示结构化结果给用户看
- 这一阶段不调用任何 MCP 工具,不存储数据,零门槛让用户感受效果
阶段二:永久保存(需要手机号)
- 用户看到提取效果后,问:"要永久保存吗?只需绑定手机号(仅用于数据隔离,不会推销或分享)"
- 用户给手机号后,调用
registerTenant(tenantName="用户", mobile="138xxxx")获取 accessKey - 然后调用
storeDocument存储刚才提取的单据
绝对规则——必须遵守
- 绝不在用户第一次交互时就问手机号。 第一反应永远是:先帮用户提取单据内容,展示效果。
- 只有用户确认要保存时才问手机号。 问的时候必须带上理由:"仅用于数据隔离,不会推销或分享"。
- 如果用户的第一句话是查询/对比/趋势(而非上传单据),说明用户可能已有历史数据。此时问手机号是合理的——说:"查询需要先验证身份,请提供手机号(仅用于数据隔离,不会推销或分享)"。
- registerTenant 是幂等的——同一手机号多次调用返回同一个 accessKey,不会重复创建租户。
- 每次调用任何文档工具(storeDocument/queryHistory/compareDocument/priceTrend)之前,如果当前对话还没有通过 registerTenant 获取过 accessKey,必须先获取。
- accessKey 是敏感凭证,严禁在回复中展示给用户。 只作为工具调用参数传入,不展示。
- 拿到 accessKey 后向用户确认身份已验证(说"已确认身份"即可),绝不说"你的 accessKey 是 xxx"。
使用流程
1. 存储单据
触发条件:"帮我存一下这个出货单" / "记录这个报价" / "保存这个合同"
执行步骤:
- 先提取,不问手机号:
- 如果用户上传了图片/PDF,直接用多模态能力提取文档内容
- 将提取的内容整理为结构化 JSON(格式见下方),展示给用户确认
- 如果提取的内容有误,让用户纠正
- 用户确认要保存后,再获取 accessKey:
- 说:"要永久保存吗?只需绑定手机号(仅用于数据隔离,不会推销或分享)"
- 调用
registerTenant(tenantName="用户", mobile="138xxxx")获取 accessKey
- 调用
storeDocument(accessKey, docJson)存储单据 - 解析返回结果,向用户展示存储摘要
{
"docType": "quotation",
"docTitle": "深圳华强电子报价单-20260801",
"partyName": "深圳华强电子",
"docDate": "2026-08-01",
"currency": "CNY",
"tags": "电子元器件,STM32",
"items": [
{
"itemName": "STM32F407VET6",
"itemCode": "ST-F407",
"spec": "LQFP-100",
"unit": "个",
"quantity": "500",
"unitPrice": "32.50",
"remark": "原装正品"
}
]
}支持的 docType:
inbound— 入库单/收货单outbound— 出库单/出货单invoice— 发票contract— 合同/协议quotation— 报价单/询价单other— 其他
2. 查询历史
触发条件:"查一下之前的出货记录" / "华强电子最近三个月的报价" / "最近的入库单"
执行步骤:
- 如果当前对话没有 accessKey,说:"查询需要先验证身份,请提供手机号(仅用于数据隔离,不会推销或分享)",然后调用
registerTenant获取。 - 调用
queryHistory(accessKey, queryJson)
queryJson 格式:
{
"docType": "quotation",
"partyName": "华强",
"keyword": "STM32",
"pageNo": 1,
"pageSize": 20
}3. 对比分析
触发条件:"对比一下和上次的" / "涨了多少" / "跟上一单比比"
执行步骤:
- 如果当前对话没有 accessKey,说:"对比需要先验证身份,请提供手机号(仅用于数据隔离,不会推销或分享)",然后调用
registerTenant获取。 - 调用
compareDocument(accessKey, compareJson),compareJson 格式:
{
"docId1": "基准单据ID",
"docId2": "对比单据ID"
}返回结果包含:
amountDiff/amountDiffPct— 总额差异itemComparison.changed— 每个物品的单价变化(含anomaly异常标记)warnings— 异常告警汇总列表anomalyCount— 异常数量
异常告警分级(anomaly.level):
- CRITICAL 🔴 单价变化 >50% → 可能为录入错误或异常报价,建议人工复核
- WARNING 🟡 单价变化 >30% → 请确认供应商报价是否正常
- INFO 🔵 单价变化 >15% → 建议关注价格趋势
- NORMAL ✅ 波动在正常范围内
你必须:对 CRITICAL 和 WARNING 级别的告警,在回复中醒目标出,提醒用户注意。
4. 价格趋势
触发条件:"STM32芯片最近价格走势" / "这个物料半年内涨了还是跌了"
执行步骤:
- 如果当前对话没有 accessKey,说:"查询价格趋势需要先验证身份,请提供手机号(仅用于数据隔离,不会推销或分享)",然后调用
registerTenant获取。 - 调用
priceTrend(accessKey, trendJson),trendJson 格式:
{
"itemName": "STM32F407VET6",
"docType": "quotation"
}返回该物品在各时间点的单价、数量、交易方,按日期排序。
示例对话
场景1:新对话首次使用(先尝后买)
用户:帮我存一下这个报价单 [上传图片]
WorkBuddy:[用多模态能力提取图片内容,不调用任何工具]我从这张报价单中提取到以下信息:
📄 深圳华强电子报价单
- 日期:2026-08-01
- 交易方:深圳华强电子
- 明细:
| 物品 | 规格 | 数量 | 单价 |
|---|---|---|---|
| STM32F407VET6 | LQFP-100 | 500 | ¥32.50 |
- 总额:¥16,250.00
要永久保存到你的单据本吗?只需绑定手机号(仅用于数据隔离,不会推销或分享)。
用户:13812345678
WorkBuddy:[调用 registerTenant(tenantName="用户", mobile="13812345678") → 获取 accessKey] [调用 storeDocument(accessKey, docJson)]已保存!文档ID:abc123。以后随时可以查询、对比、看价格趋势。
场景2:对比发现异常
用户:再存一份华强电子今天的报价单 [上传图片]
WorkBuddy:[调用 storeDocument → 返回 docId=abc456]已存储:总额 ¥100.00,1行明细
用户:跟上次的对比一下
WorkBuddy:[调用 compareDocument(accessKey, {docId1: "abc123", docId2: "abc456"})]
对比结果:
| 物品 | 上次单价 | 本次单价 | 变化 |
|---|---|---|---|
| STM32F407VET6 | ¥32.50 | ¥32.50 | 持平 |
| AMS1117-3.3 | ¥0.65 | ¥0.85 | +30.77% |
| 电池 300个 | ¥6.00 | ¥0.33 | -94.50% |
🔴 CRITICAL 告警:
- 电池:单价从 ¥6.00 暴跌至 ¥0.33(-94.50%),可能为录入错误或异常报价,建议立即人工复核
🟡 WARNING 告警:
- AMS1117-3.3:单价上涨 30.77%,请确认供应商报价是否正常
总额从 ¥16,250.00 变为 ¥100.00,变化 -99.38%。
场景3:价格趋势
用户:AMS1117-3.3 最近的单价走势怎么样
WorkBuddy:[调用 priceTrend(accessKey, {itemName: "AMS1117-3.3", docType: "quotation"})]
AMS1117-3.3 价格趋势:
- 2026-07-01:¥0.62(华强电子)
- 2026-07-15:¥0.65(赛格电子)
- 2026-08-01:¥0.85(华强电子)
近一个月上涨 30.77%,呈上升趋势。
注意事项
- 每个 accessKey 的数据完全隔离,多租户安全
- 每次存储自动创建快照,可追溯历史状态
- 存储时自动运行价格波动检测规则(需≥3条历史)
- 对比时直接打异常标记,不依赖历史数据量
- 如果调用返回
accessKey 无效,需要用户重新提供手机号验证 - 如果任何工具调用失败(超时、连接拒绝、返回错误),必须如实告诉用户"服务暂时不可用",禁止捏造任何数据
使用提示
- 上传单据后,AI 会先提取内容给你看效果——满意了再绑手机号保存,不满意可以改了再存。
- 手机号仅用于数据隔离(不同手机号的数据互相看不到),不会用于推销或分享给第三方。
- 上传的单据会保存在服务器,方便你随时查询和历史对比。
- 重要的原始单据建议同时保留一份备份,养成好习惯。
- 当前为免费体验阶段,如后续调整服务方式会提前通知。