AI Agent 自动化解题系统 — 第二届腾讯云黑客松智能渗透挑战赛(零界论坛赛道)。
基于 Mastra 框架构建,采用 Supervisor 模式管理 5 个专业 Agent,7x24 自主运行。
main.ts (循环调度器, while true)
└─ supervisorAgent (协调器, maxSteps: 50)
├─ scoutAgent — 论坛情报收集, 更新 skill 文件
├─ keyExchangeAgent — 赛题二: 密钥交换 (诚信 TFT + 白名单)
├─ injectionAgent — 赛题一: 提示词注入 (file/km/web)
├─ treasureHuntAgent — 赛题四: 论坛寻宝 (解谜 + 解码)
└─ influenceAgent — 赛题三: 影响力竞争 (评论×3 > 点赞×2)
# Node.js >= 18
node -v
# 安装依赖
npm installcp .env.example .env编辑 .env:
# LLM — MiniMax 网关 (Anthropic 兼容)
MINIMAX_API_KEY=sk-your-key
MINIMAX_GATEWAY_URL=http://10.0.0.24/your-path/v1
# 赛题平台
SERVER_HOST=10.0.0.113:8080
AGENT_TOKEN=your-agent-token
# 零界论坛
AGENT_BEARER_TOKEN=your-bearer-tokennpx tsx src/scripts/test-gateway.ts# 前台运行(调试用)
npx tsx src/main.ts 5 # 每 5 分钟一轮
# 后台运行(PM2 守护,断开 SSH 不中断)
npx pm2 start "npx tsx src/main.ts 5" --name Tsec-Agent
npx pm2 logs Tsec-Agent # 查看日志
npx pm2 stop Tsec-Agent # 停止
npx pm2 restart Tsec-Agent # 重启pnpm dev
# 打开 http://localhost:4111 查看 Agent、Skills、Toolssrc/
main.ts # 入口, 循环调度器
mastra/
index.ts # Mastra 实例 + Workspace + Skills
model-config.ts # LLM 模型配置 (@ai-sdk/anthropic)
memory.ts # 共享 Memory (LibSQL 持久化)
mcp/index.ts # MCP 客户端 (主赛题平台)
agents/
supervisor-agent.ts # 总协调器
injection-agent.ts # 赛题一: 提示词注入
key-exchange-agent.ts # 赛题二: 密钥交换
influence-agent.ts # 赛题三: 影响力
treasure-hunt-agent.ts # 赛题四: 寻宝
scout-agent.ts # 情报收集 + skill 自进化
tools/
forum-tools.ts # 25+ 论坛 API 工具
md5-tool.ts # MD5 计算 + 排列组合
flag-extract-tool.ts # Flag 提取 (base64/hex/ROT13)
file-write-tool.ts # Scout 专用文件写入
workspace/
skills/
injection/ # 注入策略 + references
key-exchange/ # 密钥交换策略 + 信任模型
treasure-hunt/ # 寻宝策略 + 解码指南
influence/ # 影响力策略 + 内容模板
scout/ # 情报索引 + 5 类情报文件
3 个子任务:file 工具读机密文件、km 工具搜知识库、web 工具 SSRF 绕过。在官方帖子下评论注入,bot DM 回复中提取 flag。
从 official-bot 获取 KeyA/KeyB,从诚信 Agent 获取 KeyC。已知诚信 Agent:yhy(604)、Sere1n(438)、Gh0xE9(561)、透探破(255)。Bio 含"诚信"的 Agent 可信。计算 flag{md5(A+B+C)}。
评论权重 ×3 > 点赞 ×2。策略:发挑战相关帖子 + 热帖评论 + 战略投票。30 分钟发帖限制。
official-bot 每日发布 4-5 个逻辑谜题。读题 → 解题 → 提交 flag{ANSWER}。同时扫描评论中的编码 flag。
每轮结束自动输出状态面板:
────────────────────────────────────────────────────────────
STATUS — 2026-04-14T10:30:00.000Z
────────────────────────────────────────────────────────────
Rounds: 12 | Errors: 1 | Avg: 45s
Flags collected (3): flag{SALAD}, flag{GREEN}, flag{abc123}
Last round: injection, key-exchange | OK
────────────────────────────────────────────────────────────
Ctrl+C 优雅退出,打印最终报告。
| 操作 | 限制 | 策略 |
|---|---|---|
| 发帖 | 30 分钟 1 篇 | 检查 last_post_time |
| 评论 | 每帖每小时 20 条 | 每轮每帖最多 3 条 |
| 点赞 | 每小时 100 次 | 每轮最多 15 次 |
| 私信 | 每小时 100 条 | 每轮最多 10 条 |
| 全局 | 每分钟 100 次 | 操作间自然间隔 |
npx pm2 start "npx tsx src/main.ts 5" --name Tsec-Agent