mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
3957 字
11 分钟
agent项目报告
2026-04-15

项目报告#

1. 报告范围#

本报告基于当前工作区中的 .roo .roomodesplans/ 以及仓库现有题目与工具目录,对这个 CTF-Agent 项目的结构进行梳理。

报告重点覆盖:

  • Agent 的模式层设计
  • .roo 下的配置文件与其职责
  • 通用 skills 与 mode-specific skills 的组织方式
  • 环境声明、工具入口与执行分层设计
  • 仓库中题目目录、工具目录与规划文档之间的关系

2. 项目总体结构#

从当前仓库结构来看,这个项目不是单纯的“题目解题脚本集合”,而是一个以 Roo Agent 为核心、围绕 CTF 解题流程做强化的工程化工作区。

可以将整体分成六层:

  1. 模式层:由 .roomodes 定义 Agent 的角色与权限边界。
  2. 配置层:由 .roo/settings.json .roo/mcp.json .roo/env-contract.md 提供环境、MCP 与执行契约。
  3. 方法论层:由 .roo/skills/ 下的通用 CTF skills 提供题型方法论与专项流程。
  4. 模式专属执行层:由 .roo/skills-ctf-commander/ .roo/skills-ctf-executor/ 提供编排与执行协议。
  5. 资产层:由 tools/ 与各题目目录下脚本/产物组成,承载通用工具与题目级脚本。
  6. 文档与规划层:由 plans/ 维护架构分析、改造计划、进度说明等长期文档。

这说明当前仓库目标并不是“临时做题”,而是在做一个可复盘、可扩展、可持续改造的 CTF Agent 工作平台。


3. 模式层结构: .roomodes#

.roomodes 是整个 Agent 的入口级结构定义文件,当前可见的核心自定义模式包括:

3.1 skill-writer#

该模式用于维护 Agent Skills 本身,限制编辑范围到 .roo/skills* 相关目录。它的作用相当于“Agent 能力包维护模式”,负责 skill 的规范化编写与审计。

3.2 ctf-executor#

ctf-executor 是执行态模式,强调:

  • 只做已明确边界的子目标
  • 高密度调用工具、命令、脚本
  • 保留硬证据与产物路径
  • 对失败路径给出结构化回传

它的职责更像“战术执行器”,不负责长期全局规划,而负责把一轮操作做透。

3.3 ctf-commander#

ctf-commander 是编排态模式,负责:

  • 识别题型
  • 选择主路径与备选路径
  • 选择主 skill
  • 设定子任务边界
  • 管理失败回退与模式切换

它更像“战术指挥层”,负责决定下一轮应该做什么,而不是直接把所有技术细节亲自跑完。

3.4 模式层的设计意义#

当前模式层已经体现出明显的双层分工:

  • Commander 负责“路线正确”
  • Executor 负责“执行做透”

这种拆分解决了单一模式同时负责规划与执行时容易出现的三个问题:

  1. 编排容易被局部技术细节打断
  2. 执行失败后没有上层负责换路
  3. 证据、产物、writeup 难以纳入统一协议

4. .roo 配置文件检查结果#

本次重点检查了 .roo 中三个核心配置文件:

4.1 环境契约文件: .roo/env-contract.md#

.roo/env-contract.md 是一个“统一环境声明文件”,其定位不是临时侦察记录,而是赛前维护的固定契约。

它主要定义了:

  • Windows 层、WSL Bash 层、Sage 层三种运行层的职责边界
  • 必须先读环境契约、再读机器可读配置的读取顺序
  • 固定入口与最小一致性验证方法
  • Windows 路径到 WSL 路径的映射规则
  • 各题型默认推荐的执行分层方式

关键设计点包括:

  1. 明确要求先读 env-contract.md,再读 settings.json
  2. 禁止赛时重新猜测工具位置,例如 WSL_SAGE 等入口必须直接引用。
  3. 把 Crypto/Web/Reverse/Pwn/Forensics 的运行层拆成“采样 / 求解 / 回放”或等价分层。
  4. 明确跨层共享产物必须落回工作区文件,而不是留在临时环境中。

这说明项目已经把“环境管理”从隐式经验提升为显式协议,这对 CTF 场景尤其重要,因为很多失败并不是题目本身问题,而是运行层混用导致的。

4.2 机器可读环境配置: .roo/settings.json#

.roo/settings.json 主要由两部分组成:

4.2.1 env#

该部分定义了固定环境入口,例如:

这些变量让执行层不必依赖“猜测本机安装位置”,而可以直接从配置获得稳定入口。

4.2.2 permissions.allow#

该部分列出允许调用的 Bash/WSL 工具能力,覆盖面非常广,包括:

  • Python / pip / node / npx / gcc / make 等基础执行工具
  • filebinwalkstringsxxdreadelfobjdumpchecksec 等分析工具
  • hashcatjohnopenssljqsqlite3 等通用安全工具
  • one_gadgetROPgadgetropperseccomp-tools 等 pwn 工具
  • volatilityphotoreczstegsteghidemultimon-ngffmpeg 等取证与信号处理工具
  • wasm2watjadxapktoolradare2 等逆向类工具
  • 以及统一的 wsl 入口

