npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

flagent

v0.1.0

Published

Flagent Multi-Agent System - 基于 Vercel AI SDK 的多智能体协作框架

Readme

Flagent 多智能体并发框架

基于 Vercel AI SDK 的多智能体协作框架,面向 CTF 攻防与安全研究场景。采用 MainAgent 主控 + 5 类专家 SubAgent 架构,支持并发 ReAct、动态子智能体注册与权限管控。

✨ 特性

  • 并发 ReAct 主控:MainAgent 拥有全部工具并可直接执行,一次输出多个 ACTIONS(并发只读采集)与多个 DELEGATE(并发委派),统一思考再推进
  • 侦察 → 分类 → 深挖:非强制状态机的 prompt 工程方法论,先并发侦察再分类,避免未侦察就硬路由
  • 5 类 CTF 专家子智能体:web / pwn / reverse / crypto / misc,各自独立 context 与工具子集
  • 动态子智能体:registerDynamicAgent + SPAWN_AGENT —— 不落进预设类别的新题可按需 spawn 通用深挖 agent
  • 后台任务管理:BackgroundManager 单例驱动后台分析任务,6 态状态机(PENDING→RUNNING→{COMPLETED|CRASHED|CANCELLED|STUCK}),心跳机制 + 卡死检测(默认 90s 预警 / 5min 判死),CLI 30s 自动健康报告,/bgstart /bg /status /kill 命令
  • AbortSignal 取消 + 工具级超时:MainAgent 每步检查取消信号,ToolExecutor 为每个工具注入 Promise.race 超时包装(默认 2min),任务级取消一键传播
  • PWN 专业反汇编:集成 objdump / checksec / radare2 / ROPgadget / nm 五大系统级工具,覆盖静态分析到 ROP gadget 搜索全链路
  • 多平台 LLM 切换:支持 qianwen(千问 DashScope)/ bailian(百炼 Workspace)/ anthropic(Anthropic API)三平台,CLI /platform 一键切换并写回配置
  • 并发安全:ContextManager Promise 链式锁、ToolExecutor 信号量限流(默认 8)、PermissionManager 双检锁
  • 权限管控:副作用工具(command_exec 等)逐次确认,本会话记忆,CLI /permissions 查看
  • 上下文管理:滑动窗口 + Token 超阈值自动 LLM 摘要,/summarize 手动触发
  • 会话管理:Claude-Code 式多会话,每会话独立上下文/权限/动态 agent,磁盘持久化(.flagent/sessions/),CLI /new /sessions /switch /delete 切换/恢复,可并行分析多道题
  • 类型安全工具系统:Zod v4 Schema 参数校验,concurrent / requirePermission 元数据标记
  • 双入口:CLI 终端交互 + VSCode 扩展(Webview 面板 + 命令面板),共用同一套 agent 构造工厂

🏗️ 项目结构

