news 2026/10/9 5:03:33

Trellis 中断任务恢复实战:EcoPaste 仓库 Continue Current Task 命令解析与路由指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Trellis 中断任务恢复实战:EcoPaste 仓库 Continue Current Task 命令解析与路由指南
  • 桌面应用
  • 开发工具

【免费下载链接】EcoPaste

🎉跨平台的剪贴板管理工具 | Cross-platform clipboard management tool

项目地址:https://gitcode.com/gh_mirrors/ec/EcoPaste
点击查看免费下载

本指南面向在 EcoPaste 这类接入 Trellis 工作流的仓库中开发/协作的工程师与 AI Agent,完整解析.cursor/commands/trellis-continue.md这条"继续当前任务"命令的四个执行步骤、状态路由决策表与阶段规则,并结合.trellis/目录下的脚本源码(get_context.py、workflow_phase.py)讲清底层机制。读完你将掌握:如何一键加载会话上下文、如何根据task.json.status与规划产物(prd.md / design.md / implement.md / jsonl)定位正确的恢复步骤,以及如何在 Plan / Execute / Finish 三阶段间正确穿梭。

一、命令定位:为什么需要一条"继续"命令

AI 驱动的开发会话天然具有中断性——一次长任务可能跨越多个会话、多次终端窗口、甚至多个 Agent 平台(Claude Code、Cursor、OpenCode、Codex 等)。会话上下文会随聊天压缩丢失,而文件不会丢。Trellis 工作流的核心原则之一就是"持久化一切"(research、decisions、lessons 全部落盘),因此恢复的关键不在于"回忆上次聊了什么",而在于"读取仓库里已经写好的状态"。

.cursor/commands/trellis-continue.md正是为此设计的入口命令。它的定位在文档第一段就写得很清楚:

Resume work on the current task — pick up at the right phase/step in.trellis/workflow.md.

它本身不承载完整流程,而是引导你回到 workflow.md(Trellis 流程的唯一权威定义),并在正确的 Phase / Step 上继续。命令全文围绕 4 个步骤展开:

  1. 加载当前上下文(Step 1)
  2. 加载阶段索引(Step 2)
  3. 判定自己处在哪个阶段(Step 3,含路由决策表)
  4. 加载具体步骤的详细指引(Step 4)

二、Step 1:加载当前会话上下文

恢复工作的第一步是弄清"现在是什么状态"。执行:

python3 ./.trellis/scripts/get_context.py

这条命令的输出由 session_context.py 生成,默认(text)模式下会依次给出:

输出区块内容用途
DEVELOPER当前开发者身份(来自.trellis/.developer)确认工作区归属
GIT STATUS当前分支、工作区是否干净、未提交变更列表判断上次是否遗留未提交代码
RECENT COMMITS最近 5 条提交(git log --oneline)回溯任务进展
CURRENT TASK当前活跃任务路径、来源(session source)、名称与status字段路由决策的第一依据
ACTIVE TASKS全部未归档任务树(含子任务进度)了解任务层级
JOURNAL FILE当前会话日志文件与行数(2000 行上限)判断会话记录是否接近轮转阈值
PATHSworkspace / tasks / spec 目录后续操作入口

从源码看,get_context.py是典型的 argparse 入口(见 get_context.py),支持四个输出模式:

python3 ./.trellis/scripts/get_context.py # 默认:完整会话上下文 python3 ./.trellis/scripts/get_context.py --mode record # 精简版:任务 + git + 最近提交 python3 ./.trellis/scripts/get_context.py --mode packages # 列出包与 spec 层级 python3 ./.trellis/scripts/get_context.py --mode phase # 阶段索引(Step 2 用)

命令文档中特别强调了一个设计意图:"get_context.pyshows the active task'sstatusfield… this commandreplaces the user needing to remember the Trellis flow; it does not itself approve implementation."——即该命令只负责"帮你想起流程",本身不构成实现授权,真正的实现仍然要等task.py start之后。

三、Step 2:加载阶段索引(Phase Index)

在拿到基本上下文后,加载流程总览:

python3 ./.trellis/scripts/get_context.py --mode phase

这会从 workflow.md 的## Phase Index小节中提取出三阶段的精简总览(不含各步骤详细正文),并保留"路由 + skill 映射"信息:

