Prime Agent 侦察子代理设计实战:从 scout.md 读懂结构化代码库勘察与上下文交接协议 📅 发布时间:2026/9/13 20:19:32 👁 浏览次数: Prime Agent 侦察子代理设计实战从 scout.md 读懂结构化代码库勘察与上下文交接协议【免费下载链接】prime-agentA self-improving RLM agent for coding workflows and long-running autonomous tasks.项目地址: https://gitcode.com/GitHub_Trending/pr/prime-agent导读scout侦察兵是 Prime Agent 子代理Subagent扩展中用于快速勘察代码库的专用代理它的全部行为规范浓缩在一个 Markdown 文件中packages/coding-agent/examples/extensions/subagent/agents/scout.md。本篇以该文件为骨架结合同一目录下的扩展实现源码agents.ts、index.ts与配套代理/工作流定义完整解析 scout 的 YAML frontmatter 配置、系统提示词设计意图、输出交接协议并给出部署、调用、安全与源码级运行原理帮助你在自己的项目里复刻出“可交付给其他代理直接使用”的侦察代理。一、scout 在 Prime Agent 子代理体系中的定位Prime Agent 提供两类子代理能力一类是内核原生的递归委派await rlm.spawn(subtask, nameworker)详见 rlm-runtime.md另一类是基于扩展的“文件定义式”代理——subagent 示例扩展。后者把代理定义成普通的 Markdown 文件用 YAML frontmatter 声明名字、用途、工具与模型再用系统提示词描述行为适合需要显式编排单代理、并行或链式工作流的场景subagent/README.md。subagent 目录下内置了四个示例代理scout 是其中最轻量、定位最特殊的一个代理定位模型工具scout快速代码库勘察返回压缩后的上下文Haikubashplanner依据上下文与需求产出实施计划Sonnetbashreviewer代码质量与安全审查Sonnetbashworker通用执行代理具备完整能力Sonnet全部默认工具从表格可以看出设计上的分工scout 用最快的模型claude-haiku-4-5做信息采集产出结构化摘要planner 与 reviewer 用更强的模型做推理worker 负责实际改动。scout 处于整条链路的起点它的输出质量直接决定后续代理的输入质量。二、scout.md 逐段解析一个“交接型”代理的完整模板scout.md全文只有 frontmatter 与一段系统提示词但信息密度极高。下面逐段拆解每一行的设计意图。2.1 frontmatter代理的声明式元数据--- name: scout description: Fast codebase recon that returns compressed context for handoff to other agents tools: bash model: claude-haiku-4-5 ---四个字段的作用如下name代理名调用方通过它来引用该代理如subagent工具的agent: scout。在 agents.ts 的loadAgentsFromDir中name与description是必填项缺失会被直接跳过if (!frontmatter.name || !frontmatter.description) continue;。description对调用方主代理的描述用于让主代理决定何时挑选 scout。它会出现在discoverAgents返回的formatAgentList输出里形如scout (user): Fast codebase recon that returns compressed context for handoff to other agents。tools逗号分隔的工具白名单。这里只有bash表示 scout 只能执行 bash 命令——与它“只读勘察、不改代码”的定位一致。在 agents.ts 中tools会被split(,)后逐个trim()过滤空项在 index.ts 的runSingleAgent中最终拼接为--tools bash传给子进程。不写tools字段则使用该模型的全部默认工具worker.md正是如此。model指定子进程使用的模型claude-haiku-4-5属于快速、低成本的轻量档位契合“侦察”这种 token 密集型但不需深度推理的任务。该值会以--model参数传给子进程。frontmatter 的解析实现在 frontmatter.ts通过parseFrontmatter拆出元数据与正文 body正文部分则整体作为子代理的 system prompt 注入。2.2 系统提示词目标、边界与交接承诺frontmatter 之后是 scout 的完整系统提示词核心设计可以拆成四点1明确角色与唯一使命You are a scout. Quickly investigate a codebase and return structured findings that another agent can use without re-reading everything.一句话同时交代角色scout、动作快速勘察、产出结构化发现与服务的对象另一个无需重读全部代码的代理。这是交接型代理的关键产出必须自带上下文而非自说自话。2强调交接对象的“信息真空”Your output will be passed to an agent who has NOT seen the files you explored.这句是整份提示词最重要的一条边界约束——它直接决定了输出格式必须是自包含的。下游代理没有看过 scout 看过的任何文件因此 scout 必须给出精确的文件路径、行号范围、关键代码片段而不是“在 auth 模块里”。这与 worker 的输出约定Files Changed列表 供 reviewer 使用的手递手字段形成互补。3可调的穷尽度ThoroughnessThoroughness (infer from task, default medium): - Quick: Targeted lookups, key files only - Medium: Follow imports, read critical sections - Thorough: Trace all dependencies, check tests/types提示词允许模型根据任务自行推断勘察深度默认 mediumQuick只做定点查询只看关键文件——适合“这个常量定义在哪”这类明确问题Medium跟随 import 关系阅读关键段落——适合“这个功能涉及哪些模块”Thorough追踪全部依赖检查测试与类型定义——适合改动前的全面摸底。这一设计避免了固定深度带来的浪费或遗漏把勘察成本交给模型按任务权衡。4勘察策略只读命令优先Strategy: 1. Use read-only shell commands such as rg, find, and git grep to locate relevant code 2. Read key sections with cat, sed, or similar commands 3. Identify types, interfaces, key functions 4. Note dependencies between files四步策略给出了一条从“定位代码”到“理解结构”的路径先用rg/find/git grep定位再用cat/sed读取关键段落接着提炼类型、接口、关键函数最后记录文件间依赖。注意这里刻意只给bash工具且全部限定为只读命令——与 reviewer 中“bash is for read-only commands only”的限制同源都是防止侦察阶段产生副作用。2.3 输出格式四段式交接协议系统提示词最后是 scout 的强制输出模板这是整个文件“技术含量”最高的部分## Files Retrieved List with exact line ranges: 1. path/to/file.ts (lines 10-50) - Description of whats here 2. path/to/other.ts (lines 100-150) - Description ## Key Code Critical types, interfaces, or functions: (实际代码片段) ## Architecture Brief explanation of how the pieces connect. ## Start Here Which file to look at first and why.四个小节各司其职共同构成一份“别人不用重读代码就能开工”的交接文档Files Retrieved给出精确到行号范围的文件清单。行号信息让下游代理可以定向读取而不必全文扫描——这正是“without re-reading everything”的落点Key Code直接内嵌关键类型、接口、函数的真实代码。交接文档中保留关键代码是为了让下游代理即使不打开文件也能理解核心结构同时在需要时按图索骥Architecture用简短文字解释各片段如何连接。帮助下游代理建立整体心智模型Start Here指明先读哪个文件、为什么。为下游代理省去“从哪入手”的决策成本。值得一提的是由于子代理以--mode json运行见 index.ts最终输出通过getFinalOutput从最后一条 assistant 文本消息中提取再经Markdown组件渲染因此这份四段式模板会以整齐的 Markdown 呈现给调用方。三、部署安装 subagent 扩展并注册 scoutscout 需要随 subagent 扩展一起安装。README 给出了从仓库根目录执行软链接的安装方式# 1. Symlink the extension (must be in a subdirectory with index.ts) mkdir -p ~/.prime/agent/extensions/subagent ln -sf $(pwd)/packages/coding-agent/examples/extensions/subagent/index.ts ~/.prime/agent/extensions/subagent/index.ts ln -sf $(pwd)/packages/coding-agent/examples/extensions/subagent/agents.ts ~/.prime/agent/extensions/subagent/agents.ts # 2. Symlink agents mkdir -p ~/.prime/agent/agents for f in packages/coding-agent/examples/extensions/subagent/agents/*.md; do ln -sf $(pwd)/$f ~/.prime/agent/agents/$(basename $f) done # 3. Symlink workflow prompts mkdir -p ~/.prime/agent/prompts for f in packages/coding-agent/examples/extensions/subagent/prompts/*.md; do ln -sf $(pwd)/$f ~/.prime/agent/prompts/$(basename $f) done三个步骤分别注册扩展入口、四个示例代理scout/planner/reviewer/worker与三份工作流提示词。安装完成后即可用自然语言触发例如Use scout to find all authentication code四、运行机制源码视角看 scout 如何被执行4.1 代理发现与作用域agents.ts 的discoverAgents(cwd, scope)负责在每次调用时从磁盘重新发现代理README 明示这允许会话中途编辑代理定义后立即生效。发现逻辑用户级~/.prime/agent/agents/*.md任何 scope 下默认加载项目级从当前工作目录向上逐级查找最近的.prime/agent/agents目录仅在agentScope: both或project时加载同名代理在both模式下项目级覆盖用户级agentMap.set后写覆盖先写。4.2 子进程拼接与系统提示词注入runSingleAgent 的核心动作是派生一个独立的pi子进程const args: string[] [--mode, json, -p, --no-session]; if (agent.model) args.push(--model, agent.model); if (agent.tools agent.tools.length 0) args.push(--tools, agent.tools.join(,)); // ... args.push(--append-system-prompt, tmpPromptPath); args.push(Task: ${task});关键细节--mode json子代理以 JSON 事件流输出主进程逐行解析message_end与tool_result_end事件实时累积消息、统计 usageturns、input/output tokens、缓存读写、cost、context tokens并流式推送更新--append-system-promptscout 的系统提示词先写入os.tmpdir()下的临时文件权限0o600再以该参数注入子进程任务结束后在finally中清理临时文件--model/--tools直接把 frontmatter 中的声明透传给子进程最后一条Task: task作为用户消息追加。每个 scout 子进程都拥有独立的上下文窗口这正是“隔离上下文”特性的来源——主对话不会被侦察过程产生的海量输出污染。4.3 三种调用模式subagent 工具支持三种模式execute中通过modeCount ! 1强制“三选一”模式参数形态行为Single{ agent, task }一个代理执行一个任务Parallel{ tasks: [{ agent, task }, ...] }多个代理并发执行上限 8 个任务、4 路并发MAX_PARALLEL_TASKS 8、MAX_CONCURRENCY 4逐任务流式更新失败任务单独标记Chain{ chain: [{ agent, task }, ...] }顺序执行任务文本中的{previous}占位符被上一步最终输出替换任一步失败即停止并报告失败步骤scout 最典型的用法是作为 chain 的第一步把勘察结果通过{previous}喂给 planner见下文第五部分。4.4 中止与错误传播用户按下 CtrlC 时AbortSignal触发对子进程的SIGTERM5 秒未退出再补SIGKILL子进程exitCode ! 0或stopReason为error/aborted时视为失败错误信息errorMessage/stderr/ 最终输出随结果返回Chain 模式会给出形如Chain stopped at step 2 (planner): ...的定位信息。五、实战把 scout 编排进完整工作流5.1 单代理使用Use scout to find all authentication code主代理把任务描述原样交给 scoutscout 返回四段式交接文档。5.2 并行侦察Run 2 scouts in parallel: one to find models, one to find providers两个 scout 各自拥有独立上下文互不干扰地并发勘察适合拆解大型代码库。5.3 链式scout → planner只规划不实施配合工作流提示词 scout-and-plan.md/scout-and-plan refactor auth to support OAuth其底层是 chain 参数第一步 scout 定位相关代码第二步 planner 依据{previous}里的侦察结果产出实施计划且明确不实施Do NOT implement - just return the plan。5.4 链式scout → planner → worker完整落地implement.md 定义了scout → planner → worker三段式流水线侦察、规划、执行依次接力{previous}在每一步替换为上一步输出最终由 worker 按计划完成改动。另有 implement-and-review.md 的worker → reviewer → worker审查闭环。5.5 scout 与 planner、reviewer 的提示词协同阅读同目录的 planner.md 可以发现planner 明确写着“You receive context (from a scout)”——它的## Goal / ## Plan / ## Files to Modify输出结构就是为消费 scout 的## Files Retrieved / ## Key Code而设计worker.md 则要求“The worker agent will execute it verbatim”。四个代理的提示词互相咬合构成一个可拼接的“交接链”。六、安全模型项目级 scout 的信任边界subagent 扩展对代理文件有明确的安全分级subagent/README.md用户级代理~/.prime/agent/agents/*.md默认加载项目级代理.prime/agent/agents/*.md仓库控制的提示词可以指示模型执行 shell 等工具默认不加载需显式传agentScope: both或project且仅用于信任的仓库交互模式下运行项目级代理前会弹出确认框可用confirmProjectAgents: false关闭。对 scout 这类“只读勘察”代理风险相对低但自定义 scout 时仍需遵守该模型若把 scout 定义放进项目目录就要理解它同样受上述信任门槛约束。七、限制与边界照抄 README 事实折叠视图下输出截断为最近 10 条COLLAPSED_ITEM_COUNT 10按 CtrlO 展开查看全部代理在每次调用时重新发现允许会话中编辑定义但无缓存并行模式上限 8 个任务、4 路并发。这些限制同样适用于 scout并行发多个 scout 时注意总量约束长侦察结果建议展开视图查看完整四段式输出。八、总结如何写出你自己的“scout”回顾 scout.md 的完整模式一个合格的交接型侦察代理需要具备声明式元数据namedescription必填按需声明tools侦察类建议只给只读命令与model快速任务用轻量模型降本角色与交接承诺明确“产出给没见过这些文件的代理用”约束输出的自包含性深度自调节提供 Quick / Medium / Thorough 三档穷尽度交由模型按任务推断结构化输出模板固定Files Retrieved / Key Code / Architecture / Start Here四段式让下游代理可程序化消费与上下游提示词咬合输出格式与 planner 的输入格式对齐保证链式{previous}传递不丢信息。按照这套模式你可以用同一目录下的模板轻松派生api-scout、db-scout、security-scout等专用侦察代理并把它们接入subagent工具的 single / parallel / chain 三种编排方式构建属于自己团队的代码库勘察流水线。参考资源本文主题文件scout.md扩展总览与安装/安全说明subagent/README.md代理发现与 frontmatter 解析agents.ts、frontmatter.ts子进程派生与三种模式实现index.ts配套代理与工作流planner.md、worker.md、scout-and-plan.md、implement.md原生递归委派机制rlm-runtime.md【免费下载链接】prime-agentA self-improving RLM agent for coding workflows and long-running autonomous tasks.项目地址: https://gitcode.com/GitHub_Trending/pr/prime-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考