Planning-with-Files:为AI代理提供持久化任务与恢复能力
面向 AI 代理的文件式持久化规划技能,强调在上下文丢失与崩溃时保留任务与进度,并通过 SKILL.md 广泛集成和可选完成闸门支持长时运行场景。
GitHub OthmanAdi/planning-with-files 更新 2026-07-06 分支 main 星标 24.7K 分叉 2.1K
文件式规划 AI 代理技能 任务持久化 SKILL.md 标准 跨平台兼容 Mixed/Unknown

💡 深度解析

5
项目的审计与可回溯能力是如何实现的?如何利用 JSONL ledger 与 attestation 做合规性检查?

核心分析

核心功能:项目通过三条主线实现审计与可回溯:

  1. 不可变 JSONL 运行账本:所有关键事件追加写入 JSONL,形成时间序列事件流;
  2. 人可读计划文件task_plan.md/progress.md 提供上下文与阶段定义,便于人工核查;
  3. 注证(attestation)与 SHA 缓存:在计划注入阶段校验签名/哈希,拒绝未注证的输入,防止篡改源头。

技术细节与合规使用方法

  • 事件建模:为每类关键事件(phase-start, phase-complete, action-result, external-confirmation)统一 JSON 字段(timestamp, actor, phase, status, sha/signature, metadata),保证后续可解析与索引。
  • 不可变性:使用 append-only 写入策略,并在外部备份或版本控制中保留 ledger 文件以防删改。
  • 摘要与映射:运行 ledger-summary / phase-status 将原始事件聚合为阶段完成视图,并把每个 JSONL 记录映射回 task_plan.md 的对应 ### Phase
  • attestation 流程:在注入计划时校验 SHA/签名(或从信任源拉取模板);启用 “reject-unattested” 策略以确保只有被验证的计划能生效。

操作建议(合规性)

  1. 默认开启 attestation 并把签名/哈希管理纳入 CI/CD 签发流程;保证每个计划都有可验证的来源。
  2. 标准化事件格式 并将 JSONL 日志流导入 ELK/Datadog/时间序列存储以支持索引与审计查询。
  3. 长期保存 ledger 与 plan 文件(符合保留策略),并保证有只读备份用于取证。
  4. 建立映射文档:定义如何把 ledger 事件映射到 task_plan.md 的 phases 与外部合规条款。

重要提示:attestation 提升安全性但会在集成早期导致注入失败——请按步骤配置并在受控环境中测试。

总结:JSONL ledger + Markdown 平面 + attestation 提供了可读+可解析+可验证的三重审计轨道,适合需要回溯与合规检查的编码代理场景。

90.0%
Gated(阻断门)机制如何工作?在哪些场景应该使用 gated 而非 autonomous?

核心分析

问题核心:gated(阻断门)是一个在 Stop-hook 执行点上的安全检查层,确保在计划定义的关键阶段未完成时不会让 agent 提前终止。它是为长期、多阶段或包含人工/外部确认点的任务而设计的。

技术实现概述

  • 检查点位置:在 agent 的 Stop-hook(或等效生命周期钩子)执行时触发 check-complete.sh/.ps1 脚本。
  • 判断依据:脚本会读取 task_plan.md 中的 ### Phase headings、进度文件 progress.mdJSONL ledger(通过 ledger-summary / phase-status)来判断每个阶段是否已完成或是否达到 block cap。
  • 阻断行为:若未满足完成条件,Stop 会被阻断(agent 保持运行或等待人工干预),直到条件满足或超时/手动强制终止。

何时使用 gated

  1. 强一致性或不可回滚的操作:例如生产发布、数据库迁移、多阶段 deployment,必须确保所有步骤按序完成。
  2. 包含人工审批/确认点:需要人为检查结果并更新 progress.md 或 ledger 才能继续。
  3. 多代理编排且需要里程碑对齐:当多个 agent 的输出必须同步并被审计后才能结束时。

何时使用 autonomous

  • 短期、可回滚的自动任务:例如轻量的代码格式化、一次性脚本、或不影响外部系统的任务,autonomous 可减少阻塞与人工干预。

