flagent
v0.1.0
Published
Flagent Multi-Agent System - 基于 Vercel AI SDK 的多智能体协作框架
Maintainers
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 install2. 配置环境变量
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 cli4. 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方法论(侦察 → 分类 → 深挖,非强制状态机):
- 侦察:复杂任务第一步优先并发只读采集,先获取事实再判断,不在未侦察前凭字面猜类别硬路由
- 分类:基于观察自主归类(web/pwn/reverse/crypto/misc,或判断为新题)
- 深挖:MainAgent 继续用工具深入,或并发 DELEGATE 给专家;新题可 SPAWN_AGENT 自定义通用 agent
ContextManager(上下文管理器)
- 并发安全:
runLockedPromise 链式锁串行化所有写入,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 共用,统一权限与并发策略:
- 串行确认所有
requirePermission工具(PermissionManager 自带锁) - 拒绝的标记
skipped不执行 concurrent: true的只读工具并发执行(信号量限流,默认上限 8);其余串行(保守避免副作用冲突)- 工具执行抛错 / Zod 校验失败均被捕获,返回
success: false - 保持原顺序返回结果
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— 动态注册通用 agentDELEGATE— 多个专家 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(模型指纹识别) |
扩展方式
所有新题型均可通过两种方式接入,无需改动核心架构:
动态注册(推荐,运行时扩展):
scheduler.registerDynamicAgent({ id: "forensics", name: "取证专家", role: "数字取证与证据分析专家", systemPrompt: "你是取证专家…", toolNames: ["disk_forensics", "registry_analyze", "log_forensics", ...], maxSteps: 8, });预设注册(编译时扩展):在 factory.ts 中新增
SubAgent并scheduler.registerAgent(),与现有 5 类预设 agent 并列。
新增工具按现有模式在对应 src/tools/<category>-tools.ts 中实现,通过 createToolRegistry() 自动注册。每个工具只需定义 Zod schema + execute 函数 + 元数据(concurrent / requirePermission / category / timeout)。
📝 License
MIT
