Skip to content

系统提示词与能力裁剪(Meta Harness)

Meta Harness 是会话创建阶段的高级配置。它可以做三件事:

keyvalue作用
系统提示词段落 IDtrue.peri/meta/<ID>.md 全文替换内置段落
middleware 名false不装配该 middleware,并移除它持有的工具、Hook 与提示词段落
BuiltInSubagentstrue / false启用或隐藏随 Peri 编译分发的 SubAgent 定义

这些状态会随会话快照冻结。修改配置或覆盖文件后,请新建会话;现有会话不会中途重载。

全局配置位于 ~/.peri/settings.json,项目覆盖位于 <cwd>/.peri/settings.json

{
"config": {
"meta_harness": {
"01_intro": true,
"WebMiddleware": false,
"BuiltInSubagents": false
}
}
}

这份配置会:

  • <cwd>/.peri/meta/01_intro.md 读取替换内容;
  • 关闭 Web middleware,因此 Web 工具和它的提示词贡献都不会进入当前会话;
  • 隐藏 compile-time 内置 SubAgent 定义。

BuiltInSubagents 不会关闭 SubAgentMiddleware,也不会隐藏项目、插件提供的 Agent, 不会禁用 fork、resume、AgentAgentResult

可覆盖的段落 ID 由当前代码注册表决定。现有分组如下:

  • 基础段落:01_intro02_system03_doing_tasks04_actions05_using_tools06_tone_style07_runtimepersonalanguage
  • 能力段落:10_hitl11_subagent12_ask_user13_skills
  • 保留段落:15_channel,当前 gate 关闭,不代表可用功能。

覆盖文件只扫描 <cwd>/.peri/meta/ 的一级 .md 文件。文件名去掉 .md 后就是 段落 ID,正文会整段替换内置内容:

.peri/meta/01_intro.md
.peri/meta/05_using_tools.md

段落 ID 配为 false 表示显式使用内置内容;middleware 名配为 true 可以在项目配置中 恢复被全局配置关闭的组件。全局与项目的 meta_harness 按 key 合并,项目同名 key 优先。

可用名称以代码注册表为准。为了便于配置,当前装配面按职责分为:

职责middleware 名
上下文DefaultSystemPromptMiddlewareLangMiddlewareAgentsMdMiddlewareAgentDefineMiddlewarePluginMiddlewareSkillsMiddlewareSkillPreloadMiddlewareAtMentionMiddlewareImageMiddleware
本地与网络工具FilesystemMiddlewareGitAttributionMiddlewareTerminalMiddlewareWebMiddleware
任务与交互TodoMiddlewareCronMiddlewareHookMiddlewarePermissionMiddlewareHumanInTheLoopMiddlewareSubAgentMiddleware
扩展能力McpMiddlewareWorkflowMiddlewarePtcMiddlewareToolSearchArtifactMiddlewareLspMiddlewareGoalMiddleware

关闭能力必须形成闭包:direct 工具、deferred 搜索索引、命令路由、提示词说明、 SubAgent/Workflow 继承面都不能继续暴露已经关闭的能力。遇到“工具已关闭但模型仍认为可用” 时,应把它视为实现问题,而不是让用户再写一段提示词规避。

  • PermissionMiddleware 负责敏感工具审批,并持有 10_hitl
  • HumanInTheLoopMiddleware 负责 AskUserQuestion,并持有 12_ask_user

关闭前者不会自动关闭提问;关闭后者也不会自动进入 Bypass。不要用其中一个开关替代另一个。

每次只改一个 key,并在新会话中验证:

  1. 预期 middleware 是否进入生产链;
  2. direct 工具和 deferred 搜索结果是否同时符合预期;
  3. 对应提示词段落或 request-time contribution 是否存在;
  4. 审批、提问和外部系统边界是否仍符合任务要求。

恢复时删除项目级 key;如果同名 key 来自全局配置,还需要修改全局配置。删除段落覆盖 key 后,可再删除对应 .peri/meta/<ID>.md

相关内容:工具系统 · Skills · 权限系统