- 语言运行时
- 编译器
- JIT编译
- 解释器
- 内存管理
【免费下载链接】v8
The official mirror of the V8 Git repository
本篇技术指南围绕 V8 官方镜像仓库gh_mirrors/v81/v8中agents/prompts/templates/目录下的 prompt 模板机制展开,系统讲解如何通过@<path>语法把提示片段导入GEMINI.md、如何独立或组合使用模板、如何借助仓库内的安装脚本自动生成子 Agent 配置,以及如何验证导入结果。读完本文,你将掌握在 V8 仓库中为 Gemini CLI 搭建模块化系统指令(System Instruction)的完整流程,并理解其背后的目录组织与源码实现。
一、模板目录是什么:可复用的 Prompt 片段
在 V8 仓库中,agents/prompts/templates/README.md 对模板目录做了精确定义:
These are prompt snippets that can be used independently or added to a base prompt to provide specific context and functionality.
即:agents/prompts/templates/下的文件是一组prompt 片段(prompt snippets),既可以独立使用,也可以作为基础 prompt 的附加部分,为 Agent 提供特定的上下文与功能。当前仓库中该目录实际包含两个文件:
agents/prompts/templates/README.md:模板机制的说明文档(即本指南的主体来源);agents/prompts/templates/modular.md:名为 "Gemini Workspace for V8" 的模块化模板,是仓库中唯一的可导入模板示例。
这种"片段化 + 组合"的设计思路,是为了避免把海量上下文一次性塞进单个 prompt,而是按需加载:Agent 需要理解 V8 目录结构时导入v8-structure技能说明,需要调试时导入调试工作流,需要提交代码时导入 CL 规范,从而实现"轻量系统指令 + 按需扩展上下文"的工程化 Prompt 管理。
模板与 Skills / Rules 的分工
值得强调的是,templates/目录只是 prompt 体系的入口之一。从 agents/prompts/README.md 可以看到整个体系的分层:
- prompts(本目录):面向 Gemini CLI 的公共 prompt(
common.md)与模板 prompt(templates/); - rules(
agents/rules/):强制性的行为规则,如 framework.md(Agent 编排框架)、execution-constraints.md(执行约束)、v8-best-practices.md(最佳实践)等; - skills(
agents/skills/):可随时调用的参考知识,如 v8-structure(目录结构)、v8-commands(构建/调试命令)、v8-testing(测试指南)等; - agents(
agents/agents/):专门化的子 Agent 定义(Researcher / Builder / Tester / Debugger)。
模板文件的作用,就是把上述 skills、rules 与子 Agent 的入口以"可导入的 prompt 片段"形式统一组织起来。
二、核心机制:@<path>导入语法
模板能被系统指令吸收的关键在于 Gemini CLI 的@导入语法。按照 agents/prompts/templates/README.md 的说明,可以在GEMINI.md中通过@<path>引用任意 prompt 文件:
@agents/prompts/common.md @agents/prompts/templates/<example.md>上面的示例展示了组合使用的场景:把公共 prompt 与某个模板文件同时导入。其中:
agents/prompts/common.md是 V8 面向 Gemini 的公共基础 prompt,内容涵盖关键命令(tools/dev/gm.py quiet x64.debug tests、tools/run-tests.py ...、git cl format等)、目录结构速览(src/、test/、include/、out/各子目录职责)、构建配置说明(release / debug / optdebug 的区别)、调试诊断 flag(--trace-opt、--trace-deopt、--trace-gc、--allow-natives-syntax)、测试套件(unittests / cctest / mjsunit)以及提交规范与常见陷阱;agents/prompts/templates/<example.md>则是模板占位符,实际使用时替换为具体模板文件名,例如 agents/prompts/templates/modular.md。
而独立使用的场景则只导入模板本身,不附加公共 prompt:
@agents/prompts/templates/<example.md>这种用法适合模板本身已经自带完整上下文、无需基础 prompt 的情况。
导入路径的语义
注意上述代码块中的路径以仓库根为起点(agents/prompts/...),即相对仓库根目录的路径。如果你在仓库根目录创建GEMINI.md,那么@agents/prompts/common.md即可正确解析到agents/prompts/common.md文件。这与模板文档内部引用其他文件的方式保持一致——例如 agents/prompts/templates/modular.md 中引用的 v8-understanding 技能、agents/agents/researcher/等路径同样是以仓库根为起点。
三、仓库中的唯一模板:modular.md 深度解析
agents/prompts/templates/modular.md 的标题是 "Gemini Workspace for V8",它是一份完整的"模块化规则"模板,也是安装脚本自动生成的GEMINI.md的默认导入对象(见下文第四节)。该模板的内容结构如下:
3.1 总体定位与核心提示(Hints)
模板开头说明它是 "the workspace configuration for V8 when using Gemini",并建议理解 V8 概念与结构时参考 v8-understanding 技能。随后给出了三条贯穿全篇的关键提示:
- 你是资深 C++ 开发者(expert C++ developer);
- 正确性优先:V8 面向用户运行不可信代码(untrusted code),正确性 bug 通常会导致终端用户的安全问题,因此代码必须绝对正确、无 bug;
- 性能优先:V8 为 Web 提供 JavaScript 与 WebAssembly 运行支持,优化 V8 时必须追求最佳性能。
这三条提示界定了 Agent 在 V8 中工作时的角色与价值取向,是后续所有行为规则的基调。
3.2 Subagents Setup:安装脚本入口
模板指明,要使用仓库中的子 Agent,需要根据环境运行对应的安装脚本:
- Gemini CLI:运行
vpython3 agents/scripts/install_for_gemini_cli.py,在.gemini/agents/下生成子 Agent 文件; - Jetski:运行
vpython3 agents/scripts/install_for_jetski.py,在.agents/agents/下创建符号链接。
这两个脚本的具体实现将在第五节详述。
3.3 Workspace Subagents:四个专门化子 Agent
模板将详细信息的入口指向 agents/agents/ 目录下的四个子 Agent,按需使用:
- Researcher:探索代码库、查找信息,见 agents/agents/researcher/;
- Builder:编译 V8,见 agents/agents/builder/;
- Tester:运行测试与基准测试,见 agents/agents/tester/;
- Debugger:使用 GDB 调查崩溃,见 agents/agents/debugger/。
以 Researcher 为例,其定义由两个文件组成:agents/agents/researcher/agent.json(元数据:name、description、config_path)与 agents/agents/researcher/config.yaml(自定义 Agent 的 system prompt 段落与工具清单)。config.yaml 中的system_prompt_sections以"标题 + 内容"的结构化方式定义指令,tool_names则声明该 Agent 可用的工具(如view_file、grep_search、list_dir、search_web、mcp_*)。
3.4 Workspace Skills & Rules:知识索引
模板列出了一系列按需引用的 skills 与 rules,全部指向仓库内以仓库根为起点的相对路径:
| 主题 | 入口文件 |
|---|---|
| 目录结构 | agents/skills/v8-structure/SKILL.md |
| 关键命令 | agents/skills/v8-commands/SKILL.md |
| 测试指南 | agents/skills/v8-testing/SKILL.md |
| 最佳实践 | agents/rules/v8-best-practices.md |
| 环境配置 | agents/skills/v8-setup/SKILL.md |
| Git CL 规范 | agents/rules/git-cl.md |
| Torque 指南 | agents/skills/torque/SKILL.md |
| 问题驱动调试 | agents/skills/workflow-debugging/SKILL.md |
| 通用调试 | agents/skills/workflow-general-debugging/SKILL.md |
| 性能评估 | agents/skills/workflow-perf/SKILL.md |
| Agent 评估 | agents/skills/agent-evaluation-framework/SKILL.md |
| Agent 自改进 | agents/skills/agent-self-improvement/SKILL.md |
| V8 开发工作流 | agents/skills/v8-workflow/SKILL.md |
这套索引让 Agent 在遇到具体任务时能快速定位权威参考,而不是依赖模型自身的模糊记忆。例如 v8-structure 技能(agents/skills/v8-structure/SKILL.md)的 frontmatter 中带有name与description字段,description 明确写明了该技能适用的场景("Maps the V8 dir/folder structure, component locations, and local documentation"),便于 Agent 按语义匹配。
3.5 Coding and Committing:编码与提交规范
模板要求在编码与提交时遵守以下约束:
- 始终遵循所修改代码周围的风格约定,否则遵循 Chromium 的 C++ 风格指南;
- 使用
git cl format自动格式化改动; - 提交遵循 agents/rules/git-cl.md 中的约定;
- 最佳实践与常见陷阱参考 agents/rules/v8-best-practices.md。
3.6 Agent Framework:强制编排规则
模板最后定义了 Agent 框架的强制要求:
- 强制编排(Mandatory Orchestration):在 V8 中执行任何任务时,Agent 必须扮演 Orchestrator(编排者)角色,使用
agents/agents/中定义的专门化子 Agent; - 必须遵守 agents/rules/framework.md 与 agents/rules/execution-constraints.md 中的规则;
- 这样做的目的是保证任务执行的效率(efficiency)、并行性(parallelism)与一致性(consistency)。
这一节揭示了整个 prompt 体系的设计哲学:模板不是简单的文本拼接,而是一套"编排层 + 执行层"的 Agent 架构描述。
四、从模板到系统指令:GEMINI.md 的创建流程
模板机制落地的完整流程,记录在 agents/prompts/README.md 中,分为三步:
第 1 步:在仓库根目录创建本地、不被版本跟踪的GEMINI.md文件。
第 2 步:使用@语法导入相关 prompt。例如只导入公共 prompt:
@agents/prompts/common.md更完整的做法是同时导入公共 prompt 与模板(与第一节的组合示例一致),使 Agent 既拥有基础能力,又具备模块化的扩展上下文。
第 3 步:验证导入是否成功。在 gemini-cli 中运行/memory show命令,确认 prompts 已正确导入。
导入的已知限制
agents/prompts/README.md 明确记录了一个已知问题:
All imports must be scoped to the current prompt file. a/prompt.md can import a/prompt2.md or a/b/prompt3.md, but cannot import c/prompt4.md.
即所有导入必须限定在当前 prompt 文件所在的目录范围之内:a/prompt.md可以导入a/prompt2.md或a/b/prompt3.md,但不能导入c/prompt4.md(跨目录兄弟节点)。这意味着你无法用..跳转到无关目录去导入 prompt,组织模板时必须保持目录结构的层级关系,这一限制对设计自己的模板目录具有直接指导意义。
五、源码视角:安装脚本如何落地模板与子 Agent
模板与子 Agent 的落地并非全靠手工,仓库提供了两个自动化安装脚本,其源码逻辑值得拆解。
5.1 install_for_gemini_cli.py:生成 .gemini/agents/
agents/scripts/install_for_gemini_cli.py 的核心逻辑如下:
- 确定目标目录:
repo_root / ".gemini" / "agents",若该目录是符号链接则先移除; - 遍历
agents/agents/下的每个子目录,要求同时存在agent.json与config.yaml,否则跳过; - 读取配置:从
agent.json取name、description;从config.yaml的custom_agent节点取system_prompt_sections与tool_names; - 拼接 system prompt:将每个 section 以
# {title}+ 内容的形式拼成 Markdown body; - 工具名映射:把通用工具名映射为 Gemini CLI 的工具名——
view_file→read_file、run_command→run_shell_command、list_dir→list_directory、search_web→google_web_search、call_mcp_tool则被跳过,其余工具名原样保留; - 生成子 Agent 文件:以
frontmatter(name / description / kind: local / tools / model: inherit)+ body的格式写出{name}.md到.gemini/agents/; - 自动创建 GEMINI.md:若仓库根目录尚不存在
GEMINI.md,则自动写入一行@[Modular Rules](https://link.gitcode.com/i/dd53d496a5288969d769d49657658d62),把 agents/prompts/templates/modular.md 作为默认导入模板。
从这段源码可以确认几个关键事实:子 Agent 的最终形态是带 YAML frontmatter 的 Markdown 文件;工具权限由config.yaml中的tool_names声明并映射;而模板目录的modular.md正是安装脚本钦定的默认模板。
5.2 install_for_jetski.py:创建 .agents/ 符号链接
agents/scripts/install_for_jetski.py 采用不同的落地方式:
- 目标目录为
repo_root / ".agents",若它是指向agents的符号链接则先移除,再确保其为真实目录; - 清理
.agents/下失效的顶层符号链接; - 遍历
agents/顶层条目:对于agents、skills、rules、plugins之外的条目直接创建符号链接;对于这四个特殊目录,则在.agents/下建真实目录,再对其内部每个子项逐一创建符号链接(skills还会额外链接共享的git-cl-helper技能); - 与 Gemini CLI 脚本相同,若
GEMINI.md不存在则写入@[Modular Rules](https://link.gitcode.com/i/dd53d496a5288969d769d49657658d62)。
两个脚本殊途同归:一个生成实体文件,一个生成符号链接,但最终都确保GEMINI.md指向同一个模板入口。这也印证了模板机制与安装流程的深度耦合:模板不仅是给模型看的文本,还是自动化脚本的配置输入。
六、实战建议与贡献指南
6.1 推荐的启用流程
综合上述机制,在 V8 仓库中启用完整 prompt 体系的标准流程是:
- 运行
vpython3 agents/scripts/install_for_gemini_cli.py(Gemini CLI)或vpython3 agents/scripts/install_for_jetski.py(Jetski),自动生成子 Agent 配置并创建默认GEMINI.md; - 若希望叠加公共 prompt,编辑根目录
GEMINI.md,在模板导入行之外追加@agents/prompts/common.md; - 在 gemini-cli 中运行
/memory show验证所有导入均已生效; - 按需让 Agent 通过模板索引加载 skills 与 rules(如调试时加载 workflow-debugging,提交时加载 git-cl)。
6.2 新增模板的注意事项
agents/prompts/README.md 对贡献者给出了两条明确约束:
- 谨慎修改
common.md:它被广泛使用,任何改动都影响所有依赖它的 prompt,因此必须格外小心; - 新模板放入
template/目录:想分享新 prompt 时,应添加到agents/prompts/templates/(即本指南所讲的模板目录),而不是直接改动公共文件。
同时结合已知的导入作用域限制,新增模板时务必保证它能被目标GEMINI.md所在目录合法引用(即模板与导入方处于同一目录子树内)。
七、小结
V8 仓库以agents/prompts/templates/为枢纽,构建了一套层次分明的 Gemini prompt 工程体系:@<path>语法负责按需导入,modular.md模板充当"模块化规则"的默认入口,四个专门化子 Agent 承接编排执行,安装脚本则把这份设计自动落盘为GEMINI.md与.gemini/agents/。理解这套机制,不仅能让你在 V8 开发中更高效地驾驭 Gemini CLI,也为设计自己的 Agent prompt 组织方案提供了可复用的范本。
进一步阅读:模板机制的总入口见 agents/prompts/README.md,公共基础 prompt 见 agents/prompts/common.md,模板示例见 agents/prompts/templates/modular.md,四个子 Agent 定义见 agents/agents/ 目录。
- 语言运行时
- 编译器
- JIT编译
- 解释器
- 内存管理
【免费下载链接】v8
The official mirror of the V8 Git repository
相关推荐
FanControl 实战指南:Windows 智能风扇调节,三步搞定风扇噪音
FanControl 实战指南:Windows 智能风扇调节,三步搞定风扇噪音 渲染跑到凌晨两点,CPU 温度往上顶,风扇突然咆哮到全速,几分钟后因过热降频。这
桌面应用智能硬件gitignore.io模板仓库结构:dataDirectory组织与优化
gitignore.io模板仓库结构:dataDirectory组织与优化 概述 gitignore.io是一个帮助开发者生成.gitignore文件的工具,其
开发工具后端CLISheeeeeeeeet核心组件详解:从Menu到ActionSheet的完整实现
Sheeeeeeeeet核心组件详解:从Menu到ActionSheet的完整实现 Sheeeeeeeeet是一个强大的Swift库,专门用于创建自定义菜单、操
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考