3 Commits

Author SHA1 Message Date
ThearchyHelios 8c2ff49b50 use_caliber 的协议写清 card 填什么,写错了交回的原因能一次改对
真实验收里模型第一次常把 card 写成自己起的 c1 被拒,之后才改对:协议示例写的是 "card":"口径卡节点 id",紧接着又说
「口径卡(节点 id 就是 c1)」,两个 id 混在一起。

- api/copilot_context.USE_CALIBER_PROMPT:示例写 "card":"card";说清 workflow_id、version、card 原样照抄,只改 id、metrics、
  inputs;card 是那一版工作流图里口径卡的节点 id(查看结果的写法里写好了),id 是这次选用自己起的名字、生成的口径卡用它当
  节点 id;add_edge c1 → report 里的 c1 是自己起的 id。
- look/calibers.DETAIL_COMPOSE_PROMPT:同样写明 card 原样照抄、id 自己起。
- ledger/compose:card 写错时说清 card 要填节点 id、可填的有哪几个(「节点 id」(口径卡「名字」)),写成了自己起的 id 的
  另说一句「「c1」是你给这次选用起的 id,不是口径卡的节点 id」;几张卡要选时同样列节点 id。校验不放宽。

测试:tests/test_ledger_compose.py 新增两条(协议写清两个 id;card 写成自己的 id 被拒、原因说清该写什么,照着改成节点
id 就过)。改回原来的文字再跑,两条失败。
2026-10-17 12:17:21 +08:00
ThearchyHelios ced7234180 按口径出具也按 SQL 里参数的位置校验绑定值;去掉 certify 没用到的导入
为什么:出具用的参数来自比对时的绑定,运行时要渲染进口径的 SQL 模板。写在引号里的值带着引号、裸写的值不是数,渲染出来就不是那一版口径的 SQL 了。组合时校验助手给的参数用的是同一个判断(ledger/compose.slot_contexts / value_problem),这里共用;那张图里别的节点引用运行时变量的不归出具管,跳过不报。宁可少出具,照实说为什么不代填。
2026-10-16 17:17:48 +08:00
ThearchyHelios 4f4ad48ad7 组合式问数:问数据的助手可以 use_caliber 选用已发布口径,服务端确定性内联实例化(口径账本做法 4,拍板 L3)
为什么:问数据以前看不到口径,也没有组合机制;子图做骨架的路走不通(子图证据不交回父图、使用者用不了子工作流)。改成助手只选口径、填参数,取数节点由服务端按固定版本照抄,证据照常封存、比对照常复证。

做了什么:
- 问数据的查看对象加 caliber(look/calibers 的 compose 模式):另给每张卡的入口字段(类型、必填、可选值、格式、缺省值)和「能不能组合」(ledger/derive.load_pinned 同一个认法),能组合的写出 use_caliber 的写法;仍不给 SQL。只给搭建者及以上:使用者的图里看得到拷进来的取数 SQL。
- 新增 ledger/compose.py:use_caliber {id, workflow_id, version, card, metrics, inputs} 经 derive.caliber_block(扩了 card_id、inputs 两项)实例化——取数节点照抄、id 加前缀、模板按参数渲染成字面 SQL,口径卡 id 就是操作 id、caliber_from 带改名映射。参数按入口字段过 apps/forms 校验,写进 SQL 引号里的不能带引号、裸写的只能是数;只能选这一轮看到的那一版、能组合的卡、卡上的指标;不合规拒收。
- GraphApplier 落地 use_caliber:节点、连线记进 seen(兜底重放照样在),入口连到第一个取数节点;转给界面的只有那一条操作带 result;拒收的原因经自查交回模型(GraphChecker.issues)。
- 提示:协议多一段 USE_CALIBER_PROMPT;LOOK_WHEN 里问数据那一条按细案改写(只在能选用口径时换)。运行时写 SQL 的 Agent 不看口径(L2)。
- 比对器认出助手选用的查询(从封存的图里读 caliber_from.nodes):证明了的标 composed「助手选用」,没能证明的照常是相关口径并说明;标签 how=composed,指标标签记取自哪几条查询;比对算法版本升到 2。
- 前端:问数据过程里 use_caliber 照实显示一行(选用了哪一版、生成几个节点;拒收写原因),节点数算进「新增几个步骤」;文案进 LEDGER_TEXT.use;check-decode 加一节。

测试:tests/test_ledger_compose.py(实例化确定性、各种拒收、查看文字不带 SQL、提示切换、落地与接线、拒收交回模型、剧本模型走一遍生成再真跑出 composed 标签、使用者不给口径)。
2026-10-16 16:35:28 +08:00