审计
审计记录是 Anyy 对会改变状态、接触敏感 surface、需要审批或需要操作员可见轨迹的动作写入的结构化事件。
审计不是 transcript。它保存事件元数据、风险、类别、对象身份和已脱敏 payload,让运行时变更可被审阅,同时避免暴露原始秘密。
审计类别
Anyy 使用 typed categories 区分不同活动:
| 类别 | 示例 |
|---|---|
approval、change_plan、force_path | 用户决策、ChangePlan 生命周期、force-approved 路径。 |
shell、root_tool、file_write | Host/runtime 操作和文件变更。 |
config_change、provider_change、channel_change、pairing_change | 本地配置变更。 |
cron_change、task_change、skill_change | 定时 jobs、长期 tasks、技能可见性或编辑。 |
messaging、connector_action | 出站投递和 email/calendar 动作。 |
desktop_control | computer_use 桌面动作。 |
runtime_read | 选定的运行时读取,例如 skill_view、artifact_list 和 artifact_inspect。 |
mcp_config_change、mcp_server_start、mcp_server_stop、mcp_tool_call | MCP 配置和运行时事件。 |
可用时,每个事件会保存 actor_id、role_id、workspace_id、session_id、turn_id、run_id、summary、risk、object_type、object_id 和 created_at。
敏感数据脱敏
审计 payload 明确命名为 redacted_payload。Anyy 在多层做脱敏:
| 来源 | 脱敏行为 |
|---|---|
| 全局 secret redactor | 在 summary、object id 和嵌套 payload 字段中脱敏已知秘密值。 |
| Terminal 工具 | 脱敏环境变量值。 |
| 进程输入 | 对 write-like 进程动作脱敏 stdin/input 字段。 |
| 技能管理 | 脱敏文件内容和 patch 字符串。 |
computer_use | 脱敏 typed text 和 desktop tree/snapshot 字段。 |
| Email/calendar 连接器 | 脱敏正文、attendees、附件、provider payload、token 和密码。 |
在有用时,脱敏会保留字节数,便于操作员理解大小而不看到敏感内容。
工具调用记录
工具审计事件包含:
| 字段 | 含义 |
|---|---|
tool | 有效工具名。 |
status | 工具结果状态。 |
force | 执行是否使用 force-approved metadata。 |
arguments | 已清理且按工具类型脱敏的参数。 |
change_plan_id | 结果创建或使用 ChangePlan 时存在。 |
details_ref | 结果把大量细节单独存储时存在。 |
| 审批关联 | 重放时的 approval id、approved tool call id 和 approved ChangePlan id。 |
并非所有读取工具都会审计。当前 build 中 runtime-read 审计刻意很窄,包括成功的 skill_view、artifact_list 和 artifact_inspect。
连接器记录
发送邮件或创建日历事件等连接器变更会使用审批和 connector audit 类别。读取/status/list 调用使用直接读取行为,除非治理策略改变描述符。
连接器审计脱敏会避免保存原始消息正文、attendee 列表、附件、access token、refresh token 或密码。
MCP 记录
MCP 管理操作会为配置变更、server 生命周期、bridge approvals 和外部 MCP 工具调用写入 MCP 专用类别。MCP status 和 logs 在返回诊断前会脱敏配置里的秘密值。
MCP 安装和策略见 MCP 集成。
查询审计
本地和 dashboard surface 使用 gateway audit RPC:
| 参数 | 含义 |
|---|---|
session_id | 可选会话过滤。 |
category | 可选审计类别过滤。 |
limit | 可选结果上限。默认 50,最大 200。 |
RPC 按最新在前返回事件。ListBySession storage helpers 会为 replay 和测试保留 session-specific events 的时间顺序。
Debug 和日志
审计是可观测性的一部分。诊断运行时时,和下面 surface 组合使用:
| Surface | 用途 |
|---|---|
doctor / doctor RPC | 运行时健康检查。 |
logs RPC | Tail logs/anyy.log,可带过滤。 |
| Dashboard status pages | 对操作员友好的运行时视图。 |
Debug bundles 和日志必须遵守同样的 secret-redaction 规则:不要暴露原始凭据、token、审批重放元数据或连接器 payload 正文。