Cairn —— 通用状态空间搜索引擎
面向明确起点与目标、未知路径的问题求解引擎,已在自主渗透测试中验证。
证据显示:本地模式明确警告代理以用户权限运行且无沙箱,但未提供权限最小化机制;配置中需要API密钥,但未说明密钥存储和访问控制;容器模式使用Docker,但未提及容器隔离级别或安全加固。扣分原因:缺乏用户确认机制、数据流透明度不足、敏感数据处理细节缺失、依赖安全未提及、回滚机制缺失、来源归属仅部分(README提及作者但未验证)。
证据显示:测试覆盖配置验证和容器路径安全,但未覆盖运行时行为;依赖可用性未提及;失败消息未详细说明。扣分原因:自一致性部分满足,但依赖可用性和失败消息证据不足。
证据显示:README明确目标受众(安全测试人员)和场景(渗透测试、CTF等),并说明能力边界(通用状态空间搜索);但触发精度(任务生成逻辑)未详细说明;环境适配(macOS/Linux、Docker)有说明。扣分原因:触发精度证据不足。
证据显示:README结构清晰,安装说明详细,许可证明确(AGPL-3.0),但缺少版本变更日志、命名稳定性说明、已知限制部分不完整。扣分原因:版本变更日志缺失,命名稳定性未提及,已知限制仅部分。
证据显示:输出为结构化事实和意图,但未说明输出格式的易用性;边际价值有竞争结果支持,但成本效益未量化。扣分原因:输出可用性证据不足,成本效益未量化。
证据显示:README声称竞赛结果,但未提供可验证的复现步骤;测试存在但未覆盖所有声明;事实与推断未明确分离。扣分原因:声明可追溯性不足,交叉验证有限,事实与推断分离不明确。
- 本地模式无沙箱,代理以用户权限运行,存在安全风险。
- API密钥管理未说明,可能泄露。
- 依赖安全未提及,需审查供应链。
- 竞赛结果无法独立验证。
这个 Agent 能做什么,适合哪些场景?
Cairn 是一个通用问题求解引擎,采用黑板架构(Blackboard Architecture)与显式事实-意图图(fact-intent graph),通过三个基本原语(Fact、Intent、Hint)驱动搜索过程。它先以自主渗透测试为首个验证领域,支持 CTF、漏洞研究等问题,但并非专用工具。系统由 Cairn Server 维护图一致性,Cairn Dispatcher 负责任务调度与容器管理,Worker 容器内运行多个 Agent Worker,执行 OODA 循环并仅通过共享黑板进行隐式协调。支持 Claude Code、Codex 和 Pi 作为 worker 后端,可使用 Docker Compose 或手动部署,也可本地模式(无需 Docker)运行。在腾讯云黑客松智能渗透测试挑战赛(第二届)中,以 54/54 全解、唯一 AK 队伍获得第三名。项目授权为 AGPL-3.0,商用需联系作者获取商业许可。
Cairn 通过三个任务类型运行:Bootstrap(项目启动时直接尝试求解)、Reason(读取全部图,判断目标是否达成,决定下一步探索方向)、Explore(认领一个 Intent,执行探索并回报一个 Fact)。Worker 由 Dispatcher 调度,从 API 接收 prompt 并输出结构化结果,支持 Claude Code、Codex、Pi 后端。系统提供 cairn serve 启动服务器、cairn dispatch --config dispatch.yaml 启动 Dispatcher,并通过 Docker Compose 或本地模式运行。输入是目标 IP 或系统作为 origin,输出是逐步的事实链直到达成目标(如获得 shell 或 flag)。黑板架构允许随时注入 Hint 进行人工干预。
- 安全团队在授权环境中对目标进行自主渗透测试,从初始信息收集到获取 shell 的全流程自动化。
- CTF 参赛者利用 Cairn 自动解 flag,通过在挑战环境中搜索状态空间来发现利用链。
- 漏洞研究人员使用 Cairn 辅助进行黑盒测试,通过结构化探索发现未知的攻击面。
- 希望将通用问题求解引擎用于数学证明或复杂决策场景的研究者,通过定义 origin 和 goal 来应用。
- 企业安全团队在内部红队演练中,评估自主 agent 的效率和边界。
- 开发者在本地模式(无需 Docker)测试 Cairn 与已有 CLI(如 claude、codex)的集成。
这个 Agent 有哪些优点和局限?
- 通用引擎,不限定角色或工作流,适用于任何起点和目标明确的问题。
- 经实战验证:在 610 支队伍、1345 名参赛者中唯一完成 54/54 题的 AK,获得第三名。
- 黑板架构与 stigmergy 协调,无直接通信,可扩展并发 workers。
- 支持多种 worker 后端(Claude Code、Codex、Pi),并可本地模式运行,减少基础设施依赖。
- 仅作为研究原型,比赛前未经测试,缺乏长期维护和社区支持。
- 依赖外部 LLM 端点,需要配置 API 密钥,存在提供商锁定和成本。
- 文档不足以覆盖所有部署场景,本地模式需手动配置 CLI 登录。
- 为 AGPL-3.0 许可,商用需另行联系作者,可能阻碍商业采用。
如何安装或部署这个 Agent?
前置要求:macOS 或 Linux,Python ≥ 3.12,Docker(容器模式需要)。拉取 worker 镜像:docker pull --platform=linux/amd64 ghcr.io/oritera/cairn-worker-container:latest。复制配置:cp dispatch.example.yaml dispatch.yaml 并填写 LLM 端点与 API 密钥。Docker Compose 方式:拉取基础镜像 docker pull ghcr.io/astral-sh/uv:python3.13-trixie,然后 docker compose up --build。手动方式:uv run --project cairn cairn serve 和 uv run --project cairn cairn dispatch --config dispatch.yaml。本地模式无需 Docker:复制 dispatch.local.example.yaml 为 dispatch.yaml,且本机需已安装并登录 claude/codex/pi CLI。
如何使用这个 Agent?
首先配置 dispatch.yaml 以提供 LLM 端点与密钥。然后启动 server 和 dispatcher:uv run --project cairn cairn serve 及 uv run --project cairn cairn dispatch --config dispatch.yaml。系统会为每个项目创建独立 worker 容器,容器内多个 Agent Worker 并发运行。通过共享黑板上的 Facts、Intents、Hints 协调。任务类型自动调度:Bootstrap 启动时直接尝试,Reason 周期性评估状态,Explore 执行探索。可通过 --startup-healthcheck-only 仅做健康检查。本地模式需在主机上直接运行 dispatcher,worker 使用主机上的 CLI 且不经过沙箱。运行测试:uv run --project cairn --group dev pytest。