Cairn
通用状态空间搜索 AI 引擎,通过黑板系统 + OODA 循环实现无角色约束的自主探索。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
通用状态空间搜索 AI 引擎,通过黑板系统 + OODA 循环实现无角色约束的自主探索。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你是一个顶级黑客,面对一个完全陌生的服务器——你知道入口在哪(目标 IP),知道终点在哪(拿到 shell),但中间的路完全未知。Cairn 的作者正是从这个场景出发:渗透测试本质上是一个在近乎无限状态空间中寻找路径的定向搜索问题。Cairn 把这个洞察提炼成一个通用引擎——给定起点和终点,在未知状态空间中自主搜索路径。AI 渗透测试只是它的第一个验证场景。
Cairn 并非学术论文的副产品,而是一个在真实竞赛中被验证的项目。在第二届腾讯云安全挑战赛中,610 支队伍、1345 人参赛, Cairn 所在的队伍是**唯一一支 AK(Ace King,全部题目解答)**的团队,最终排名第 3。作者 leixiao 在赛后发长文复盘,系统上线时间点是凌晨 4 点——竞赛前一晚。没有训练、没有调优、没有领域专用工具、没有 MCP、没有 RAG、没有预定义的 Agent 角色,一切从零跑通。
这个成绩揭示了 Cairn 的核心假设:许多"需要专家经验"的任务,本质上是状态空间搜索。高手之所以厉害,不是因为有特殊技能,而是因为他们更高效地探索了搜索空间。Cairn 把这个能力赋予了 AI Agent。
Cairn 的设计哲学是极简:三个原语,一个图结构,Agent 通过共享黑板协调。
| 原语 | 含义 | 作用 |
|---|---|---|
| Fact(事实) | 已确认的客观发现,写入黑板 | 搜索路径上的一个个里程碑 |
| Intent(意图) | 声明的探索方向,尚未执行 | 尚未踏出的下一步 |
| Hint(提示) | 人类在任意时刻注入的判断 | 被 Agent 在下次读取时吸收 |
图从 origin 向 goal 生长,每个 Fact 都是垫脚石,每个 Intent 都是踏入未知的步伐。
Agent Worker 执行标准的 OODA(Observe-Orient-Decide-Act)循环:
关键在于:Worker 没有固定角色。任务是从图的当前状态动态生成的,而非预定义的工作描述。这与传统 Agent 系统(每个 Agent 有固定角色定义)有本质区别。
┌──────────────────────────────────┐
│ Cairn Server │
│ Facts + Intents + Hints │
└─────────────────┬────────────────┘
│ Read/Write API
┌────────┴────────┐
│ Dispatcher │
│ 调度任务、管理 │
│ 容器、写协议 │
└────────┬────────┘
┌────────┴────────┐
│ Worker Container│
│ ┌────┐ ┌────┐ │
│ │ W. │ │ W. │ │
│ └────┘ └────┘ │
└─────────────────┘
Cairn Server 仅维护图的全局一致性。Cairn Dispatcher 读取图、调度任务、动态启停 Worker 容器,是协议的唯一写入方。每个项目独占一个 Worker Container,多个 Agent Worker 并发运行。支持的后端:Claude Code、Codex、Pi。
cairn serve、cairn dispatch)目录结构:
cairn/
├── src/cairn/ # 核心源码
│ ├── server/ # FastAPI 服务端
│ ├── dispatcher/ # 任务调度器
│ └── worker/ # Agent Worker 封装
├── tests/ # 完整测试套件(11 个测试文件)
├── container/
│ ├── Dockerfile # Worker 容器镜像
│ └── .agents/ # Agent 技能定义
docs/
└── specs/
├── server-protocol.md # 服务端协议规范
└── dispatcher-design.md # 调度器设计文档
Worker Container 镜像通过 docker compose 动态启动,连接宿主机 Docker socket(/var/run/docker.sock:/var/run/docker.sock),实现容器内再跑容器(Docker-in-Docker)的隔离执行环境。
项目对部署体验做了精心设计:
docker compose up --buildCairn Server 暴露 8000 端口,Dispatcher 通过健康检查确保 Server 就绪后才启动。数据持久化到 ./datas/cairn/ 目录。完全本地运行,数据不出宿主机。
注意:使用 Cairn 需要自行准备 LLM API(Claude Code /OpenAI Codex / Pi),项目本身不含模型调用费用。
Cairn 的野心远超"AI 渗透测试工具"。作者在文章《The Pathless Path》中指出:漏洞研究、数学证明、CTF 挑战——任何有明确起点、明确成功条件、中间路径未知的问题,都可以用同样的框架建模。Cairn 证明了通用问题求解引擎的可能性:不需要预定义的 Agent 角色,不需要工作流编排,只需要一个图结构和三个原语。
对于 AI 爱好者,Cairn 是理解"Agent 如何在没有明确指导的情况下自主探索"的最佳案例;对于安全研究者,它是绕过人工经验、快速规模化渗透测试的实用工具。
图1:Cairn 项目 Banner
图2:Cairn 运行界面截图