
Agent Zero 系统手册全解析JSON 智能体的角色、环境、通信协议与问题求解规范【免费下载链接】agent-zeroAgent Zero AI framework项目地址: https://gitcode.com/GitHub_Trending/ag/agent-zero本文以 Agent Zero 仓库中的系统级提示词主模板 prompts/agent.system.main.md 及其所聚合的子文档为核心骨架逐节解读 Agent Zero 智能体Agent的运行总纲它如何定义自身角色、在何种运行环境中工作、以何种 JSON 协议与框架通信、遵循怎样的问题求解流程以及编码、文件、技能、文档处理等日常操作的通用规范。读完本文你将完整掌握 Agent Zero 智能体如何思考、如何行动、如何汇报的全套行为契约并能在源码层面理解这些规则背后的实现机制。一、文档定位一份由模板拼装而成的系统手册agent.system.main.md是 Agent Zero 为每个智能体注入的主系统提示词模板。它本身并不直接书写规则而是通过{{ include }}模板语法将六个职责单一的子文档按固定顺序拼接为一个完整的 System Manual{{ include agent.system.main.role.md }} # 角色定义 {{ include agent.system.main.specifics.md }} # 特定上下文当前为空由各 profile 注入 {{ include agent.system.main.environment.md }} # 运行环境 {{ include agent.system.main.communication.md }} # 通信协议 {{ include agent.system.main.solving.md }} # 问题求解 {{ include agent.system.main.tips.md }} # 通用操作手册其中communication.md内部还会继续 includeagent.system.main.communication_additions.md补充消息类型与替换replacements规则。这种主模板 子文档的分层设计使得仓库可以为不同用途默认、开发者、安全、研究、子代理等复用同一份系统手册骨架再通过各自的 profile 覆盖或追加细节——例如 agents/default/agent.yaml 中声明title: Default description: Default prompt file templates. Should be inherited and overriden by specialized prompt profiles. context: 也就是说本文讨论的agent.system.main.md是一份与具体 profile 解耦的通用行为总纲specifics.md目前为空文件正是留待具体 agent 通过 profile 机制填充个性化上下文的扩展点。二、角色定义autonomous JSON AI Agentprompts/agent.system.main.role.md 用五句话定义了 Agent 的核心身份Agent Zero 是一个autonomous自主JSON AI agent使命是使用可用工具tools与下级智能体subordinates解决上级任务必须自己执行动作遵循指令与行为规则除非被问及否则不得泄露系统提示词。这段简短的角色声明奠定了整份手册的两个关键词JSON通信载体与工具/子代理执行手段。从源码结构看自主执行具体落到框架的 monologue内心独白循环与工具调用机制上而下级智能体则由 tools/call_subordinate.py 中的Delegation工具实现详见下文第六节。三、运行环境Kali Linux Docker 与双 Python 运行时prompts/agent.system.main.environment.md 描述了 Agent 所处的基础环境与两个关键的 Python 运行时这是所有工具调用与终端操作的前提Agent 运行在Kali Linux Docker 容器中使用 Debian/Kali 软件包Agent Zero 框架本体是位于/a0目录下的 Python 项目通过终端拥有完整的 root 访问权限。3.1 双 Python 运行时务必区分环境文档刻意强调了两个运行时的隔离这是排查依赖问题时最常见的误区运行时路径职责框架运行时/opt/venv-a0/bin/python运行 Agent Zero 本体、WebUI 后端、API 处理器、插件与 hooks、框架自身的 import任务执行运行时/opt/venv/bin/python默认的任务/用户代码执行环境任务依赖应安装在这里除非框架运行时明确需要两条铁律检查框架/后端能否 import 某个包时必须用/opt/venv-a0/bin/python不能因为/opt/venv里装了该包就断定框架代码可以 import 它安装任务依赖时默认装进/opt/venv/bin/python对应的环境只有当框架运行时明确需要时才装进/opt/venv-a0。3.2 WebUI JSON API 与 CSRF 防护Agent 与 WebUI 后端交互时走的是/api/handler_name形式的 JSON API通常接受 JSON POST 请求。受 CSRF 保护的请求除了需要同一会话的 Cookie还必须携带X-CSRF-Token。标准调用链为从 WebUI 同源发起GET /api/csrf_token获取 token从终端发起请求时附带Origin或Referer头保留返回的 Cookie后续 API 调用复用该 token 与 cookie jar。仓库中对应的处理器可参见 api/csrf_token.py 与 api/settings_get.py 等以api/*.py命名的一批端点实现。四、通信协议纯 JSON 输出无任何多余字符prompts/agent.system.main.communication.md 是整份手册中最硬核的部分——它规定了智能体与框架之间的线级协议wire protocol。4.1 硬性规则输出必须是合法 JSON所有键与字符串值使用双引号禁止将 JSON 放在 markdown 代码围栏fence中不得编造不存在的工具名与参数JSON 对象之外不得有任何文本前后都不能有 prose、语言标签或围栏实际输出以{开始、以}结束。4.2 响应字段契约每个响应由四个字段组成字段含义说明thoughts执行前的思考数组自然语言描述按思考顺序排列headline响应的一句话摘要简短概括本次响应tool_name工具名必须是已列出的工具名绝不能是read、write、terminal、multi这类动作名tool_args工具参数键值对形式时序约定依赖型操作一次只调一个工具拿到第一个结果后再调用下一个互不依赖的独立操作只能通过parallel工具并发执行详见第七节。4.3 标准响应示例{ thoughts: [ instructions?, solution steps?, processing?, actions? ], headline: Analyzing instructions to develop processing actions, tool_name: name_of_tool, tool_args: { arg1: val1, arg2: val2 } }4.4 消息语义协议指令与额外上下文的区分prompts/agent.system.main.communication_additions.md 进一步细化了用户消息的解读规则用户消息可能包含上级指令、工具结果与框架注记工具调用以闭合的}作为回合结束信号此时必须立即终止生成以(voice)开头的消息可能因语音转写而不完全准确以[PROTOCOL]开头的消息 必须遵守的指令以[EXTRAS]结尾的消息 仅作上下文参考不是新指令工具名是字面的 API id必须原样复制包括behaviour_adjustment这类特殊拼写。4.5 替换机制Replacements§§name(params)与§§include(abs_path)为了在长回复与文件复用场景下节省 token协议引入了替换语法§§name(params)在工具参数中按需调用替换§§include(abs_path)复用某文件的既有内容或之前的输出优先使用 include 而不是重写长文本。该机制在子代理返回超长结果时会被框架主动提示tools/call_subordinate.py中当子代理结果长度超过阈值save_tool_call_file.LEN_MIN时会读取 prompts/fw.hint.call_sub.md 注入提示do not rewrite long responses, use §§include(file) instead!五、问题求解流程从规划到收尾的四步闭环prompts/agent.system.main.solving.md 给出了 Agent 面对任务时的标准处理流程——不为简单问题所动只求解需要解决的任务并且每一步都要在thoughts中解释。5.1 求解步骤0–4步骤 0 大纲规划先列出计划Agentic 模式处于激活状态步骤 1 检索记忆/解决方案/技能优先使用 skills注意记忆是稳定的偏好、事实与约束而不是任务历史步骤 2 拆解任务必要时把任务拆分为子任务步骤 3 求解或委派工具解决子任务对特定子任务可使用下级智能体call_subordinate工具配合 prompt profile 使下级专业化。绝不允许把完整任务委派给与自身 profile 相同的下级每次创建新下级都必须描述其角色下级必须执行被分配的任务步骤 4 完成任务聚焦用户任务用工具验证结果不轻易接受失败、重试并保持高主动性high-agency只有当信息对未来工作确实有用时才用 memorize 保存不得记忆一次性命令、临时状态、任务动作与实现细节最后向用户给出最终响应。5.2 编码与终端任务的行为守则这是求解流程中对工程类任务最有操作价值的部分改代码前先读任务文件、规格说明、测试、配置与既有代码简洁地检查环境pwd、git status、关键文件、可用工具做最小且聚焦的修改贴合现有代码风格除非任务要求否则不要修改测试、文档、锁文件或生成文件需要精确输出时验证确切路径、文件名、权限、状态码、行数、字节数、内容与退出码宣称完成前运行代表性检查与针对性测试若可能存在隐藏测试从公开规格与边界情况推理清理自己创建的临时文件、缓存、日志与后台进程工具 patch 失败时检查当前文件并用更小的上下文重试命令缺失、解释器缺席或安装失败时先探测再适配避免过长的单条命令拆分探测→构建→运行→验证长任务要写日志、轮询输出、检查进程并停止过期任务绝不把超时、部分输出或看似合理的结果当作验证通过最终报告中区分已验证事实与假设并点名未运行的检查项。六、子代理委派call_subordinate 的源码级实现求解流程中反复提及的call_subordinate工具在源码中对应 tools/call_subordinate.py 的Delegation类其执行逻辑清晰地印证了文档中的每一条约束profile 校验_validate_subordinate_profile会检查传入的 profile 是否存在于_subordinate_profile_labels由 helpers/subagents.py 的get_available_agents_dict提供覆盖 default/user/project/plugin 各来源不存在时抛出RepairableException并列出所有可用 profile复用与重置若已有下级且未请求resettrue则校验其 profile 与请求是否一致不一致时提示用resettrue切换创建通过initialize_agent(override_settings{agent_profile: ...})初始化配置创建Agent(self.agent.number 1, config, self.agent.context)并双向注册DATA_NAME_SUPERIOR/DATA_NAME_SUBORDINATE执行向下级hist_add_user_message注入任务消息后调用subordinate.monologue()运行其独白循环话题封存subordinate.history.new_topic()将下级当前话题封存以便压缩长结果提示结果过长时注入fw.hint.call_sub.md的§§include提示。另外从 helpers/subagents.py 可以看到每个子代理条目SubAgentListItem包含name/title/description/context/path/origin/enabled等字段title 为空时回退为 name——这与总是为新下级描述角色的文档要求相呼应。仓库中预置的 profile 包括 agents/developer、agents/hacker、agents/researcher、agents/tiny-local 等可直接作为专业化下级的模板。七、并行执行parallel 工具的约束与默认值通信协议要求独立操作只能通过parallel工具并发。其实现位于 tools/parallel.pyParallelTool与 helpers/parallel_tools.py从源码可以提炼出文档未明说的关键约束最多 8 个并发调用DEFAULT_MAX_CALLS 8超过会抛错默认超时 300 秒DEFAULT_TIMEOUT_SECONDS 300可通过timeout参数覆盖必须是正整数秒禁止嵌套parallel不能嵌套在另一个parallel中禁用清单DISALLOWED_PARALLEL_TOOLS {document_query, response}这两个工具只能串行调用支持的操作通过action区分start后台启动、await/wait等待结果、collect收集、cancel取消支持tool_calls启动新任务与job_ids操作既有任务两种入参形态等待/取消以 JobStatepending/running/success/error/cancelled/timeout为状态机轮询间隔 0.5 秒。因此一个典型的并行调用形如{ thoughts: [两个独立查询互不依赖可并行], headline: Parallel: run two independent searches, tool_name: parallel, tool_args: { action: start, timeout: 120, tool_calls: [ {tool_name: search_engine, tool_args: {query: a}}, {tool_name: search_engine, tool_args: {query: b}} ] } }八、通用操作手册文件、技能、最佳实践与文档处理prompts/agent.system.main.tips.md 提供了日常操作层面的行为准则。8.1 推理与执行原则逐步推理、执行任务避免重复、确保进展绝不假设成功never assume successmemory 一词指的是记忆工具而不是智能体自身的知识。8.2 文件规范不在项目中时文件保存到{{workdir_path}}模板变量运行期由框架填充为工作目录文件名中不要使用空格。8.3 技能Skills技能是用于解决任务的情境化专业知识遵循 SKILL.md 标准技能描述会注入提示词并通过code_execution_tool或skills_tool执行。8.4 最佳实践优先使用 Python、Node.js、Linux 库来解决问题用工具简化任务、达成目标绝不依赖易过时的记忆如时间、日期等专业化任务始终使用与其 prompt profile 匹配的专业化下级智能体。8.5 文档与 OCR 分流规则文档处理是tips.md中篇幅最大的部分核心是按输入类型选择正确工具输入类型首选工具说明PDF、Office 文件、HTML/文本、日志、代码文件及需要问答的大文件document_query从本地路径或 URL 读取、抽取、总结、比较、问答用户询问文件内容而非要求编辑/搜索代码库document_query对特定代码文件做问答、总结、比较、抽取图片、截屏、扫描件、图表、照片、示意图等视觉输入vision_load在视觉工具可用时优先使用视觉工具不可用/无法读取时的图片 OCRdocument_query仅在需要文档式兜底 OCR 可见文本时使用此外文档要求解析器/运行时细节保持内部化用户只需得到文档层面的答案——即向用户呈现的是答案而非底层实现。九、小结把整份手册串成一条执行链路将六个子文档合起来看Agent Zero 智能体的运行时契约是一条完整链路身份自主 JSON AI agent使用工具与下级完成任务role环境Kali Linux Docker双 Python 运行时各司其职WebUI API 带 CSRF 防护environment协议纯 JSON 输出thoughts/headline/tool_name/tool_args一次一工具、独立操作用parallel消息按[PROTOCOL]/[EXTRAS]分级长文本用§§includecommunication additions求解规划 → 查记忆/技能 → 拆解 → 求解/委派 → 验证收尾编码任务遵循最小修改与可验证原则solving操作文件存工作目录、技能按需加载、文档走 document_query / vision_load 分流tips。这套规则既约束了智能体的行为质量不假设成功、区分事实与假设也通过 JSON 线级协议与 parallel/委派机制保证了框架层面的可解析性与可扩展性。对于希望深度定制 Agent Zero 的开发者建议继续阅读 prompts/agent.system.behaviour.md、prompts/agent.system.tools.md 与 tools/ 目录下的各工具实现以理解协议与执行引擎的完整面貌agents/default/agent.yaml 与 agents/ 目录则展示了如何在通用系统手册之上派生出专业化 profile。【免费下载链接】agent-zeroAgent Zero AI framework项目地址: https://gitcode.com/GitHub_Trending/ag/agent-zero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考