Workflows
Workflow 为需要“先产出文档,再进入下一阶段”的任务提供持久状态。它由 Built-in Command 启动,与普通 Prompt Command 分离。
当前定义三种 Kind:
| Kind | 目标 |
|---|---|
plan |
生成可审查的实施计划 |
spec |
生成技术规格 |
goal |
定义可持续追踪的目标 |
Workflow Record
标题链接每条 Record 包含:
- ID;
- Session ID;
- Kind;
- Status;
- Goal;
- 可选 Title;
- 最终 Content;
- Artifact Path,或 Spec 的 Artifact Root 与三份文档路径;
- Revision;
- 创建和更新时间。
同一 Session 启动新 Workflow 时,已有 Active、Ready 或 Approved Record 会先标记为 Closed。
状态
标题链接定义的状态包括:
active → ready → approved → completed └────────────→ closedactive:Agent 正在生成 Artifact。ready:Artifact 已完成,等待用户确认。approved:用户确认进入后续阶段。completed:已批准的 Spec 任务全部完成。closed:被新 Workflow 替代,或由用户主动退出。
Revision 每次状态或内容更新时递增。
Plan
标题链接Plan 是当前实现最完整的 Workflow:
/plan <goal>创建 Active Record。- Session 进入 Plan Mode。
- 每个模型 Step 应用只读 Workflow Policy。
- Agent 输出最终计划。
- 最终内容保存到 Markdown Artifact。
- Record 进入 Ready,Session 进入
plan_ready。 - 用户批准后进入 Approved。
- Session 回到 Execute Mode,并自动提交实施请求。
Active 或 Ready 阶段都可以从活动栏退出。退出会停止仍在生成的回合,并恢复进入 Plan 前的 Session Mode;已生成的 Artifact 保留。
Plan Tool Policy
标题链接Plan Mode 只允许:
readweb_searchweb_fetchskill_searchskill_loadskill_read_resourcerule_loadask_user它不允许文件修改、Shell 或 SubAgent。这个限制由 Runtime 每个 Step 重新解析, 不是只写在 Prompt 中。
批准后的实施 Turn 使用普通 Execute Mode,不再创建第二份 Plan。
Spec
标题链接Spec 面向范围较大、需要先对齐需求、任务和验收标准的工作:
/spec <需求>创建 Active Record,并进入只读生成阶段。- Agent 可以读取项目、搜索资料和向用户提问,但不能修改源码或执行 Shell。
- Agent 通过内核提供的
workflow_submit_spec工具一次提交三份完整文档:spec.md、tasks.md和checklist.md。 - Kernel Service 写入文档后将 Record 切换为 Ready,等待用户确认。
- Ready 阶段仍保持只读;用户可以直接编辑文档,或通过对话要求 Agent 修订。
- 用户点击“确认并执行”后,Kernel Service 从
tasks.md初始化会话任务并恢复 普通执行权限。 - Agent 执行时通过
update_tasks更新任务状态,Kernel Service 同步更新tasks.md的复选框。
Active 或 Ready 阶段都可以从活动栏退出。退出后只读约束立即结束,已经生成的文档保留。
Spec Artifact 位于:
<project>/.foya/specs/<task-name>/├── spec.md├── tasks.md└── checklist.md/spec 只对已绑定项目的 Session 开放。
Goal
标题链接/goal 创建持久目标并提交专用 User Prompt。目前 Goal 仍使用单文件 Artifact,
不提供 Spec 的三文档审阅界面。
Artifact
标题链接Workflow Artifact 根据 Kind 保存:
<data-dir>/plans/<workflow-id>.md<data-dir>/goals/<workflow-id>.mdProject Session 则保存在:
<project>/.foya/plans/<project>/.foya/specs/<task-name>/<project>/.foya/goals/文件包含 Kind、Status、Goal Frontmatter 和正文。写入使用临时文件后 Rename。
Record 索引保存在:
<data-dir>/workflows.json事件
标题链接Workflow 创建、完成和批准时会产生 workflow_updated 事件。客户端以 Record
Revision 更新界面。
Workflow Event 属于 Session 事件流,但 Artifact 文件是面向用户的持久产物。
与 Command 的关系
标题链接Workflow 不能直接由模型自行创建。入口是 Built-in Command:
/plan/spec/goalCommand 负责解析用户参数和建立 Record,Workflow Manager 负责状态与 Artifact, Agent Engine 负责执行受约束 Turn。
与 Session Mode 的关系
标题链接Session Mode 只在 Plan 流程中改变:
- Execute → Plan;
- Plan → Plan Ready;
- 批准或退出后 Plan Ready → Execute。
Workflow Status 是持久业务状态,Session Mode 是当前运行策略。两者会通过 Kernel Service 一起更新和广播。
当前边界
标题链接- 一个 Session 启动新 Workflow 时,会关闭此前仍处于 Active、Ready 或 Approved 状态的 Workflow。
- Spec 执行进度以
tasks.md和会话任务列表为准;验收项由 Agent 在实际验证后更新。 - Workflow Artifact 和 JSON 索引不在同一事务中。
- Workflow Policy 不能扩大系统权限,只能缩小 Tool 集合。