Phase 1: Plan → classify, get task-creation consent, then write planning artifacts Phase 2: Execute → implement only after task status is in_progress Phase 3: Finish → verify, update spec, commit, and wrap up
  • Phase 1(Plan):步骤 1.0 创建任务、1.1 需求探索(产出prd.md)、1.2 研究(可选)、1.3 配置上下文(jsonl 策划)、1.4 激活任务(review 后task.py start)、1.5 完成标准。核心纪律:先规划后代码,任务创建授权 ≠ 实现授权。
  • Phase 2(Execute):步骤 2.1 实现、2.2 质量检查、2.3 按需回滚。前提是任务状态已进入in_progress。
  • Phase 3(Finish):步骤 3.2 调试复盘(按需)、3.3 更新 spec([required])、3.4 批量提交([required])、3.5 收尾提醒。注意 3.1 已被合并进 2.2 与 3.4,编号刻意保持稳定以免破坏外部引用。

从 workflow_phase.py 的实现看,--mode phase不带--step时调用get_phase_index(),只截取## Phase Index到## Phase 1: Plan之间的内容,并剥离[workflow-state:STATUS]面包屑块(这些块由每轮的 hook 单独注入,不属于阶段索引输出)。

四、Step 3:核心——根据 status 与产物路由

这是整条命令的核心价值所在:不需要记 Trellis 流程,只需要读 status + 检查产物是否存在,即可定位下一步。文档给出的完整路由决策表如下:

条件路由结果
status=planning且无prd.md→1.1(加载trellis-brainstorm)
status=planning且仅有prd.md判断任务轻重:轻量任务可直接去1.4review;复杂任务回到1.1补充design.md+implement.md
status=planning且复杂任务产物齐全、但子代理 jsonl 未整理(仅种子_example行)→1.3(配置上下文)
status=planning且必需产物齐全、jsonl 已整理或处于 inline 模式→1.4(请求开始 review;只有用户确认后才运行task.py start)
status=in_progress且实现未开始→2.1
status=in_progress且实现完成但未检查→2.2
status=in_progress且检查通过→3.3(更新 spec)→3.4(提交)
status=completed(罕见,通常立即归档)走归档流程(archive flow)

4.1 路由背后的产物语义

要正确路由,必须理解各规划产物的含义(见 workflow.md 的Planning Artifacts小节):

  • prd.md—— 需求、约束与验收标准。不要把技术设计或执行清单写进去。
  • design.md—— 复杂任务的技术设计:边界、契约、数据流、取舍、兼容性、上线/回滚形态。
  • implement.md—— 复杂任务的执行计划:有序检查清单、验证命令、评审门禁、回滚点。
  • implement.jsonl/check.jsonl—— 子代理的 spec 与研究清单(每行一个{"file": "...", "reason": "..."}),不替代implement.md。

关键判断:轻量任务可以只有 PRD;复杂任务在task.py start之前必须同时具备prd.md、design.md、implement.md三个文件。在 EcoPaste 仓库的 tasks 归档目录 中可以看到两类实例:轻量修复任务(如06-30-fix-divider-deprecation、06-30-i18n-window-lifecycle-name)只含task.json + prd.md + 两个 jsonl;而复杂任务07-03-onboarding-admin-launch则同时包含design.md、implement.md,正好印证了这一产物矩阵。

任务目录统一遵循{MM-DD-name}/命名,内部结构为:

.trellis/tasks/{MM-DD-name}/ ├── task.json # 元数据:status / assignee / priority / children / hooks ├── prd.md # 需求与验收标准 ├── design.md # (复杂任务)技术设计 ├── implement.md # (复杂任务)执行计划 ├── research/ # (可选)研究成果落盘 ├── implement.jsonl # 实现子代理的上下文清单 └── check.jsonl # 检查子代理的上下文清单

4.2 三条阶段规则

文档在路由表后给出了三条必须遵守的阶段规则(与 workflow.md 的Rules小节一致):

  1. 阶段内按序执行——[required]步骤不得跳过;
  2. [once]步骤已产出即视为完成——不要重复执行;例如已有prd.md就说明 1.1 的部分工作已完成,轻量任务可以凭prd.md直接进入 1.4;
  3. 允许回退到更早阶段——例如执行阶段发现prd.md有缺陷,可回到 Phase 1 修正后再重新进入 Execute。

