EcoPaste 项目内 Trellis 任务生命周期深度定制指南:hooks 挂载、任务字段与活跃任务指针原理
桌面应用【免费下载链接】EcoPaste跨平台的剪贴板管理工具 | Cross-platform clipboard management tool项目地址https://gitcode.com/ayangweb/EcoPaste点击查看免费下载Trellis 是 EcoPaste 仓库中用于组织 AI 开发任务的工作流系统详见 .trellis/workflow.md 与 .trellis/scripts/task.py。任务生命周期涵盖任务的创建、启动、上下文配置、完成、归档、父子任务关系以及生命周期钩子。本文以.cursor/skills/trellis-meta/references/customize-local/change-task-lifecycle.md为核心骨架结合 EcoPaste 仓库内的.trellis/实际配置与 Python 脚本源码讲解如何为项目定制 Trellis 任务生命周期帮助读者掌握 hooks 配置、任务字段扩展与活跃任务指针机制的实现细节。任务生命周期的组成与默认定制目标Trellis 的任务生命周期包括以下阶段创建createtask.py create生成任务目录写入task.json默认statusplanning启动starttask.py start写入活跃任务指针并将status从planning翻转为in_progress上下文配置context通过implement.jsonl/check.jsonl为子代理注入规格与研究上下文完成finishtask.py finish清除活跃任务指针触发after_finishhooks归档archivetask.py archive将status置为completed并把任务目录移动到archive/{YYYY-MM}/触发after_archivehooks父子任务parent/child通过--parent、add-subtask/remove-subtask建立层级关系默认的定制目标集中在三个目录目标用途.trellis/tasks/任务 PRD、设计文档、实施计划、JSONL 上下文与归档目录.trellis/config.yaml项目级 Trellis 配置入口承载生命周期 hooks.trellis/scripts/生命周期行为的脚本实现task.py及各common/模块动手修改前先读这些文件根据原文档在进行任何定制之前应按顺序阅读以下文件以建立完整的心智模型.trellis/workflow.md —— 工作流阶段、路由与[workflow-state:*]面包屑契约.trellis/config.yaml —— 项目级配置入口hooks 在此声明.trellis/scripts/task.py —— 任务管理 CLI 入口create/start/finish/archive等子命令.trellis/scripts/common/task_store.py —— 任务 CRUD 核心实现cmd_create、cmd_archive等.trellis/scripts/common/task_utils.py —— 任务路径解析、查找与 hooks 执行器run_task_hooks当前任务的.trellis/tasks/task/task.json—— 任务元数据可参考仓库中已归档的 task.json常见需求与对应修改点速查表原文档给出了一张需求 → 修改点映射表是生命周期定制最常用的导航工具需求修改点任务创建后自动同步外部系统.trellis/config.yaml中的hooks.after_create任务启动后自动更新状态.trellis/config.yaml中的hooks.after_start任务完成后运行脚本.trellis/config.yaml中的hooks.after_finish归档后清理外部资源.trellis/config.yaml中的hooks.after_archive修改任务默认字段.trellis/scripts/common/task_store.py修改任务解析/搜索逻辑.trellis/scripts/common/task_utils.py修改活跃任务行为.trellis/scripts/common/active_task.py生命周期 hooks配置与执行原理配置示例.trellis/config.yaml支持四个生命周期事件。原文档给出的完整配置示例hooks: after_create: - python3 .trellis/scripts/hooks/my_sync.py create after_start: - python3 .trellis/scripts/hooks/my_sync.py start after_finish: - python3 .trellis/scripts/hooks/my_sync.py finish after_archive: - python3 .trellis/scripts/hooks/my_sync.py archive每个事件的值是字符串列表可以注册多个命令。仓库的 .trellis/config.yaml 中保留了同样的 hooks 配置骨架注释并补充了最简演示形式hooks: after_create: - echo Task created after_start: - echo Task started after_finish: - echo Task finished after_archive: - echo Task archived执行语义TASK_JSON_PATH 与容错环境变量注入每个 hook 命令执行时都会收到TASK_JSON_PATH环境变量指向当前任务的task.json绝对路径。hook 脚本可以读取它来获取任务元数据标题、状态、meta等。工作目录hook 命令在仓库根目录cwdrepo_root下以shellTrue执行。非阻塞容错hook 失败只打印[WARN] Hook failed (...)警告不会阻断主任务操作。这一语义在源码中有直接体现——task_utils.py 的run_task_hooks对每个命令捕获非零退出码与异常仅输出黄色警告日志后继续。源码执行链如下cmd_create/cmd_archive/cmd_start/cmd_finish等命令在完成自身逻辑后调用run_task_hooks(event, task_json_path, repo_root)run_task_hooks从配置模块读取hooks.event命令列表见 config.py 的get_hooks为每条命令构造包含TASK_JSON_PATH的 env用subprocess.run(cmd, shellTrue, cwdrepo_root)执行非零退出码或异常仅产生警告不中断流程。hooks 的触发时机关键差异在 task.py 中可以看到各事件的确切触发点after_create在task.py create完成目录创建、task.json写入、PRD 生成与 JSONL 种子文件写入之后触发见 task_store.pyafter_start在task.py start将status翻转为in_progress之后触发见 task.pyafter_finish在task.py finish清除活跃任务指针之后触发。注意after_finish不等于状态变更——它只是清除 active-task 指针status字段保持不变任务真正完成的通知应使用after_archive见 task.pyafter_archive在task.py archive将status置为completed、目录移动到archive/{YYYY-MM}/之后以归档后的task.json路径触发见 task_store.py。修改任务字段优先使用 meta如果要在项目里新增项目私有的任务字段优先放在task.json的meta字段下避免破坏现有脚本对标准字段的假设。原文档给出了示例meta: { linearIssue: ENG-123, risk: high }仓库源码印证了这一点cmd_create在构建task_data时专门预留了meta: {}空对象见 task_store.py作为项目级扩展的默认挂载点。已归档任务的 task.json 也显示meta: {}是标准字段。只有在确实需要修改标准字段如status、assignee、base_branch时才应改动task_store.py中cmd_create的task_data字典但必须先逐一审查所有读取task.json的本地脚本确认兼容性。修改活跃任务会话级指针而非全局指针设计原则活跃任务是会话级状态存储在.trellis/.runtime/sessions/下不要回退到全局.current-task模型。如果需要修改活跃任务行为编辑以下位置.trellis/scripts/common/active_task.py —— 活跃任务解析与指针读写平台 hooks 或 shell 会话桥接层.trellis/workflow.md 中活跃任务的描述会话身份context key如何解析从源码看active_task.py 的resolve_context_key按以下优先级解析稳定的会话标识TRELLIS_CONTEXT_ID环境变量—— CLI 脚本与子进程的显式覆盖键hook 输入platform_input中的session_id/conversation_id/transcript_path字段支持嵌套在input、properties、event等键下平台原生环境变量—— 例如 Claude Code 的CLAUDE_SESSION_ID、Cursor 的CURSOR_SESSION_ID、OpenCode 的OPENCODE_SESSION_ID等见_ENV_SESSION_KEYSCursor shell ticket 桥接—— Cursor 不向 shell 导出会话 ID因此 hook 会在task.py运行前写入一个短生命周期30 秒 TTL的 ticket.trellis/.runtime/cursor-shell/*.json脚本通过匹配子命令与唯一的 fresh context key 来还原会话身份。task.py create会设置活跃指针best-effort这是原文档重点讲解的行为源码位于cmd_create的末尾见 task_store.py有会话身份时调用 shell 携带TRELLIS_CONTEXT_ID或平台会话环境变量resolve_context_key能识别参见active_task.py的_ENV_SESSION_KEYS则.trellis/.runtime/sessions/context_key.json会被重写指向新任务。此时任务的statusplanning并且[workflow-state:planning]会在下一个UserPromptSubmit时立即生效无会话身份时AI 会话之外的裸 CLI 调用或平台不向 shell 传播身份任务目录照常创建、statusplanning照常写入但活跃指针保持不变。用户回到 AI 会话后可以用task.py start dir手动附加该任务。这一行为使得[workflow-state:planning]在task.py create之后的头脑风暴与 JSONL 策展期间成为活的面包屑。原文档指出R7 之前的行为会让面包屑一直停留在no_task直到task.py start导致规划区块实际上是死文本。其他活跃指针操作task.py startset_active_task写入会话指针并幂等地把status从planning翻转为in_progresstask.py finishclear_active_task删除当前会话的.runtime/sessions/context_key.json文件status保持不变task.py archiveclear_task_from_sessions删除所有仍指向该任务的会话文件再把目录移入归档见 task_store.py。如果 forktask.py新增创建路径原文档给出重要提醒如果 forktask.py增加新的创建路径例如绕过cmd_create的外部导入必须审计新路径是否也调用了set_active_task。缺少该调用创建的任务不会成为活跃任务。完整的状态写入方表格位于.trellis/spec/cli/backend/workflow-state-contract.md仓库中该路径为 .trellis/spec/ 目录实际契约文档需确认存在后引用。修改步骤一套可复现的操作流程原文档给出的标准修改流程用python3 ./.trellis/scripts/task.py current --source确认当前任务阅读当前任务的task.json确认状态与字段配置类需求先编辑 .trellis/config.yaml脚本行为类需求再编辑 .trellis/scripts/如果 AI 流程变了同步更新 .trellis/workflow.md。仓库的 workflow.md 同时提供了生命周期常用命令的权威清单# Task lifecycle python3 ./.trellis/scripts/task.py create title [--slug name] [--parent dir] python3 ./.trellis/scripts/task.py start name # set active task (session-scoped when available) python3 ./.trellis/scripts/task.py current --source # show active task and source python3 ./.trellis/scripts/task.py finish # clear active task (triggers after_finish hooks) python3 ./.trellis/scripts/task.py archive name # move to archive/{year-month}/ python3 ./.trellis/scripts/task.py list [--mine] [--status s] python3 ./.trellis/scripts/task.py list-archiveDo Not生命周期定制的红线原文档明确的禁止事项不要直接编辑.trellis/.runtime/sessions/去修复业务状态——会话指针是运行时产物直接改会造成状态与磁盘不一致不要把项目私有字段硬编码进脚本——优先使用meta字段承载项目级扩展数据不要默认让用户 fork Trellis CLI——绝大多数定制都能在.trellis/内部完成fork 上游只应在确认无法通过本地定制实现时考虑。总结EcoPaste 仓库内的 Trellis 任务生命周期由.trellis/config.yamlhooks 声明、.trellis/scripts/task.pyCLI 入口、.trellis/scripts/common/task_store.pyCRUD 与活跃指针设置、.trellis/scripts/common/task_utils.pyhooks 执行器与.trellis/scripts/common/active_task.py会话级指针协同实现。定制时遵循配置优先、meta 扩展、会话级活跃指针、hook 非阻塞四条原则即可在不触碰上游 CLI 的前提下将任务生命周期与项目的外部系统、自定义字段和 AI 工作流深度整合。赞分享桌面应用【免费下载链接】EcoPaste跨平台的剪贴板管理工具 | Cross-platform clipboard management tool项目地址https://gitcode.com/ayangweb/EcoPaste点击查看免费下载相关推荐深入定制 Trellis 本地任务生命周期hooks、task.json 字段与活动任务指针的完整改造指南深入定制 Trellis 本地任务生命周期hooks、task.json 字段与活动任务指针的完整改造指南 导读 本文面向需要深度定制 Trellis 本地任桌面应用Trellis 任务生命周期定制指南从创建到归档的 Hook 机制与活动任务原理Trellis 任务生命周期定制指南从创建到归档的 Hook 机制与活动任务原理 Trellis 的本地任务系统把任务生命周期拆分为创建create、启动桌面应用Trigger.dev任务取消机制灵活控制任务生命周期的终极指南Trigger.dev任务取消机制灵活控制任务生命周期的终极指南 在构建可靠的后台任务系统时 任务取消机制 是确保资源有效管理和用户体验的关键功能。TrigAI Agent后端任务调度开发工具可观测性AI 应用上一篇SweetAlert 使用指南优雅替代JavaScript原生弹窗下一篇Qlib量化研究平台详细工作流程解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