实用建议

  1. 在启用 gated 前,定义清晰的 ### Phase 与完成标准,并用测试用例验证 check-complete 能正确识别已完成状态。
  2. 设置合理的 block cap 与超时策略;并提供明确的手动强制终止流程。
  3. 使用 ledger-summary 与监控告警来发现长时间阻塞。

重要提示:gated 带来强保证也带来操作负担;若你的完成条件难以量化或外部事件频繁延迟,请考虑先用 autonomous 或在 gated 上加更多的可观测性。

总结:gated 用于关键且不可回滚的长期流程,autonomous 适用于轻量自动化。选择应基于对失败后果与可观测性的评估。

89.0%
为什么选择文件为中心(Markdown + JSONL)而不是集群服务或数据库?这种架构的优势和取舍是什么?

核心分析

项目定位:planning-with-files 通过把计划与进度写成 Markdown 和 JSONL,把代理状态从易失上下文迁移到文件系统,以实现跨运行时的低依赖持久化。这是一个有意识的架构选择,旨在最大化可移植性与审计可读性,而非替代传统的集中服务或数据库。

技术特点与优势

  • 可移植与低运维:不需要部署数据库或额外服务,易于在本地、IDE 或最小化容器中运行,降低集成门槛。
  • 可审计性:Markdown 对人友好,JSONL 提供不可变事件流,便于人工与自动化审计。
  • 跨运行时一致性:通过 SKILL.md 钩子实现一致行为,易于在多种 agent 上重用同一套脚本与模板。

关键取舍(限制)

  1. 并发与竞态:多 agent 并发写入同一目录会产生冲突;项目并未内建分布式锁或冲突合并逻辑。
  2. 跨主机同步:缺少内置的跨主机同步机制;若需多主机协作,需要外部同步(如 git sync、NFS、或集中存储)。
  3. 强一致性与高吞吐:对于需要事务或高并发事件处理的场景,文件系统模型不如数据库和队列系统健壮。

实用建议

  1. 对于单机或 IDE/插件场景,优先采用原生文件化方案以获得快速集成与审计能力。
  2. 在多代理或多主机环境中,引入外部同步层(git、集中化存储或锁服务)来避免竞态。
  3. 若需要实时一致性或高吞吐,考虑将 planning-with-files 作为“持久化/审计层”,并在前端引入集中式队列/事务层处理实时协调。

重要提示:文件化并不等于弱可靠——它更强调“可理解的持久化”。在设计跨主机使用时,必须显式补充同步与锁策略。

总结:文件为中心的选择权衡了可移植性、低运维和可审计性,对编码代理场景非常契合;但并发与分布式约束需要外部机制来弥补。

88.0%
如何在多 agent 场景下避免并发写入造成的竞态与数据丢失?有哪些具体的工程实践?

核心分析

问题核心:planning-with-files 本身不提供分布式锁或冲突合并机制,因此在多 agent 并发写入同一 plan 目录时容易发生竞态和覆盖,必须通过工程实践在部署层面解决这一问题。

具体工程实践

  1. Git 作为序列化层
    - 将 plan 目录放到 git 仓库,要求 agent 在写入前 pull、写入后 commit & push;使用分支/PR 流程或简单的 file-lock 文件来序列化修改。
    - 优点:易审计、历史记录天然;缺点:增加延迟,需处理冲突合并策略。

  2. 集中化存储 + 锁服务
    - 使用集中文件服务(S3 + DynamoDB lock / NFS + etcd locks)来获得全局锁与原子写操作。
    - 适合多个主机的生产部署。

  3. 应用层的乐观并发控制
    - 每次写入附带版本或哈希;写入前比较当前版本,冲突时拒绝并触发合并/重试逻辑。
    - 对 JSONL 的写入应保持 append-only 并尽可能做原子 append(避免读-改-写覆盖)。

  4. 增强 ledger 校验与回滚
    - 在写入后立即生成签名或 SHA,保存在 attestation 缓存中;若检测到冲突,通过 ledger 回滚或回放机制恢复一致状态。

  5. 平台兼容性测试
    - 在 Windows 环境上验证 realpath、短名(8.3)与文件编码,避免路径引起的注入静默失败(v3.2.0 的修复提示)。