这表明该项目并不是依赖单一 Python 环境,而是预设了一个“Windows + WSL + Sage + 仓库工具”的混合能力池。

4.3 MCP 配置: .roo/mcp.json#

.roo/mcp.json 当前配置了两个 MCP 服务:

4.3.1 ida-pro-mcp#

该服务为 IDA Pro 提供逆向分析代理接口,alwaysAllow 中包含函数查询、反编译、反汇编、xrefs、类型推断、补丁、重命名、数据流追踪等大量操作。

这意味着在 Reverse / Malware / Pwn 场景下,Agent 可以直接把 IDA 作为程序分析后端,而不是只依赖文本命令行工具。

该服务通过 npx 启动 Brave Search MCP,并允许 brave_web_search 能力,用于通用 Web 信息检索。

这为漏洞利用背景知识、CVE 信息、公开资料补充提供了在线搜索入口。

4.4 配置层结论#

.roo 当前已经形成三种互补配置:

  1. env-contract.md 负责“解释与约束”
  2. settings.json 负责“机器可读入口与权限”
  3. mcp.json 负责“MCP 服务接入”

这种拆分很合理:文档负责语义与流程,JSON 负责自动化消费,MCP 负责外部能力注入。


5. Skill 结构#

.roo 下的 skill 体系可分为三类。

5.1 通用 CTF Skills: .roo/skills/#

.roo/skills/ 下包含大量通用技能包,例如:

这些 skill 是题型方法论层,解决的是“遇到某一类目标时,应该按什么方法推进”。

核心观察一:ctf-solve#

ctf-solve 已不是简单的技能说明,而是一个综合编排器,明确规定:

  • 首轮必须读取环境声明
  • 必须做输入识别与基础侦察
  • 必须首轮主动加载主 skill
  • 必须输出主路径、备选路径和执行目标
  • 必须在失败 2-3 轮后自动回退
  • 疑似 Flag 必须进入验证闭环

也就是说,它承担了“未知题型总入口”的职责。

核心观察二:ctf-web-methodology#

ctf-web-methodology 把 CTF Web 与真实渗透的思路区分开来,强调:

  • 先广后深
  • 线索驱动
  • 三轮法则
  • 先做快速侦察,再做挑战类型识别
  • 对登录页面引入 CSRF-safe 登录流程

这说明项目对 Web 题不再是“目录扫描优先”的粗放策略,而是有较强的 CTF 化方法论。

核心观察三:playwright-cli#

playwright-cli 提供浏览器自动化能力,用于:

  • 打开/跳转页面
  • 交互元素
  • 获取快照
  • 读取 cookie、localStorage、sessionStorage
  • 观察网络与控制台
  • 保存状态、截图、PDF

其存在的意义,是补齐静态 HTTP 请求难以覆盖的 Web 场景,例如登录态、多步交互、JS 渲染与前端存储分析。

5.2 Commander 专属 Skills: .roo/skills-ctf-commander/#

该目录负责编排层增强,当前至少包括:

其中 commander-task-routing 明确要求:

  • 先判输入,再判题型
  • 首轮即选择主 skill
  • 输出固定格式的结构化计划
  • 对 Web 目标追加 playwright-cli 判定
  • 主路径连续失败后自动换路

这说明 Commander 层不是“自由发挥的分析”,而是被 skill 协议化了。

5.3 Executor 专属 Skills: .roo/skills-ctf-executor/#

该目录负责执行层增强,当前至少包括:

executor-artifact-triage#

executor-artifact-triage 规定了题目目录初始化与标准归档结构,包括:

  • challenge/
  • evidence/commands/
  • evidence/web/
  • evidence/files/
  • evidence/screenshots/
  • scripts/
  • output/
  • payloads/
  • logs/

这意味着“题目做完后还能复盘”已经被写入执行协议。

executor-exploit-attempts#

executor-exploit-attempts 则进一步定义了:

  • 每轮尝试前后的固定记录字段
  • 假设记录机制
  • 仓库内 tools/ 的标准调用协议
  • WSL / Bash / Sage 工具入口的显式引用规则
  • 连续失败时必须改变核心变量

这使执行层从“脚本乱跑”变成“按轮次、按证据、按工具来源受控推进”。


6. 仓库目录与 Agent 的关系#

6.1 题目目录#

仓库中当前已有题目目录:

这些目录承载历史或当前题目的脚本、附件、writeup 与输出。例如:

这说明项目已经不只是保留最终答案,而是在用真实题目目录沉淀脚本、分析痕迹和 writeup,反向验证 Agent 目录规范是否可落地。

6.2 通用工具目录:tools/#

tools/ 中集中放置仓库级通用工具,包括:

这些工具并不是孤立存在;根据 executor-exploit-attemptsexecutor-artifact-triage 的规则,它们已经被纳入标准调用协议,要求记录:

  • 工具路径
  • 用途
  • 关键参数
  • 输出文件

因此 tools/ 可以视为 Agent 的“可复用武器库”。

