社区讨论LinuxDo 最新
Pi Windows 工作流第四版:工作流变化之原生 PowerShell、上下文压缩更换和插件协作
第三版以来又用了快一个月。第一次安装 Pi 的佬友可以先看前三版,这篇继续记录第三版之后的变化。 前三版 (click for more details) 本版:编写于 2026 年 9 月 5 日,Pi 0.85.0。 这次改动主要来自三件事:Pi 有了原生 PowerShell 工具;我换了一套上下文压缩方案;插件更新后,原有配置和本地扩展的部分需要对应调整。 项目 第三版 当前状态 终端工具 通过 bash 工具和 shell 配置使用 PowerShell 主会话和常规子代理显式使用原生 powershe…
内容摘要
作者:#xk128
板块:#开发调优
第三版以来又用了快一个月。第一次安装 Pi 的佬友可以先看前三版,这篇继续记录第三版之后的变化。
前三版 (click for more details)
本版:编写于 2026 年 9 月 5 日,Pi 0.85.0。
这次改动主要来自三件事:Pi 有了原生 PowerShell 工具;我换了一套上下文压缩方案;插件更新后,原有配置和本地扩展的部分需要对应调整。
项目
第三版
当前状态
终端工具
通过 bash 工具和 shell 配置使用 PowerShell
主会话和常规子代理显式使用原生 powershell 工具
上下文
原生自动压缩、pi-ultra-compact、context-mode
关闭原生自动压缩,移除 ultra-compact,改用 Magic Context;保留 context-mode
中文界面
pi-di18n 接管部分内置工具显示
移除 pi-di18n,使用 rpiv-i18n 翻译接入它的扩展界面
模型选择
Plan 角色写死模型,后台组件各自配置
Plan 角色已继承模型,Historian 用本地扩展同步;普通角色仍有固定供应商配置,下面一起说明如何改成跟随
MCP
Context7、DeepWiki 提前连接
两者改为按需连接,工具是否直接暴露另行配置
通知
新增的通知插件
新增 @pi-unipi/notify,使用 Windows 桌面通知
本地扩展
plan-subagent-ceiling
保留原扩展,新增 magic-context-model-sync 同步 Historian 的模型选择
下面只展开说说上述这些影响工作流使用方式的变化。其他未提及就是没有改变。
原生 PowerShell:主会话、子代理、Plan 和权限一起调整
Pi 0.84.2 加入 defaultTools,0.84.3 加入可选的原生 powershell 工具。这两项合起来,可以让模型看到的工具名和实际使用的终端一致。
之前需要反复告诉模型:虽然工具叫 Bash,这里要按 PowerShell 的变量、引号和路径规则执行。现在主会话直接使用下面这份工具列表。
settings.json 中的当前终端配置 (click for more details)
这里起工具选择作用的是 defaultTools,不能只改 shellPath。原生 PowerShell 工具优先找 pwsh.exe,没有时才回退到 Windows PowerShell。Pi 在 Windows 上默认仍选择 Bash,需要自己显式启用 PowerShell。
另外,编辑器里的 !、!! 仍走 Bash 入口。defaultTools 也只选择内置工具。
常规子代理也要改自己的工具列表。 主会话启用了 PowerShell,不会覆盖角色配置里已经写死的 tools。我在 settings.json.subagents.agentOverrides 里同步调整了普通角色,下面以 scout 和 worker 为例:
常规子代理的 PowerShell 工具配置摘录 (click for more details)
其他常规角色也使用 powershell。这里仅摘录工具字段,合并时保留原有的思考等级、上下文继承等配置;模型如何跟随供应商切换,放到后面的模型一节统一说。
Plan 的工具选择单独配置。 我在 ~/.pi/agent/pi-plan-mode.json 的 defaultPlanTools 中加入 powershell,原有读工具、subagent、FFF 和 MCP 条目继续保留,当前文件也仍保留 bash。Plan 会对有效的 bash/powershell 工具应用有限命令策略,普通会话能执行的脚本不一定能通过 Plan 检查。
这里的 safeSubcommands 要按当前版本理解:命中自定义信任前缀后,Plan 会跳过整条命令的解析检查,无法起到只读保证。三个 plan-* 专用角色仍只保留 read/grep/find/ls。
权限插件也要认识新工具名。
权限继续使用 @gotgenes/pi-permission-system,在它的配置里补充:
{
"shellTools": {
"powershell": {
"commandArgument": "command"
}
}
}
把这段合并到 ~/.pi/agent/extensions/pi-permission-system/config.json,原有 permission 规则保留。
因为命令规则写在 permission.bash 下。shellTools 告诉插件:名为 powershell 的工具也携带 shell 命令,命令正文在 command 参数里,要送进现有命令检查链路。只换工具名、不补这个映射,插件会把它当普通扩展工具处理。
终端规则仍按 PowerShell 7 和 UTF-8 编写,避免在原生工具外再套一层 Bash 或 cmd。普通角色即使没有 edit/write,也可能通过 PowerShell 写入文件;我自己的协作规则继续要求子代理只回传证据,由主线程修改文件。
Magic Context:安装、配置和日常更新
前情提要 Pi 有没有压缩插件推荐?
虽然 OpenAI 那边引入了新的上下文压缩方式,但是 Pi 这边还没有跟进,观望一下。
我对上下文的需求是长会话里的整理和回读:旧调查可以从当前上下文移出,需要时还能找回原始消息;不需要把每次任务都积累成跨会话长期记忆。
第三版的组合是原生自动压缩、pi-ultra-compact 和 context-mode。现在移除了 pi-ultra-compact,安装 @cortexkit/pi-magic-context。
现在三个组件这样分工:
context-mode 继续负责大段工具结果的外部索引和检索。
Magic Context 给消息打标签,通过 ctx_reduce 排队移出不再需要的内容,Historian 在后台整理旧对话,需要原文时通过 ctx_expand 回读。
Pi 原生自动压缩关闭,由 Magic Context 管理这条自动整理路径。
首次安装,向导和手动安装二选一。
在 PowerShell 7 中运行官方向导:
npx @cortexkit/magic-context@latest setup --harness pi
--harness pi 明确指定 Pi,避免同时装了其他宿主时选错目标。向导会注册 Pi 扩展、创建 Magic Context 配置,并询问 Historian、Dreamer、Sidekick 和 embedding 的模型选择。先在 Pi 里配置好可用的供应商和模型,再按自己的需要选择;我只保留会话整理,后面会关闭长期记忆等功能。
如果不需要向导,也可以直接安装 Pi 包:
pi install npm:@cortexkit/pi-magic-context
这条会把扩展加入 Pi 的 packages,但不会替你创建 magic-context.jsonc,需要自行准备。上面两个命令是两条安装路径,不用连续执行。
记得移除你的其他记忆或上下文管理插件避免冲突,例如我的:
pi remove npm:pi-ultra-compact
压缩开关分别配置。 Pi 的原生自动压缩关闭,Magic Context 自己的压缩开启。
在 ~/.pi/agent/settings.json 关闭 Pi 原生压缩配置,让 Magic Context 接管。
Pi 的压缩配置 (click for more details)
Magic Context 当前配置摘录 (click for more details)
这份文件在 ~/.config/cortexkit/magic-context.jsonc,不在 .pi 目录里。项目自己的 .cortexkit/magic-context.jsonc 还能覆盖用户配置。
这里关闭了长期记忆、embedding、Dreamer、Sidekick 和 Magic Context 自带 Todo。任务列表继续由现有 rpiv-todo 负责。
Historian 的模型字段和跟随主会话的办法放到下一节,手动安装时也要补上那部分。上面的内容作参考。
日常更新 :
命令
更新范围
pi update npm:@cortexkit/pi-magic-context
只更新 Magic Context 的 Pi 扩展
pi update --extensions
更新扩展包
pi update
只更新 Pi 本体
pi update --all
更新 Pi 本体和扩展包
虽然配置虽然写着 auto_update: true,但是现在 magic-context 只支持 OpenCode 插件侧的自动更新检查,不负责升级 Pi 包。Pi 这边仍使用第一条定向更新命令。
日常可以按下面的顺序操作:
正常结束当前任务和后台子代理,退出使用同一 Ma
资讯来源
LinuxDo