实用建议

  1. 对于轻量场景优先用 git sync;对于高并发或多主机场景使用集中锁服务。
  2. 在设计时把 ledger 作为最终一致性的参考源:所有合并/回滚操作都应记录到 JSONL ledger 以保留审计轨迹。
  3. 将 attestation 与签名引入写入流程,保证冲突解决后产物仍可验证来源。

重要提示:不要单纯依赖文件系统权限来防止并发——那通常不可扩展。把并发控制作为架构级别的设计考虑。

总结:通过基础设施级的同步(git/锁服务)、应用层的版本检测与原子 append、以及 ledger+attestation 的冲突记录与回滚策略,可以可靠地在多 agent 场景中避免竞态与数据丢失。

88.0%
使用 planning-with-files 的学习曲线和常见配置陷阱有哪些?如何在生产环境中降低集成风险?

核心分析

问题核心:planning-with-files 的错误和集成失败大多出现在安装/配置与平台差异上,而非核心运行时缺陷。主要障碍包括 SKILL.md frontmatter 的 YAML 语法、Windows 路径/编码问题、gated 模式误配置、多 agent 并发写入竞争,以及 attestation 工作流未就绪导致注入被拒绝。

技术分析

  • YAML/frontmatter:v3.1.3 修复说明 SKILL.md frontmatter 的无效 YAML 会阻止 skill 加载;因此 frontmatter 必须严格遵守 YAML 语法并在安装时验证。
  • 平台差异:v3.2.0 说明 session-catchup.py 曾在 Windows 上静默失败,表明要对 Windows 路径(短名/8.3)与文件编码做显式处理。
  • gated 配置风险:若未正确定义 ### Phase headings 或 block cap,Stop-hook 可能误判“0/0 phases”或导致无限等待。
  • 并发写入:文件系统模型易受多 agent 同步问题影响,需外部锁或同步策略来避免覆盖或竞态。
  • attestation:默认拒绝未注证注入要求提前准备 SHA 缓存与签名流程,否则计划会被阻止注入。

实用建议(降低生产风险)

  1. 模板化与验证:使用项目提供的模板(如 task_plan_autonomous.md)并在 CI 中加入 SKILL.md frontmatter/YAML 校验脚本。
  2. 安装演练:在目标平台(包含 Windows)做一次完整安装与 session-catchup 恢复演练,确保路径/编码处理正确。
  3. gated 预演:在非关键环境开启 gated,通过人为触发阶段完成验证 ledger-summaryphase-status 是否反映正确。
  4. 并发策略:对多 agent 场景引入外部同步(git sync、集中存储、或文件锁服务),避免直接并发写入同目录。
  5. 逐步上线 attestation:先在受控环境配置 SHA 缓存与签名流程,再在生产环境启用拒绝未注证注入策略。

重要提示:不要在生产第一天就把 gated + reject-unattested 同时打开——先分步验证每个子系统。

总结:通过模板、CI 校验、平台专门测试和逐步开启 gate/attestation,可以把集成学习曲线和故障风险降到可接受范围。

87.0%

✨ 核心亮点

  • 将任务与进度以 Markdown 文件持久化,容忍上下文丢失与崩溃
  • 通过 SKILL.md 标准已集成 60+ 代理,社区扩展快速
  • 提供可选的完成闸门与自主模式,便于长时运行代理管理
  • 许可信息未明确公开,影响商用采纳与合规评估
  • 元数据存在矛盾(贡献者/提交/发布信息不一致),影响对维护健康的判断

🔧 工程化

  • 核心是基于任务文件(task_plan.md、findings.md、progress.md)的持久化技能,支持会话恢复与插件式安装。
  • 包含面向平台的修复与脚本(如 Windows 路径、完整性检测与模板安装问题修补)。

⚠️ 风险

  • 缺少明确许可与依赖声明,企业级采用前需法律与依赖审计。
  • 提供的数据指出贡献者与提交数为零但版本历史详尽,存在信息矛盾,可能导致维护活跃度评估错误。
  • 高度依赖代理生态与 SKILL.md 兼容性,若上游平台变更可能影响可用性。

👥 适合谁?

  • AI 代理开发者、工具链集成者与需要长期、可恢复任务执行的多代理编排团队。
  • 适合想在现有代理上加入持久化计划与审计记录的产品或研究团队。