系统提示词与能力裁剪(Meta Harness)
Meta Harness 是会话创建阶段的高级配置。它可以做三件事:
| key | value | 作用 |
|---|---|---|
| 系统提示词段落 ID | true | 用 .peri/meta/<ID>.md 全文替换内置段落 |
| middleware 名 | false | 不装配该 middleware,并移除它持有的工具、Hook 与提示词段落 |
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读取替换内容; - 关闭 Web middleware,因此 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; - 保留段落:
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
Section titled “关闭 middleware”可用名称以代码注册表为准。为了便于配置,当前装配面按职责分为:
| 职责 | middleware 名 |
|---|---|
| 上下文 | DefaultSystemPromptMiddleware、LangMiddleware、AgentsMdMiddleware、AgentDefineMiddleware、PluginMiddleware、SkillsMiddleware、SkillPreloadMiddleware、AtMentionMiddleware、ImageMiddleware |
| 本地与网络工具 | FilesystemMiddleware、GitAttributionMiddleware、TerminalMiddleware、WebMiddleware |
| 任务与交互 | TodoMiddleware、CronMiddleware、HookMiddleware、PermissionMiddleware、HumanInTheLoopMiddleware、SubAgentMiddleware |
| 扩展能力 | McpMiddleware、WorkflowMiddleware、PtcMiddleware、ToolSearch、ArtifactMiddleware、LspMiddleware、GoalMiddleware |
关闭能力必须形成闭包:direct 工具、deferred 搜索索引、命令路由、提示词说明、 SubAgent/Workflow 继承面都不能继续暴露已经关闭的能力。遇到“工具已关闭但模型仍认为可用” 时,应把它视为实现问题,而不是让用户再写一段提示词规避。
审批与提问是两项能力
Section titled “审批与提问是两项能力”PermissionMiddleware负责敏感工具审批,并持有10_hitl;HumanInTheLoopMiddleware负责AskUserQuestion,并持有12_ask_user。
关闭前者不会自动关闭提问;关闭后者也不会自动进入 Bypass。不要用其中一个开关替代另一个。
安全地验证配置
Section titled “安全地验证配置”每次只改一个 key,并在新会话中验证:
- 预期 middleware 是否进入生产链;
- direct 工具和 deferred 搜索结果是否同时符合预期;
- 对应提示词段落或 request-time contribution 是否存在;
- 审批、提问和外部系统边界是否仍符合任务要求。
恢复时删除项目级 key;如果同名 key 来自全局配置,还需要修改全局配置。删除段落覆盖 key
后,可再删除对应 .peri/meta/<ID>.md。