flagent/
├── src/
│   ├── llm/
│   │   ├── client.ts                # LLM 客户端(qianwen/bailian/anthropic 三平台)
│   │   ├── global-config.ts         # 全局 LLM 配置(平台/apiKey/workspaceId/model 持久化)
│   │   └── classify-error.ts        # LLM 错误分类器(超时/限流/配额/内容过滤)
│   ├── context/
│   │   └── context-manager.ts       # 上下文管理器(并发安全锁 + 滑动窗口 + 自动摘要)
│   ├── permissions/
│   │   └── permission-manager.ts    # 权限管理器(双检锁 + 会话记忆)
│   ├── tools/
│   │   ├── registry.ts              # 工具注册表(Zod 校验 + concurrent/requirePermission 元数据)
│   │   ├── web-tools.ts             # Web 攻防工具(15 个:http_request/port_scan/sql_injection_test/ssti_test…)
│   │   ├── pwn-tools.ts             # Pwn 工具(16 个:binary_analysis/pwn_objdump/pwn_checksec/pwn_radare2/pwn_rop_gadget/pwn_nm…)
│   │   ├── reverse-tools.ts         # 逆向工具(9 个:packer_detect/pseudocode_gen/js_deobfuscate…)
│   │   ├── crypto-tools.ts          # 密码学工具(11 个:rsa_advanced/lll_reduction/mt19937_predict…)
│   │   ├── misc-tools.ts            # 杂项工具(15 个:image_stego_check/traffic_analysis/memory_forensics/command_exec…)
│   │   ├── default-tools.ts         # 默认 mock 工具(web_search/code_search/file_read…)
│   │   ├── factory.ts               # createToolRegistry(5 套工具一次注册,跨会话共享)
│   │   └── index.ts
│   ├── agents/
│   │   ├── main-agent.ts            # 并发 ReAct 主控(多 ACTIONS/DELEGATE/PLAN/SPAWN_AGENT + AbortSignal + heartbeat)
│   │   ├── sub-agent.ts             # 子智能体(独立 context + 工具越权隔离)
│   │   ├── scheduler.ts             # 调度器(route + dispatchConcurrent + registerDynamicAgent)
│   │   ├── tool-executor.ts         # 统一工具执行(并发限流 + 权限 + 串行/并发分组 + 信号超时)
│   │   ├── background-manager.ts    # 后台任务管理器(6 态状态机 + 心跳/卡死/取消/健康检查)
│   │   ├── react-parser.ts          # ReAct 响应解析器(公共 + MainAgent 多动作解析)
│   │   ├── factory.ts               # createAgentSystem(CLI/VSCode 唯一装配真相源)
│   │   └── index.ts
│   ├── session/
│   │   ├── session-data.ts          # 会话序列化结构(SessionData/SerializableMessage)
│   │   ├── session-store.ts         # 磁盘持久化(.flagent/sessions/<id>.json)
│   │   ├── session.ts               # 单会话封装(agent 图 + 序列化/反序列化 + runBackground)
│   │   ├── session-manager.ts       # 会话集合管理(创建/切换/恢复/删除)
│   │   └── index.ts
│   ├── cli/index.ts                 # CLI 入口(SessionManager + 会话/平台/后台命令 + 30s 健康轮询)
│   ├── vscode/
│   │   ├── extension.ts             # VSCode 扩展入口(SessionManager + 侧边栏会话树 + 会话感知 webview)
│   │   ├── session-tree-provider.ts # 侧边栏会话树数据源(活跃高亮/点击切换)
│   │   ├── media/                   # 活动栏/按钮 SVG 图标
│   │   ├── package.json             # 扩展 manifest(视图/命令/菜单)
│   │   └── tsconfig.json
│   └── index.ts                     # 库导出
├── tests/                           # 测试用例(单元 + e2e + verify-background)
├── .env.example
├── tsconfig.json
└── package.json

🚀 快速开始

1. 安装依赖

npm install

2. 配置环境变量

cp .env.example .env
# 编辑 .env 填入真实 API Key

| 变量 | 说明 | 默认值 | |------|------|--------| | DASHSCOPE_API_KEY | 阿里云百炼 API Key(qianwen/bailian 平台) | - | | ANTHROPIC_API_KEY | Anthropic API Key(anthropic 平台) | - | | LLM_PLATFORM | LLM 平台:qianwen / bailian / anthropic | bailian | | WORKSPACE_ID | 百炼 Workspace ID(仅 bailian 平台) | llm-v7cepeucys535ynp | | MODEL_NAME | 模型名称 | 平台相关(qwen3.8-max / claude-sonnet-4-20250514) |

也可在 CLI 中用 /platform、/model、/apikey 动态切换并持久化写盘。

3. 构建 & 运行 CLI

npm run build
npm run cli

4. CLI 交互命令

CLI 启动时自动恢复最近会话(若无历史会话,首次提问自动新建)。会话持久化到 .flagent/sessions/,重启后可 /switch 恢复(消息/权限/动态 agent/历史 steps 全还原)。

会话管理(每会话独立上下文/权限/动态 agent,可并行分析多道题):

