记录的内容
对屏幕、屏幕文件夹、播放列表、媒体文件或文件夹、应用程序、卡片、日程或层级、营销活动、通知、Webhook、触发器、数据源、车队链接、报告计划、警报静音、成员或角色、邀请、服务客户端、代理连接、单点登录或 SCIM 设置、由身份提供商预配的用户或组、组绑定,或项目或组织设置所做的更改,都是一个条目。发送到屏幕的命令(重启、重新加载、识别、清除缓存、重启应用、更新、提示消息、截图)和车队操作也是,并附带其携带的参数。
一个条目包含:
| 成员 | 含义 |
|---|---|
at | 变更提交的时间 (UTC) |
actor | 谁:kind person、agent、service_client、staff 或 system,附带 id 和 name |
approved_by, review_id | 批准了代理所提出变更的人,以及暂扣该变更的审核 |
source | 界面:dashboard、api、cli、mcp、staff、device、webhook 或 system |
action | 稳定的代码、资源类型和动词:screen.update、playlist.create、webhook.rotate_secret |
resource | type、id 以及变更后资源的 name |
changes | 每个已更改的成员:path(JSON 指针,如 /label)、before 和 after |
revision | 变更产生的修订,以链接而非复制的方式记录(播放列表修订、媒体版本、资源自身的修订号) |
request_id, route, client, client_ip | 它所经过的请求 |
seq, prev_hash, hash | 条目在链中的位置 |
值就是存储的值:名称、电子邮件、地址、URL 和 ID 按原样显示。机密(令牌、API 密钥、密码、Webhook 或签名机密、数据源凭据、配对码、本身就是凭据的接收端 URL)在两侧都显示为 (redacted),因此轮换会显示为一次变更,而不会显示任何一个值。超过 1 KiB 的值会替换为其大小和 SHA-256,一个条目最多保留 100 项变更和 16 KiB;truncated 表示还有更多变更。播放列表的页面和媒体文件的字节不会被复制:条目链接到修订。
卡片数据、键/值(包括由 Webhook 和数据源写入的值)和 Player 遥测是数据,不是配置。它们不在审计日志中;项目事件日志会记录它们已被写入。
搜索
GET /api/audit 按从新到旧列出条目:
screenrig audit list --resource-type screen --resource-id scr_ID
screenrig audit list --actor-kind agent --since 2026-10-01T00:00:00Z
screenrig audit list --action 'playlist.*' --source mcp --limit 20
screenrig audit list --field /label
screenrig audit show aud_ID
| 筛选 | 含义 |
|---|---|
actor | 用户、代理或服务客户端的 ID |
actor_kind | person、agent、service_client、staff 或 system |
source | dashboard、api、cli、mcp、staff、device、webhook 或 system |
resource_type, resource_id | 更改的内容 |
action | 操作代码,或以 * 结尾的前缀 |
field | JSON 指针:更改过此成员或其下级成员的条目 |
since, until | 时间窗口 |
cursor, limit | 翻页:将 next_cursor 作为 cursor 传回;每页 1 到 200 个 |
仪表板“项目”下的“审计”页面用这些筛选条件列出相同的条目,并以变更前和变更后显示每次变更。
谁可以读取
项目所有者、其组织的管理员以及正在查看该项目的员工可在仪表板中读取。拥有项目权限的代理或服务客户端可通过 API 和 CLI 读取。组织管理员、域名和账单设置的变更属于组织自己的日志:GET /api/organizations/{org_id}/audit,供其管理员读取。
防篡改
没有任何东西会写入、编辑或删除条目:没有相应的路由。每个条目在其项目内都与前一个条目相链接:其 hash 是前一个条目的哈希、其位置和其内容的 SHA-256。变更几秒后,条目会带上其 seq 和 hash。
screenrig audit head
screenrig audit verify
screenrig audit verify --anchor 128:3f2c0b6e9a4d81c7f5e0a2b4c6d8e0f1a3b5c7d9e1f30415263748596a7b8c9d
audit verify(GET /api/audit/verify)会根据存储的内容重新计算每个哈希,并检查每个链接、seq 的连续性和链头;它会针对出问题的条目报告 hash_mismatch、prev_mismatch、gap、head_mismatch、anchor_mismatch 或 floor_mismatch,并在链无法验证时以退出码 13 结束。每次调用最多检查 5,000 个条目,并返回 next_seq 以便继续。锚点是您从早先的导出或 audit head 中保存的链头(SEQ:HASH):对照它验证,可证明截至该条目的历史未被更改,也未被截断。
保留与删除
所有套餐的条目都保留 400 天。超过期限的条目从最旧的开始删除,链会记录它现在的起点(floor_seq、floor_hash),因此在其他位置的删除都能被检测到。删除项目时,其审计日志也会一并删除。screenrig project export DIR 将日志写入 log/audit.jsonl,链头写入 log/audit-head.json,因此副本在项目删除后依然存在,并可继续对照其锚点验证。
导出
screenrig audit export --format csv --output audit.csv
screenrig audit export --format xlsx --since 2026-07-01T00:00:00Z --until 2026-10-01T00:00:00Z
screenrig audit export --format pdf --resource-type playlist --output playlist-changes.pdf
GET /api/audit?format=csv|xlsx|pdf 使用与所有报告相同的渲染器写出筛选后的日志:每个已更改字段一行,从旧到新,除非 since 另有指定,否则为最近 30 天,最多 50,000 行(文件只包含前面若干行时,truncated 会说明)。链头和保留下限都在文件中,因此您保存的副本可作为之后 audit verify 的锚点。