启动控制面板
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.yaml 的 cwd 标量来发现;OpenCode 项目通过 opencode db --format json 查询 ~/.local/share/opencode/opencode.db 中的 SQLite 数据库(读取 session 和 project 表并按 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 活动计数(触发的策略数)
会话查看器
会话查看器回答了自主 Agent 的核心问题:Agent 做了什么,它是否保持在正轨上?标题旁边的 CLI 标识指示该会话是 Claude Code、OpenAI Codex、GitHub Copilot CLI、Cursor Agent、OpenCode、Pi 还是 Gemini CLI 的转录。它展示了会话中发生的所有事件的时间线:- 消息 - Claude 的文本回复和用户提示
- 工具调用 - Claude 调用的每个工具,包括其输入和输出
- 策略活动 - 针对每次工具调用,哪些策略触发了以及返回了什么决策
session / messages / parts 表的 JSON 文档。
审计
一份个性化报告,展示你的 Agent 在过去会话中的实际行为。运行与failproofai audit CLI 相同的扫描,但将其渲染为六个部分的控制面板:
- 身份 — 将你的 Agent 分类为 8 种原型之一(
the optimist、the cowboy、the explorer、the goldfish、the paranoid architect、the precision builder、the hammer、the ghost),基于触发的检测器和策略及其频率。渲染一个 8×8 像素图腾、原型标语、“常见于” / “主要风险”框架以及结尾一句话。 - 展示你的 Agent — 将身份卡片捕获为适合发布到 X / LinkedIn 的 1200×630 PNG(点击
make poster)。 - 优势 — 你的 Agent 已经做对的行为(绿色勾选),从实时审计数据派生(干净的工具调用率、平均会话长度、零凭证泄漏、零重试风暴等)。
- 分数 + 排行榜 — 0–100 分数及字母等级(S/A/B/C/D/F),显示你在群体中位置的分布直方图,文字说明(“B 从 71 分开始,你还差 13 分”),以及高亮显示你所在行的排行榜表格。
- 发现 — 按影响排序的每条发现卡片。每张卡片展示发生了什么、代价是什么、带有真实捕获命令的证据样本,以及可以捕获相同模式的 failproofai 策略(
$ failproofai policy add <slug>,点击复制)。 - 推荐策略 + 回访循环 — 所有未启用的内置策略网格(这些策略将填补缺口),附带预计分数提示,以及”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.kind(timeout / 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 设置为以逗号分隔的页面名称列表:
policies、projects、audit。
配置项目路径
默认情况下,控制面板从标准 Claude Code 项目目录读取数据。可以为自定义设置覆盖此路径:从非 localhost 主机访问
在开发模式(npm run dev)下运行控制面板并从 localhost 以外的主机名访问时——例如自定义域名、远程 IP 或隧道 URL——你可能会看到如下警告:
--allowed-origins 标志:
FAILPROOFAI_ALLOWED_DEV_ORIGINS 环境变量:
这仅适用于开发模式。运行
failproofai(生产模式)时,不存在 HMR WebSocket,也不存在跨域开发资源问题。