| 命令 | 说明 | |------|------| | /new [标题] | 新建会话并切为活动 | | /sessions | 列出所有会话(标记当前活动会话) | | /switch <id> | 切换会话(支持 id 短前缀;不在内存则从磁盘恢复) | | /delete <id> | 删除指定会话(内存 + 磁盘) | | /title [标题] | 查看或设置当前会话标题 |

会话内命令:

| 命令 | 说明 | |------|------| | /help | 显示帮助 | | /agents | 查看所有子智能体(含动态注册的) | | /tools | 查看所有可用工具 | | /context | 查看当前会话上下文状态(消息数/Token/摘要) | | /summarize | 手动生成对话摘要(窗口外消息压缩) | | /permissions | 查看本会话已批准的副作用工具 | | /platform [qianwen\|bailian\|anthropic] | 查看/切换 LLM 平台,写回全局配置 | | /model [名称] | 查看/切换模型 | | /apikey [key] | 查看/设置 API Key(屏蔽显示) | | /bgstart <任务描述> | 启动后台分析任务(独立线程,前台不阻塞) | | /bg [任务ID] | 列出所有后台任务或查看指定任务详情 | | /status [任务ID] | 查看后台任务健康状态(含 thought/tool 历史) | | /kill <任务ID\|all> | 取消后台任务 | | /clear | 清除当前会话的对话历史与权限记忆 | | /exit | 退出系统 |

后台任务运行期间,CLI 每 30 秒自动打印一次健康报告,若发现 STUCK / CRASHED 会红字提醒。

🧩 核心架构

并发架构总览

用户任务
  └─ MainAgent(主控,拥有全部工具)
       ├─ PLAN: 侦察目标 + 总体方案(可选,简单任务可跳过)
       ├─ ACTIONS: 并发只读采集(多个 concurrent 工具同时跑)
       │     └─ ToolExecutor(信号量限流 + 权限确认 + 工具级超时)
       ├─ SPAWN_AGENT: 按需注册通用深挖 agent(新题)
       └─ DELEGATE: 并发委派多个专家 SubAgent(各自独立 ReAct)
            └─ 统一落库观察 → 下一步统一思考 → FINAL_ANSWER

  后台模式:/bgstart → BackgroundManager
       ├─ 创建任务(PENDING→RUNNING)+ AbortController
       ├─ MainAgent.run(signal, toolTimeoutMs) → 每步 heartbeat()
       ├─ 健康检查(每 30s):idleMs > 90s WARNING / > 5min STUCK
       └─ /kill → abort() → MainAgent 抛出 AbortError → CRASHED/CANCELLED

方法论(侦察 → 分类 → 深挖,非强制状态机):

  1. 侦察:复杂任务第一步优先并发只读采集,先获取事实再判断,不在未侦察前凭字面猜类别硬路由
  2. 分类:基于观察自主归类(web/pwn/reverse/crypto/misc,或判断为新题)
  3. 深挖:MainAgent 继续用工具深入,或并发 DELEGATE 给专家;新题可 SPAWN_AGENT 自定义通用 agent

ContextManager(上下文管理器)

  • 并发安全:runLocked Promise 链式锁串行化所有写入,addMessagesBatch 批量落库只触发一次锁
  • 滑动窗口:始终保留最近 N 条消息(默认 10 条)
  • 自动摘要:Token 超阈值时自动 LLM 压缩旧消息;summarizeNow() 支持手动触发
  • Token 估算:按 字符数 / 4 估算

ToolRegistry(工具注册表)

基于 Zod v4 Schema 的类型安全工具系统,每个工具带元数据:

  • concurrent: true — 只读采集工具,可安全并发执行(如 http_request)
  • requirePermission: true — 副作用工具,需逐次权限确认(如 command_exec)

getToolDescriptions() 将 Zod schema 推断为 JSON schema(用 instanceof 判定,跨 zod 版本稳健)。

ToolExecutor(统一工具执行入口)

