Skip to main content

Query Model 参考

每个挂载的 Dataset 都是一个 SQL schema。位置 Dataset 命名为 dataset--mount NAME=DATASET 创建命名 schema。即使没有兼容数据提供关系,也稳定暴露六个关系。

关系一行表示什么来源
sources一个发现候选 Source每个 Dataset
runs一个规范化 Run/session每个就绪的 Run 数据源
steps一个规范化 Step每个就绪的 Run 数据源
tool_calls一次工具调用及关联结果每个就绪的 Run 数据源
events一条 canonical 写入时事实仅 canonical event Source
trajectories一个带有序 Step 与工具汇总的完整 Run规范化 Run 数据源

使用 DESCRIBE 查询已安装版本的精确 column:

DESCRIBE dataset.sources;
DESCRIBE dataset.runs;
DESCRIBE dataset.steps;
DESCRIBE dataset.tool_calls;
DESCRIBE dataset.events;
DESCRIBE dataset.trajectories;

Source 身份

实体 ID 是 Source-local。runsstepstool_callsevents 保留 _file_,即 Dataset-relative source_path。持久实体地址包含 Dataset URI、_file_、entity kind 和 original ID。

在一个 Dataset 内联接内建轨迹关系时,entity key 必须同时带 _file_

SELECT r.run_id, s.step_id, s.message_kind, s.message_value
FROM dataset.runs r
JOIN dataset.steps s
ON r._file_ = s._file_
AND r.session_id = s.session_id;

遗漏 _file_ 的内建 join 会被拒绝,因为两个 Source 中相等的 ID 不代表同一实体。跨不同 命名 Dataset 时,每个 schema 已经是不同 namespace,不要求 _file_ 相等。

sources

Column类型含义
_file_UTF-8, non-nullDataset-relative Source path
formatUTF-8, nullable检测或声明的表示
kindUTF-8, non-nullstorefile
snapshot_refUTF-8, nullablegeneration、manifest revision、fingerprint、version 或 ETag
projection_statusUTF-8, nullablecanonical events Source 关联投影的 freshstale 状态
projection_generationUTF-8, nullable被选为读取加速投影的 generation
projection_candidatesUInt64, non-null参与选择的关联投影候选数
size_bytesUInt64, nullable候选文件或 marker object 大小
last_modifiedUTF-8, nullable可用时的 RFC 3339 timestamp
statusUTF-8, non-nullreadyerror
errorUTF-8, nullable脱敏的 discovery 或 resolve 错误

外围文件被惰性打开前,format 可以保持 null。使用 _file_ 过滤可以避免打开无关 Source。 snapshot_ref 只是展示投影;Rust/API 调用方应使用类型化的 CatalogSourceRevision 做一致性判断。

Find 表达式

pchronicle find --match 是当前定位语法。已安装 CLI 的解析器(FindExpr)为准。 RFC-0012 是已接受的决策记录,不是命令参考。

普通词搜索已索引的 Storyline Step 内容(FTS / Jieba)。限定字段使用 #field(term)

选择器含义
#contentmessage_valueobservationprompt
#messagemessage_value
#usersource = 'user'message_value
#assistantsource = 'agent'message_value#agent 是别名)
#systemsource = 'system'promptmessage_value
#reasoningreasoning_content
#observationobservation
#promptpromptmessage_value
#modelmodel_name#model_name 是别名)
#envenv
#all全部已索引的 Step 文本列

AND / OR / NOT 与括号组合谓词。JSONB 使用 $.path OP value#json.COLUMN("$.path") OP valueOP=!=>>=<<=。 重复 --match 表示 AND。

当前实现按表达式推断 search.scope

表达式search.scopesearch.mode
仅文本stepsfts
仅 JSON,未指定 Step 列runsjson
#json.metrics(...)stepsjson
文本加 JSONstepsfts+json
仅身份标志runsidentity

不含 #json.metrics(...) 的纯 JSON 表达式搜索 Run 级 JSONB 列 (agent_extrafinal_metricsextrametaunknown_fields)。 文本与 JSON 混合,以及显式 #json.metrics(...),搜索 Step 级 JSONB (metricsextra)。

查询边界

引擎接受单条只读 SELECTVALUESDESCRIBEEXPLAIN,拒绝 DDL、DML、COPY、 修改函数和多语句。CLI 的行数、字节、discovery 与 timeout 上限仍然生效。

Storyline 精确物理列见 Storyline Lance,discovery 与 predicate pruning 机制属于 Snapshot 设计,完整工作流见 查询指南