Flue Agent行为规格全解:6大内置工具、沙箱环境与上下文限制一篇看懂
2026/9/15 16:05:46 网站建设 项目流程

Flue Agent行为规格全解:6大内置工具、沙箱环境与上下文限制一篇看懂

【免费下载链接】flueThe sandbox agent framework.项目地址: https://gitcode.com/GitHub_Trending/flue1/flue

Flue 是一个开源的沙箱 Agent 框架(The Agent Harness Framework),让开发者用 TypeScript 构建真正自主的 Agent。这篇文章带你全解 Flue Agent 的默认行为规格:开箱即用的 6 大沙箱工具、沙箱环境默认、消息处理队列、上下文窗口管理与运行时硬限制——不读源码,一篇看懂你的 Agent 在"出厂状态"下会做什么。

🧰 内置工具全家桶:6 个沙箱工具 + 框架保留工具

Agent 一旦挂上沙箱,模型就自动获得 6 个作用于沙箱的工具,每个都有精心设计的"防翻车"规则:

工具作用关键规则
read读文件输出截断到2000 行 / 50 KB(先到为准),并附"用 offset=N 继续"标记,长文件可分页读完
write整文件写入自动创建缺失的父目录,已存在则静默覆盖
edit精确文本替换oldText必须唯一命中一处,歧义会报错让模型补充上下文;同文件变更加锁串行,冲突报错而非静默丢编辑
bash执行 shell 命令只返回尾部2000 行 / 50 KB(错误和结果都在尾部);超时返回可恢复的 exit-124,模型能自行应对
grep正则搜索文件内容上限100 条匹配、每行 500 字符,超限会提示"换个更精确的搜索"
glob按文件名找文件最多返回1000个路径,匹配的是文件名而非路径

除沙箱工具外,框架还会按能力自动追加保留工具(自定义工具不能占用这些名字):

  • task:子代理委托,永远存在,声明子代理后即可用;
  • activate_skill:Agent 加载技能(当挂载了技能时出现);
  • read_skill_resource:读取导入技能携带的资源文件。

💡 注意:某个沙箱适配器可以替换这 6 个默认工具,使用前建议先查对应集成的文档。完整规格见 agent-behavior.md#L15-L97。

📦 沙箱环境默认:不挂沙箱 = 没有文件工具

这是新手最容易误解的一点:Agent 默认没有沙箱,必须用useSandbox()显式挂载,且最多挂一个。

  • 没挂沙箱时:6 个文件/Shell 工具不在工具集里、系统提示词中不含工作区上下文、harness.sandbox会抛错。但自定义工具、技能、子代理、持久状态一切照常
  • 挂载沙箱时:一次性获得工具集、工作区上下文(工作目录路径 + 目录列表 +AGENTS.md内容)、工作区技能发现,并让子代理继承同一环境。
  • 动态可切换:每轮对话边界都会重新读取沙箱挂载状态——条件式useSandbox()可以在对话中途挂上或卸下环境,变化会以environment信号"叙述"给模型,而不是重写提示词。

官方建议:选择能支撑任务的最小环境,因为环境越大,模型可读取、修改、执行和触达的范围就越大。详见 sandboxes.md。

📬 消息处理机制:submission 排队,一条都不丢

无论输入来自 HTTP 请求、dispatch()、渠道投递还是定时触发,Flue 都把它登记为一个submission(提交项),在任何模型工作开始前先持久化落盘。同一条会话的 submissions 按接收顺序排队:

  1. 一次只处理一个 submission
  2. Agent 正忙时到达的消息,能并入当前响应就在下一个轮次边界并入,不能并入就排成自己的 submission——任何消息都不会被丢弃
  3. 每个被接受的 submission必然到达唯一的持久终态completedfailedaborted,期间崩溃多少次都不影响。

重试、恢复与中止的完整机制属于持久性(Durability)范畴,参考 durability.md。

🧠 上下文窗口:系统提示词如何"冻结"又如何压缩

初始化时,运行时把找到的内容组装成系统提示词:Agent 函数返回的指令,加上(若有沙箱时)工作目录路径、目录列表、AGENTS.md内容,以及发现到的技能 / 子代理 / 工具清单。

组装完成后,系统提示词就被冻结(frozen)

  • 窗口中途发生的变化(工具挂载/卸载、技能开关、环境切换)不会重写提示词,而是以只追加的**信号(signals)**形式叙述给模型——既保证历史轮次与它实际运行的提示词一致,又能让模型商的提示词缓存保持"热"、更省钱。
  • 直到下一次**压缩(compaction)**发生,才会按当前环境重新打基线。

当对话逼近模型的上下文窗口时,运行时会自动压缩:旧消息折叠成摘要,近期消息逐字保留:

  • 触发阈值 = 窗口大小 − 模型感知的预留量(上限 20,000 tokens);
  • 默认最近 8,000 tokens 逐字保留

两个旋钮、摘要模型与退出压缩,都通过CompactionConfig配置,详见 agent-hooks-api.md。

📊 运行时限制速查表:所有硬上限一览

以下是运行时强制执行的数字,来自 agent-behavior.md#L172-L181:

限制项数值
read输出2000 行 / 50 KB,头部截断 + 续读标记
bash输出2000 行 / 50 KB,尾部截断
grep结果100 条匹配,每行 500 字符
glob结果1000 个路径
委托深度4 层——task链更深则报delegation_depth_exceeded
压缩预留模型感知,上限 20,000 tokens
压缩后逐字保留默认 8,000 tokens

⚠️ 工具集数量没有框架上限,但每挂一个工具都要花上下文——工具多时记得保持精简(参考 tools.md 中的"条件工具")。

✅ 小结:Flue Agent 行为规格一句话版本

  • 默认无沙箱useSandbox()才是开关,挂了才有 6 个文件/Shell 工具;
  • 消息零丢失:submission 持久化 + 排队 + 唯一终态;
  • 提示词冻结 + 信号通知:省缓存、保一致;
  • 自动压缩:旧消息摘要化,近 8,000 tokens 逐字保留;
  • 硬限制有限:委托深度 4 层,输出截断规则清晰可预期。

延伸阅读(相对路径):

  • 官方行为规格文档:apps/docs/src/content/docs/reference/agent-behavior.md
  • 沙箱指南:apps/docs/src/content/docs/guide/sandboxes.md
  • 子代理指南:apps/docs/src/content/docs/guide/subagents.md
  • 技能指南:apps/docs/src/content/docs/guide/skills.md
  • 运行时核心源码:packages/runtime/src/

【免费下载链接】flueThe sandbox agent framework.项目地址: https://gitcode.com/GitHub_Trending/flue1/flue

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询