MainAgent 与所有 SubAgent 共用,统一权限与并发策略:

  1. 串行确认所有 requirePermission 工具(PermissionManager 自带锁)
  2. 拒绝的标记 skipped 不执行
  3. concurrent: true 的只读工具并发执行(信号量限流,默认上限 8);其余串行(保守避免副作用冲突)
  4. 工具执行抛错 / Zod 校验失败均被捕获,返回 success: false
  5. 保持原顺序返回结果

PermissionManager(权限管理器)

  • 会话记忆:同一工具在本会话确认一次后不再询问(按工具名记忆)
  • 双检锁:fast-path 无锁读 approved → 未命中进锁 → 锁内复检再询问,确保并发场景同一工具只弹一次窗
  • 拒绝不记忆:被拒的工具下次仍会询问(避免一次拒绝永久封锁)

SubAgent(子智能体)

5 类 CTF 专家,各自独立 ContextManager(context 隔离)+ 共享 ToolExecutor(统一权限/并发),maxSteps: 8:

| 智能体 | 角色 | 工具数 | 代表工具 | |--------|------|--------|----------| | web | Web 攻防专家 | 15 | http_request port_scan dir_bruteforce sql_injection_test xss_test ssti_test ssrf_test file_upload_test header_analysis dns_lookup ssl_info | | pwn | 二进制漏洞挖掘与利用专家 | 17 | binary_analysis extract_strings vulnerability_scan disassemble hex_view elf_got_plt_analysis exploit_template nc_remote_client memory_layout pwn_static_analysis pwn_check_env pwn_run_exploit pwn_objdump pwn_checksec pwn_radare2 pwn_rop_gadget pwn_nm | | reverse | 逆向工程与代码分析专家 | 11 | binary_analysis disassemble packer_detect code_deobfuscate binary_compare apk_analysis pseudocode_gen js_deobfuscate dotnet_decompile | | crypto | 密码分析与破解专家 | 11 | encode_decode hash_crack classical_cipher rsa_tool rsa_advanced aes_encrypt des_encrypt modular_arithmetic lll_reduction mt19937_predict | | misc | 隐写分析与取证专家 | 15 | file_type_detect entropy_analysis image_stego_check qr_decoder archive_crack traffic_analysis memory_forensics file_search_content command_exec |

工具越权隔离:SubAgent 仅能调用其 toolNames 集合内的工具,越权调用直接返回 [工具越权] 拒绝执行。

Scheduler(调度器)

  • route(task) — 单智能体直接路由(无 LLM);多智能体用 LLM 分析任务语义选择最合适执行方
  • dispatchConcurrent(requests) — 并发委派多个 SubAgent,Promise.all 并发 run(),未找到的标记失败不影响其他
  • registerDynamicAgent(config) / unregisterDynamicAgent(id) — 动态注册/注销通用 SubAgent(决策四:给新题留口子),id 唯一校验、toolNames 过滤到注册表

MainAgent(并发 ReAct 主控)

一次 ReAct 步骤可同时输出:

  • PLAN — 总体方案(可选,通常仅第一步)
  • ACTIONS — 多个工具调用,并发执行
  • SPAWN_AGENT — 动态注册通用 agent
  • DELEGATE — 多个专家 agent,并发委派
  • FINAL_ANSWER — 任务完成

工具采集与子智能体委派同时并发推进(Promise.all),结果统一落库供下一步思考。每步记录 thought / action / observation / agentId / plan。

run() 方法支持 AbortSignal(取消信号)和 toolTimeoutMs(工具级超时),每步 stepStart/planning/react 前检查信号,在 stepStart/toolStart/toolResult 等节点调用 heartbeat() 刷新活动时间戳。

BackgroundManager(后台任务管理器)

单例模式(getBackgroundManager()),让耗时分析任务在后台运行,前台定时检查卡死/crash。

  • 6 态状态机:PENDING → RUNNING → {COMPLETED | CRASHED | CANCELLED | STUCK}
  • 心跳机制:heartbeat() 刷新 lastActivityAt;markStart() / markStep() / markComplete() / markCrash() 驱动状态流转
  • 健康检查:healthCheck() 按 idleMs 分三档:HEALTHY(< warn 90s)/ WARNING(>= 90s)/ STUCK(>= 5min 自动标记)
  • 取消传播:cancel(taskId) 触发 AbortController.abort(),MainAgent 每步检查信号后抛出 AbortError
  • 工具级超时:toolTimeoutMs(默认 2min)通过 Promise.race 包装每个工具执行,超时返回错误并建议调小阈值
  • 清理:cleanup(retentionMs) 清理已结束且超过保留窗口的任务
  • 事件回调:onBackgroundEvent(taskId, event) 将 AgentEvent(thought/tool/delegate 等)实时回调给调用方

