Community编程与开发github.com

EvolveHQ/docflow

在一个文档驱动的仓库中,对计划/待办队列运行有界的工作波,利用可用的并行代理或顺序执行。设定宽度、预算和监督;隔离工作并收集验证结果。用于“生成一波代理”、“并行运行队列”、“分散工作”或“代理波”,不用于编写决策或排队新项。

docflow 是什么?

这是一个用于文档驱动仓库的AI代理工作波执行工具。它通过读取仓库的入口点、约定、队列和自主提示,首先评估主机的执行能力(包括是否支持委托、隔离检出、并行运行、是否已有编排设施),然后选择最高的执行等级(编排设施、普通子代理或顺序执行)。用户需要提供波宽度、预算(项或波数)和可选的软小时限制,以及监督模式(每波检查点或连续模式)。在执行前,它会收集仓库的远程信息并检查队列中每个项的状态,将项分类为不可验证、已交付、已合并未交付、已停止、活跃、过时或符合条件。对于符合条件的项,它会为每个代理生成一个规范的执行简报,包括打开与定向、声明、实现、验证与提交、按配置文件集成以及停止与报告步骤。执行后,它会收集每个项的结果(已交付、就绪、失败、阻塞、已停止、未知)并生成波摘要。支持多个平台(包括直接集成、PR集成和单独工作树模式),并允许用户通过明确参数或交互式选择来指定执行规范。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/EvolveHQ/docflow/tree/HEAD/plugins/docflow/skills/agent-wave

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

agent-wave

使用此主机实际暴露的能力运行一批已接受的队列项。预算计数项或波。可选的小时限制会停止新波,但不会停止正在运行的项。长期运行的自动化使用主机的调度功能(参见 README);此会话不保证自身持续存在。

前置条件和主机能力

在询问参数之前,读取仓库的入口点、约定、队列和自主提示。将所有工件路径(包括 _agent/)解析为记录在案的根目录。需要一个真实的门及其所遍历的队列。

记录模式执行方式
单写入者在每个请求的宽度上停止并引导操作员至顺序自主提示。
共享检出,直接集成在该检出中一次一个执行器,使用项状态和锁定行。无需声明分支或集成工作树。
共享检出,PR 集成在声明前停止;需要单独的工作树用于 PR 波。
单独工作树每个执行器使用自己的工作树;集成遵循记录的模型。

获取/修剪记录的远程并要求其集成分支。打印获取的基础 SHA。比较本地集成引用:在继续前报告未推送的提交或分歧,绝不能静默丢弃它们。落后且干净的检出可以在安全快进时进行快进;否则保持原样。波的状态和探测来自获取的基础,而非操作员检出中的未提交文件。如果远程队列为空但本地队列不同,请解释差异。

推导主机是否能够委托、隔离检出、并发运行、使用操作员已启用的编排设施,并要求结构化结果。选择最高可用等级:

  1. 已启用编排设施:仅为此波进行一次扇出。将波循环、时钟检查和问题保留在编排器中。
  2. 普通子代理:如果可用则并行,否则顺序执行。仅当主机的工作树隔离的起始头部等于声明的基础时才使用;否则在每个工作树中显式创建该基础。
  3. 编排器一次执行一个项,在其自己的工作树或共享检出中,按记录模式允许的方式。

报告 执行:等级 N — 原因。操作员可以降低此选择;绝不能将其提高到超出观察到的能力或寻求启用。提及某个设施的技能不是操作员选择。在所有等级上使用相同的规范简报。如果没有证明的并发上限,则使用一。

评估和声明

重用已给出的适用答案,包括深度;默认值绝不替换显式选择。完整提供的规范无需重复选择器或确认。仅针对缺失或冲突的选择提问;单独记录的首选项本身不是当前执行权限。否则一次问一个问题,并附上推荐答案和原因,如果可用则使用结构化选择器。当深度未解决时,提供显式(默认)、引导(预算/监督)或完整深度,并预选记录的深度。尊重 defaults-from-here 或 go-deeper。

  1. 请求的宽度:推荐 min(符合条件的队列深度, 3, 主机上限)。
  2. 预算:项或波数;推荐一波。可选择软小时限制。
  3. 监督:每波检查点(推荐)或连续。
  4. 集成:使用仓库配置文件,除非显式覆盖。直接集成在记录的并发护栏下是合法的;其集成是串行的。覆盖不能使不支持的模式有效。

在声明和确认规范后执行(显式调用参数已经构成确认)。包括:

  • 波名称、日期、远程、集成分支和获取的基础 SHA。
  • 请求/有效宽度、等级/原因、主机上限和任何令牌限制。
  • 预算、监督和软限制;绝不能将令牌限制转换为项数。
  • 每个项的键、拥有决策、依赖项、声明变体、确切拥有的工件、保留的标识符及其序列以及继续标志。
  • 隔离和集成配置;实际授予的集成/合并操作。
  • 授权:“出席波:操作员在 确认了这些参数和此项;仅实现命名的项,绝不选择另一个。”

