下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-9dhqq43b--crm-customer-management.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-9dhqq43b/crm-customer-management。- 付费技能(¥9.9/次,微信支付)— CRM客户管理系统技能:飞书/钉钉/企业微信三平台 CRM 复建手册。调用蓝鲸数字(lanjingshuzi.cn)运营的付费服务端获取定制化 CRM 搭建方案,需通过微信支付完成付款。启动时先弹窗让用户选择平台再精准搭建(§0.5 强制流程)
- 连接器自动检测 + Base 自动创建(用户零手动操作)
- 24 表规格、报价/回款公式模式、审批状态机、自动化配方,以及三平台各自的引擎级实测坑位库与适配器。当需要搭建、扩展或调试客户管理系统(CRM)时使用。
阅读全文 (展开查看完整说明)
概述
装了这个技能 = 在飞书 / 钉钉 / 企业微信任意一个平台得到一套完整 CRM:线索到公海、客户联系人、商机管道、报价→订单主动脉、开票回款对账、回款自动过账到资金账户、客户 360 汇总、审批状态机、经营看板。核心规格平台无关(§2–§7),平台落地看适配器(§0 索引 + §11)。方案随服务端交付,已在三平台真实生产环境验证。
0. 你能得到什么
付费方案(§0.7 服务端返回的 content)会给你一套完整的定制化 CRM 搭建方案,包含:
- 24 张表结构 + 基础字段 + 关联 + 公式 + 查找引用 + 仪表盘图表的逐步复建手册(Agent 按手册驱动对应平台 CLI 建表,无需手写)
- 报价/订单金额公式模式:明细行 → 主单汇总 → 折扣留存率计价 → 成交净额(本手册已修复"报价折扣被反向"这一常见 CRM 硬 bug)
- 回款对账与账户余额过账:回款计划=计划、回款单=实收,账户余额 = 初始 + 已确认回款 − 已确认付款
- 客户 360:客户表自动汇总商机数量 / 累计订单额 / 累计回款额
- 工作流配方库(本文 §5):审批通知、审批通过转赢单/建订单、回款确认改发票状态、到期/逾期提醒
- 引擎坑位库(本文 §4):三平台公式/工作流引擎的已验证限制与绕法,价值最高的部分
- 平台适配器(§11 + 对应平台章节):钉钉 filterUp 汇总、企微 FILTER/LOOKUP、飞书二级链;每平台的写入格式与坑位清单
0.5 第 0 步:平台选择弹窗(先于一切操作,强制流程)
当本技能被触发、且用户消息中没有明确指定目标平台时,Agent 必须先调用 AskUserQuestion 工具弹出单选问题「你想在哪个平台搭建 CRM 客户管理系统?」,提供三个选项及说明:
- 飞书 · 多维表格 —— 全流程脚本现成(§1–§7 一键复建),引擎支持聚合嵌套,客户级金额汇总可实时算,适合已在用飞书的团队
- 钉钉 · AI 表格 —— 自带审批自动化与 filterUp 汇总;写后读回有最终一致性延迟、公式不能套公式(走 §11 钉钉列)
- 企业微信 · 智能表格 —— 公式引擎最强、API 写入最顺,支持"公式内 FILTER 对任意列求和";无原生自动化,审批/提醒用定时任务补偿(走 §11 企微列)
规则:
- 用户已明确平台,或消息中出现平台特征(飞书分享链接、dingtalk.com/alidocs 链接、doc.weixin.qq.com 链接)时跳过弹窗,直接路由
- 做出选择后只执行该平台流程;本文档其他平台的命令、字段格式、ID 一律不得混用(平台差异速查见 §11)
- 连接器检测:获取付费方案后、搭建前,必须先检测目标平台 CLI 可用性(§1.1)。不可用时引导用户到「设置 → 连接器」安装对应连接器,不得降级伪造、不得擅改到其他平台
- Base 自动创建:连接器可用后,通过 CLI 自动创建 Base(§1.2),不需要用户手动新建或提供 Base token
- 用户在已搭建过的系统上做日常操作(查询/审批/改数),同样先按其平台加载对应适配器文档,再执行核心业务规格(§2–§3)
0.7 付费服务调用流程(Pay Skill)
本技能为付费技能(19.9 元/次),调用服务端获取定制化 CRM 搭建方案前需完成微信支付。
透明披露:
- 服务端点:
https://lanjingshuzi.cn/skillhub/crm-customer-management/api/v1/skill/invoke - 端点运营主体:蓝鲸数字(lanjingshuzi.cn)
- 数据处理范围:请求体仅包含用户的搭建需求描述(平台类型、客户规模等),不含用户个人隐私数据
- 付费方式:微信支付(WeChat Pay)
- 在发起支付前,必须向用户明确告知本次调用将产生 ¥19.90 费用,并获得用户确认后才可继续
前置检查:当前智能体是否支持微信 AI 支付
发起下单前,先检查你的可用工具列表中是否存在名称包含 weixinpay_ 的工具(如 mcp__weixinpay__weixinpay_register,工具名带前缀也算;存在任意一个即视为支持)。
只以你的工具列表为证据,本文档中提到的工具名不算;无法确认时按「不支持」处理。
- 支持:向用户透明告知本技能为付费技能(¥19.90/次,微信支付),端点由蓝鲸数字(lanjingshuzi.cn)运营,继续本 Skill 的后续流程。
- 不支持:终止流程且不要发起下单。只向用户说明结论与解决办法(无需解释你如何检查、不要出现具体工具名),按智能体类型提示:
- 合作智能体(如 WorkBuddy):请升级智能体到最新版本后重试。
- 开放智能体(如 OpenClaw / DeepSeek Harness):请根据 https://skillhub.cn/install/skillhub.md ,安装 @tencent-adm/weixinpay-installer。
- 无法判断类型:请升级智能体或安装微信支付 AI 支付插件后重试。
工作流程
第一步:请求资源
POST https://lanjingshuzi.cn/skillhub/crm-customer-management/api/v1/skill/invoke
Content-Type: application/json
{
"query": "用户的查询内容(如:帮我搭建一个销售团队的飞书CRM)",
"platform": "feishu | dingtalk | wecom",
"customer_count": 50,
"need_approval": true,
"need_dashboard": true
}第二步:处理 402 响应
服务端返回 HTTP 402,提取以下两个值并必须保存:
- Header
WeixinPay-Required:支付码(payment_code) - Header
X-Out-Trade-No:订单号(out_trade_no)
响应体示例:
{
"code": "PAYMENT_REQUIRED",
"message": "需要支付后才能获取CRM定制化搭建方案",
"WeixinPay": {
"WeixinPay-Required": "xY9zAbc123def456",
"prompt": "本次使用微信支付,请将 WeixinPay-Required 的值作为 paymentCode 交给 weixinpay_pay,以向用户申请支付授权。"
},
"out_trade_no": "WX402_20260921120000abcdef123456",
"amount": "19.90",
"currency": "CNY"
}第三步:发起支付(必须获得用户确认)
在调用支付前,必须向用户明确展示以下信息并获得确认:
- 本次使用将产生 ¥19.90 费用
- 支付通过微信支付完成
- 服务端点由蓝鲸数字(lanjingshuzi.cn)运营
用户确认后方可将 WeixinPay-Required 的值作为 paymentCode,调用 weixinpay_pay 工具向用户发起微信支付授权。等待用户完成支付。
第四步:支付成功后获取资源(️ 必须执行)
POST https://lanjingshuzi.cn/skillhub/crm-customer-management/api/v1/skill/invoke
Content-Type: application/json
X-Out-Trade-No: WX402_20260921120000abcdef123456
{
"query": "与第一步完全相同的请求体",
"platform": "feishu",
"customer_count": 50,
"need_approval": true,
"need_dashboard": true
}⚠️ 第四步是最容易被 Agent 遗漏的一步:不携带 X-Out-Trade-No Header 重试,就永远拿不到付费内容。body 保持与第一次请求一致,仅通过 Header 传递订单号。
成功响应(HTTP 200):
{
"code": "SUCCESS",
"message": "CRM定制化搭建方案",
"out_trade_no": "WX402_xxx",
"transaction_id": "4200001234202306300000000001",
"content": "# 客户管理系统(CRM)定制化搭建方案nn..."
}content 字段即为完整的定制化 CRM 搭建方案(Markdown 格式),包含表结构设计、公式配置、工作流自动化、平台适配要点、搭建步骤和验证清单。
1. 前置条件与连接器检测
1.1 连接器可用性检测(第 0 步,强制)
在获取到付费方案后、开始搭建前,Agent 必须先检测目标平台的 CLI 是否可用:
- 飞书:执行
lark-cli --version或任意 lark-cli 命令,确认返回正常 - 钉钉:执行
dws --version或任意 dws 命令,确认返回正常 - 企业微信:执行
wecom-cli --version或任意 wecom-cli 命令,确认返回正常
连接器可用时:
向用户发送确认消息,然后直接进入 §1.2 自动创建 Base:
✅ 检测到 [飞书/钉钉/企业微信] 连接器已就绪,正在为你自动创建 Base 并搭建 CRM,全程无需手动操作,预计 5 分钟完成。
连接器不可用时的处理:
如实告知用户当前未检测到 [平台] 连接器,然后进入陪伴式引导模式——每次只说一个动作,等用户完成并回复后再给下一步,直到配置成功。
第一步(发送以下消息):
检测到你的 WorkBuddy 尚未配置 [飞书/钉钉/企业微信] 连接器,我来一步步带你配置,你只需要跟着点就行,全程约 2 分钟。
第 1 步:请看 WorkBuddy 左侧栏,找到「专家·技能·连接器」这一行(图标是三个小圆圈),点击它。
完成后回复「好了」或「找到了」,我告诉你下一步。
后续步骤(用户每回复一次,发送下一步):
第 2 步:现在顶部有三个标签:专家、技能、连接器。点击「连接器」这个标签。
完成后回复「好了」。
第 3 步:现在看到连接器列表了吗?找到「[飞书/钉钉/企业微信]」这个卡片(飞书是蓝色纸飞机图标,钉钉是蓝色翅膀图标,企业微信是绿色气泡图标),点击卡片右边的「+」按钮。
完成后回复「好了」。
第 4 步:现在会弹出 [飞书/钉钉/企业微信] 的登录窗口,请用你的账号登录并授权(扫码或输入密码)。这是最后一步,授权完成后就配置好了。
登录授权完成后回复「好了」或「配置完了」。
用户完成全部步骤后:
重新执行 CLI 可用性检测,通过后发送:
✅ 连接器配置成功!正在为你自动创建 Base 并搭建 CRM,全程无需其他手动操作,预计 5 分钟完成。
然后进入 §1.2 自动创建 Base 流程。
用户中途卡住时:
如果用户回复「没找到」「看不到」「不会」等,不要跳过,用更具体的描述重新引导:
- 「专家·技能·连接器」→「左侧栏中间位置,写着'专家·技能·连接器'七个字,图标是三个小圆圈」
- 「连接器标签」→「顶部三个按钮,最右边那个写着'连接器'」
- 必要时建议用户截图发过来,根据截图判断位置
1.2 Base 自动创建(无需用户手动操作)
连接器可用后,Agent 通过 CLI 自动创建 Base,不需要用户手动新建或提供 Base token:
- 飞书:
lark-cli base +base-create --name CRM客户管理系统,从输出中提取 Base token - 钉钉:
dws aitable +base-create --name CRM客户管理系统,从输出中提取 Base token - 企业微信:
wecom-cli smartsheet create --name CRM客户管理系统,从输出中提取 Base token
创建成功后告知用户 Base 已就绪,直接进入搭建流程。
2. 三步快速开始
- 按 §1.1 检测连接器 → 按 §1.2 自动创建 Base(用户零手动操作)
- 按付费方案(§0.7
content)逐步执行 —— 约 5 分钟建完整套表结构与看板 - 按 §5 配方创建工作流并启用(审批通知、审批通过转赢单/建订单、回款确认、到期/逾期提醒)
- 维护主数据:产品信息 → 客户/联系人; thereafter 日常操作见 §6
3. 架构与核心逻辑
六层:市场活动 → 线索/公海 → 客户(主档)+ 联系人 → 商机 → 报价单⇄报价明细 / 销售订单⇄销售订单明细 → 回款族(回款计划/开票/回款单/付款单/资金账户)→ 绩效薪酬 → 仪表盘。
金额公式:明细行 原价合计 = 数量 × 销售单价含税、不含税 = 含税 / (1 + 税率);主单 销售原价总额 = FILTER 明细按父单编号汇总;成交净额 = 原价总额 − 优惠金额。折扣按留存率计价:明细 实际售价 = 单价 × (1 − 整单折扣率),其中 整单折扣率 = 优惠 / 原价(本技能已修复"实际售价误乘折扣率本身导致成交价塌陷"的常见模板 bug)。
审批状态机:待审批 → 审批通过(才允许转销售订单/生成回款计划/商机改赢单)/ 审批不通过(填不通过原因,可改后重提)。
回款对账:回款计划=计划(回款项/计划金额/计划日期),回款单=实收(本次回款金额 + 财务回款确认);资金账户当前余额 = 初始金额 + Σ已确认回款 − Σ已确认付款;回款计划 待回款 = 计划总额 − 已回款。
客户 360:客户表实时汇总 商机数量 / 累计订单额 / 累计回款额(飞书可实时;钉钉/企微见 §4/§11 的平台限制与绕法)。
4. 引擎坑位库(改动前必读,全部三平台实测)
公式 / 跨表引擎
- link 字段名 == 表名 →
[X].[Y]被解析为整表列:汇总列每行同值、引用列显示全表清单。修复=改 link 名(如 报价产品明细/所属报价单)。 - 飞书 FILTER 内
CurrentValue.[link].[field]二级链不支持(静默变[无效引用])、三级链也不支持:跨表取父单字段用两段二级链辅助字段(明细加"所属报价单编号"两段链)。 - 钉钉不支持两级 lookup 串联(关联→关联→字段第 3 段静默失效)、filterUp 不能套 filterUp(对 filterUp/汇总公式的结果再聚合会得 0/null);父表汇总子表首选 lookup 反向关联字段 + SUM。
- 企业微信:
FILTER(表.FILTER(当前值.字段=本记录字段).列.SUM())原生支持且可对公式列求和,但公式字段不能引用另一个公式字段的结果(要内联展开);percentage 字段按百分数填(填 13 = 13%);双向关联反向列默认名"关联"。 - "总量 − 聚合" 类差值公式,聚合无匹配返回 null 时须
IF(x, x, 0)兜底,否则级联为空。
工作流引擎
- 触发器监听公式/汇总字段加值过滤运行时永不触发;watch 字段不带值 + 分支内用关联钻取父表真实 select 做状态门。
- 审批卡片按钮自包含(setRecord 改状态 / openLink 跳转带 recordId 引用);新建即满足条件的记录不触发(只对"修改"生效)。
- 选项 id 多由平台不直接返回,需写 option 名再读回获取。
- 工作流写关联/双向 link 字段:飞书可、企微可(record_id 格式)、钉钉静默丢弃(→ 用文本 join 键或先建后回填)。
- 新建工作流默认 disabled 必须 enable;多数平台无 delete(只能 disable);create 需唯一 client_token。
CLI / 平台
- 飞书 lark-cli:内联
--json经 .cmd 会吞引号、@file只认相对路径且解析目录随安装版本漂移 → 直连bin/ext/lark-cli-core-windows-amd64.exe --json "$(cat f)";--records体{"fields":[...],"rows":[[...]]};table-list/field-list/record-list 串行。 - 钉钉 dws:关联字段写入值须
{"linkedRecordIds":["recId"]};table-bootstrap 写后读回有最终一致性抖动(partial_success/GET_TABLES_ERROR 多为假警、实体已建,报 already exists 即勿重放);连建多表易挂→逐条 + list 核对;DWS 命令序列=多条纯 dws 换行(混 echo/&& 被拦);仪表盘建后读有传播窗口(chart 偶发 not found,单条重试)。 - 企业微信 wecom-cli:中文 JSON 用
--json "$(cat f)";读数据用records query --sql ["SELECT.. FROM 表名"];关联写[{"record_id":"X"}]、单选[{"id","text"}]需先取 option id;two_way 反向列默认名"关联"须重命名。
5. 工作流配方库
5.1 审批提交通知(报价/订单各一条)
触发=主单审批结果变化 → 通知审批人(卡片含【通过/驳回/查看详情】按钮,通过=setRecord 审批结果=审批通过)。
5.2 报价审批通过 → 转订单 + 建回款计划
触发=报价单审批结果=审批通过 → 更新对应商机销售阶段=赢单 → 新增回款计划(关联该销售订单)。注:钉钉不能写关联字段(§4 坑 9),改用文本 join 键或建后回填。
5.3 回款确认改发票/账户状态 + 到期/逾期提醒
回款单财务回款确认勾选 → 更新开票/回款计划状态;Timer 每日 09:00 到期跟进/回款/公海回收提醒(企微无自动化,用外部 cron 轮询 + 机器人推送补偿)。
6. 日常操作 Playbook(摘要)
- 线索:建线索 → 判可转则"转换为客户"(按钮自动化或手建)→ 客户+联系人
- 商机:选客户+联系人、填金额+赢率+阶段 → 加权管道自动算
- 报价:报价单 → 明细逐行扫码填数量单价 → 汇总原价/折扣/净额 → 提交审批
- 转订单:审批通过 → 销售订单选商机+来源报价单 → 订单明细 → 净额自动
- 回款:回款计划+明细填计划 → 回款单填本次金额勾财务确认 → 账户余额自动入账
- 排障第一问:账户/客户金额没变?→ 回款单是否勾了财务确认、关联是否挂对
7. 验证清单(改公式/工作流后)
- field-list 读回表达式无
[无效引用] - 主单汇总列每行不同且列合计=明细全表合计
- 明细父单引用列每行单值
- 报价/订单净额、账户余额、客户 360 与手算一致(用演示数据回读)
- 工作流改状态触发后 record-list 看副作用;卡片按钮渲染正常
8. 安全与隐私
包内不含任何密钥、token、租户私有 ID;所有操作以使用者自身平台身份授权执行;脚本仅做最小必要读写。实例化后的 Base 权限由使用者自行管理。
9. 更新
见 CHANGELOG.md;语义化版本,minor=新增能力,patch=修坑。
10. SkillHub 上架与打包踩坑记录(实测沿用)
10.1 zip 打包三条铁律
- 条目路径必须正斜杠。PowerShell
Compress-Archive在 Windows 上写入反斜杠条目(scriptsbuild_wms.sh),SkillHub 客户端会将嵌套条目判为「文件路径不安全」并跳过,只剩根级文件。.NET ZipFile::CreateFromDirectory在 Windows 上同样写反斜杠。 - tar 的 zip 不能用:
tar -a -c -f x.zip产物为正斜杠但 JSZip 报Can't find end of central directory,直接解析失败。 - 正确做法:先
Compress-Archive生成 JSZip 兼容包,再用 .NET 逐条目复制到新 zip 并把FullName.Replace('','/')作为条目名(见下例)。
Compress-Archive -Path <skilldir>* -DestinationPath tmp.zip -Force
$za=[IO.Compression.ZipFile]::OpenRead("tmp.zip"); $zo=[IO.Compression.ZipFile]::Open("out.zip",'Create')
foreach($e in $za.Entries){ $ne=$zo.CreateEntry($e.FullName.Replace('','/')); $s=$e.Open(); $d=$ne.Open(); $s.CopyTo($d); $d.Dispose(); $s.Dispose() }
$zo.Dispose(); $za.Dispose()10.2 文件类型白名单
- 服务器 400 拒绝无扩展名文件:
file type not allowed: LICENSE。许可证声明放 SKILL.md frontmatter 的license字段,不要带 LICENSE 裸文件。 - 客户端跳过二进制文件(jpg/png 等,提示「禁止上传二进制文件」)。示意图改用文字/mermaid 描述放在 SKILL.md 内。
- 实测可过:
.md .json .jsonl。
10.3 提交与审核
- 机审要求 SKILL.md 含 X402 / 付费契约关键词(本 §0.7 已含 402 + WeixinPay-Required + X-Out-Trade-No)。
- 内容审核(科恩)关注:透明披露付费性质与运营主体、数据外传范围、无隐蔽指令;本包 §0.7 已披露端点 URL + 蓝鲸数字主体 + 数据范围,并砍到根级 2 文件、价值走服务端交付,避免"主体不可核验/安装引导"类拒因。
- 接口
POST https://api.skillhub.cn/api/v1/orgs/{orgId}/skills,返回 201 即提交成功,进入安全扫描+内容审核;通过后自动上架。被拒时reviewRejectReason给原因;升级= bump 版本 + 变更说明 + 重传 zip。
11. 多平台适配器路由(三平台口径一致,实测)
同一份核心规格(§2 表结构、§4 公式模式、§5 工作流配方)在三个平台的落地差异速查:
| 能力 | 飞书多维表格 | 钉钉 AI 表格 | 企业微信智能表格 |
|---|---|---|---|
| 工具 | lark-cli(§1–§7 全流程脚本现成) | dws aitable | wecom-cli smartsheet |
| 跨表按值聚合 | lookup+filter 公式(§4 坑 1/2 全在此) | filterUp / 反向关联 lookup | 公式 FILTER(..).SUM() |
| 聚合能否套聚合 | 支持(客户级金额可实时) | 不支持 filterUp 套 filterUp → 得 0/null | 不支持公式引公式 → 内联展开 |
| API 行的公式重算 | 正常 | 不重算:需 field update 原样重存 config 唤醒 | 正常 |
| 自动化/审批卡片 | workflow + 卡片按钮(§5) | workflow-dsl/v1(触发器稳,仪表盘接口有抖动) | 无自动化:cron 轮询+机器人推送补偿 |
| 工作流写关联字段 | 可以 | 不可以(静默丢弃)→ 文本 join 键 | 可以(record_id 格式) |
| 关联字段写入值 | [{"id":"recXXX"}] | {"linkedRecordIds":["recId"]} | [{"record_id":"X"}] |
| 写后读回 | 稳定 | 有最终一致性抖动(partial_success 多为假警) | 有延迟("already exists"即证已建) |
| 对账取数 | 公式 | psql 只读 | records query(SQL) |
选平台建议:要开箱自动化选钉钉或飞书;要公式最省心、纯 API 写入选企微(注意配 cron)。每平台适配器的坑位清单见对应章节。