🗂️ 会话管理(Session)

Claude-Code 式多会话,让 CLI 可在不同 session 分析不同题目,互不干扰。

  • 隔离边界:每会话独立 ContextManager(主对话)/ MainAgent(steps)/ PermissionManager(approved)/ Scheduler(预设+动态 agent);跨会话共享无状态的 ToolRegistry 与 LLM client
  • 持久化:.flagent/sessions/<id>.json,存主对话(messages+summary)、历史 steps、已批准工具、动态 agent 配置;子 agent context 为瞬时态不持久化
  • 恢复:Session.fromData 重建 —— 预置 approved → createAgentSystem → restoreMessages → 重注册动态 agent → setSteps
  • 首问自动命名:Session.run 首次以任务前 30 字派生标题

作为库使用时,可直接用 SessionManager 驱动多会话:

import { SessionManager, createToolRegistry, PermissionManager } from "flagent";

const toolRegistry = createToolRegistry();
const mgr = new SessionManager({
  toolRegistry,
  confirmFn: async () => true, // 自定义副作用工具确认
});

const sessionA = await mgr.create("题一");
await mgr.switch(sessionA.id);
await mgr.run("分析这道 web 题..."); // 在 sessionA 上下文内执行并自动持久化

const sessionB = await mgr.create("题二");
await mgr.run("分析这道 crypto 题..."); // 在 sessionB 上下文内执行,与 A 互不污染

// 重启后从磁盘恢复
const restored = await mgr.resume(sessionA.id);

🖥️ VSCode 扩展

cd src/vscode
npm install
npm run compile

需先在项目根目录 npm run build 生成 dist/(扩展的运行依赖会随扩展一并编译进 out/)。

LLM 配置(扩展专属):通过 VSCode 设置 flagent.* 注入,优先级 > 项目根 .env。

| 设置项 | 默认值 | 说明 | |--------|--------|------| | flagent.apiKey | (空) | DashScope API Key(必填),为空时发起对话会弹窗提示打开设置 | | flagent.workspaceId | llm-v7cepeucys535ynp | DashScope workspace ID(会自动重算 baseUrl) | | flagent.model | qwen3.8-max | 模型名称 |

修改 settings.json 后即时生效(无需重启窗口);另可执行 Flagent: 重新加载 LLM 配置 手动刷新。

侧边栏会话管理:活动栏新增 Flagent 入口,侧边栏「会话」视图列出所有会话(活跃会话以蓝点标记、按更新时间倒序)。

| 操作 | 方式 | |------|------| | 新建会话 | 视图标题栏 + 按钮 / 命令面板 Flagent: 新建会话 | | 切换会话 | 点击会话项 / 命令面板 Flagent: 切换会话 | | 重命名 / 删除 | 会话项右键菜单 | | 刷新列表 | 视图标题栏刷新按钮 |

会话持久化到工作区 .flagent/sessions/(与 CLI 共享同一目录),活动会话记忆在 workspaceState,重开窗口自动恢复。对话面板绑定当前会话,切换会话即重载该会话的消息历史。Flagent: 显示状态 会一并输出当前生效的 LLM 配置。

可用命令:Flagent: 开始对话 / Flagent: 打开对话面板 / Flagent: 分析选中代码 / Flagent: 清除当前会话上下文 / Flagent: 显示状态 / Flagent: 重新加载 LLM 配置 / 会话管理系列命令。

📦 作为库使用

