任意对象六能力覆盖 — 探查与数据源统一记录(2026-07-12)

任意对象六能力覆盖 — 探查与数据源统一记录(2026-07-12)

用户意图

"现已能识别/创建/修复/优化/比对/生成对象,想实现任意对象都能走这六能力。"

已完成(本次)

  1. SCSAI 2379 条规则拉取至本地标准库 server/data/sciot_import.db(只读同步,不动 SCSAI)。
  • 脚本:server/scripts/sync-rules-SCSAI-to-local.js(分页拉取 + INSERT OR REPLACE 去重)
  • 结果:标准库从 2367 → 含 2379 条 SCSAI 规则(gen-* 前缀,与 builtin 不冲突)
  1. 补齐 32 条独有 builtin 规则到标准库(之前只在 rule_engine.db,标准库缺)。
  • 脚本:server/scripts/merge-builtin-raw.js(用原始 sql.js 绕过 db-adapter debounce 落盘坑)
  • 结果:标准库 sciot_rules_v2 从 2367 → 2399 条(76 builtin + 2323 SCSAI)
  1. 引擎 init 时从标准库合并 SCSAI 规则:改 rule-engine.js_syncBuiltinRules 之后新增 _mergeStdRules(),启动时把标准库 2323 条 SCSAI 规则 INSERT 进引擎运行时库。
  • 验证:[RuleEngine] 从标准库合并了 2323 条规则(含 SCSAI 全量)
  • getRules 实际查到合并后数据(identify/Part → 2 条,validate/Part → 6 条)

关键发现(阻断"任意对象"的真正瓶颈)

  1. SCSAI 2379 条规则执行体不兼容:它们是 gen-* 前缀、用 bossagent_generated_aml 当执行体,引擎 _evaluateCondition 不认,matched 但不产生结果(噪音,非能力)。
  2. 引擎运行时库 rule_engine.db 元数据覆盖太窄
  • sciot_properties276 个 ItemType(2821 字段)
  • 标准库 sciot_import.dbsciot_properties 覆盖 1204 个 ItemType
  • rule_engine.dbis_required=1 只有 12 条 → 规则工厂"必填校验"基本空转
  1. 规则工厂模式已存在且是"任意对象"的正解rule-engine.js 内置通配规则(item_type_name=null):
  • builtin-generic-required-check(必填校验,依赖 sciott_properties.is_required / templates.required_fields)
  • builtin-generic-list-check / builtin-generic-length-check / builtin-generic-defaults / builtin-generic-sequence-gen
  • 这些规则通过 _injectTypeContextsciot_properties 注入该 ItemType 的字段约束,对任何有元数据的 ItemType 生效
  1. 双 DB 历史坑再现createDatabaseFresh 返回的实例与引擎 this.db 可能是不同实例;db-adapter 的 save() 是 debounce,进程快速退出会丢写(必须用原始 sql.js 或 save()/close 强制落盘)。

结论

  • 六能力框架完整,规则工厂机制支持任意 ItemType。
  • 但引擎运行时库元数据覆盖窄(276 vs 1204)、必填定义缺失 → 规则工厂对"任意对象"目前基本空转。
  • 让"任意对象"真正可用 = 引擎 init 时同步全量元数据(sciot_properties/templates/list_values 从标准库→引擎库),使规则工厂覆盖 1204 类。必填校验还需可靠的必填定义源(SCSAI 模板或手动补)。

待决策

  • A) 同步全量元数据让规则工厂覆盖 1204 类(推荐,低风险、 additive)
  • B) 适配引擎执行 SCSAI 2379 条的 generated_aml(工作量大,且 SCSAI 规则语义未必契合本地引擎)
  • C) 未知类型走 LLM 动态生成规则
  • 必填字段定义源:从 SCSAI 抓每类 required_fields,还是接受"任意对象仅做 list/长度/默认值校验,必填靠核心类已补数据"?

修改文件

  • server/core/rule-engine.jsinitialize()await this._mergeStdRules();新增 _mergeStdRules() 从标准库合并 SCSAI 规则
  • server/scripts/sync-rules-SCSAI-to-local.js(新增,只读同步脚本)
  • server/scripts/merge-builtin-raw.js(新增,补齐 builtin 到标准库)
  • server/data/sciot_import.db(2367 → 2399 条规则)
← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