MATLAB基础应用精讲-【大模型】用MCP打通MATLAB与TaoToken统一API通道

MATLAB基础应用精讲-【大模型】用MCP打通MATLAB与TaoToken统一API通道

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

2026/9/30 5:33:10 阅读更多 →
GitHub每日最火项目(8.3):用 TaoToken 统一 Key 打通 Cline 与 CC Switch 配置

GitHub每日最火项目(8.3):用 TaoToken 统一 Key 打通 Cline 与 CC Switch 配置

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

2026/9/29 2:23:14 阅读更多 →
华为杯E题全流程实战:Python数据分析与ECharts可视化建模指南

华为杯E题全流程实战:Python数据分析与ECharts可视化建模指南

1. 从E题说起:这道题到底在考什么华为杯研究生数学建模竞赛的E题,历来是整张卷子里“看起来最像文科、做起来最像工科”的一道。2026年的E题延续了这个传统——题目给出一批带有时间戳、地理位置、多维属性的数据集,要求参赛队伍完成从数据清…

2026/9/30 4:11:47 阅读更多 →

最新新闻

工控AI应用实战:六个场景切片赋能产线工程师

工控AI应用实战:六个场景切片赋能产线工程师

1. 这不是“学AI”,而是工控人重新校准职业坐标的实战课“工控国际举办全员AI应用能力提升专题培训”——看到这个标题,我第一反应不是点开看PPT长什么样,而是下意识摸了摸自己电脑里那几个常年没更新的PLC仿真软件、SCADA组态工程备份包&…