import {
  ContextManager,
  ToolRegistry,
  MainAgent,
  Scheduler,
  ToolExecutor,
  PermissionManager,
  BackgroundManager,
  getBackgroundManager,
  createWebTools,
  createPwnTools,
  createReverseTools,
  createCryptoTools,
  createMiscTools,
} from "flagent";

async function main() {
  // ① 构建工具注册表(concurrent/requirePermission 元数据)
  const toolRegistry = new ToolRegistry();
  for (const t of createWebTools().getAll()) toolRegistry.register(t);
  for (const t of createPwnTools().getAll()) toolRegistry.register(t);
  // ...其余工具集

  // ② 权限管理器(副作用工具确认)+ 统一工具执行入口(并发限流)
  const permissionManager = new PermissionManager(
    async (toolName, args) => {
      // 自定义确认逻辑,返回 true/false
      return true;
    }
  );
  const toolExecutor = new ToolExecutor(toolRegistry, permissionManager, 8);

  // ③ 调度器(注入 toolExecutor 供动态 agent 使用)
  const scheduler = new Scheduler(toolRegistry, toolExecutor);

  // ④ 动态注册一个通用深挖 agent(决策四)
  scheduler.registerDynamicAgent({
    id: "gen-custom",
    name: "自定义专家",
    role: "通用分析员",
    systemPrompt: "你是通用分析员…",
    toolNames: ["http_request", "file_type_detect"],
    maxSteps: 6,
  });

  // ⑤ MainAgent 主控
  const mainAgent = new MainAgent(
    new ContextManager(),
    toolRegistry,
    scheduler,
    toolExecutor,
    20 // maxSteps
  );

  const result = await mainAgent.run("分析 http://example.com 的安全性");
  console.log(result.finalAnswer);
  console.log(`步数: ${result.steps.length}, 耗时: ${result.duration}ms`);
}

🧪 测试

先 npm run build 生成 dist,再运行测试:

| 命令 | 范围 | 说明 | |------|------|------| | npm test / npm run test:unit | 阶段 0–10 单元 + 边界场景 + 后台/PWN 验证 | 325+ 项,无需网络/LLM(全 mock) | | npm run test:e2e | 阶段 6/7/8/9/10 e2e | 5 项,真实 LLM + 网络抓取,需 .env |

测试覆盖:

  • tests/stage{0..10}.test.js — 各阶段功能单元测试(stage10 覆盖会话序列化往返/磁盘持久化/切换恢复删除/上下文与权限隔离)
  • tests/edge-cases.test.js — 边界场景与错误处理(重复注册/未知工具/参数校验失败/工具抛错/权限拒绝并发/工具越权/解析容错/zod schema 推断等)
  • tests/verify-background.test.js — 后台任务管理器(10 项:单例/状态流转/心跳/卡死检测/取消/列表/清理/事件回调)+ PWN 专业工具 smoke(12 项:5 个工具的文件不存在/参数校验/注册元数据)
  • tests/e2e-*.test.js — 端到端真实 LLM 验证(并发抓取/动态 agent/简单任务跳过工具/编程式构建/双会话隔离 + resume 还原)

🛠️ 技术栈

  • Vercel AI SDK v4(ai、@ai-sdk/openai)— 统一接入千问 DashScope / 百炼 Workspace / Anthropic API(OpenAI 兼容模式)
  • Zod v4 — 运行时类型校验
  • TypeScript(strict)— 类型安全
  • Node.js ≥ 18

🧭 CTF 题型覆盖与扩展规划

当前覆盖(5 类预设 SubAgent + 66 个工具)

| 题型 | 覆盖度 | SubAgent | 工具数 | 说明 | |------|--------|----------|--------|------| | Web | 充分 | web | 15 | SQL注入/XSS/SSRF/SSTI/命令注入/文件包含/文件上传/反序列化/目录爆破/端口扫描/DNS/SSL 全覆盖 | | Pwn | 充分 | pwn | 17 | 二进制分析/漏洞扫描/GOT-PLT/ROP gadget/checksec/objdump/radare2/pwntools 执行齐备 | | Reverse | 充分 | reverse | 11 | 反汇编/伪代码/壳检测/混淆检测/APK/JS/.NET/Java 反编译齐全 | | Crypto | 充分 | crypto | 11 | 古典密码/对称(RSA/AES/DES)/RSA高级攻击/格规约/MT19937/模运算齐全 | | Misc | 较充分 | misc | 15 | 隐写(图片/音视频/文档)/流量分析/内存取证/压缩包爆破/二维码/文件识别齐备 |

缺失题型与扩展建议

以下题型在当前 CTF 赛事中高频出现但尚未覆盖,可通过 Scheduler.registerDynamicAgent() 动态注册或补入 factory.ts 扩展:

| 题型 | 优先级 | 建议 SubAgent | 建议核心工具 | |------|--------|---------------|-------------| | Forensics 取证 | 高 | forensics | disk_forensics(磁盘镜像/dd/E01)、filesystem_analyze(NTFS/EXT4/APFS)、registry_analyze(Windows 注册表 hive)、log_forensics(事件日志/syslog)、timeline_reconstruct(MAC时间+日志重建)、volatility_plugin(Volatility 3 封装)、pcap_deep_analyze(协议还原/文件提取) | | Mobile 移动安全 | 高 | mobile | apk_deep_analysis(apktool反编译+资源解析)、dex_decompile(jadx DEX→Java)、smali_edit(Smali编辑+重打包)、frida_hook(动态hook脚本执行)、ipa_analysis(iOS IPA分析)、ssl_pinning_bypass(证书绑定绕过) | | Blockchain 区块链 | 中 | blockchain | sol_disassemble(Solidity反汇编)、evm_decompile(EVM字节码反编译)、contract_audit(漏洞审计)、reentrancy_test(重入攻击PoC)、slither_scan(Slither静态分析)、tx_trace_analyze(链上交易trace)、rpc_query(JSON-RPC查询) | | OSINT 开源情报 | 中 | osint | web_search_real(真实搜索引擎API)、whois_lookup、social_media_search(社交媒体关联)、geo_locate(GPS/IP地理定位)、image_exif_analyze(EXIF元数据)、reverse_image_search(反向图片搜索)、subdomain_enum(子域名枚举)、wayback_lookup(历史快照) | | Cloud 云安全 | 中低 | cloud | iam_enum(AWS/Aliyun IAM枚举)、s3_bucket_scan(对象存储权限检测)、container_escape_test(容器逃逸)、k8s_attack(K8s攻击)、cloud_metadata_exploit(元数据服务利用)、terraform_audit(IaC配置审计) | | IoT 物联网 | 中低 | iot | firmware_extract(binwalk固件提取)、binwalk_scan(签名扫描)、uart_jtag_detect(UART/JTAG接口识别)、mqtt_analyze(MQTT协议分析)、coap_analyze(CoAP协议分析)、iot_protocol_fuzz(协议Fuzz) | | AI/ML 对抗 | 低(前沿) | aiml | prompt_injection_test(Prompt注入)、jailbreak_test(越狱payload库)、model_inversion(模型逆向)、adversarial_sample(FGSM/PGD对抗样本)、llm_leak_test(系统提示泄露检测)、model_fingerprint(模型指纹识别) |

扩展方式

所有新题型均可通过两种方式接入,无需改动核心架构:

  1. 动态注册(推荐,运行时扩展):

    scheduler.registerDynamicAgent({
      id: "forensics",
      name: "取证专家",
      role: "数字取证与证据分析专家",
      systemPrompt: "你是取证专家…",
      toolNames: ["disk_forensics", "registry_analyze", "log_forensics", ...],
      maxSteps: 8,
    });
  2. 预设注册(编译时扩展):在 factory.ts 中新增 SubAgent 并 scheduler.registerAgent(),与现有 5 类预设 agent 并列。

新增工具按现有模式在对应 src/tools/<category>-tools.ts 中实现,通过 createToolRegistry() 自动注册。每个工具只需定义 Zod schema + execute 函数 + 元数据(concurrent / requirePermission / category / timeout)。

📝 License

MIT