tokens 与上下文
tokens 与上下文
学习 Agent 时,tokens 和 context 是绕不开的两个词。很多 Agent 跑偏,不是因为模型完全不会,而是因为上下文太乱、太长,或者关键信息没有被放进模型能看到的位置。
Token 是什么
Token 是模型处理文本的基本单位。它不等于“一个汉字”,也不等于“一个英文单词”。
例如英文单词可能被拆成多个 token,中文句子也会按模型的分词规则切开。你不需要手算每个 token,但要知道:模型处理文本是有容量成本的。
通俗理解
Token 可以先粗略理解为“模型阅读和生成文本时消耗的单位”。文本越长,token 越多,占用的上下文越多。
上下文是什么
上下文是模型本轮能看到的全部信息。
它可能包括:
- 系统提示词
- 用户输入
- 当前加载的 Skill
- 工具说明
- 工具返回结果
- 读到的文件片段
- 对话历史
- 压缩后的历史摘要
Agent 不会天然记得所有事情。它只能使用当前上下文里可见的信息,或者通过工具重新读取。
上下文窗口
上下文窗口是模型一次能处理的信息上限。
如果题目文件很大、日志很多、工具输出很长,上下文可能被迅速塞满。超过限制后,系统可能会截断、压缩或丢弃部分内容。
这对 CTF Agent 影响很大:
- 大量
strings输出可能淹没真正关键字符串 - 长 pcap 摘要可能让题目描述被挤掉
- 反复失败的命令会污染后续判断
- 旧结论如果没被更新,Agent 可能继续沿错误方向走
上下文污染
上下文污染指的是无关、错误、过时的信息影响模型判断。
CTF 中常见污染包括:
| 污染来源 | 影响 |
|---|---|
| 无关工具输出 | 模型抓错重点 |
| 早期错误猜测 | 后续步骤围绕错误方向展开 |
| 过长日志 | 关键题目信息被稀释 |
| 未验证结论 | 模型把猜测当事实 |
注意
“让 Agent 看更多”不一定更好。更好的做法是让它看相关、干净、可定位的信息。
Skill 与上下文
Skill 会进入 Agent 的上下文。Skill 写得太长、太像百科,会占用大量空间;写得太短,又不能指导行动。
好的 Skill 应该做到:
- 给出判断信号
- 给出第一步动作
- 给出工具选择
- 给出切换方向条件
- 给出停止条件
这也是 ctf-skills 的写作风格:它不是完整教材,而是让 Agent 能快速进入正确路线。
在 CTF 中如何整理上下文
给 Agent 题目时,尽量提供这些信息:
题目名称:xxx
题目分类:未知 / Web / Crypto / ...
题目描述:...
提供文件:...
远程服务:host:port 或 URL
已尝试操作:...
关键输出:...
当前目标:先分类 / 求 flag / 写 writeup不要一上来把几千行日志、十几个文件全文全贴进去。更好的方式是让 Agent 先列目录、识别类型,再按需读取。
小结
Token 决定模型处理文本的成本和容量,上下文决定模型当前能依据什么做判断。对于 ctf-skills 这类 Agent Skill 项目来说,控制上下文质量比堆信息更重要。