4.3 路由表隐含的关键纪律

  • planning + 产物齐全 ≠ 可以直接实现:必须进入 1.4,先请求用户发起 review,只有用户确认后才运行task.py start(start会把 status 翻转为in_progress,面包屑随之切换)。
  • 子代理平台 vs inline 平台:在支持子代理分发的平台(Claude Code、Cursor、OpenCode、Codex sub-agent 等),implement.jsonl与check.jsonl都必须至少有一条真实条目才算"可启动"(种子_example行不计);而 Codex 的 inline 模式(codex.dispatch_mode: inline,见 config.yaml)跳过 jsonl 策划,Phase 2 直接由trellis-before-devskill 读取产物。
  • completed状态在常规流程中基本不会出现:因为task.py archive在同一个调用里既把 status 写成completed又把任务目录移入archive/,活动任务解析器随即丢失指针——从源码注释看,该状态块目前处于"DEAD"状态,保留是为将来显式的in_progress → completed迁移做准备。

五、Step 4:加载具体步骤的详细指引

一旦确定了要恢复的步骤编号(如 1.1 / 2.1 / 3.3),加载该步骤的完整正文:

python3 ./.trellis/scripts/get_context.py --mode phase --step <X.X> --platform cursor

其中:

  • --step <X.X>指定步骤编号(例如--step 1.1、--step 2.2);
  • --platform cursor指定当前平台,用于过滤掉平台专属段落,只保留适用于你的指令。

从 workflow_phase.py 的实现看,get_step()通过正则^####\s+(\d+\.\d+)\b匹配workflow.md中的#### X.X标题,正文一直截取到下一个####/##标题或---分隔线为止。例如--step 1.1会返回 1.1 需求探索步骤的完整正文(包含trellis-brainstormskill 的使用指引)。

5.1 平台过滤的底层原理

workflow.md中大量使用了成对的平台标记块:

[Claude Code, Cursor, OpenCode, codex-sub-agent, Kiro, Gemini, ...] (子代理分发平台的专属内容) [/Claude Code, Cursor, OpenCode, ...]

filter_platform() 会:

  1. 用^\[(/?)([A-Za-z][^\[\]]*)\]\s*$识别开启/闭合标记;
  2. 对标记中的平台名做大小写不敏感 + 去分隔符的模糊匹配(cursor、Cursor、claude-code、Claude Code都能对上);
  3. 丢弃标记行本身,只保留"标记块外的通用内容 + 包含当前平台的块内内容";
  4. 折叠因删块而产生的连续空行。

还有一个值得注意的细节:--platform codex会被 resolve_effective_platform() 映射为codex-inline(默认)或codex-sub-agent(取决于 config 中codex.dispatch_mode),原因是 Codex 子代理运行在fork_turns="none"隔离中、无法继承父会话的任务上下文,因此默认走 inline 模式让主 Agent 直接改代码。

六、命令的边界与配套流程

trellis-continue.md在结尾的Reference小节明确声明了自己的边界:

Full workflow and detailed phase steps live in.trellis/workflow.md. This command is only an entry point — the canonical guidance is there.

也就是说,这条命令只是一个入口,权威指南始终是 workflow.md。与之配套的收尾命令是 trellis-finish-work.md:它负责在任务提交(Phase 3.4)之后归档任务(task.py archive)并记录会话日志(add_session.py --title/--commit/--summary),最终形成<work commits>→chore(task): archive ...→chore: record journal的提交顺序。两者配合即可覆盖"中断恢复 → 继续执行 → 收尾归档"的完整闭环。

七、完整实战:一次中断恢复的端到端走查

将四个步骤串联起来,一次典型的中断恢复流程是:

# 1. 恢复现场:确认当前任务、git 状态、最近提交 python3 ./.trellis/scripts/get_context.py # 2. 若需要,查看三阶段总览与路由映射 python3 ./.trellis/scripts/get_context.py --mode phase # 3. 依据 task.json 的 status 与产物存在性完成路由: # - planning + 无 prd.md → 加载 trellis-brainstorm,回到 1.1 # - planning + 仅 prd.md → 轻量走 1.4;复杂补 design.md + implement.md 再走 1.4 # - planning + 产物齐全 + jsonl 未整理 → 1.3 策划 implement.jsonl / check.jsonl # - planning + 产物齐全 + jsonl 已整理 → 1.4 请求 review,确认后 task.py start # - in_progress + 未实现 → 2.1 # - in_progress + 已实现未检查 → 2.2 # - in_progress + 检查通过 → 3.3 更新 spec → 3.4 提交 # - completed → 归档流程 # 4. 加载目标步骤的详细指引(按当前平台过滤) python3 ./.trellis/scripts/get_context.py --mode phase --step 2.1 --platform cursor

