Install
openclaw skills install smartbi-cliTrigger on Smartbi BI business asks (训练资源、报表分析、指标/交易统计、大模型问句、先训后查链式意图); map intent to operationKey via smartbi CLI.
openclaw skills install smartbi-cli把用户业务意图映射到唯一 operationKey,并按流程使用 smartbi CLI 完成调用;失败时给可执行修复命令。
operationKey 格式为 ${domain}.${operationId}(如 demo.createOrder、aichat.getAgentItems)。list 输出结果可直接复制作为 describe/call 的参数。
当用户描述“业务动作 + 业务对象”,但未显式给出接口名/operationKey(例如“帮我训练模型资源A”“基于模型资源A分析去年销售额”)时触发。
当用户问及 BI 相关业务操作(分析、训练、指标查询、报表/问句类需求)时,应默认尝试触发本 skill,再通过 discover 流程收敛到唯一 operationKey。
smartbi,安装命令与顺序以 references/init.md 的 标准安装 为准(npm install -g @smartbi/cli@latest,随后 smartbi --version)。npx 临时跑包、或其它名称/路径“看起来像 smartbi”的程序代替上述 smartbi。yarn / pnpm / bun 等替代 npm 完成本 skill 规定的全局安装。references/init.md:先 smartbi init(或按需 smartbi init --print 预览),再按文档编辑 由 init 生成/指向 的配置;不得跳过 init 手写一套未经验证的配置结构。~/.smartbi/config.yaml,或用户在完成 init 后 明确指定 且与本文档一致的 --config <path>。MUST NOT 在系统中搜索、猜测或套用“文件名像 config.yaml / smartbi 配置”的其它文件。在运行任何会访问 sdk-server 的 smartbi 子命令(list / search / describe / call)之前,若根据当前生效配置(默认 ~/.smartbi/config.yaml,或显式 --config)与进程环境可判定 最小连接条件未满足,则 MUST:
token / tokenEnv)、或 tokenEnv 对应变量未设置时仍执行上述命令“试探”。baseUrl / baseUrlEnv 二选一且运行时能解析出 sdk-server 根 URL — init 默认仅 baseUrlEnv,须设置对应环境变量或改回字面量 baseUrl;以及 tokenEnv 与 token 二选一及取值方式;若选 tokenEnv,须确认当前环境中该变量已赋值)。references/init.md 补齐(或提供可写入的值且经用户授权)后再继续。典型缺项(用于判定,非穷尽):YAML 未配置 baseUrl 与 baseUrlEnv 二者之一;仅 baseUrlEnv 但变量未赋值且无 baseUrl 回落;未配置 token 与 tokenEnv 二者之一;已配 tokenEnv 但进程环境中无对应值。
构造 call 参数时,应主动获取 docs/specs/ 下的业务文档作为理论依据;文档不可用或未覆盖时,以 schema 定义兜底。
取值优先级:
requestBodySchema(兜底):字段类型、必填/可选、嵌套结构 — 文档不可用或未覆盖时使用callParameterPlan:参数分组和 CLI 标志映射suggestedCall:仅供参考的命令行模板行为指引:
默认不强制在每个新会话先检查 smartbi-cli 安装/~/.smartbi/config.yaml。
直接进入 Phase 1(list / discover)。
当任意一次实际执行 smartbi(任意子命令)时,若出现下列情况,才读取 references/init.md 做补齐与排查:
CLI 不存在(最高优先级,MUST 先于一切)
若 shell/系统明确提示 找不到 smartbi 可执行文件(例如 command not found、'smartbi' 不是内部或外部命令、is not recognized、ENOENT、退出码 127 等),说明 尚未安装、未在 PATH,或运行中途被卸载。
此时 MUST:
list/search/describe/call)及任何“猜 operationKey、换路径盲试、用 curl 代替 CLI”等行为。references/init.md 中的 标准安装,在终端实际执行 npm install -g @smartbi/cli@latest,并用 smartbi --version 验证成功后再继续。references/init.md 的 重装后恢复顺序 处理 smartbi init 与配置(不得口述安装、不得跳过版本验证)。其他惰性触发(仍读 references/init.md)
AUTH_FAILED / FORBIDDEN / PROFILE_NOT_FOUNDNETWORK_TIMEOUT / NETWORK_ERROR / UPSTREAM_UNAVAILABLEINVALID_ARGUMENT 且 hint 指向 Config file not found其余错误按 Phase 4 diagnose 流程处理。
smartbi list --agent(必要时 --verbose),将候选全集交给大模型做语义重排。--domain / --service 再次 list 收敛。smartbi search <operationKey> --verbose --agent 获取详细信息(description、请求/响应 schema、参数等),由大模型基于详细信息做二次筛选以消歧。operationKey(见 references/discovery.md 模板)。search 的关键词检索仅作为补充回退手段(例如用户提供了明确关键词锚点时),不再作为默认第一步。Phase 1 定位约束(MUST):
list 路径定位接口,不得先走 search 作为主路径。smartbi search <operationKey> --verbose --agent 以获取详细信息辅助选择。describe / call。smartbi describe <operationKey> --agent
消费字段:callParameterPlan、requestBodySchema、consumes/produces、suggestedCall。
describe 完成后,应主动尝试加载关联文档作为理解接口语义的理论依据。
步骤 1:识别文档来源
| 维度 | 识别方式 | 示例 |
|---|---|---|
description 中的链接 | 扫描 describe 输出的 description 字段中的 Markdown 链接 | [MDL详情](/docs/specs/tabularmodel/mdl/mdl.md) |
requestBodySchema 中的链接 | 沿 $ref 链查找被引用 schema 的 description 中的链接 | schemas.yaml 中组件定义的 description |
| domain 推断 | 根据 operationKey 所属 domain 推断相关文档目录 | createDataSet → docs/specs/tabularmodel/ |
| 数据类型推断 | 根据请求体中涉及的核心数据类型推断参考文档 | 含 DataSetMeasure → docs/specs/tabularmodel/mdl/references/measures.md |
llmBrief / summary 中的引用 | 检查 describe 输出其他字段中的文档引用 | — |
步骤 2:加载文档:对识别到的文档路径,执行 smartbi doc <path> --agent,将返回的 content 纳入上下文。
步骤 3:递归穿透:加载的文档内容中包含的引用链接应继续加载,以建立完整理解:
/ 开头):直接作为 path 传给 smartbi doc/ 开头):基于当前文档路径解析为绝对路径后传给 smartbi doc(如 ../../design/xxx.md → /docs/design/xxx.md)https://...):使用 WebFetch 获取guide.md)中的目录链接宜优先穿透步骤 4:文档优先,schema 兜底:
requestBodySchema 和 callParameterPlan文档引用处理(MUST):若 description 中包含 Markdown 链接(如 [详情](/docs/specs/demo/test.md) 等引用),MUST 执行:
smartbi doc <path> --agent 获取文档内容(path 取链接中的路径,如 /docs/specs/demo/test.md)content 纳入上下文辅助理解接口语义/ 开头,如 /docs/design/xxx.md):直接作为 path 传给 smartbi doc/ 开头,如 ../../design/xxx.md):基于当前文档的 URL 路径解析为绝对路径后再传给 smartbi doc(例如 /docs/specs/demo/test.md 中的 ../../design/xxx.md → /docs/design/xxx.md)https://...)链接使用 WebFetch 获取smartbi call <operationKey> ... --agent
构造 call 参数时,遵循「文档优先级原则」确定每个字段的值:
requestBodySchema 和 callParameterPlan 确定字段类型、必填/可选及嵌套结构。-d @file.json(MUST,避免跨 shell/OS 转义差异)-d '{"k":"v"}' 或 -d "{\"k\":\"v\"}")call 新建的 JSON 文件:在 call 流程结束后 MUST 删除(详见 references/call.md「临时请求体文件」);不得删除用户自带的 @ 文件--idempotent 与/或 describe 元数据)前置条件检测与子任务(MUST):
call 前,若根据 Phase 2 describe 的 callParameterPlan / requestBodySchema 判定存在依赖其他 smartbi 操作才能获取的参数值(如需要先查询资源 ID、先创建关联对象等),则 MUST 先创建子任务处理前置需求。smartbi-cli 技能,以用户业务意图描述完成该前置操作,获取所需参数值。call 的参数,再继续执行。references/call.md「前置条件与子任务」):
operationKey + 相同参数意图,在同一调用链(从原始 call 到当前深度的全链路)中已完成的前置操作,不得重复发起,应复用已获取的结果失败后 smartbi describe <operationKey> --agent;仍有契约歧义再加 --include-raw-schema
operationKeystatus/tid/核心业务字段)默认只使用本摘要。需要模板/字段映射/检查清单/异常分支时,以及需要加载接口关联文档时,才读取:
references/init.mdreferences/discovery.mdreferences/describe.mdreferences/call.mdreferences/strategy.mddocs/specs/ 下的所有业务文档:通过 smartbi doc <path> --agent 获取,用于理解接口的完整语义、字段合法值、参数构造约束。