Skip to main content

自定义 Prompt Templates

goose 内置了一组 prompt templates,用来定义它在不同场景中的行为。你可以编辑这些模板,自定义 goose 的回复风格、规划方式、压缩上下文时保存什么,以及其它细节。

工作原理

goose 的默认 prompt template 定义在代码库里,并在构建时内嵌到应用中。你可以在本地配置目录里创建同名自定义模板来覆盖默认值,无论是手工创建还是通过 goose Desktop 编辑都可以。

当你自定义模板后:

  • 你的改动会跨 goose 升级持续保留
  • 代码库中默认模板的变更不会覆盖你的本地版本
  • 你可以随时重置回默认模板
  • 改动会在新会话中生效

你的修改可以很大,也可以只是小范围微调,例如:

  • 编辑 system.md,加入 “Reply in Dutch”,让 goose 用荷兰语回复
  • 编辑 plan.md,加入 “Include an estimated time for each step”,让每个步骤都带上时间预估

关于模板变量的修改方式,请先看 Template Variable Syntax

Related Configuration

除了 prompt templates,其他设置也会影响 goose 的行为或为它提供上下文,例如 config files.goosehints 以及 skills

管理 Prompt Templates

goose Desktop 用户可以在 Settings 页面管理模板。

要自定义模板:

  1. 点击左上角的 按钮打开侧边栏
  2. 点击 Settings
  3. 打开 Prompts 标签
  4. 在目标模板旁点击 Edit
  5. 在编辑器里修改内容。你也可以随时点击 Restore Default,从默认模板重新开始。
  6. 点击 Save 保存改动

自定义过的模板会显示 Customized 徽标。

要把某个模板恢复到默认值:

  1. 点击左上角的 按钮打开侧边栏
  2. 点击 Settings
  3. 打开 Prompts 标签
  4. 在目标模板旁点击 Edit
  5. 点击 Reset to Default,删除本地模板文件

你也可以点击页面顶部的 Reset All,一次删除所有本地模板文件。

可自定义的 Prompt Templates

Template说明适用范围
system.md定义 goose 角色、能力和回复格式的总 system promptDesktop 和 CLI
apps_create.md用于生成新的独立 App(开发中)仅 Desktop
apps_iterate.md用于更新已有独立 App(开发中)仅 Desktop
compaction.md在上下文达到限制时总结会话历史Desktop 和 CLI
permission_judge.md用于分析工具操作是否可视为只读Desktop 和 CLI
plan.md生成详细、可执行计划并提出澄清问题仅 CLI
recipe.md从对话中生成 recipe 文件Desktop 和 CLI
subagent_system.md分配给 subagent 时使用的 system promptDesktop 和 CLI

可自定义模板由 prompt_template.rs 中的 TEMPLATE_REGISTRY 数组统一登记。

Template Variable Syntax

模板使用 Jinja2 语法来插入动态内容:

  • {{ variable }}:插入变量值,例如 {{ extensions }}
  • {% if condition %}...{% endif %}:条件判断
  • {% for item in list %}...{% endfor %}:循环

你可以查看默认模板文件,了解常见变量,例如 {{ extensions }}{{ hints }} 等。

转义模板变量

如果你想在模板里原样写出变量语法,而不是让它被替换,可以这样写:

This will substitute: {{ variable }}
This will appear literally: {{'{{variable}}'}}
warning

修改模板变量时要小心。错误的变量写法可能会直接破坏功能。建议在新会话中测试改动是否正常。