Skip to main content

pChronicle 架构

本文解释 pChronicle 如何存储 Agent 轨迹,并提供有资源限制的读取面。用户工作流属于 Guides,精确命令属于Reference,跨产品 ownership 属于 System Design

pChronicle 产品边界

产品边界

pChronicle 是 Agent 轨迹存储引擎。它可以作为本地工具使用,也可以平台化部署在多条 path 前面。CLI、Web、Agent 和 Warehouse 都是引擎的客户端,不是并列产品。

引擎 API 是:

open(path) → pin Snapshot → 发现 / 定位 / 分析(写入路径上再 append)

Dataset 就是 path:规范化的本地路径或对象存储 URI(s3://az://gs://)。 mount 名、dataset pin(@name)、Directory 的 library 名都是 locator。解析完成后引擎只看见 path。 凭据不得嵌入这条 path。

形态用途持久状态
直接 Dataset检查本地路径或 S3 prefixDataset 外无状态
原生 Dataset接收 canonical event 或 create/append/replace importDataset manifest 与 version
本地默认 Dataset为一个本地 root 省略 Dataset 参数用户配置中的规范化路径
只读 Warehouse为 Web/API review 静态挂载 path;可选 Directory 做 path ACL配置与可重建 cache

pChronicle 不是 scheduler、Agent runtime、全局 Dataset 控制面、分布式 SQL 服务或时序数据库。 Warehouse 只接受 loopback bind。未使用 --catalog-config 时没有用户鉴权;启用后 Directory 与数据面路由要求用户 ak/sk 请求头,这仍不是公网多租户服务。见 RFC-0013

四层

职责不是
PathDataset 身份。本地路径或对象存储 URI。mount 名、dataset pin(@name)、library 名、catalog:// URI
Directory(可选)平台寻址:把名字解析成 path,并决定谁能打开。换票后客户端打开 path。第三种 Dataset。不是 Snapshot。
Snapshot一条 path 上写入与读取之间的同步协议:有哪些 Source、各钉在哪个版本。名叫 Catalog 的产品。不是 Directory 列表。
Query 面发现(list/ls / sources)、定位(find)、分析(query)。全部相对于已 pin 的 Snapshot。Web Explorer 的第四套语义

代码里仍可能使用 DatasetCatalogSnapshot--catalog-config 等名称。用户文档和 RFC 使用 Path、Directory、Snapshot。

Directory 见 RFC-0013。Snapshot 构造见 Snapshot 设计

数据层次与 Ownership

writers and importers
→ canonical events and terminal facts
→ logical Run / Step / ToolCall projections
→ exchange representations
→ lineage-bearing revisions
层次Ownership 规则
canonical event写入时事实;append-oriented 的事实源
logical projection规范化、可重建查询视图
exchange representationimport/export 契约;不会静默升级为全局事实
revision带 parent Snapshot 和 transform lineage 的派生输出

Storyline 是 session-oriented projection。它的 Lance 布局为完整文档重建优化,因此按 session replace 不是 canonical 高频 append 路径。

Dataset 寻址

规范化 path 是资源身份。Source path 标识其中一个能独立发现和版本化的表示。外部 ID 保持 Source-local:

(path, source_path, entity_kind, original_id)

Warehouse mount name 只是 SQL alias。移动到新 path 后就是不同 Dataset。catalog:// 是 Directory 解析用的 pin 类型,不是 DatasetLocation scheme。

读取路径

path(经 Directory 换票或 pin 解析之后)
→ resource-limited discovery
→ pin Snapshot
→ Source pruning and lazy open
→ normalized DataFusion relations
→ resource-limited CLI, API, or Web result

一次操作钉住每个 Source 的 version reference。本地文件使用 identity 与 fingerprint,Lance 使用发布的 generation 或 manifest,对象存储在可用时使用 version 或条件 ETag。Snapshot 不声称无关 Source 共享全局事务时间。

定位(find)与分析(query)共用这个已 pin 的 Snapshot。CLI 与 Web 共用 find 表达式、 报告的 scope 和 snapshot_id。Web UI 可以对返回字段做高亮和可视截取;这层前端匹配不得 改变命中集合。Web Explorer 是定位层的 UI,不是另一套查询语言。

支持时,规范化关系包括 sourcesrunsstepstool_callseventstrajectories。每个实体关系保留 source_path。SQL 只读,并拒绝 DDL、DML、网络函数和 文件函数。

发现与裁剪算法见 Snapshot 设计

写入与发布路径

Gateway 和 native writer 先发布 canonical event,再生成派生视图。Snapshot 引用的对象必须 先持久化,最后才能发布可见 pointer。发布失败时,旧 Snapshot 保持可读。

validate event
→ persist payload or content-addressed object
→ append canonical fact
→ publish terminal fact or projection generation
→ expose through a later Snapshot

Writer 并发由具体 store contract 定义。Snapshot compare-and-swap 本身不意味着 merge-and-retry。 未发布 version 与不可达 object 需要显式维护路径。

Canonical/projection 边界见运行存储,Storyline 实现见 Storyline Lance

只读 Warehouse

Server 静态挂载命名 path。Refresh 先完整构造新 Snapshot,再切换 reader。 Dataset table 先按 Source 裁剪,再打开命中的固定 version;cache 和 routing index 与 Snapshot generation 绑定。

使用 --catalog-config 时,Warehouse 会把 Directory ACL 文件中的全部 [datasets.*] library 挂进数据面(与位置参数挂载等价),并同时提供 catalog:// 列表/换票路由。文件中的 S3 endpoint、region 与后端密钥在打开存储前 写入进程环境。CLI 换票后打开票里的 uri(一条 path)并注入存储钥。这是 path 上的 平台寻址,不是新的 Dataset 种类。

Web 与 API 是同一读取模型的 consumer,不形成新事实源。未知 API route 保持 error,不进入 SPA fallback;只接受 loopback listener。

用户配置见 Warehouse 指南,精确 route 与 Gateway 组合见 pchronicle 参考

保证与明确不保证

领域保证不保证
identitypath + Source path + original ID 保持可见外部 ID 全局唯一
读取一致性一个 Snapshot 内固定 Source reference跨 Source 全局事务
发布新发布成功前旧 Snapshot 保持可读所有 writer 自动 merge retry
查询有资源限制的只读执行任意 mutation 或无限制服务查询
projection声明范围内的 lineage 与可重建性没有 generation 记录的 freshness
服务loopback-only 静态读取面;Directory 模式下数据面用用户钥鉴权公网多租户 Warehouse

相关设计