📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

在 TiDB Cloud Filesystem Journal 中记录 Agent 工作流



此工作流会将规划、工具调用、测试、重试和交接记录为结构化、有序且可验证的事件历史。当运维人员需要跨多个 worker 还原实际发生的过程,而不是依赖零散的控制台输出或仅显示最新状态的可变状态文件时,请使用此工作流。

工作原理

Filesystem 日志(Journal)会存储结构化的仅追加条目,这些条目包含序列信息、可搜索字段、可选的幂等键以及哈希链验证。与普通文本文件不同,日志条目一旦写入后就不能再编辑或截断,生产者也无需自行实现解析、并发或重试去重机制。Agent 会追加诸如 task.startedtest.finished 之类的语义事件;运维人员则可以查询工作流并验证已存储的链。

前提条件

通过已配置的 profile 或 FS token 环境选择一个 Filesystem。

步骤 1:创建日志

ti fs-journal create-journal \ --journal-id jrn-agent-demo \ --journal-kind agent \ --title "dependency update" \ --actor agent:dependency-bot \ --label repository=demo \ --label environment=test

步骤 2:追加工作流事件

ti fs-journal append-journal-entries \ --journal-id jrn-agent-demo \ --idempotency-key dependency-update-start \ --entry-json '{"type":"task.started","status":"running"}' ti fs-journal append-journal-entries \ --journal-id jrn-agent-demo \ --entry-json '{"type":"test.finished","status":"passed","suite":"unit"}' \ --entry-json '{"type":"task.finished","status":"completed"}'

当工作流可能会重试同一次追加操作时,请指定一个幂等键,并在该逻辑运算的每次重试中复用该键。这样服务就会避免存储重复条目。如果省略此选项,则会生成一个新键,这适用于你不打算重试的追加操作。

ti fs-journal read-journal-entries \ --journal-id jrn-agent-demo \ --after-seq 0 \ --limit 100 \ --output text ti fs-journal search-journal-entries \ --entry-type task.finished \ --status completed \ --label repository=demo \ --include-entries

jrn-agent-demo 的有序 read-journal-entries 结果应包含开始、测试和完成事件。

--entry-type--status 过滤器会匹配每个 --entry-json 对象中的 typestatus 字段。在此示例中,它们会选出 payload 中包含 "type":"task.finished""status":"completed" 的条目。

步骤 4:验证完整性

ti fs-journal verify-journal \ --journal-id jrn-agent-demo \ --output text

成功的结果表明,已存储的序列和哈希链是一致的。

清理

日志是仅追加的,目前在公开的 ti 命令集中没有删除命令。对于会创建一次性日志的实验,请使用专用的测试 Filesystem 和唯一的日志 ID,例如 jrn-test-<run-id>。仅当其中包含的文件或日志都不再需要时,才删除其所在的 Filesystem。

安全与运维说明

  • 不要在日志 payload 中放入 API keys、密码、包含 Secret 的 SQL 文本或原始文件内容。
  • 哈希链验证能够检测已存储链中的不一致性;但它不能证明原始事件本身是真实的。

后续内容

文档内容是否有帮助?