Agent 如何工作
Agent 如何工作
Agent 的关键不是“能不能说出答案”,而是“能不能围绕目标持续推进”。
一个能工作的 Agent 通常会经历六个阶段:接收任务、理解上下文、制定下一步、调用工具、读取结果、决定是否继续。这个循环不断重复,直到任务完成或达到停止条件。
第一步:接收任务
用户给 Agent 的任务可能很明确,也可能很模糊。
明确任务:
分析这个 chall.py,判断 RSA 参数是否存在漏洞。模糊任务:
帮我看看这道 CTF 题。solve-challenge 这类调度 Skill 的价值就在这里:当任务不明确时,它先帮 Agent 做分类,而不是直接进入某个方向乱试。
第二步:收集上下文
Agent 需要知道当前有哪些信息:
- 题目描述是什么
- 有哪些文件
- 文件类型是什么
- 是否有远程服务
- 已经试过哪些命令
- 当前加载了哪些 Skill
上下文不只是用户发来的文字。工具输出、目录结构、报错信息、脚本运行结果,都会成为上下文的一部分。
注意
上下文越乱,Agent 越容易跑偏。长日志、无关文件和过期结论都会污染判断。
第三步:形成计划
计划不一定是长篇大论。对 Agent 来说,好的计划应该能指导下一步动作。
例如面对未知文件,合理计划可能是:
- 先用
file判断类型 - 如果是压缩包,先解压
- 如果是 ELF,再看保护和字符串
- 如果是图片,再考虑隐写或元数据
这就是 Skill 的作用。Skill 把常见路线提前写好,Agent 不必每次从零发明开局流程。
第四步:调用工具
Agent 不直接执行工具。它会向宿主程序发起工具调用请求,例如:
{
"tool": "Bash",
"arguments": {
"command": "file chall && strings chall | head"
}
}宿主程序检查权限,执行命令,然后把结果返回给 Agent。
这一步决定了 Agent 是否能从“猜测”进入“验证”。没有工具返回,Agent 的判断只能停留在文本推理。
第五步:读取结果
工具结果经常不是最终答案,而是新的线索。
比如:
ELF 64-bit LSB executable, x86-64
Canary found
NX enabled
PIE enabled这说明它可能是 Pwn 或 Reverse,但还不能直接说有漏洞。Agent 应该继续判断:是否需要逆向逻辑?是否有输入点?是否有崩溃?是否存在格式化字符串?
第六步:停止或继续
Agent 必须知道什么时候停。
应该停止的情况:
- 已找到 flag,并能说明来源
- 当前路线连续多步没有新证据
- 工具输出说明初始判断错误
- 操作将越过授权范围
- 需要用户提供新的材料或确认
提示
能停止,是可靠 Agent 的重要特征。一直试、一直猜、一直扩大范围,反而说明它没有控制住任务。
ctf-skills 如何参与循环
ctf-skills 主要影响两个环节:计划和判断。
- 在计划阶段,它告诉 Agent 某类题的常见起手式。
- 在判断阶段,它告诉 Agent 看到某些信号后应该深入、切换或停止。
例如 solve-challenge 负责初始分类,ctf-web 负责 Web 方向路线,ctf-writeup 负责解出后的输出整理。
小结
Agent 的工作方式不是“一次生成答案”,而是持续执行:看上下文、做计划、调工具、读结果、调整路线。ctf-skills 的价值,就是把 CTF 题目中的这些路线写成 Agent 可以使用的 Skill。