案件管理(律师/小所)技能 1.0
> 装了这个技能 = 在飞书 / 钉钉 / 企业微信任意一个平台得到一套完整案件管理系统:一案一档、开庭/上诉/续封/续签四类到期自动提醒、任务销项、财产保全续封闹钟、财务欠费对账、执行回款闭环、结案确认卡片、经营看板。核心规格平台无关(§2–§7),平台落地看适配器(§0 索引 + §11)。全部配方与模板已在三平台真实生产环境验证。
0.7 付费服务调用流程(Pay Skill)
本技能为付费技能(19.9 元/次),调用服务端获取定制化搭建方案前需完成微信支付。
透明披露:
- 服务端点:https://lanjingshuzi.cn/skillhub/case-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/case-management/api/v1/skill/invoke
Content-Type: application/json
{
"query": "用户的搭建需求描述(如:帮我在飞书搭一个10个在办案件的律所案件管理系统,要顾问线)",
"platform": "feishu",
"case_scale": 10,
"need_advisor": true,
"need_execution": false,
"need_dashboard": true
}
第二步:处理 402 响应
服务端返回 HTTP 402,提取以下两个值并必须保存:
- Header WeixinPay-Required:支付码(payment_code)
- Header X-Out-Trade-No:订单号(out_trade_no)
响应体示例:
{
"code": "PAYMENT_REQUIRED",
"message": "需要支付后才能获取定制化搭建方案",
"WeixinPay": {
"WeixinPay-Required": "xY9zAbc123def456",
"prompt": "本次使用微信支付,请将 WeixinPay-Required 的值作为 paymentCode 交给 weixinpay_pay,以向用户申请支付授权。"
},
"out_trade_no": "WX402_20260922120000abcdef123456",
"amount": "19.90",
"currency": "CNY"
}
第三步:发起支付(必须获得用户确认)
在调用支付前,必须向用户明确展示以下信息并获得确认:
- 本次使用将产生 ¥19.90 费用
- 支付通过微信支付完成
- 服务端点由蓝鲸数字(lanjingshuzi.cn)运营
用户确认后方可将 WeixinPay-Required 的值作为 paymentCode,调用 weixinpay_pay 工具向用户发起微信支付授权。等待用户完成支付。
第四步:支付成功后获取资源(必须执行)
POST https://lanjingshuzi.cn/skillhub/case-management/api/v1/skill/invoke
Content-Type: application/json
X-Out-Trade-No: WX402_20260922120000abcdef123456
{
"query": "与第一步完全相同的请求体",
"platform": "feishu",
"case_scale": 10,
"need_advisor": true,
"need_execution": false,
"need_dashboard": true
}
成功响应(HTTP 200):
{
"code": "SUCCESS",
"message": "定制化搭建方案",
"content": "# 你的案件管理系统定制化搭建方案\n\n..."
}
0. 你能得到什么
- 本文 §2:12 张表逐字段规格(字段名一字不差,含 8 个案件总表对账列)
- 本文 §3:21 个公式/汇总列表达式(飞书引擎原文可直接粘贴)+ 跨表匹配键规则
- 工作流配方库(本文 §5):10 条自动化的完整结构要点,含结案确认卡【确认结案】按钮回写
- 引擎坑位库(本文 §4):飞书公式/工作流引擎 12 个已验证限制与绕法,价值最高的部分
- 搭建 SOP 与验收清单(本文 §2.5/§7):含三平台一致的演示数据基准值(实收 13000/未收欠款 −10000 等)
- 多平台适配路由(本文 §11):钉钉 filterUp 重算唤醒、企微无自动化引擎的巡检补偿方案
- 用户手册编写标准(本文 §12):交付给终端律师的小白视角手册骨架(9 章 + FAQ≥10)
0.5 第 0 步:平台选择弹窗(先于一切操作,强制流程)
当本技能被触发、且用户消息中没有明确指定目标平台时,Agent 必须先调用 AskUserQuestion 工具弹出单选问题「你想在哪个平台搭建案件管理系统?」,提供三个选项及说明:
- 飞书 · 多维表格 —— 全流程配方现成(§1–§7 一键复建),10 条自动化原生支持,适合已在用飞书的团队
- 钉钉 · AI 表格 —— 日期到达触发原生支持、有工作流执行历史 API 便于排障;批量导入后汇总列需重存唤醒(走 §11 钉钉列)
- 企业微信 · 智能表格 —— 公式引擎最强、API 写入最顺;无原生自动化,10 条提醒降级为"预警列+巡检视图+定时 SOP"(走 §11 企微列)
规则:
- 用户已明确平台,或消息中出现平台特征(飞书分享链接、dingtalk.com/alidocs 链接、doc.weixin.qq.com 链接)时跳过弹窗,直接路由
- 做出选择后只执行该平台流程;本文档其他平台的命令、字段格式、ID 一律不得混用(平台差异速查见 §11)
- 连接器检测:搭建前,必须先检测目标平台 CLI 可用性(§1.1)。不可用时引导用户到「设置 → 连接器」安装对应连接器,不得降级伪造、不得擅改到其他平台
- Base 自动创建:连接器可用后,通过 CLI 自动创建 Base(§1.2),不需要用户手动新建或提供 Base token
- 用户在已搭建过的系统上做日常操作(查询/改期/结案),同样先按其平台加载对应规格,再执行核心业务(§2–§3)
1. 前置条件与连接器检测
1.1 连接器可用性检测(第 0 步,强制)
开始搭建前,Agent 必须先检测目标平台的 CLI 是否可用:
- 飞书:执行
lark-cli --version或任意 lark-cli 命令,确认返回正常 - 钉钉:执行
dws --version或任意 dws 命令,确认返回正常 - 企业微信:执行
wecom-cli --version或任意 wecom-cli 命令,确认返回正常
连接器可用时:
向用户发送确认消息,然后直接进入 §1.2 自动创建 Base:
> ✅ 检测到 [飞书/钉钉/企业微信] 连接器已就绪,正在为你自动创建 Base 并搭建案件管理系统,全程无需手动操作,预计 8 分钟完成。
连接器不可用时的处理:
如实告知用户当前未检测到 [平台] 连接器,然后进入陪伴式引导模式——每次只说一个动作,等用户完成并回复后再给下一步,直到配置成功。
第一步(发送以下消息):
> 检测到你的 WorkBuddy 尚未配置 [飞书/钉钉/企业微信] 连接器,我来一步步带你配置,你只需要跟着点就行,全程约 2 分钟。
>
> 第 1 步:请看 WorkBuddy 左侧栏,找到「专家·技能·连接器」这一行(图标是三个小圆圈),点击它。
>
> 完成后回复「好了」或「找到了」,我告诉你下一步。
后续步骤(用户每回复一次,发送下一步):
> 第 2 步:现在顶部有三个标签:专家、技能、连接器。点击「连接器」这个标签。
>
> 完成后回复「好了」。
> 第 3 步:现在看到连接器列表了吗?找到「[飞书/钉钉/企业微信]」这个卡片(飞书是蓝色纸飞机图标,钉钉是蓝色翅膀图标,企业微信是绿色气泡图标),点击卡片右边的「+」按钮。
>
> 完成后回复「好了」。
> 第 4 步:现在会弹出 [飞书/钉钉/企业微信] 的登录窗口,请用你的账号登录并授权(扫码或输入密码)。这是最后一步,授权完成后就配置好了。
>
> 登录授权完成后回复「好了」或「配置完了」。
用户完成全部步骤后:
重新执行 CLI 可用性检测,通过后发送:
> ✅ 连接器配置成功!正在为你自动创建 Base 并搭建案件管理系统,全程无需其他手动操作,预计 8 分钟完成。
然后进入 §1.2 自动创建 Base 流程。
用户中途卡住时:
如果用户回复「没找到」「看不到」「不会」等,不要跳过,用更具体的描述重新引导:
- 「专家·技能·连接器」→「左侧栏中间位置,写着'专家·技能·连接器'七个字,图标是三个小圆圈」
- 「连接器标签」→「顶部三个按钮,最右边那个写着'连接器'」
- 必要时建议用户截图发过来,根据截图判断位置。
1.2 Base 自动创建(无需用户手动操作)
连接器可用后,Agent 通过 CLI 自动创建 Base,不需要用户手动新建或提供 Base token:
- 飞书:
lark-cli base +base-create --name 案件管理系统,从输出中提取 Base token - 钉钉:
dws aitable create --name 案件管理系统,从输出中提取 Base token - 企业微信:
wecom-cli smartsheet create --name 案件管理系统,从输出中提取 Base token
创建成功后告知用户 Base 已就绪,直接进入搭建流程。
2. 12 张表规格(字段名一字不差)
T1 案件总表(24 列):案件名称(文本主列)、案号(文本)、案由(单选:民间借贷/赠与合同/房屋租赁/劳动关系/股东出资/盗窃罪)、审级(单选:一审/二审/再审/仲裁)、委托人(文本)、跟进律师(人员,提醒路由键)、收案日期(日期)、开庭时间(日期时间★)、开庭地点(文本)、法官(文本)、法官电话(电话)、上诉截止日(日期★)、状态(单选:洽谈/立案/搁置/庭前/庭后/已结案/待执行/归档)、合同收费(货币)、是否结案(勾选)、备注(文本)、案件进度(汇总:未完成任务名)、诉讼节点提醒(公式F2)、实收金额(汇总F3)、实付支出(汇总F4)、未收欠款(公式)、案件结余(公式)、执行到位(汇总F5)、执行未到位(汇总F6)。
T2 任务清单:任务名称(文本主列)、所属案件〔关联T1〕、任务截止时间(日期时间★)、剩余天数(公式=截止−TODAY())、任务预警(公式F7)、重要紧急程度(单选四象限:重要且紧急/重要不紧急/不重要但紧急/不重要不紧急)、跟进律师(人员)、进度(百分比)、是否完成(勾选)、创建时间(系统)、备注(文本)。
T3 财产保全表:所属案件〔关联T1〕、诉讼案号、执行案号、申请人、被申请人、财产类型(单选:银行存款/微信余额/不动产/商业保险/动产)、受理机构、联系人、电话、查封/冻结起始日、查封/冻结到期日(★)、查封期限(单选:1年/2年/3年)、查封状态(公式F8)、保全提示(公式F9)、查封裁定及告知书(附件)、是否结案(勾选)、备注。
T4 财务收支表:所属案件〔关联T1〕、收支类别(单选:收入/支出)、费用分类(单选〔动态选项←T5〕:律师费/顾问费/其他收入/快递费/差旅费/其他支出)、金额(货币)、收支明细(文本)、交易日期(日期,必填口径)、可提取(勾选)。
T5 收支分类表(字典):费用类型、收支类别、说明。
T6 顾问单位服务情况:顾问单位(文本主列)、负责律师(人员★)、顾问费(货币)、服务开始日期、服务到期日期(★)、服务状态(公式F10)、法律咨询次数/起草审查合同次数/律师函次数/法律意见书次数/其他服务次数(5 汇总列)、服务时长(汇总求和)。
T7 服务内容记录表:服务单位〔关联T6〕、服务类型(单选:法律咨询/起草/审查合同/律师函/法律意见书/其他)、服务内容(文本主列)、开始时间、结束时间、服务时长(公式=(结束−开始)×24)。
T8 快递表:快递号(文本主列)、快递公司(单选:ems/顺丰)、签收状态(单选:已签收/运输中)、所属案件〔关联T1〕、快递条形码(附件)、备注。
T9 学习目标表:学习目标(文本主列)、学习进度(百分比)、学习状态(单选:正在学习/尚未开始/已经学完)。
T10 具体学习计划表:所属任务〔关联T9〕、任务目标、学习日期、学习时长(小时)(数字1位小数)、备注。
T11 常用网站:网站名称(文本主列)、网址(超链接)、说明。预置:中国裁判文书网/中国执行信息公开网/国家企业信用信息公示系统/中国庭审公开网/12368诉讼服务网/人民法院在线服务/北大法宝/威科先行/全国律师执业诚信信息公示平台。
T12 执行查控表:所属案件〔关联T1〕、执行案号(文本主列)、被执行人、执行依据、执行立案日期、请求执行金额(货币)、到位金额(货币)、未到位金额(公式=请求−到位)、查控措施(多选:银行账户查冻/不动产查封/车辆扣押/限制高消费/纳入失信名单/工资收入扣划)、最近查控更新(日期)、承办法官、法官电话、执行状态(单选:准备中/查控中/部分到位/执行完毕/终本)、备注。
2.5 搭建 SOP(建议顺序)
- 建 Base → 按 T5→T1→T2/T3/T4/T7/T8/T12→T6→T9/T10/T11 顺序建表(先字典和主表)
- 每表先建存储列,再建公式/汇总列(引用就绪后才建,避免空引用)
- 灌演示数据(§7 基准值),读回公式值验证
- 建视图:在办案件(状态≠归档/已结案)、待开庭案件(开庭时间排序)、已结案件、未完成任务、未结执行
- 逐条创建 10 条自动化并 enable(飞书/钉钉 API 新建默认 disabled)
- 建仪表盘(案件盘:状态饼/案由饼/月度新收柱/律师在办柱/合同收费与实收两指标卡;顾问盘:服务次数柱/类型饼/顾问费卡/时长柱)
- 按 §7 验收清单逐项打勾;按 §12 标准生成终端用户手册
3. 公式表达式(飞书引擎原文;他平台按 §11 翻译)
跨表匹配键规则:关联列参与比较时被归一化为对端主键文本——T1 主键用文本列"案件名称"才能匹配上;若平台主键是自动编号,须加文本镜像列再匹配。
- F2 诉讼节点提醒:
IF(AND([开庭时间]-TODAY()>=0,[开庭时间]-TODAY()<=3),"3日内开庭",IF(AND([上诉截止日]-TODAY()>=0,[上诉截止日]-TODAY()<=7),"上诉截止临近","")) - F3 实收金额:
[财务收支表].FILTER(CurrentValue.[所属案件]=[案件名称] && CurrentValue.[收支类别]="收入").[金额].LISTCOMBINE().SUM();F4 实付支出同把"收入"换"支出" - F5 执行到位:
[执行查控表].FILTER(CurrentValue.[所属案件]=[案件名称]).[到位金额].LISTCOMBINE().SUM();F6 执行未到位结果列换[未到位金额] - 未收欠款=
[合同收费]-[实收金额];案件结余=[实收金额]-[实付支出] - F7 任务预警:
IF(OR([是否完成],ISBLANK([任务截止时间])),"",IF([剩余天数]<0,"已逾期",IF([剩余天数]<=2,"2日内到期",""))) - F8 查封状态:
IF([查封/冻结到期日]<TODAY(),"已过期",IF(AND(TODAY()-[查封/冻结到期日]>=-30,TODAY()-[查封/冻结到期日]<=0),"即将到期",IF([查封/冻结到期日]>=TODAY(),"查封/冻结中",""))) - F9 保全提示:
IF([查封状态]="已过期","到期需续封或处置",IF([查封状态]="即将到期","即将到期需续封","在封中")) - F10 服务状态:
IFS(DAYS([服务到期日期],TODAY())<0,"已过期",DAYS([服务到期日期],TODAY())<=30,"即将到期",DAYS([服务到期日期],TODAY())>30,"服务中")(飞书 DAYS(a,b)=a−b) - F11 五类服务次数:lookup counta from T7 where 服务单位 intersects 顾问单位 AND 服务类型==对应值;服务时长 lookup sum
4. 引擎坑位库(飞书为主,改动前必读,全部实战验证)
公式引擎
- link 字段名 == 表名 →
[X].[Y]被解析为整表列。修复=改名+重写引用公式。 - FILTER 内
CurrentValue.[link].[field]二级链不支持(静默[无效引用]);三级链也不支持。跨表取父单字段用两段二级链辅助字段。 - 比较两侧表示必须一致:link 归一化为主键文本 vs 名称文本永远不匹配 → 统一用文本主键。
- 带方括号的字段引用
[【案件名称】]可解析;[日期]-TODAY()可与数字比较(引擎按天)。
工作流引擎
- SetRecordTrigger 对公式字段加 operator/value 过滤运行时永不触发。正解:watch 不带值 + IfElseBranch 用 link 钻取父表真实 select 做状态门;真实 select 直接监听时
option{name}可自动解析 id。 $.findStep.recordNum数字比较可用;children.links 只给 if_true 可以;Action 节点禁设 children。- 消息按钮自包含:
btn_list[{text,btn_action:"setRecord",record_values:[{field_name,value:[...]}]}]改触发记录(勾 checkbox 用value_type:"boolean");openLink的 link 可插值$.trigger_1.recordId。 - receiver 支持两级 link 下钻
$.trigger_1.fldLink.fldUser;至少要含一个有效收件项。 - 触发器只对"修改"生效;新建即满足条件的记录不触发(演示数据先建后改一次即可补触发)。
- workflow create 需唯一 client_token(失败也消耗,重试换新值);新建默认 disabled 必须 enable;update 全量 PUT 且保留启停;平台无 delete 只能 disable。
- ReminderTrigger(日期字段前 N 天/月弹卡)offset 范围 DAY∈[-7,7]、MONTH∈[1,7];FindRecordAction 对公式列 text 筛选偶尔被拒(allowed option,ref)→ 改对真实日期列用 date 算子(isLess+"today")。
CLI/平台
- 中文 JSON 一律 Write 到 CLI 解析目录后
--json @./f.json(@file 支持是逐命令的,个别命令如 role-create 不支持);table-list/field-list/record-list 串行;lark-cli api 子命令必须传完整 URL。
5. 工作流配方库(10 条)
| # | 名称 | 触发 | 动作要点 |
|---|---|---|---|
| A1 | 开庭前1天提醒 | 日期到达:开庭时间前1天09:00 | 卡片→案件跟进律师:案号+时间地点+【查看案件】 |
| A2 | 上诉截止前2天提醒 | 日期到达:前2天10:00 | 卡片→跟进律师:逾期生效风险提示 |
| A3 | 任务截止前1天提醒 | 日期到达:前1天17:00 | 卡片→任务跟进律师 |
| A4 | 保全到期前7天预警 | 日期到达:前7天09:30 | 卡片→保全跟进律师:续封提示 |
| A5 | 顾问合同到期前1个月提醒 | 日期到达:前1月09:30 | 卡片→负责律师:续签提示 |
| A6 | 逾期任务每日盘点 | 定时 DAILY 17:00 | Find(任务预警="已逾期")→计数+最近一条汇总卡 |
| A7 | 保全已过期每日提醒 | 定时 DAILY 09:30 | Find(到期日 isLess today)→汇总卡 |
| A8 | 案件结案确认卡 | 记录变更:状态 is 已结案 | 卡片→跟进律师,【确认结案】setRecord 是否结案=true +【查看案件】 |
| A9 | 执行完毕通知 | 记录变更:执行状态 is 执行完毕 | 卡片→两级下钻 $.trigger.所属案件.跟进律师 |
| A10 | 执行终本提醒 | 记录变更:执行状态 is 终本 | 同上,提示恢复执行 |
DSL 骨架(飞书,字段引用一律 fldXXX):
{"client_token":"<每次唯一>","title":"<名称>","steps":[
{"id":"trigger_1","type":"ReminderTrigger","next":"action_1","data":{"table_name":"案件总表","field_name":"开庭时间","offset":1,"unit":"DAY","hour":9,"minute":0}},
{"id":"action_1","type":"LarkMessageAction","next":null,"data":{"receiver":[{"value_type":"ref","value":"$.trigger_1.fld跟进律师"}],"send_to_everyone":false,"title":[{"value_type":"text","value":"开庭提醒"}],"content":[{"value_type":"text","value":"案件【"},{"value_type":"ref","value":"$.trigger_1.fld案件名称"},{"value_type":"text","value":"】即将开庭…"}],"btn_list":[{"text":"查看案件","btn_action":"openLink","link":[{"value_type":"text","value":"<base链接>?table=<tid>&record="},{"value_type":"ref","value":"$.trigger_1.recordId"}]}]}}]}
定时扫描型(A6/A7):TimerTrigger{rule:"DAILY",start_time,is_never_end:true} → FindRecordAction{filter_info,should_proceed_when_no_results:false} → LarkMessageAction(引用 $.step_find.recordNum、$.step_find.firstfieldsRecord.fldXXX)。
6. 日常操作 Playbook(8 场景摘要)
- 接案建档:T1 建行→填关键日期→状态"立案"→顺手建 2-3 条任务(挂案件+截止时间)
- 任务销项:卡片+「未完成任务」视图双入口;办完勾选,案件进度列自动减少
- 开庭上诉:开完庭改"庭后";拿判决当天填上诉截止日(送达次日起第15天)
- 保全续封:裁定下来回填起始/到期日;到期前7天预警,提前30天递续封申请
- 顾问留痕:每次服务 T7 记一行,次数/时长自动累计进 T6,续约谈判直接甩表
- 财务对账:每笔收支行记"交易日期";未收欠款>0 即催收清单
- 结案归档:状态"已结案"→点卡片【确认结案】→卷宗归档后改"归档"
- 执行回款:T12 建行盯查控;每笔回款改到位金额;"执行完毕"卡片提示推进结案
- 排障第一问:没收到提醒?→ 对应日期字段填了吗、是未来的日期吗、流程 enable 了吗、收件人字段有人吗
7. 验证清单(搭建后逐项打勾)
- field-list 读回表达式无
[无效引用]/null - 演示基准值三处抽检:狗蛋案 实收13000/未收欠款−10000/执行未到位10000;铁柱案 执行到位8000;小花案 诉讼节点提醒="3日内开庭"
- 明天 09:00 前收到 A1 开庭卡(小花案开庭=明天 09:30 埋点)
- 任一案件状态改"已结案":秒收 A8 卡,点【确认结案】勾选生效
- 执行状态改"执行完毕":A9 卡到达案件跟进律师
- 视图/仪表盘出图;演示数据清理后系统行为正常
8. 安全与隐私
包内不含任何密钥、token、租户私有 ID;所有操作以使用者自身平台身份授权执行;脚本仅做最小必要读写。实例化后的 Base 权限由使用者自行管理。
9. 更新
见 CHANGELOG.md;语义化版本,minor=新增能力,patch=修坑。
10. SkillHub 上架与打包踩坑记录(2026-09-17 实测)
10.1 zip 打包三条铁律
- 条目路径必须正斜杠。PowerShell
Compress-Archive在 Windows 上写入反斜杠条目,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 .sh。
10.3 浏览器自动化上传坑(人工上传可忽略)
- Chrome 后台标签不弹文件选择框:先 OS 点击该标签页激活,再点「选择 zip 文件」。
- 千问办公顶部「正在操控您的电脑」黑条遮挡页面上部点击:先
scrollIntoView({block:'center'})把目标元素移出顶部再点。 - 文件树每行的删除按钮与图标选项按钮外观相似,不要全局匹配点击,务必限定作用域,否则会误删已选文件。
- 图标选择网格需先点开下拉才渲染;选择后占位符检查可能失真,以提交结果为准。
10.4 React 受控表单与报错捕获
- 输入框设值:
Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,'value').set.call(el,v)后dispatchEvent(new Event('input',{bubbles:true})),直接赋.value不生效。 - 提交失败 toast 仅显示「提交失败」无细节:monkey-patch
window.fetch记录响应 body,才能看到真实错误(如文件类型拒绝)。
10.5 提交与审核
- 接口
POST https://api.skillhub.cn/api/v1/orgs/{orgId}/skills,返回 201 即提交成功,reviewStatus/contentAuditStatus/securityScanStatus=pending表示进入安全扫描+内容审核;通过后自动上架。 - 审核进度在「我的 Skills」查看;被拒时
reviewRejectReason给原因。 - 升级:bump 版本号 + 变更说明 + 重传 zip 提交新版本;旧版本保留可回退。审核中的版本不要重复提交同版本号。
11. 多平台适配器路由(三平台均生产实测)
同一份核心规格(§2 表结构、§3 公式模式、§5 工作流配方)在三个平台的落地差异速查:
| 能力 | 飞书多维表格 | 钉钉 AI 表格 | 企业微信智能表格 |
|---|---|---|---|
| 工具 | lark-cli(§1–§7 全流程现成) | dws aitable |
wecom-cli smartsheet |
| 跨表按值聚合 | lookup+filter 公式(§4 坑 1/2 全在此) | filterUp 字段 | formula FILTER(lookup 不能引用公式列,错误 640027) |
| 台账条件求和 | 公式内 FILTER | filterUp filters(join 键指原始 text 列) | 表.FILTER(cur.关联列=本行文本主键).列.SUM() 原生支持(关联显示值=主键文本) |
| API 行的公式重算 | 正常 | 不重算:field update 原样重存 config 唤醒(先明细后汇总) | 正常 |
| 到期提醒 | ReminderTrigger 原生(前N天/月) | 日期到达触发原生 | 无自动化:预警公式列+巡检视图+每日 09:30/17:00 SOP |
| 状态卡按钮 | workflow 卡片 setRecord | workflow-dsl updateRecord 按钮 | 无(人工双确认) |
| 执行历史查询 | 无 API(看 IM 收卡验证) | 有 workflow history API | — |
| 工作流写关联字段 | 可以 | 不可以(静默丢弃)→ 文本关联键方案 | 可以(record_id 格式) |
| 建表时带关联列 | 可以 | 可以 | 静默丢弃→建表后 fields add 单独补;反向列默认名"关联"须重命名 |
| 公式括号不闭合 | 报错 | 报错 | 创建成功但值恒 null→必须读回取值验证 |
| 日期相减 | 可与数字比较 | 正常 | 需 INT() 强转;×24 有浮点尾噪需 ROUND |
| 表单创建 API | 可以(分享仅 UI) | 无 create API(UI 建) | 无 |
| 仪表盘 | 3 块已验证 | dashboard 12/48 列两协议;chart get 不回标题 | 图表仅挂 dashboard 子页;计数图省略 series |
| 中文 JSON 传参 | @file(逐命令支持) | dws 宿主直执行,@file 绝对路径 | --json "$(cat f.json)" |
选平台建议:要开箱全套提醒选飞书或钉钉;纯 API 写入、接受巡检制选企微。三平台验收基准值一致(§7 第 2 条)。
12. 终端用户手册编写标准(交付给买家的最后一环)
搭建完成后,Agent 按此骨架为买家生成小白手册(飞书 doc / 钉钉 doc / 企微 doc 对应平台):1 分钟认识系统 → 架构与状态机 → 逐表逐字段"怎么填/作用"表 → 10 条自动化一览与卡片按钮用法 → 8 场景分步操作 → 视图速查 → FAQ≥10(提醒四查/提前量改法/演示数据清理顺序/公式列只读/filterUp 重算办法/权限分配/手机端/误删恢复)→ 平台差异声明 → 验收清单。