An audit log for a shared coding agent(共享 coding agent 的审计日志)是一份仅追加(append-only)记录,每条请求一行,每次审批一行,由机器的主人持有并可由其导出。它事后回答了:谁让 agent 做了什么、谁允许的、实际运行了什么以及花费了多少成本。如果 agent 始终只有其主人使用,运行环境自身的记录就足够了。一旦有第二个人可以发送请求,这就远远不够了。
本文按读者查阅所需的顺序列出这些字段,随后说明绝不能写入日志的内容。
请求行
每个请求在达到终态时,都会精确产生一行。
审批行
审批拥有自己单独的一行,因为审批属于决策,而决策的受众与运行记录不同。
请求行和审批行,琥珀色表示已批准的 push,红色表示已过期的删除。
绝不能写入日志的内容
- 机密信息。 凭据审批记录的是某个密钥被访问了,而不是密钥本身。
- 文件内容。 diff 仅包含路径和行数。代码变更保存在代码仓库中,受代码仓库自身的访问控制保护。
- 完整命令输出。 尾部输出已足以解释失败原因。完整的日志可能包含任何内容。
- 其他房间。 每个房间的日志作用域仅限于该房间。主人可以跨房间查看;成员只能看到他们所在的房间。
不仅是字段,更是属性
只追加(Append-only)。 任何人都不能编辑日志,包括主人在内。更正操作表现为新增的行。
主人持有。 运行该任务的机器所属之人持有该记录并可将其导出。请求者在房间中能看到属于自己的行。
撤销时保持完整。 撤销授权或机器会取消排队中的任务,并允许正在运行的任务执行完毕,因此日志绝不会出现“有任务在运行但我们停止了监控”的记录断层。
包含主人的操作。 主人在使用自己的 agent 时不受审批限制,但其请求会以相同的方式被记录。只记录外部人员的日志,只记录了一半的风险。
查阅日志
最常出现的有三个问题,上述字段通过一次筛选即可回答每个问题。
- “那是谁 push 的?” 将审批行按 rule = push 筛选,查看发起人和决策人。
- “为什么这个请求花了一个小时?” 比较创建时间和开始时间;审批等待通常就是答案所在。
- “这个月借出我的 agent 花费了多少?” 汇总发起人不是主人的请求行上的用量。
常见问题
房间的时间线就是审计日志吗? 时间线是单次运行详细的、人类可读的记录。审计日志则是跨多次运行的、每个事件一行的摘要,专为筛选和导出而设计。muti 同时保留两者;日志衍生自 daemon 上传的相同事件。参见daemon 上传了什么。
它会保留多久? 请求行和审批行在房间的整个生命周期内都会保留。删除房间属于软删除;记录仍会为主人保留。
请求者能看到其他人的记录行吗? 他们能看到房间的时间线,其中包含该房间内所有人的请求。导出权限属于主人。
主人的请求需要经过审批才会被记录吗? 不需要。主人的运行记录不需要审批,其 rule = owner。
日志让“你稍后可以撤销它”成为真正的承诺。给你的 agent 一个房间,它就会自带一份审计日志。
发布于