跳转到主要内容
failproofai 控制面板是一个本地 Web 应用程序,用于监控 AI Agent 会话和管理策略。查看 Agent 在你离开期间所做的一切。

启动控制面板

failproofai
http://localhost:8020 打开。 控制面板直接从文件系统读取数据——包括你的 Claude Code 项目文件夹和 failproofai 配置文件。不会向远程服务写入任何数据。

页面

项目

列出你机器上发现的所有 Claude Code、OpenAI Codex、GitHub Copilot CLI (beta)、Cursor Agent (beta)、OpenCode (beta)、Pi (beta) 和 Gemini CLI (beta) 项目。Claude 项目从 ~/.claude/projects/ 中发现(或通过 CLAUDE_PROJECTS_PATH 设置的路径);Codex 项目通过扫描 ~/.codex/sessions/<YYYY>/<MM>/<DD>/*.jsonl 下的所有转录并按每个会话第一条记录中的 cwd 分组来发现;Copilot CLI 项目通过扫描每个 ~/.copilot/session-state/<sessionId>/workspace.yaml(可通过 COPILOT_HOME 配置)并按其 cwd 字段分组来发现;Cursor Agent 项目通过扫描 ~/.cursor/agent-sessions/<sessionId>/ 下的每会话元数据(可通过 CURSOR_HOME 配置,以 conversations/sessions/ 作为备用路径)中 meta.json / session.json / workspace.yamlcwd 标量来发现;OpenCode 项目通过 opencode db --format json 查询 ~/.local/share/opencode/opencode.db 中的 SQLite 数据库(读取 sessionproject 表并按 project_id 分组)来发现;Pi 项目通过扫描 ~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl 下的每会话 JSONL 转录(可通过 PI_SESSIONS_DIR 配置)并从每个会话的第一条记录中提取 cwd 来发现;Gemini CLI 项目通过扫描 ~/.gemini/tmp/<basename>/chats/session-<timestamp>-<uuid-prefix>.jsonl(可通过 GEMINI_SESSIONS_DIR 配置)并从同级 .project_root 文本标记中恢复规范 cwd 来发现。被多个 CLI 使用过的项目会渲染为一行,并显示所有匹配的标识。使用表格上方的 CLI 下拉菜单按特定 Agent CLI 过滤;URL 会将你的选择保留为 ?cli=claude|codex|copilot|cursor|opencode|pi|gemini 每个项目显示:
  • 项目名称(从文件夹路径派生)
  • CLI 标识——Claude Code(橙色)、OpenAI Codex(紫色)、GitHub Copilot(蓝色)、Cursor Agent(翠绿色)、OpenCode(琥珀色)、Pi(粉色)和/或 Gemini CLI(天蓝色)
  • 最近会话活动的日期
点击项目查看其会话。

会话

列出项目中的所有会话。每个会话显示:
  • 会话 ID
  • 开始和结束时间戳
  • 工具调用次数
  • Hook 活动计数(触发的策略数)
使用日期范围过滤器和会话 ID 搜索来缩小列表范围。会话支持分页。 点击会话打开会话查看器。

会话查看器

会话查看器回答了自主 Agent 的核心问题:Agent 做了什么,它是否保持在正轨上?标题旁边的 CLI 标识指示该会话是 Claude Code、OpenAI Codex、GitHub Copilot CLI、Cursor Agent、OpenCode、Pi 还是 Gemini CLI 的转录。它展示了会话中发生的所有事件的时间线:
  • 消息 - Claude 的文本回复和用户提示
  • 工具调用 - Claude 调用的每个工具,包括其输入和输出
  • 策略活动 - 针对每次工具调用,哪些策略触发了以及返回了什么决策
顶部的统计栏显示会话时长、总工具调用次数以及 hook 决策摘要(allow / deny / instruct 计数)。 点击 Download Logs 按钮导出会话。对于 Claude Code、Codex、Copilot、Cursor、Pi 和 Gemini 会话,你将获得原始磁盘上的 JSONL 转录(逐字节);对于 OpenCode(其会话存储在 SQLite 中而非磁盘上),你将获得一个镜像底层 session / messages / parts 表的 JSON 文档。

审计

一份个性化报告,展示你的 Agent 在过去会话中的实际行为。运行与 failproofai audit CLI 相同的扫描,但将其渲染为六个部分的控制面板:
  1. 身份 — 将你的 Agent 分类为 8 种原型之一(the optimistthe cowboythe explorerthe goldfishthe paranoid architectthe precision builderthe hammerthe ghost),基于触发的检测器和策略及其频率。渲染一个 8×8 像素图腾、原型标语、“常见于” / “主要风险”框架以及结尾一句话。
  2. 展示你的 Agent — 将身份卡片捕获为适合发布到 X / LinkedIn 的 1200×630 PNG(点击 make poster)。
  3. 优势 — 你的 Agent 已经做对的行为(绿色勾选),从实时审计数据派生(干净的工具调用率、平均会话长度、零凭证泄漏、零重试风暴等)。
  4. 分数 + 排行榜 — 0–100 分数及字母等级(S/A/B/C/D/F),显示你在群体中位置的分布直方图,文字说明(“B 从 71 分开始,你还差 13 分”),以及高亮显示你所在行的排行榜表格。
  5. 发现 — 按影响排序的每条发现卡片。每张卡片展示发生了什么、代价是什么、带有真实捕获命令的证据样本,以及可以捕获相同模式的 failproofai 策略($ failproofai policy add <slug>,点击复制)。
  6. 推荐策略 + 回访循环 — 所有未启用的内置策略网格(这些策略将填补缺口),附带预计分数提示,以及”7 天后重新审计”的行动号召。
failproofai audit 运行时驱动——有关底层扫描引擎、支持的标志和每转录缓存不变量,请参阅 Audit CLI。控制面板将最新结果缓存在 ~/.failproofai/audit-dashboard.json(模式 0600,单槽,新运行覆盖),以便再次访问时立即加载;每转录缓存和整体结果缓存在读取时如果超过 7 天则会被拒绝,因此控制面板永远不会悄悄提供一周前的结果——超过 TTL 后,/audit 将回退到空状态并提示重新运行。点击报告底部附近的 [ re-audit now ] 将向 /api/audit/run 发送带有 noCache: true 的 POST 请求——重新审计会绕过每转录缓存并从头重新扫描每个转录,而不是悄悄返回缓存结果——控制面板以 1Hz 轮询 /api/audit/status 直到运行完成;运行期间,一个粘性粉色进度条固定在视口顶部并带有计时器,成功后新结果将原地替换(无需整页刷新;重新审计失败时保留先前报告)。失败时进度条变红,并根据 RerunError.kindtimeout / network / post_failed)显示相应提示。空状态(无缓存或已过期)和零会话状态(缓存存在但扫描未找到转录)分别单独呈现。

策略

一个两标签页面,用于管理策略和查看活动。
  • 从单个面板多选 failproofai 保护哪些 Agent CLI——Claude Code、OpenAI Codex、GitHub Copilot、Cursor Agent、OpenCode、Pi 和 Gemini CLI 都有一行,显示安装状态(Active / Detected / Inactive)、用户级设置路径和品牌颜色强调。勾选或取消勾选你想要的 CLI,然后点击 Apply changes 一次性安装/卸载差异。已在 PATH 中检测到二进制文件的 CLI 会预先勾选。
  • 单击切换单个策略的开启或关闭状态(写入 ~/.failproofai/policies-config.json——在所有已安装的 CLI 间共享)
  • 展开策略以配置其参数(适用于支持 policyParams 的策略)
  • 设置自定义策略文件路径

自动刷新

控制面板顶部导航中有一个自动刷新切换开关。启用后,当前页面会定期刷新,以显示新出现的会话和策略活动。这对于监控长时间运行的自主 Agent 会话至关重要。

禁用页面

如果你只需要控制面板的某些部分,可以将 FAILPROOFAI_DISABLE_PAGES 设置为以逗号分隔的页面名称列表:
FAILPROOFAI_DISABLE_PAGES=policies failproofai
有效值:policiesprojectsaudit

配置项目路径

默认情况下,控制面板从标准 Claude Code 项目目录读取数据。可以为自定义设置覆盖此路径:
CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai

从非 localhost 主机访问

开发模式npm run dev)下运行控制面板并从 localhost 以外的主机名访问时——例如自定义域名、远程 IP 或隧道 URL——你可能会看到如下警告:
⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com".
这是 Next.js 阻止对其 HMR(热模块重载)WebSocket 的跨域访问,这是一个仅限开发环境的功能。要允许你的主机,请使用 --allowed-origins 标志:
npm run dev -- --allowed-origins dashboard.example.com
对于多个主机或 IP,传入以逗号分隔的列表:
npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5
你也可以改为设置 FAILPROOFAI_ALLOWED_DEV_ORIGINS 环境变量:
FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev
这仅适用于开发模式。运行 failproofai(生产模式)时,不存在 HMR WebSocket,也不存在跨域开发资源问题。