配合任务生命周期命令(见 workflow.md 的Task System小节),你还可以在恢复过程中随时核对活跃任务:

python3 ./.trellis/scripts/task.py current --source # 显示当前任务与来源 python3 ./.trellis/scripts/task.py list [--status <s>] # 列出任务(可按状态过滤) python3 ./.trellis/scripts/task.py validate <name> # 校验任务元数据

八、实践建议与注意事项

  1. 恢复会话先跑 Step 1,不要凭记忆。get_context.py输出的CURRENT TASK区块里的status字段 +prd.md等产物的存在性,是路由的唯一合法依据。
  2. 规划产物矩阵要分清:轻量任务 PRD-only 是合法状态;复杂任务缺design.md/implement.md则代表规划未完成,不得task.py start。
  3. 尊重[required]/[once]语义:[required]步骤不可跳过;[once]步骤有产出即跳过,不要重复劳动。
  4. 跨阶段回退是正常流程:Execute 阶段发现问题可以回到 Plan 修正prd.md后重新进入,这不是流程失败,而是"规划必须持久化到产物"原则的体现。
  5. EcoPaste 仓库的验证基线(见 spec/index.md):前端pnpm lint+pnpm tsc,Rust 侧cd src-tauri && cargo fmt && cargo clippy -- -D warnings && cargo test;在 Phase 2.2 质量检查与 Phase 3.4 提交前,务必把这两条基线跑绿。
  • 桌面应用
  • 开发工具

【免费下载链接】EcoPaste

🎉跨平台的剪贴板管理工具 | Cross-platform clipboard management tool

项目地址:https://gitcode.com/gh_mirrors/ec/EcoPaste
点击查看免费下载
上一篇:20K Vocab Builder 提示词拆解:3 步复刻 COCA 20K 词汇学习 GPT
下一篇:IPXWrapper终极指南:3步让经典游戏在Windows 11上重获联机能力

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

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

基于UDP的聊天程序课程设计:C/S架构与套接字编程实战

简介&#xff1a;这份计算机网络课程设计报告面向高校计算机相关专业学生&#xff0c;聚焦基于UDP协议的局域网聊天程序开发&#xff0c;帮助读者完成从协议原理到编码实现的完整课程设计任务。报告以Visual C 6.0为开发环境&#xff0c;采用C/S模式&#xff0c;系统讲解UDP无连…

作者头像 李华
网站建设 2026/10/9 5:00:05

RPCS3 PS3 模拟器:从下载到画面稳定的 20 分钟路线

RPCS3 PS3 模拟器&#xff1a;从下载到画面稳定的 20 分钟路线 【免费下载链接】rpcs3 PlayStation 3 emulator and debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 RPCS3 是免费开源的 PS3 模拟器&#xff0c;让你在电脑上玩 PS3 游戏&#xff0c;不…

作者头像 李华
网站建设 2026/10/9 4:59:09

CPU内部工作原理:数据通路、控制器与流水线全解析

1. 一块CPU芯片里到底装了什么&#xff1a;第五章的全局脉络我记得自己当年学“计算机组成原理”第五章时&#xff0c;最大的困惑就是&#xff1a;明明叫“中央处理器”&#xff0c;为什么教材里一会儿讲电路连线、一会儿讲微指令、一会儿又讲中断&#xff0c;感觉像是三四门课…

作者头像 李华
网站建设 2026/10/9 4:58:45

C#配置文件统一管理:用PowerConfig告别杂乱配置读写与维护噩梦

接手一个维护了三年的老项目是什么体验&#xff1f;别的先不说&#xff0c;光是配置文件那一坨代码就够让人头大的。App.config里躺着十几个自造的键值对&#xff0c;另一个模块用JSON反序列化&#xff0c;还有一个模块干脆自己写了个INI解析器&#xff0c;而且每个模块读配置的…

作者头像 李华
网站建设 2026/10/9 4:56:25

肿瘤识别项目实战:四种机器学习算法调参与数据预处理全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华