-- ai_skill:Skill 注册表(架构 §6)。 -- Skill = 针对重复任务的 playbook(如 新建报价 / 月度对账 / 库存盘点),用工具但不是工具。 -- 渐进披露:name + 何时用(sWhenToUse) 进 system prompt(便宜、常驻);load_skill(name) 工具 -- 按需注入完整指令(sInstructions)。sSuggested = 建议用到的工具/表单(逗号分隔,仅提示)。 CREATE TABLE IF NOT EXISTS ai_skill ( sId varchar(64) NOT NULL PRIMARY KEY, sName varchar(64) NOT NULL, -- Skill 名(load_skill 的入参) sWhenToUse varchar(255) NOT NULL, -- 何时用(一句话,进 system prompt) sInstructions text NOT NULL, -- 详细 playbook(load_skill 时注入) sSuggested varchar(255) NULL, -- 建议工具/表单(逗号分隔) bEnabled tinyint NOT NULL DEFAULT 1, iOrder int NOT NULL DEFAULT 100, tCreateDate datetime NULL ); INSERT INTO ai_skill (sId,sName,sWhenToUse,sInstructions,sSuggested,bEnabled,iOrder,tCreateDate) VALUES ('skill-new-quote','新建报价','用户要为某客户新建/录入一张报价单时', '新建报价的标准流程:\n1) 先用 findForms("报价") 定位报价主表单,拿到 formId/moduleId。\n2) 报价字段较多(客户、币种、含税、明细行等),用 collectForm(该 formId) 弹出表单让用户逐项填写,而不是逐个追问。\n3) 用户填完后,用 proposeCreate 生成待确认的新增提议;务必让用户在对话内点【确认】后才真正落单。\n4) 报价属于自动执行类写入(bAutoExecute),确认后 ERP 会自动生成正式报价单并回链接。', 'findForms, collectForm, proposeCreate',1,10,NOW()), ('skill-monthly-ar','月度对账/超期应收催收','用户要做应收对账、查超期未收款、催收时', '应收对账/催收流程:\n1) 用 queryData 或 findForms("应收") 找到应收台账/收款单据。\n2) 按客户汇总未收金额,用 queryData 做“按客户分组 SUM(未收金额) 并按账龄排序”。\n3) 列出超期(如超过约定账期)客户与金额,提示用户重点催收。\n4) 只读分析,不做任何写操作。', 'queryData, findForms, readFormData',1,20,NOW()), ('skill-inventory-check','库存查询/盘点','用户要查某物料/产品的库存、库存台账、进出明细时', '库存查询流程:\n1) 物料库存看 elematerialsstock 相关表单,产品库存看 productstock。\n2) 用 lookupRecord(物料/产品, 名称) 查单个;用 readFormData 看列表;用 queryData 做汇总。\n3) 严禁传 bUpdate 之类写参数(只读)。\n4) 需要出入库明细时找 *_inoutdetail 视图。', 'lookupRecord, readFormData, queryData',1,30,NOW());