news 2026/9/12 3:58:07

Pi Agent 集成指南:为 Pi Coding Agent 部署 planning-with-files 持久化规划扩展

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Pi Agent 集成指南:为 Pi Coding Agent 部署 planning-with-files 持久化规划扩展

Pi Agent 集成指南:为 Pi Coding Agent 部署 planning-with-files 持久化规划扩展

【免费下载链接】planning-with-filesPersistent file-based planning for AI coding agents and long-running tasks. Crash-proof markdown plans, session recovery after /clear and compaction, per-turn re-injection against context rot, deterministic completion gate. Manus-style. Install from npm, the Claude Code plugin marketplace, or npx skills. Codex, Cursor, OpenCode, 60+ agents.项目地址: https://gitcode.com/GitHub_Trending/pl/planning-with-files

本文是基于 planning-with-files 官方文档 docs/pi-agent.md 的完整实战指南,讲解如何为 Pi Coding Agent 安装 skill 与扩展、理解其八类生命周期事件、配置 DeepSeek-aware 四模式运行系统,并通过/plan-execute/plan-attest等命令完成从被动评审到主动执行的规划闭环。读完本文,你将掌握在 Pi 中让规划文件(task_plan.mdfindings.mdprogress.md)穿越/clear、压缩与会话崩溃而持续生效的完整方案。

概述:为什么 Pi 需要文件级规划

planning-with-files 的核心思想是把 Agent 的「工作记忆」从易失的上下文窗口搬到磁盘上:上下文窗口相当于易失的 RAM,而文件系统是持久化的磁盘。任何重要信息都应写入磁盘,而不是塞进窗口。在 Pi Coding Agent 中,这套机制由一个skill(三文件规划工作流)和一个extension(hook 行为对等运行时)共同承载,后者把 Claude Code 插件路径上的生命周期钩子行为,以 Pi 的扩展事件机制原样复刻,让 Pi 获得与 Claude Code 对等的规划注入与完成门控能力。

安装

推荐方式:通过 npm 安装

pi install npm:planning-with-files

