report-gen,单次约 100 字符report-gen 命令report-gen 是统一命令、装在 PATH 里;每步业务动作 = 一个子命令,price 异步任务拆 create/poll/fetch。| 脚本模式下的问题 | CLI 化后的改善 | 具体例子 |
|---|---|---|
| 猜脚本路径失败 | CLI 在 PATH 里,模型不需知道物理位置 | report-gen price create 直接能跑,不用先 ls 满地找脚本 |
| Windows 路径 / 引号出错 | CLI 接参数、内部处理路径 | 模型不再写 "C:\Users\...\" 这种被引号转义掉的路径 |
| 模型试图改 Skill 源码 | Skill 目录无脚本可改 —— 物理隔离 | 模型想改 _rewrite.py 兜底 —— 现在目录里根本没有 .py |
| JSON / GBK 编码混乱 | CLI 统一封装读写编码 | 不再出现 UnicodeDecodeError: 'gbk',模型不碰大 JSON |
| 字段名靠猜,KeyError | CLI 输出稳定 schema | 模型不再猜 dimension / 业态 这种字段名 |
feishu 是统一命令前缀,后面跟业务动词 —— 不是 POST /open-apis/docx/v1/... 这种 API 路径。对一个领域内概念、类别及其关系的形式化表示 —— 给出一套共享词汇,对类型、属性、个体、关系建模。
组织的「数字孪生」 —— 把数据集映射到现实世界的对象、事件、流程,做成所有应用、AI 共用的语义层。
| TBox · 术语层 | ABox · 断言层 | |
|---|---|---|
| 是什么 | Schema / 数据模型 —— 定义有哪些类、属性、关系、约束规则 | Instance / 业务主数据 —— 描述真实数据的特征、数据之间的关联关系 |
| 回答的问题 | 「这个领域有哪些概念、它们结构上怎么定义」 | 「现实中具体有哪些东西、它们的值和关系是什么」 |
| 成本合同举例 | 成本合同 这个类,有「签约金额 / 含税 / 结算状态」等属性;规则:结算金额 = 签约金额 + 补差 | 「土建总承包合同 HT-2026-018」这份具体合同 —— 签约 2.4 亿、属于深圳湾一号项目、挂在土建科目下、对应 XX 建工 |
| 稳定性 | 更稳定 —— 像字典/数据模型,不常变 | 更动态 —— 像业务流水,随真实数据不断变 |
「术语组件」—— 用一套类与属性,把领域词汇与结构定义出来。是定义性的,像一本字典。
「断言组件」—— 在 TBox 模型之上,陈述具体事实:某个实例属于哪个类、有什么值、和谁有关系。
# TBox · 成本科目类型与约束 tbox: classes: - id: Class.ProjectIndicator label: 项目成本指标 dimensionProperties: - {name: costSubject, label: 成本科目} - {name: isEndCost, label: 是否末级科目} - {name: productType, label: 业态} measureProperties: - {name: jianAnAmount, label: 建安造价费} - {name: areaUnitCost, label: 建面单方} axioms: # 口径铁律 - rule: "默认只取末级科目 isEndCost=1" - rule: "父子科目不可混算(防重复)"
# ① 用户的业务问句 "深圳住宅的建安单方是多少?" # ② 转成查询 DSL(每个字段都来自 TBox) { cube: ProjectIndicator, # ← TBox 的类 measures: [areaUnitCost], # ← TBox 属性 filters: [ {productType: 住宅}, # ← TBox 维度 {city: 深圳} ] # isEndCost=1 由 axiom 自动补 }
# ABox · 真实业务事实 abox: instances: - {id: 土建工程, isEndCost: 0, amount: 2.4亿, areaUnitCost: 4250} - {id: 钢筋工程, parent: 土建工程, isEndCost: 1, contentRatio: 58kg/㎡} relations: # 共振:特征↑ 带动多个科目↑ - {type: resonance, driver: 结构层高, affects: [钢筋工程, 混凝土工程]} # 替代:两个方案二选一 - {type: substitute, options: [铝模方案, 木模方案]}
# Step 1 · 异常定位(L1/L2) 钢筋含量 58kg/㎡ > 同城样本 45 ⚠ # Step 2 · 沿 resonance 共振边下钻 钢筋工程 ←resonance← 结构层高 → 查得该项目层高 3.6m(样本 3.0m) # Step 3 · 沿 substitute 替代边比对 当前=木模方案,可选 铝模方案 → 铝模含量低 8%,但需评估成本 # 结论:层高刚性 + 模板可优化
土建工程 → 钢筋 / 混凝土 / 模板 —— 科目逐级拆解。
结构层高 → 同时带动钢筋、混凝土 —— 一个特征驱动多个科目。
铝模 ⇄ 木模 —— 互斥方案,归因时要拉出来比对。
| 查询类型 | 对接方式 | 典型场景 |
|---|---|---|
| 简单查询 | CLI 对接 API | 消息、待办 —— 取一条确定的数据,端点固定就够 |
| 复杂查询 | CLI 对接 宽表(+ 本体) | 资管台账、交易台账、合同 / 成本台账 —— 要多维组合、下钻归因 |
大家熟悉的售楼业务问题就是题目:销售目标完成得怎么样、哪个项目去化慢、各业态卖得如何。
售楼早就沉淀了宽表 —— 销售目标、房源、楼栋、货值、认购、合同。数据现成,不用重建。
成本问数已经跑通:把业务口径写进本体、让 AI 不碰数据库细节。售楼照着这套搬过来。
什么时候触发、先做什么、按什么流程走、产物长什么样。
TBox 定概念与口径,ABox 装真实业务事实与关联关系 —— 让 AI 懂这个领域。
同时通过 CLI,为 Agent 提供一套面向 Agent、可精准操作的指令系统 —— 动作可控、口径自动施加。