仅保留项将要创建的标识符,且为有限不相交的块。包括现有的活跃保留;继续的项保留其原始保留。绝不能将相同的决策或计划正文分配给两个写入者。INDEX 是派生的:执行器仅更改自己的行,集成重新生成整个表。耗尽的保留将停止项;不得抢夺槽位。

确认后,在单独工作树模式下,在基础处创建一个分离的集成/探测工作树,位于操作员树之外。仅在证明其干净且属于自己后重用剩余物。在那里使用跟踪文件和现有环境精确探测门。环境失败时,在分派前停止并报告命令、输出和退出;不要安装缺失的依赖项或暗示选择等级三修复了门。报告有效的钩子路径和签名设置的来源。

每一波前收集

再次获取/修剪;读取项状态、声明提示、工作树和 PR 状态。使用此优先级,在基础处和声明提示处解决每个项:

类别证据和操作
不可验证所需的远程/PR 证据不可用或矛盾:停止运行。
已交付集成分支上的完成条目,带有可到达的页脚提交或已确认合并的 PR。排除。
已合并但未交付工作/PR 已合并但项仍排队在基础上。排除并请求协调。
已停止基础或声明提示上的停止字段。排除,除非显式继续。
活跃未合并的远程声明或草案/就绪 PR,或当前共享检出所有者/锁定。排除,除非显式继续。
过时在确认远程引用消失后由分支支持的本地所有权。报告清理;不要重新分配不确定的剩余物。
符合条件已接受的拥有权、满足的依赖项、无声明/停止/过时冲突。按队列顺序选择。

就绪的 PR 可能已在其自己的分支上将其项移动到已完成。通过链接的 PR/历史解决该移动;它仍然是活跃的,不是孤立的。在压缩/变基使得源祖先不确定时检查已确认的 PR 合并。共享声明从项/锁定评估,而非远程声明缺失。分离的工作树既不是声明也不是过时。提前的本地声明引用意味着未推送的工作:返回未知并保留它。

在引导/完整深度下,仅对已有的活跃/已停止声明提供继续选项;默认排除它。显式列出原因以及如何继续。指定声明或项名称的调用是显式答案。继续不会创建新声明或保留;报告任何剩余的工作树。选择后,重新检查拥有的路径重叠和依赖项。

规范的执行者简报

将此完整简报与项规范一起传递,在所有等级上不变:

  1. 打开并定位。 验证基础祖先和命名的项。继续的检出必须等于获取的声明提示;链接的已就绪 PR 的完成移动是有效上下文。读取入口点和自主提示。不匹配则被阻塞,绝不授权处理其他项。
  2. 声明。 再次获取。对于新的单独工作树项,从基础创建 claim/<item-key>;提交 Claimed by + 操作者/日期/分支,并将实际的声明分支、波、保留和拥有的工件放在其第一个提交消息中。 在发布前,读回 git show -s --format=%B HEAD 和 git show HEAD:<owned-plan-path>。检查消息和 Claimed by 中的实际声明分支、波名称、保留(包括无)和确切的拥有路径。检查 git diff-tree --no-commit-id --name-only -r HEAD:此初始提交仅更改所拥有项的状态,没有实现输出。在获取前本地修复缺失元数据。后续提交无法修复有缺陷的初始声明。 使用 git check-ref-format --branch 验证键;绝不能使用文字占位符。使用 git push --porcelain --force-with-lease=refs/heads/claim/<item-key>: origin HEAD:refs/heads/claim/<item-key> 获取。要求退出码为零且 Porcelain 输出中该目标的 * 新引用结果。现有的引用,包括相同提示/最新结果,不授予所有权。等待该推送完成并在发出任何实现写入之前检查其成功的 new-ref 接收。不要将获取和实现批处理到同一工具调用中。 签名/推送失败将在实现前停止;保留未知结果。绝不能覆盖其他声明。获取后设置上游。 对于 PR 模式,立即打开/重用带有项、操作者、分支、保留、拥有路径和关闭块的草稿 PR;失败将阻止实现。 通过从现有远程提示分离继续,保留保留并更新第一个提交中的 Claimed by,然后推回该引用。 共享检出:在每次编辑前通过项状态和锁定行声明,包括新记录;绝不创建或切换声明分支。
  3. 实现。 遵循此一个项的自主提示。不接受/取代决策,不插入或重新编号现有队列项,不超出保留,不版本升级、不打标签、不发布或询问操作员。当无法遵守简报时返回阻塞。
  4. 验证并提交。 精确运行记录的门。修复已理解的实现失败并重新运行。如果门无法运行,不安装它自身未安装的任何东西:记录确切错误到 Blockers,在授权内提交/推送可恢复的工作并返回已阻塞,绝不返回已验证或已交付。遵循签名、Rationale 和门完整性规则。
  5. 按配置文件集成。 单独工作树直接集成:推送已验证的声明并返回就绪;编排器调用 ship-item 的集成模式。共享检出:在活动树中调用 ship-item。PR 模式:调用 ship-item 在实际 PR 上,包括变基、冲突检查、自身编号修复、两个门和完成提交。保持其正文/报告最新;就绪需要当前头部通过检查。仅当在授权内合并,并在确认落地后报告已交付。最多重试移动的基础两次;失败时保留未解决的声明。
  6. 停止并报告。 将日期/原因和三个报告标签放入队列项的 Stopped 字段,或如果已移动到那里则放入 PR 正文。仅在授权内提交/推送。返回以下字段和最终块。绝不创建协调快照或静默删除脏工作。

