omp packages

pi-model-system-prompt0.2.1

Per-model system prompt for pi: appends the prompt file whose name is the longest case-insensitive prefix of the active model id

jokerx001 Published 11 days ago MIT ~815 downloads/mo

Untested on omp

This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

pi-model-system-prompt

让不同大模型能够使用不同的系统提示词。 切换大模型时,按当前激活的 model id,把该模型专属的 system prompt 追加到上下文。

English

为什么需要这个插件

不同的大模型,除了能力不同,其实还需要不同的harness方式。

Harness的水平,极大程度的影响大模型的发挥,这已经是业界公认的事实。

表现在agent中, 如claude code, codex, pi agent,那就是启动时针对特定模型加载的系统提示词。

在我们使用Pi agent的过程中,可能使用多个不同来源的大模型进行混用,这种用法也是Pi Agent这种高自由度coding agent的魅力。

那么在Pi agent中切换不同模型时,最好能让不同模型能使用各自独立的系统提示词,可是pi agent本身并没有这种能力。

本插件提供此能力。

安装

pi install npm:pi-model-system-prompt

装完重启 Pi。

快速开始

安装完毕后自动生效。插件会选取 ~/.pi/agent/model-system-prompt/ 下文件名是当前 model id 最长前缀的那个 md 文件,把它的内容追加进 pi agent 的系统提示词。例如 model 为 glm-5.3-flash 时依次看 glm-5.3-flash.md、glm-5.3.md、glm.md,取存在且最长的那一个。不区分大小写;没有任何文件匹配的模型完全不受影响。

需要自己写特定模型的系统提示词时,只需要在 ~/.pi/agent/model-system-prompt/ 目录下添加与该 model 同名的 md 文件——或者用它所归属的同族名,此后以该名字开头的所有 model id 都会用它——并在文件中编写即可。打开 pi 时会自动加载。

插件提供优质的预置提示词。注意,由于开源模型存在不同精度和微调,所以预置提示词的调校均基于各自的官方模型,不对非官方模型效果做保证。鼓励用户根据自己使用的模型自己调控系统提示词。

预置系统提示词的模型列表

  • MiniMax-M3
  • MiniMax-M3.1-Flash-Preview
  • claude-sonnet-5、claude-haiku-5(Claude Code 的完整版系统提示词)
  • claude-opus-5、claude-fable-5(Claude Code 的较短版系统提示词)
  • deepseek-flash
  • glm-5.3-flash
  • glm-5.3
  • gpt-5.6(gpt-5.6-luna、gpt-5.6-sol、gpt-5.6-terra——codex 给这三个档同一份提示词,因此一个族文件)
  • gpt-6-luna、gpt-6-sol、gpt-6-astra、gpt-6.1-sol(codex 每一档各写一份,因此一档一个文件)
  • kimi(kimi-k3 及同族其它 id)

匹配与覆盖规则

谁生效,由文件名决定

  1. 最长前缀胜出**。多个文件都能匹配同一个 model id 时,名字最长的那一个生效。比如 id 是 glm-5.3-flash,而 glm-5.3-flash.md、glm-5.3.md、glm.md 都在,那只有 glm-5.3-flash.md 生效。
  2. 与 id 完全同名的文件必定胜出。
  3. 不区分大小写。
  4. 没有通配符,只有字面前缀**。glm.md 也会命中 glmish-2 这种跟 glm 无关的 id。所以别起太短的名字:g.md 会吃掉所有以 g 开头的 id。前缀从 id 的开头算起,所以叫 claude-opus-5.md 的文件命中不了带 provider 前缀的 id,比如 anthropic.claude-opus-5。

让某个模型不生效

  • 推荐:把生效的那个文件清空。文件在、内容为空 = 这个模型拿不到任何专属提示词,而且不会再回退去吃更短的同族文件。
  • 删除文件不等于关闭。只有在没有更短的同名文件仍能匹配它时才算关掉:删掉 glm-5.3.md,glm-5.3 仍然会吃 glm.md。
  • 想关掉一整个大类:清空大类文件只能关掉没有更具体文件的 id——清空 glm.md 后 glm-4 不再有提示词,但只要 glm-5.3.md 还在,glm-5.3-flash 照样走 glm-5.3.md。真要整类关掉,清空所有相关的 glm*.md。

预置提示词来源

均来自于各官方模型自己的专用coding agent工具

minimax来自于minimax code

glm来自于zcode

deepseek来自于deepseek harness

kimi来自于kimi code(整个模型族共用一份 harness,因此是一个族文件)

claude来自于claude code(2.1.285,stable 通道;它自带完整版与较短版两套系统提示词,按模型选用,两套都照搬,每族一个文件)

gpt来自于codex(openai/codex,tag rust-v0.161.0;某个 model id 用哪份文本,看 codex-rs/models-manager/models.json 里该 slug 的 instructions_template 字段,发布的 @openai/codex@0.161.0 二进制里是同一批字节。codex 给 gpt-5.6 全族一份提示词、给 gpt-6 每一档各写一份,所以 5.6 是单个族文件,gpt-6 各档各自一个文件;更晚的世代自带新文本,需要新文件)

欢迎提交新的模型预置提示词

为了核实通用性,但是必须标注清楚来源,必须是官模调校

首次运行会发生什么

你已经有… 会发生什么
什么都没有 预置模型系统提示词被复制进 ~/.pi/agent/model-system-prompt/。
自己写的 ~/.pi/agent/model-system-prompt/<modelId>.md 一律不动。

☕ 支持这个项目

如果你觉得这个项目有用,可以请作者喝杯咖啡

Support me on Ko-fi