跳转到主要内容
failproofai 控制台是一个用于监控 AI Agent 会话和管理策略的本地 Web 应用。即使你不在时,也能了解 Agent 的所有操作。

启动控制台

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

页面说明

项目

列出机器上发现的所有 Claude Code、OpenAI Codex、GitHub Copilot CLI (测试版)、Cursor Agent (测试版)、OpenCode (测试版)、Pi (测试版) 和 Gemini CLI (测试版) 项目。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.yaml 中查找 cwd 标量来发现;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 — 将身份卡片截图为 1200×630 PNG,适合发布到 X / LinkedIn(点击 make poster)。
  3. 优势 — 你的 Agent 已经做得好的行为(绿色勾选),基于实时审计数据得出(工具调用清洁率、平均会话时长、零凭证泄露、零重试风暴等)。
  4. 评分 + 排行榜 — 0–100 分及字母等级(S/A/B/C/D/F),分布直方图展示你在群体中的位置,文字说明(“B 从 71 分开始,你还差 13 分”),以及高亮显示你所在行的排行榜。
  5. 发现 — 按影响程度排列的每项发现卡片。每张卡片呈现发现的问题、影响成本、包含真实捕获命令的证据样本,以及能捕获相同模式的 failproofai 策略($ failproof policy add <slug>,点击可复制)。
  6. 推荐策略 + 回访循环 — 所有尚未启用的内置策略网格(这些策略能弥补现有漏洞),附带预计评分提示,以及”7 天后重新审计”的行动号召。
failproofai audit 运行时驱动——参见 审计 CLI 了解底层扫描引擎、支持的参数以及每份转录文件的缓存规则。控制台将最新结果缓存于 ~/.failproofai/audit-dashboard.json(权限 0600,单槽位,新运行覆盖旧结果),因此重复访问即时加载;点击 [ Re-run ↻ ] 会向 /api/audit/run 发送 POST 请求,控制台以 1Hz 频率轮询 /api/audit/status 直到运行完成。空状态(无缓存)和零会话状态(缓存存在但扫描未发现任何转录文件)分别单独显示。

策略

一个包含两个标签页的页面,用于管理策略和查看活动记录。
  • 在单个面板中多选 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,也不会出现跨域开发资源问题。