执行、集成和收集结果

使用派生的机制分派声明的波。在等级三和共享检出中,有效宽度为一。在等级三,声明开始一项:仅为当前项创建本地或远程声明分支并填写 Claimed by,绝不预先声明剩余批次。在发出下一项命令之前检查其门结果。后续的预先声明不是已在运行的执行器。在等级三,在开始下一个项之前完成并集成每个项。在推进循环之前,检查最后一个执行器的门结果。环境阻塞器立即终止整个波,即使下一个项是独立的且预算有空间。不启动下一个项或另一个集成。 此规则优先于连续监督和数值失败阈值。收集已经在运行的执行器而不启动新工作,然后报告系统阻塞器。保留它们的可恢复声明。成功的基础探测不会覆盖实现后的环境失败。

对于并行直接工作,按队列顺序使用分离的集成工作树为就绪声明调用 ship-item 的集成模式。集成机制在 ship-item 中,不在本过程的第二个程序中。PR 主机序列化授权的 PR 合并。

将每个返回规范化为:项键;结果(已交付、就绪、失败、阻塞、已停止、未知);声明/实际分支;集成 SHA 或 PR;使用/重新编号的标识符;阻塞器;冲突文件;最终块逐字。无返回表示未知。结果与 Overall 的词汇不同。对于等待集成就绪的声明,写入 Outcome: ready 和 Overall: partially verified;就绪和已交付永远不是 Overall 值。报告每个项和波摘要,包含状态概览;任何未知项将波上限设为部分验证。包括排除/撤回的声明、有效宽度、等级、门结果、钩子/签名来源和剩余工作。

在最终响应中,为每个项保留一个状态概览块,然后为波保留一个单独的块。每个都有 This run、Overall 和 Yet to do。每个项的结果表可以伴随这些块,但绝不替换它们,包括在顺序等级。在返回前检查它们的数量。将项键或“Wave”放在其块上方的单独标题中。保持块标题精确为 Status at a glance,无项后缀或波前缀。将 Wave 放在其自己的作用域标题中,就像对待项一样。例如:

## Item <key>
### Status at a glance
- **This run:** <observed actions and gate output/exit>
- **Overall:** <allowed vocabulary>
- **Yet to do:** <remaining work or None>

检查点要求在另一波之前提问。连续模式从 git 重新收集并在已确认的预算内继续。在首次分派和每波后读取 shell 时钟;如果不可用则将软限制报告为未强制。停止在超出限制后启动新波;绝不切断正在进行的项。

停止和清理

显式的主机/工具权限拒绝会停止处理。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

EvolveHQ/docflow

Assess and add a CONVENTION (a reusable rule, practice, or naming/process standard) to a documentation-led repo — decides FIRST whether it is worth codifying at all, then routes it to the right home (AGENTS.md hard rule, CONVENTIONS.md guidance, GLOSSARY term, or to /new-adr if it is really a one-off decision). Pushes back on premature or duplicate conventions. Use when the user says "add a convention", "make this a rule", "document this practice", "we should always X", or invokes /add-convention. NOT for recording a single architectural/product decision (use /new-adr) and NOT for queueing work (use /new-plan).

EvolveHQ/docflow

Scaffold or retrofit documentation-led conventions (AGENTS.md, CLAUDE.md, CONVENTIONS.md, ADR catalogue, plan/ queue, _agent/ coordination) into a repo. Use when the user asks to "set up conventions", "bootstrap ADRs", "scaffold the documentation-led layout", or "add AGENTS.md and a plan queue". Works on fresh repos and existing ones — preserves existing content and merges rather than overwrites. Opens with an express / guided / full depth choice, so a quick conservative setup needs almost no questions.

EvolveHQ/docflow

Decompose a problem, feature, or goal into candidate ADRs and plan items for a documentation-led repo — one decision per ADR, dependency edges, suggested ordering. Proposes drafts for review and writes nothing until approved. Use when the user says "brainstorm ADRs", "break this down into decisions", "what ADRs do we need for X", "plan out the work", or invokes /brainstorm.

相关技能