跳到正文

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

在新会话创建时覆盖提示词段落、关闭 middleware,或控制内置 SubAgent 定义。

更新于 查看 Markdown

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

key value 作用
系统提示词段落 ID true 用 .peri/meta/<ID>.md 全文替换内置段落
链槽位名 / builtin 实例策略键 false 关闭宿主 adapter 或对应 MCP 能力面;策略关闭不等于销毁连接
BuiltInSubagents true / 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 读取替换内容;
  • 关闭 builtin web 实例的工具面,因此 Web 工具和它的提示词贡献都不会进入当前会话;
  • 隐藏 compile-time 内置 SubAgent 定义。

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

段落覆盖

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

  • 基础段落:01_intro、02_system、03_doing_tasks、04_actions、 05_using_tools、06_tone_style、07_runtime、persona、language;
  • 能力段落:10_hitl、11_subagent、12_ask_user、13_skills;

覆盖文件只扫描 <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 优先。

关闭能力:链槽位与 MCP 实例分开

合法键以契约注册表为准。链槽位控制宿主消费与编排,builtin 策略键控制对应 MCP 实例:

职责 链槽位名
上下文 DefaultSystemPromptMiddleware、LangMiddleware、AgentsMdMiddleware、PluginMiddleware、SkillsMiddleware、SkillPreloadMiddleware、AtMentionMiddleware、ImageMiddleware
任务与交互 GitAttributionMiddleware、TodoMiddleware、HookMiddleware、PermissionMiddleware、HumanInTheLoopMiddleware、SubAgentMiddleware
扩展消费与编排 McpMiddleware、ToolSearch、GoalMiddleware
builtin 实例 MetaHarness 策略键
web WebMiddleware
artifact ArtifactMiddleware
cron CronMiddleware
workspace WorkspaceMiddleware
workflow WorkflowMiddleware

WorkspaceMiddleware: false 同时关闭文件/终端工具、技能/Agent/项目指令与覆盖资源面; 不是旧 filesystem、terminal 或 Agent 定义单项关闭的等价替换。 AgentDefineMiddleware、FilesystemMiddleware、TerminalMiddleware、GitWatchMiddleware 及退役的 15_channel 不再是合法键,配置中出现时告警并忽略。

MetaHarness 管理的是会话内的能力使用策略,不负责 MCP server 的安装或物理销毁。 外部 server 由 MCP 配置、连接与授权管理,不支持把任意 server 名写成 MetaHarness 键。 Agent 的 allowlist/disallowlist 和运行时审批另管工具执行权。 McpMiddleware 控制 MCP 消费 adapter;ToolSearch 控制额外工具发现/执行入口, 两者都不是 pool shutdown,也不是任意外部 server 的独立关闭键。

关闭能力必须形成闭包: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 · 权限系统

导航

输入以搜索…

↑↓ 导航↵ 选择Esc 关闭