这条命令现在会一次性安装两样东西

  • Skillplanning-with-files(三文件规划工作流,对应task_plan.mdfindings.mdprogress.md
  • Extensionplanning-with-fileshook 对等运行时(八类生命周期事件处理器)

手动安装(仓库拷贝)

# 克隆仓库 git clone https://github.com/OthmanAdi/planning-with-files.git cd planning-with-files # 将 skill 包拷贝到你的 Pi skills 目录 mkdir -p ~/.pi/agent/skills/planning-with-files cp -r .pi/skills/planning-with-files/* ~/.pi/agent/skills/planning-with-files/

仓库内的 .pi/skills/planning-with-files/ 目录即是 Pi 适配器的完整载体,包含SKILL.mdscripts/(与主项目同一套 26 个脚本,如attest-plan.shsession-catchup.pyresolve-plan-dir.sh等)、templates/(含task_plan.mdfindings.mdprogress.mdloop.md模板)以及extensions/planning-with-files/下的 TypeScript 扩展源码。

Pi 现已支持的能力

Pi 集成通过扩展事件提供 Claude 风格的生命周期行为(对应源码实现见 runtime.ts):

生命周期事件行为
session_start会话追赶(session catchup),读取项目规划文件恢复上下文
before_agent_start/plan-execute之后的计划上下文提醒/注入
tool_call/plan-execute之后的工具调用前计划背诵(pre-tool recitation)对等物
tool_result/plan-execute之后的写后提醒
agent_end/plan-execute之后的自动继续守卫(上限 3 次)
session_before_compact压缩前的提醒
计划证明守卫[PLAN TAMPERED — injection blocked],篡改即阻止注入

除上述七个事件外,源码中还注册了session_shutdown(清理定时器与状态)和input(用户输入时重置前缀状态)两个内部清理事件。测试 test_pi_extension_capabilities.py 通过正则断言验证了这些必需事件(session_startbefore_agent_starttool_calltool_resultagent_endsession_before_compactinput)均已在运行时中注册。

模式系统(DeepSeek-aware)

扩展支持四种模式:

  • auto(默认):自动检测模型——DeepSeek 模型走cache-safe,其他模型走parity
  • parity:最大程度对等 Claude 行为(动态计划注入,每轮注入===BEGIN PLAN DATA===围栏的计划头 50 行与进度尾部 20 行)
  • cache-safe:稳定的固定提醒,为 DeepSeek 等对 KV-cache 命中率敏感的模型保持注入字节前缀稳定
  • notify:仅 UI 通知,不向对话注入任何内容

在源码 runtime.ts 中,auto模式通过deriveEffectiveMode检查ctx.model.providerctx.model.id是否包含deepseek来决定有效模式;cache-safe模式使用 constants.ts 中固定的CACHE_SAFE_REMINDER("Read task_plan.md for current phase and status..."),而parity模式则构造完整的计划数据块注入。

通过环境变量配置

PWF_MODE=auto pi PWF_MODE=parity pi PWF_MODE=cache-safe pi PWF_MODE=notify pi

通过设置文件配置

项目级配置(.pi/settings.json)覆盖全局配置(~/.pi/agent/settings.json):

{ "planningWithFiles": { "mode": "auto" } }

配置解析顺序在源码中有明确实现(resolveConfiguredMode):优先读环境变量PWF_MODE,其次项目级.pi/settings.json,再其次全局~/.pi/agent/settings.json,全部缺失时回落到auto。设置文件采用容错读取(safeReadJson),JSON 解析失败或被截断不会导致扩展崩溃。

命令

安装后,以下扩展命令可用(Pi 中直接输入,无前缀):

命令作用
/plan-status显示当前计划的数量统计与路径
/plan-attest [--show\|--clear]管理计划 SHA-256 证明
/plan-execute批准当前活动计划并启用 hook 激活
/plan-execute reset将活动计划恢复到被动评审模式
/plan-goal <text\|default\|clear>设置/清除继续目标文本
/plan-loop [10m] [prompt...]周期性规划 tick;用stop取消

命令背后的源码行为

  • /plan-status(runtime.ts):读取readPlanStatus,通过ctx.ui.notify输出计划路径、作用域(root/scoped)、阶段总数、已完成/进行中/待处理阶段数;计划缺失或会话歧义时给出对应警告。
  • /plan-attest(L382-L397):调用attest-plan.sh(Windows 下优先attest-plan.ps1),--show展示当前 SHA-256,--clear清除证明。Pi 运行时读取与 Claude Code 相同的.attestation文件(scoped 计划在.planning/<id>/.attestation,root 计划在项目根.plan-attestation),因此在任一运行时证明一次即可锁定两个运行时的计划
  • /plan-execute(L416-L454):检查计划存在性与会话歧义后,先做证明校验——若checkPlanAttestation判定tampered,直接拒绝批准并输出[PLAN TAMPERED — injection blocked]及期望/实际哈希与Run /plan-attest指引;校验通过则将sessionId:planPath键加入executionApprovedBySessionPlan集合,此后的before_agent_starttool_calltool_resultagent_end处理器才会真正注入或背诵计划。
  • /plan-goal(L399-L414):按会话存储目标字符串,clear/off/disable清除,default使用内置DEFAULT_GOAL_CONDITION("all phases in task_plan.md report Status: complete and check-complete.sh reports ALL PHASES COMPLETE")。该目标会追加到自动继续消息中。
  • /plan-loop(L456-L510):解析间隔规格(10m30s2h1d等),默认10 * 60 * 1000ms 即 10 分钟,定时执行默认 tick 提示(重读task_plan.mdprogress.md、运行check-complete.sh、按需更新状态行并继续下一阶段);全部阶段完成或计划closed时自动停止;stop立即取消。

使用流程

第一步:初始化 skill

/skill:planning-with-files

第二步:让 Pi 创建/更新三个规划文件

  • task_plan.md— 阶段与检查项(### Phase N头 +**Status:**状态行或[complete]/[in_progress]/[pending]标记)
  • findings.md— 研究笔记与决策
  • progress.md— 会话日志与测试结果

计划解析逻辑见 plan.ts:优先按PLAN_ID精确绑定(slug 必须通过安全正则^[A-Za-z0-9_][A-Za-z0-9._-]*$且经realpath包含性校验,防止符号链接逃逸出项目根),其次.planning/.active_plan指针,再次按task_plan.mdmtime 最新的 slug 目录,最后回落到根级task_plan.mdresolveAnchor还会从实时 shell cwd 向上查找最近携带规划状态的祖先目录(受.git边界与 10 层深度上限约束),因此 Agent 即使cd进子目录也不会丢失计划。

第三步:评审并批准

在评审阶段,扩展保持被动:可能显示计划状态,但不会注入计划上下文、在工具调用前背诵计划,也不会自动继续。计划符合预期后执行:

/plan-execute

第四步:长任务执行

对于长任务,保持task_plan.md作为事实来源(source of truth),让激活后的 hooks/扩展事件强制执行循环:

  • before_agent_start:每轮开始注入计划(parity 模式为完整计划块,cache-safe 模式为固定提醒,notify 模式仅状态栏)
  • tool_callwrite/edit/bash/read/grep/find/ls等可追踪工具前排队背诵(每叶子一次);同时用词边界正则检测危险 bash 命令(rm -rfsudochmod 777git push --force/--mirrorgit reset --hardgit clean -fd、fork bomb、dd写裸盘等)并弹出警告
  • tool_resultwrite/edit之后发送"更新 progress.md,阶段完成则更新 task_plan.md 状态"的写后提醒
  • agent_end:计划未完成时自动继续(上限 3 次,AUTO_CONTINUE_LIMIT = 3),追加/plan-goal设置的目标;provider 报错或用户中止的回合不计入次数(防止向故障 provider 重复轰炸)
  • session_before_compact:压缩发生前提醒刷新progress.mdtask_plan.md,parity 模式下输出压缩前提醒并附Plan-SHA256

规划证明(Attestation)

扩展内置计划证明守卫:/plan-attesttask_plan.md以 SHA-256 锁定(scoped 计划写入.planning/<id>/.attestation,root 计划写入.plan-attestation)。每次注入前 attestation.ts 会重算计划文件哈希并与期望值比对:

  • 期望哈希缺失或无法读取 → 视为tampered,阻止注入
  • 实际哈希与期望不符 → 输出[PLAN TAMPERED — injection blocked]、期望/实际哈希与重新批准指引

/plan-execute在批准阶段同样先做此校验,被篡改的计划无法获得批准。

排查指南

  1. 确认包已安装
    pi list
  2. 重载运行时
    /reload
  3. 检查 skill 与扩展路径
    • skill:.pi/skills/planning-with-files/
    • extension:extensions/planning-with-files/index.ts(入口将运行时委托给runtime.ts
  4. 若计划注入被阻止,先查看证明状态:
    /plan-attest --show

    然后对有意修改过的计划重新证明:

    /plan-attest

扩展源码结构参考

Pi 扩展的 TypeScript 源码位于 .pi/skills/planning-with-files/extensions/planning-with-files/,包内package.json声明对@earendil-works/pi-coding-agent的 peer 依赖:

文件职责
index.ts扩展入口,导出默认插件函数
runtime.ts八类生命周期事件处理器、五个命令注册、模式解析、计划注入/背诵/提醒构造
plan.ts计划路径解析(anchor 锚定、slug 校验、包含性检查、会话隔离)与阶段状态统计
attestation.tsSHA-256 证明校验
constants.ts围栏标记、固定提醒文案、自动继续上限、loop 默认参数

扩展自带 Vitest 测试套件(__tests__/下的runtime.test.tsattestation.test.tsplan-anchor.test.ts),可在扩展目录内通过npm test运行。此外,仓库根级测试 test_pi_extension_capabilities.py 与 test_pi_docs_hook_support.py 以行为契约方式验证扩展源码覆盖 Claude 对等 hooks、DeepSeek cache-safe 模式、session_start追赶仅使用--no-history(不读取会话历史)、自动继续上限为 3、plan-execute命令已注册、篡改阻止消息存在以及计划解析保留PLAN_ID/.active_plan/最新目录三级回退。

与上下文丢失对抗的完整机制

结合 README.md 中描述的通用机制,Pi 路径上的完整防护如下:

  • /clear与会话崩溃:计划文件在磁盘上,session_start事件通过session-catchup.py --no-history做纯文件追赶(自动恢复只读项目规划文件,不读取宿主会话存储),下一轮before_agent_start即把当前阶段重新注入
  • 上下文压缩session_before_compact在压缩完成前刷新进度提醒,并打印压缩时的Plan-SHA256
  • 目标漂移:每轮重新注入计划头,配合cache-safe模式的 KV-cache 稳定前缀
  • 过早宣告完成agent_end自动继续守卫按需追加"更新 progress.md、读取 task_plan.md、继续剩余阶段"的消息(上限 3 次)
  • 计划被静默改写:SHA-256 证明在注入与批准两个环节双重拦截篡改
  • 危险命令:词边界正则对rm -rf、强制 push 等破坏性操作在tool_call阶段给出"先审查 task_plan.md 当前阶段再批准"的警告

这套机制的目标与 README 的定位一致:让计划"存活"在磁盘上,在/clear、压缩或崩溃之后,Agent 能从当前阶段继续,而不是重新描述任务、重新发现已完成的工作。

【免费下载链接】planning-with-filesPersistent file-based planning for AI coding agents and long-running tasks. Crash-proof markdown plans, session recovery after /clear and compaction, per-turn re-injection against context rot, deterministic completion gate. Manus-style. Install from npm, the Claude Code plugin marketplace, or npx skills. Codex, Cursor, OpenCode, 60+ agents.项目地址: https://gitcode.com/GitHub_Trending/pl/planning-with-files

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 3:55:43

为 SerenityOS 启用 libtool 共享库支持:libjpeg 移植补丁深度解析

为 SerenityOS 启用 libtool 共享库支持&#xff1a;libjpeg 移植补丁深度解析 【免费下载链接】serenity The Serenity Operating System &#x1f41e; 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文围绕 SerenityOS 软件移植体系&#xff0…

作者头像 李华
网站建设 2026/9/12 3:55:08

superpowers技能包:让Codex CLI从问答助手变自动化编程代理

最近AI编程圈子里有个词出现频率特别高&#xff1a;superpowers。如果你平时用Codex CLI、Claude这类终端AI编程工具&#xff0c;大概率已经在GitHub、X或者一些技术社区里刷到过它。我花了一周时间把它完整跑通&#xff0c;也踩了不少文档里没写明白的坑&#xff0c;这篇就把整…

作者头像 李华
网站建设 2026/9/12 3:54:27

纯C OCR库lw.PPOCR.C:Java生产环境零侵入OCR集成方案

1. 项目概述&#xff1a;为什么一个纯 C 的 OCR 库要专门“补齐 Java 生态”&#xff1f;“纯 C OCR 又补齐 Java 生态了&#xff01;lw.PPOCR.C v0.1.0-preview.7 发布”——这个标题乍看有点矛盾&#xff1a;C 是底层、静态、跨平台的代表&#xff0c;Java 是虚拟机、生态丰富…

作者头像 李华