IronClaw Reborn Observability Harness:面向 Agent 与审计的“可观测性即调试基础设施“设计指南
人工智能AI 应用交互助手AI Agent【免费下载链接】ironclawIronClaw is an Agent OS focused on privacy, security and extensibility项目地址https://gitcode.com/gh_mirrors/iro/ironclaw点击查看免费下载Reborn 是 IronClaw 的下一代运行时形态其可观测性有一个鲜明前提调试者不一定是人更可能是另一个 Agent。本文基于仓库中 docs/internal/reborn/harness/observability.md 展开系统讲解 Reborn 可观测性 Harness 的目标形态——从通用关联字段、七大证据面、脱敏规则、失败分类到 Doctor Bundle、fail-closed 语义与可持久化事件/审计存储的选型约束。读完本文你将掌握如何用本地产物 一组 ID 一个 replay 命令完成 Reborn 故障的端到端归因并理解生产环境为什么必须对可观测性后端显式选型、fail-closed 拒绝回退。说明该文档描述的是目标形态target shape并明确并不意味着每个字段或命令今天都已存在。文中凡涉及规划中/目标的表述均保留原文档口径凡涉及已存在的能力均给出仓库内可验证的路径作为佐证。一、设计目标为什么可观测性要Agent 可读原文档开宗明义Reborn observability should be agent-readable。一个调试失败的 Agent在提出修复方案之前应当先按顺序检查五类本地证据结构化日志、持久化事件、审计记录、进程状态、UI 工件artifacts。围绕这一核心原文档定义了五条 Goals让 Reborn 的失败能由本地产物解释——不依赖线上环境、不依赖人工回忆保留足够的 ID 以把用户动作与运行时效应关联起来——即一条用户操作 → 一组可追踪 ID → 若干运行时记录的关联链把敏感值挡在日志、事件、快照和面向用户的错误之外——脱敏不是可选项而是可观测性本身的组成部分支持 replay 与 resume 调试——失败现场可被确定性复现、可从中断点继续支撑两个兼容性证据目标#3020 兼容性证据、#3031 产品面迁移证据。这五条目标在仓库中不是孤立的它们与 docs/internal/reborn/harness/replay.md#3020 兼容门证据、#3031 产品面迁移证据的捕获和 docs/internal/reborn/harness/local-dev.md失败的复现只需一条短命令加一个 debug bundle互相呼应共同构成 Reborn 调试闭环的完整拼图。二、通用关联字段跨日志/事件/审计/进程记录的统一 ID 契约原文档规定每一条Reborn 日志、事件、审计记录、trace 和进程记录在适用时都应携带以下字段tenant_id user_id project_id agent_id thread_id turn_id run_id invocation_id process_id extension_id capability_id runtime_kind approval_id lease_id这 14 个字段并非平级罗列而是一条从租户到单次调用的归因链身份与范围层tenant_id → user_id → project_id → agent_id回答这次行为发生在哪个租户、哪个用户、哪个项目、哪个 Agent 名下会话与执行层thread_id → turn_id → run_id → invocation_id把一次对话线程细化到某一次 LLM 调用/工具调用运行资源层process_id后台进程生命周期、extension_id、capability_id、runtime_kindWASM / script / native 等运行时类型控制面层approval_id审批实例、lease_id密钥租约等资源租约。原文档指出持久化事件/审计的 replay 过滤目前在project / mission / thread / process范围停下ResourceScope虽携带invocation_id但ReadScope定义于ironclaw_event_log尚未暴露它——这意味着按 invocation 粒度的 replay 边界仍需后续跟进。这一限制在 crates/events/ironclaw_event_store/src/lib.rs 的模块注释中被明确记录为 KNOWN LIMITATIONPR #3171 review #39可作为读者理解字段契约已定义、过滤能力仍在前行的源码级注脚。三、七大证据面Evidence Surfaces调试者按需取证的入口原文档把 Reborn 调试入口归纳为一张表是整篇文档的地图证据面用途Logs人类/Agent 可读的运行时诊断Durable events产品可见的状态变更与 replay 来源Audit records安全/控制面决策记录Process records后台生命周期与结果状态Replay snapshots确定性兼容性证据E2E artifacts浏览器可见的行为表现Doctor bundles便携、脱敏的调试上下文这七个面在仓库中各有落点值得逐一展开Logs结构化日志的底层设施已有实现——crates/substrates/ironclaw_observability/src/lib.rs 是关闭时零成本zero-cost-when-off的延迟 trace 宏库仅依赖tracing一个 crate。live_latency_trace_ok!/live_latency_trace_error!宏在目标为ironclaw_latency的 TRACE 级别未启用时直接短路elapsed_ms采用饱和转换而非回绕回绕会把超长耗时读成很快污染延迟 trace。该 crate 的定位边界很明确只测量谁产生了被测量的值测量属不属于可观测性 crate。Durable events由ironclaw_event_store提供事件/审计持久化句柄详见本文第八节。Replay snapshots仓库已存在两层 replay 资产——JSON fixture脚本化的 LLM/provider/tool 行为位于 tests/fixtures/llm_traces/README.md与 snapshot 输出观察到的 Agent/运行时行为位于 tests/snapshots 的golden_payload__*.snap配套脚本为 scripts/replay-snap.sh。E2E artifactsE2E 场景位于 tests/e2e/scenarios记录式 fixture 门禁由 scripts/ci/check-reborn-qa-fixtures.sh 承载见 docs/internal/reborn/harness/replay.md。Doctor bundles目标命令与包体结构见本文第六节。四、脱敏规则不得进入任何证据面的黑名单原文档列出了必须不出现在用户可见错误、事件、日志、审计记录、快照或 Doctor bundle 中的内容清单原始 secretraw secretsBearer tokenOAuth code 或 refresh token存在虚拟路径可用时的宿主机文件系统路径host filesystem paths审批租约内容approval lease contents未经审批的输入/输出unapproved input/output会暴露 secret 或基础设施内部细节的后端错误详情超出已批准策略诊断范围的私有网络细节。这条清单的价值在于它把脱敏从文本替换升级为内容策略不只是别打印 token还包括审批租约内容、未审批的输入输出、宿主路径、后端错误详情这类更容易被忽略的泄漏源。源码侧的证据ironclaw_event_store的模块文档明确说明ironclaw_event_log拥有 durable log 的 trait 与脱敏后的记录词汇表redacted record vocabulary即事件/审计记录在词汇层面就是脱敏安全的脱敏失败属于硬失败见第七节在暴露输出之前必须终止。此外crates/domains/ironclaw_trace_commons 提供了redaction.rs等 trace 侧脱敏能力可作延伸阅读。五、失败分类Failure Classification先定位是哪一层挂了为了让 Agent 在提出修复方案前先做层归因可观测的失败应尽可能分类到具体层。原文档给出了 14 个稳定的失败类别authorization # 授权被拒 approval # 需要审批/审批未通过 auth_blocked # 认证被阻断 resource_limit # 资源配额超限 network_policy # 网络策略拦截 secret_unavailable # 密钥不可用 filesystem # 文件系统层失败 memory # 内存/配额失败 runtime_dispatch # 运行时分发失败 process # 进程生命周期失败 provider # 外部 provider 失败 event_sink # 事件落盘失败 projection # 投影层失败 transport # 传输层失败这套分类在 docs/internal/reborn/contracts/operator-observability-backends.md 中得到了承接#4596 的operator_diagnostics面要求把未就绪的状态检查转换为稳定的诊断原因码reason code归入status归属区状态检查 ID 只有在符合[a-z][a-z0-9_]{0,63}的小写 snake_case 且看起来不含 secret/路径特征时才能进入公开原因码后缀否则回退到稳定的 status/state 兜底码并清洗展示字段。也就是说失败分类的稳定性本身是公开 API 的一部分任何可能泄漏信息的原始 ID 都不允许直接外露。六、Doctor Bundle一条命令打包全部调试上下文6.1 目标命令本地 harness 的目标是提供scripts/reborn-dev doctor或等价的ironclaw reborn doctor --bundle命令。6.2 Bundle 内容清单bundle 应包含config-redacted.json # 脱敏后的生效配置 logs.jsonl # 结构化日志 events.jsonl # 持久化事件 audit.jsonl # 审计记录 process-tree.json # 进程树 failed-invocations.json # 失败调用清单 screenshots/ # 界面截图如适用 replay-command.txt # 可复现失败的 replay 命令6.3 与 Local Harness 的落地形态在 docs/internal/reborn/harness/local-dev.md 中Doctor bundle 被进一步具体化为按 git worktree 隔离的本地状态目录.pi/reborn-dev/ db/ logs/ events/ traces/ artifacts/ screenshots/ config.toml tokens.jsondoctor产出的 bundle 位于.pi/reborn-dev/artifacts/reborn-debug/timestamp/目录布局与上文清单一一对应。该目录是纯本地状态禁止提交本地 token 必须是 fake、test-only 或脱敏的reset只允许删除.pi/reborn-dev/不得触碰目录之外的用户数据。bundle 需要能让接手调试的 Agent 回答五个问题当时执行了什么命令涉及哪些 tenant/user/project/agent/thread/run/invocation ID哪个 capability 或 runtime 失败了失败属于 authorization、approval、resource、network、secret、process 还是 runtime 类有没有对应的 replay 命令6.4 面向 WebUI 的 Doctor 面在面向操作员的 WebUI v2 侧docs/internal/reborn/contracts/operator-observability-backends.md 约定GET /api/webchat/v2/operator/diagnostics是canonical 的 Reborn doctor 面它必须聚合既有类型化服务证据而不是另起一套诊断命令平面CLI doctor 命令如保留也只是该服务/API 证据的包装禁止实现平行的诊断逻辑。当某个子系统不可用时doctor 路由必须继续返回类型化的诊断载荷把缺失的 setup/status 服务降级为已清洗的诊断项而不是让整个路由失败。七、Best-effort vs Fail-closed可观测性故障不得静默改变安全语义这是原文档中最容易被忽略、却最影响安全语义的一节。总原则一句话可观测性自身失败时安全语义不能静默漂移。具体规则场景规则事件/日志 sink 投递失败仅当所属契约明确允许时才可 best-effort尽力而为审计/持久化失败必须遵循所属域契约未支持的义务unsupported obligations仍然 fail closed脱敏失败在暴露输出之前一律硬失败源码侧有非常完整的 fail-closed 实现证据。在 crates/events/ironclaw_event_store/src/lib.rs 中RebornProfile分Standalone / Test / Production三档lib.rs#L173-L177build_reborn_event_storeslib.rs#L230-L285对生产 profile 执行硬性校验InMemory后端在 Production 下直接返回ProductionInMemoryDisabled错误JSONL 后端必须在 Production 下显式声明accept_single_node_durable否则报ProductionJsonlRequiresAcceptancelibSQL 目标的分类器lib.rs#L380-L403对http://远程明文、:memory:易失、无 scheme 的裸 tokenevents.db/db.example.com这类歧义值在 Production 下全部拒绝——因为裸 token 可能是远端主机名拼写错误或CWD 相对文件歧义即拒绝PostgreSQL 侧强制远程 TLSenforce_remote_ssl_mode拒绝sslmodedisable并把默认的Prefer提升为Requirelib.rs#L751-L763防止服务器恰好拒绝 TLS 时 Prefer 静默降级。这些实现与生产必须显式接受单节点持久化、不得静默回退到内存存储的文档要求一一对应是理解 fail-closed 语义的最佳源码样本。八、Durable Store Evidence事件/审计后端的选型与回退边界原文档对持久化证据后端给出了明确的层次约束独立 Reborn composition 应从ironclaw_event_store消费持久化事件/审计句柄RebornEventStores { events, audit }见 lib.rs#L180-L184本地/测试 harness 可以使用内存存储或 JSONL 存储生产环境不得静默回退到内存存储——JSONL 只有在显式配置时才被接受为单节点持久化后端PostgreSQL 与 libSQL 是生产 parity 的 SQL 持久化适配器但当对应 crate feature 未启用时选择这些后端会在返回服务图service graph之前fail closed错误类型为BackendUnavailable { backend }。原文档还透露了实现层面的一次重要演进事件/审计后端的后端分派已经下沉到RootFilesystem层——Libsql/Postgres变体会打开各自的RootFilesystem通过锚定在/events的ScopedFilesystem挂载视图仅授予 append→write、tail→readlist 的最小权限路由到FilesystemDurableEventLog/FilesystemDurableAuditLog曾经直连 SQL 的LibSql*/Postgres*旧实现已在src/db/消解过程中移除。这意味着**选哪个后端现在是文件系统层的属性而不是 durable-log 实现的属性**后端切换不再需要替换日志实现。配套的后端契约测试集中在 crates/events/ironclaw_event_store/testsdurable_event_store_contract.rs、coalescing_sink_contract.rs、filesystem_event_log_contract.rs、profile_contract.rs——其中profile_contract直接覆盖 profile 与后端合法性组合可作为验证 fail-closed 行为的测试入口。九、与相邻 Harness 文档的协同关系可观测性不是孤立的它与另外两份 harness 文档构成调试三角docs/internal/reborn/harness/replay.md回答如何确定性复现。其确定性要求不用墙钟时间、随机 ID 需注入、禁止 live HTTP/OAuth/LLM、固定 ID、fake provider、本地 JSONL 事件/审计 sink、脱敏快照与 observability 的 replay 支持目标严格对齐快照 diff 的审查问题清单哪个产品面变了哪个契约边界允许/禁止是预期迁移漂移还是回归是否影响 #3020/#3031敏感字段是否已脱敏直接复用本文的关联字段与脱敏规则。docs/internal/reborn/harness/local-dev.md回答在哪里运行、状态放哪里。按 git worktree 隔离.pi/reborn-dev/目录、每 worktree 独立端口/路径/数据库名、fake/local provider 默认优先、缺少必需 fixture 时 fail closed为 Doctor bundle 提供了物理载体。docs/internal/reborn/contracts/operator-observability-backends.md回答操作员如何在 WebUI 面消费可观测性。四个稳定路由面status / diagnostics / logs / service lifecycle与本文的 Doctor bundle、失败分类、脱敏清单一一对应例如 #4597 的 operator logs 面要求返回 opaque cursor 而非可解析的 cursor 内部结构、拒绝同时设置tailtrue与followtrue、无后端时返回service_unavailable——都是 fail-closed 与最小暴露原则在 API 层的落地。十、现状盘点与演进路径最后用原文档的口径做个诚实盘点——哪些已存在哪些是目标形态已存在的可观测性资产仓库内可验证Rust 单元/集成测试与crates/app/ironclaw_architecture_tests/tests/reborn_dependency_boundaries.rs依赖边界测试见 local-dev.mdE2E 场景tests/e2e/scenariosReplay fixturetests/fixtures/llm_traces 与 golden payload 快照 tests/snapshots配套 scripts/replay-snap.sh记录式 fixture 门禁Reborn QA recorded fixtures scripts/ci/check-reborn-qa-fixtures.sh已取代 v1 的replay-gate.yml延迟 trace 宏基础设施crates/substrates/ironclaw_observability/src/lib.rs持久化事件/审计后端与 fail-closed 校验crates/events/ironclaw_event_store/src/lib.rs。目标形态规划中文档明确不意味着今天都已存在scripts/reborn-dev up/down/reset/status/logs/seed/doctor命令族.pi/reborn-dev/按 worktree 隔离的本地状态与 Doctor bundle 产物未来按 Reborn 持久化事件类型与快照稳定后新增的 Reborn 专属覆盖率脚本。结语IronClaw Reborn 的可观测性设计传达了一个清晰的工程取向可观测性不是日志的堆砌而是证据契约——字段契约保证归因可追溯脱敏契约保证证据可外传fail-closed 契约保证可观测性自身出故障时安全语义不漂移Doctor bundle 则把这些证据打包成 Agent 可直接消费的便携现场。无论你是要在本地 worktree 里复现一个失败还是要为操作员面接线新的诊断后端本文第一节的 ID 契约、第四节的脱敏黑名单、第七节的 fail-closed 矩阵都是必须先对齐的基线ironclaw_event_store的 profile 校验与 TLS 强制逻辑则是理解这些契约如何在代码里被强制的最佳起点。赞分享人工智能AI 应用交互助手AI Agent【免费下载链接】ironclawIronClaw is an Agent OS focused on privacy, security and extensibility项目地址https://gitcode.com/gh_mirrors/iro/ironclaw点击查看免费下载相关推荐终极指南如何使用Lynis对Terraform基础设施进行安全审计终极指南如何使用Lynis对Terraform基础设施进行安全审计 Lynis是一款适用于Linux、macOS以及类UNIX操作系统的安全审计工具它能够协网络安全应用安全合规审计漏洞扫描终极指南如何用Terraform实现Searx隐私搜索引擎基础设施即代码部署终极指南如何用Terraform实现Searx隐私搜索引擎基础设施即代码部署 想要快速搭建一个完全自主控制的隐私搜索引擎吗Searx作为一款开源的元搜索引擎后端搜索引擎CCapture.js性能优化解决内存泄漏和大文件处理难题CCapture.js性能优化解决内存泄漏和大文件处理难题 CCapture.js是一款强大的canvas动画捕获库能够帮助开发者以固定帧率录制基于canv前端音视频上一篇Just the Docs 项目配置详解下一篇OpenVINO/DLDT 实战基于 Wav2Vec2 的语音识别模型量化技术详解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考