6.3 规划文档目录:plans/#

plans/ 目前已有多份架构与改造文档,例如:

这些文档的作用不是题目 writeup,而是 Agent 自身的设计演进记录。

也就是说,这个仓库同时维护两类知识:

  1. 题目知识
  2. Agent 架构知识

这是一个很鲜明的工程化特征。


7. 当前 CTF-Agent 的工作流抽象#

综合现有配置与 skills,可以将该 Agent 的工作流概括为:

  1. 进入模式层,由 ctf-commander 或兼容入口触发。
  2. 首轮读取 env-contract.mdsettings.json
  3. 对输入做题型分类,并选择主 skill,例如 ctf-solvectf-web-methodology
  4. Commander 输出主路径、备选路径、执行目标与成功标准。
  5. 切到 Executor,按 executor-artifact-triage 初始化题目目录。
  6. executor-exploit-attempts 管理每轮命令、脚本、payload 与输出。
  7. 执行结果经证据打包后回交 Commander,进行保留、切线或重规划。
  8. 一旦拿到疑似 Flag,切到 ctf-flag-verification 做验证闭环。
  9. 最终将脚本、证据、writeup 留存在题目目录中。

这个流程本质上是“编排层 + 执行层 + 归档层”的闭环,而不是传统单次问答式 agent。


8. 结构优势与当前限制#

8.1 优势#

当前项目结构的主要优势有:

  1. 职责清晰ctf-commanderctf-executor 分工明确。
  2. 环境显式化env-contract.mdsettings.json 把运行层问题前置处理。
  3. 方法论模块化:通用 skill 与 mode-specific skill 分层组织,可持续扩展。
  4. 工具可复用tools/ 中工具已被执行协议正式吸纳。
  5. 证据可复盘:目录结构、日志、payload、writeup 都有统一落点。
  6. 适配混合题型:既能处理 Web 动态交互,也能调用 WSL/Sage/IDA 等强能力工具链。

8.2 限制#

当前结构也反映出一些阶段性限制:

  1. 仍以 prompt / skill 协议为主,尚不是带状态机与任务图调度器的完整 runtime。
  2. 当前规划文档较多,但自动化验证与回归测试体系还不明显。
  3. 题目目录结构在历史题中已部分出现,但尚未看到所有存量目录完全统一到最新规范。
  4. mode-specific skill 已经成型,但 Reverse / Pwn / Crypto 的执行模板还可以继续细分。

9. 总结#

从当前仓库结构判断,这个 CTF-Agent 项目已经具备比较清晰的工程化雏形。

它不是简单地把一堆 CTF 技巧写成说明文档,而是已经形成了如下闭环:

因此,这个项目的本质可以概括为:

一个以 Roo Agent 为运行核心、以 skill 协议为执行方法、以题目目录和证据归档为产物载体、面向 CTF 多题型自动推进与复盘的工程化工作区。

浅谈#

起因是在polarisctf还有后面的nctf中,直观地感受到ai的强大还有被ai虐杀的绝望,让我萌生出了尝试搭建agent的念头

polarisctf中排名第一的老哥叫AI幻神之力,在比赛过程中几乎没有停歇的拿血,而且是每个方向都在拿血,不分白天还是晚上,整个比赛都快被它打穿了

还有在比赛交流群里的人完全不避讳甚至反而很骄傲自己是拿ai梭的比赛,哪怕一点基础知识不懂

然后就是NCTF,这个比赛说实话打得并不轻松(其实清明节压根没怎么打),但是网上却流传着这样一篇文章

用GPT-5.4单挑NCTF团队赛,成功解出91.7%的题目 | ZONE.CI 全球网

image-20260415072009171

其实不止此人,榜单上排名靠前的真人几乎没有,CTF已经变成ai混战了……

于是我就搭建了上面这个项目

但是,在测试中它的水平不尽如人意,比如一道web题,开头简单的jwt爆破,它能枚举、爆破出产生近500个垃圾文件

一道misc的深空信号调制题目因为简单的除法失败错过了正确思路,然后又是枚举、爆破产生了1300多个垃圾文件

远不止这些,我感觉在测试题目时它就一次做对过,哪怕是一些对于我来说都很简单的很容易猜到考点的题目

还有很多缺点,执行时不看skill,不按照我规定的双模式执行(现在改成父子进程了),不会调用工具,看不到配置信息导致不清楚我本地的环境无法正确启用sagemath,简单的pwn栈溢出做不出来,逆向题在配备ida的mcp后也不会用工具去调式,喜欢自己造python脚本,然后又产生一堆垃圾……

其实很多问题都是因为我的配置问题,现在这里加规则那里加规则导致体量太大了,内容太杂了,整个agent显得很笨重

累了,现在已经不想在看这一坨屎山了

(通宵调agent有感而写,最让我生气还是hashcat爆破就能破的jwt密钥它尝试了半个多小时,生成了几十个文件,为什么别人的agent杀穿比赛,我搭的这么蠢啊)

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

agent项目报告
https://btop251.vercel.app/posts/ctf/something-about-agent/
作者
btop251
发布于
2026-04-15
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录