2026/9/30 5:32:29 阅读更多 →
从代码问答到任务执行:羲和Agent的架构设计与工程实践

从代码问答到任务执行:羲和Agent的架构设计与工程实践

1. 为什么多数AI编码助手止步于问答先讲个真实场景。上个月我给团队搭了一套代码知识库问答机器人,效果相当能打:仓库里几千个文件,问"订单超时重试的逻辑在哪个模块"、"支付回调幂等怎么做的",模型能把文件路…

2026/9/30 5:32:29 阅读更多 →
DTFT与DFT本质区别:连续频谱vs离散采样

DTFT与DFT本质区别:连续频谱vs离散采样

1. 从一张“信号快照”说起:为什么我们非得搞清楚DTFT和DFT的区别?你有没有试过用手机拍一张照片,然后放大再放大,最后发现边缘全是马赛克?或者用录音笔录下一段钢琴声,回放时总觉得少了点“空气感”&#…

2026/9/30 5:32:29 阅读更多 →
Redis 8 接入 AI 实战:内置向量检索与 RAG 应用指南

Redis 8 接入 AI 实战:内置向量检索与 RAG 应用指南

最近关于“Redis 已正式接入 AI”的讨论很多,我也花了不少时间把新版 Redis 真正用起来。这里说的“接入 AI”并不是什么玄学,而是两层现实:一是 Redis 8 开始把向量检索、AI 辅助操作直接内置成官方能力;二是大模型应用越来越普遍…

2026/9/30 5:32:29 阅读更多 →
本地大模型显存估算与硬件匹配:从扫描到量化选型

本地大模型显存估算与硬件匹配:从扫描到量化选型

1. 为什么“我的机器能不能跑这个模型”成了高频问题过去一年,我身边做开发的朋友、做产品的同事、甚至一些刚入门折腾本地模型的学生,问得最多的一句话就是:“我这个配置到底能跑多大的模型?”这个问题听起来简单,但真…

2026/9/30 5:32:29 阅读更多 →
证据驱动源码审阅:Cocos-Engine 静态工程分析实战

证据驱动源码审阅:Cocos-Engine 静态工程分析实战

1. 为什么我要用"证据驱动"的方式审阅 Cocos-Engine 源码第一次听说"静态工程审阅"这个词,很多人的反应是"不就是看代码吗"。但真正做过大型开源项目源码分析的人都知道,漫无目的地翻代码和带着证据链去审阅,完…

2026/9/30 5:31:29 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →