#V2EX

npub195q4fc2qx05y3dzg49cny2lm7nsy52wrwuqjac844dnqnx6k7xks3pwpxu
hex
be3f758b0824fae2d99bda25de5f165617ef61dd728f4f810238c25fec024f89nevent
nevent1qqstu0m43vyzf7hzmxda5fw7tut9v9l0v8wh9r60sypr3sjlaspylzgprpmhxue69uhhyetvv9ujuem4d36kwatvw5hx6mm9qgsz6q25u9qr86zgk3y2jufj90alfcz298phwqfwur66kesfndt0rtgvwxzj8Kind-1 (TextNote)
#V2EX
[程序员] Trellis v0.5 正式发布!
安装:
npm install -g @mindfoldhq/trellis
从 0.4.x 升级:
trellis update --migrate
(--migrate 必须加 —— breaking-change gate 会拦下没加的,详见下文"迁移流程")
1. /start 不再是必需入口
之前每次会话开始需要 /start 加载 Trellis 上下文,再开始描述需求。现在直接自然语言描述需求就进入 Trellis 工作流,无需手动启动命令。
如果习惯先手动 start 一下再开始对话,现在 /trellis:continue 直接替代 /start 当起手命令;不放心也可以 /trellis:continue 需求是 xxx 。
2. Skill-first 架构
/start /continue /finish-work 以外的所有 Trellis 命令都变成 auto-triggered skill —— AI 看到合适的上下文会自己激活,不用你敲命令(喜欢主动节奏的用户也能继续主动唤起)。5 个命令完成转换:before-dev / brainstorm / break-loop / check / update-spec。
每个平台下,对应位置从 commands/<name>.md 迁移到 skills/trellis-<name>/SKILL.md。65 条 rename migration 自动处理升级,本地改过的文件会在 confirm prompt 里让你选。
同时所有平台的命令和 skill 模板合并到单一源 packages/cli/src/templates/common/( 3 命令 + 5 skill )—— 以前 "A 平台改了 B 平台没跟上" 的漂移问题一次性消除。
3. [workflow.md](http://workflow.md 是工作流唯一的源
这次最核心的重构:把工作流定义收敛到 .trellis/workflow.md 一个 markdown 文件。
之前工作流行为分散在三处:hook Python 脚本里硬编码、TS configurator 模板生成、命令 markdown 里的指令。想 fork 一份"我自己的工作流"得同时改三处才能自洽。
现在 [workflow.md](http://workflow.md 是唯一事实源:Phase 1/2/3 step 内容、[workflow-state:STATUS] 面包屑标签块、Skill routing 表、task.py 16 个子命令参考。现在想修改工作流只需要改一个 markdown 文件即可。
4. /trellis:continue 命令:单任务内的 continue ,消除工作流学习成本
注意:/trellis:continue 不是跨任务的,是单个任务内的 continue 。它消除了用户对 Trellis 工作流的学习成本。
之前:用户得自己记住每一步该调哪个 slash 命令,比如 brainstorm 写 PRD → 讨论 → 让 AI 写 implement.jsonl → 调 sub-agent → check → check-cross-layer → finish-work → record-session。
现在:
- 自然语言对话进入 brainstorm 状态、创建 task
- AI 跟你确认 PRD ,你 ok 就输入
continue - AI 知道下一步是填充
implement.jsonl,填完再确认 - 你
/trellis:continue:AI 知道下一步是跑 implement + check - 你
/trellis:continue:AI 知道该update-spec - 你
/trellis:continue:AI 知道该 commit + finish-work
用户只需要自然语言 + 一路 continue就可以直接使用 trellis 工作流。底层是 /continue 读 task.json.status + artifact 状态(prd.md / implement.jsonl curation )查表,通过 get_context.py --mode phase --step X.X 加载具体 step 的 how-to 。
5. 多窗口并行不再互相覆盖
active-task 指针从全局 .trellis/.current-task 文件改成 per-session .trellis/.runtime/sessions/<context-key>.json。多窗口并行时每个窗口独立 active task ,不再互相覆盖。
各平台的 session-key 来源:Claude Code 走 CLAUDE_ENV_FILE、Codex 用 CODEX_SESSION_ID / CODEX_THREAD_ID、Cursor 用 beforeShellExecution ticket 、OpenCode 走 Bash 前缀、Pi 注入 nested 进程。
6. Joiner onboarding:新开发者克隆 Trellis 项目自动生成入门任务
trellis init 三分支判定(基于 .trellis/ × .trellis/.developer 的存在状态):
- 无
.trellis/→ Creator bootstrap(原有路径) .trellis/存在 + 无.developer→ Joiner(新):自动生成00-join-<slug>任务- 都存在 → no-op
7. 7 个平台升级到 agent-capable
Qoder / CodeBuddy / Factory Droid / Cursor / Gemini CLI / Kiro / GitHub Copilot 从"仅命令"升级到完整的 agent-capable:
- Sub-agent 定义(
implement/check/research)按各平台原生格式生成 - Hook 基于
shared-hooks/Python 脚本( session-start / inject-subagent-context / statusline )+ 各平台输出 adapter - Claude Code 的 hook 也迁移到共享实现,删了 1435 行平台专有代码
同时移除了对 iflow 的支持(悲)
8. Sub-agent 上下文注入
Codex / Copilot / Gemini / Qoder ( class-2 )无法可靠地通过 hook 改写 sub-agent prompt (上游 bug 或架构限制)。这 4 个平台只能通过在 sub-agent 定义最前面加一段指令,让 sub-agent 第一轮自己 Read prd.md 和 implement.jsonl。
其它平台( Claude / Cursor / OpenCode / Kiro / CodeBuddy / Droid )继续走 hook 注入。
9. 每轮工作流面包屑
新增 inject-workflow-state.py 共享 hook ,每次用户消息触发一次( 8 个平台的 UserPromptSubmit; OpenCode 走 Bun plugin 的 chat.message)。注入一个 ~200 字节的 <workflow-state> 块,根据 task.json.status 提示 AI 下一步该做什么。
面包屑内容来自 [workflow.md](http://workflow.md 的 [workflow-state:STATUS] 标签块,所以魔改工作流的只需改一个 markdown 文件,不用碰 hook Python 代码。
10. SessionStart payload 重构
每次开新 session ,AI 读取的 SessionStart 块从 2.7 KB (只有 TOC + Phase Index )升级到 9.5 KB (内联 Phase 1/2/3 每个 step 的完整 how-to )。<guidelines> 同时从 10.9 KB 压到 4.6 KB ( spec layer index 改成 paths-only )。总 payload 16.7 KB ,卡在 Claude Code additionalContext 的 ~20 KB 截断阈值下。
效果:AI 不用再临时 lazy-load get_context.py --mode phase --step X.Y,step 级指令第一轮就在上下文里。
11. 迁移与升级流程改进
| 行为 | 0.5.0 之前 | 0.5.0 |
| --- | --- | --- |
| Breaking-change gate | 静默半迁移 | trellis update exit 1 ,要求加 --migrate |
| breaking 时 config.yaml 的 update.skip | 半迁移状态(老路径留、新模板没写) | 自动 bypass:safe-file-delete / 新文件 / 模板更新 |
| Confirm prompt | 通用 "Modified by you, [k]eep / [r]eplace?" | 展示 What + Why prompted( per-entry reason) + 每个选项的推荐 |
| Backup 内容 | 包含 .claude/worktrees/ 等(可能数百 MB ) | 排除 |
--dry-run 仍然绕过 gate ,可以先预览迁移计划。
12. 大规模清理( 138 条 safe-file-delete )
这版本移除了四类"已有更好替代"的老功能:
- iFlow 平台 —— CLI 已不再维护
- Multi-agent pipeline(
scripts/multi_agent/+worktree.yaml)—— 主流 agent CLI/IDE 都有原生 worktree 支持了 - Ralph Loop hook(
ralph-loop.py)—— SubagentStop + exit-code-2 跨平台不可移植; check sub-agent 自己的修复循环已经够用 - 6 个命令 + 3 个 sub-agent ——
parallel(被原生 worktree 取代)、onboard/create-command/integrate-skill(使用率低)、check-cross-layer(合并进check)、record-session(被finish-work吸收);dispatch/debug/planagent (被 skill routing 取代)
13. Codex 用户须知
已修( rc.5 ):.codex/config.toml 默认开启 multi_agent_v2,min_wait_timeout_ms = 480000( 8 分钟)wait() 超时下限 —— 阻止父线程频繁轮询子 agent 。需要 Codex CLI ≥ v0.128.0,旧版会报 untagged enum FeatureToml in features.multi_agent_v2。
Codex 上游限制( Trellis 侧无法修复):
- Hook context 渲染在终端(#191)—— 每轮对话都把 SessionStart hook 的 context 打印到终端,目前没有开关关闭(用 Codex desktop app 可以避免)
- Sub-agent 启动可能卡在 MCP server 上 —— 等某个慢/失败的 MCP 永远不返回,从
multi_agent_v1时期就有,v2仍未修复
doc: https://docs.trytrellis.app/zh repo: https://github.com/mindfold-ai/Trellis https://www.v2ex.com/t/1210513#reply0
原始 JSON
{
"kind": 1,
"id": "be3f758b0824fae2d99bda25de5f165617ef61dd728f4f810238c25fec024f89",
"pubkey": "2d0154e14033e848b448a971322bfbf4e04a29c377012ee0f5ab66099b56f1ad",
"created_at": 1778043376,
"tags": [
[
"t",
"v2ex"
]
],
"content": "#V2EX\n### [程序员] Trellis v0.5 正式发布!\n\n安装:\n\n```\nnpm install -g @mindfoldhq/trellis\n```\n\n从 0.4.x 升级:\n\n```\ntrellis update --migrate\n```\n\n(`--migrate` 必须加 —— breaking-change gate 会拦下没加的,详见下文\"迁移流程\")\n\n## 1. `/start` 不再是必需入口\n\n之前每次会话开始需要 `/start` 加载 Trellis 上下文,再开始描述需求。现在直接自然语言描述需求就进入 Trellis 工作流,无需手动启动命令。\n\n如果习惯先手动 start 一下再开始对话,现在 `/trellis:continue` 直接替代 `/start` 当起手命令;不放心也可以 `/trellis:continue 需求是 xxx` 。\n\n## 2. Skill-first 架构\n\n`/start` `/continue` `/finish-work` 以外的所有 Trellis 命令都变成 **auto-triggered skill** —— AI 看到合适的上下文会自己激活,不用你敲命令(喜欢主动节奏的用户也能继续主动唤起)。5 个命令完成转换:`before-dev` / `brainstorm` / `break-loop` / `check` / `update-spec`。\n\n每个平台下,对应位置从 `commands/\u003cname\u003e.md` 迁移到 `skills/trellis-\u003cname\u003e/SKILL.md`。65 条 `rename` migration 自动处理升级,本地改过的文件会在 confirm prompt 里让你选。\n\n同时所有平台的命令和 skill 模板合并到单一源 `packages/cli/src/templates/common/`( 3 命令 + 5 skill )—— 以前 \"A 平台改了 B 平台没跟上\" 的漂移问题一次性消除。\n\n## 3. [workflow.md](http://workflow.md) 是工作流唯一的源\n\n这次最核心的重构:**把工作流定义收敛到 `.trellis/workflow.md` 一个 markdown 文件**。\n\n之前工作流行为分散在三处:hook Python 脚本里硬编码、TS configurator 模板生成、命令 markdown 里的指令。想 fork 一份\"我自己的工作流\"得同时改三处才能自洽。\n\n现在 [workflow.md](http://workflow.md) 是唯一事实源:Phase 1/2/3 step 内容、`[workflow-state:STATUS]` 面包屑标签块、Skill routing 表、`task.py` 16 个子命令参考。现在想修改工作流只需要改一个 markdown 文件即可。\n\n## 4. `/trellis:continue` 命令:单任务内的 continue ,消除工作流学习成本\n\n注意:`/trellis:continue` 不是跨任务的,是**单个任务内**的 continue 。它消除了用户对 Trellis 工作流的学习成本。\n\n**之前**:用户得自己记住每一步该调哪个 slash 命令,比如 `brainstorm` 写 PRD → 讨论 → 让 AI 写 implement.jsonl → 调 sub-agent → `check` → `check-cross-layer` → `finish-work` → `record-session`。\n\n**现在**:\n\n1. 自然语言对话进入 brainstorm 状态、创建 task\n2. AI 跟你确认 PRD ,你 ok 就输入 `continue`\n3. AI 知道下一步是填充 `implement.jsonl`,填完再确认\n4. 你 `/trellis:continue` :AI 知道下一步是跑 implement + check\n5. 你 `/trellis:continue` :AI 知道该 `update-spec`\n6. 你 `/trellis:continue` :AI 知道该 commit + finish-work\n\n用户只需要自然语言 + 一路 `continue`就可以直接使用 trellis 工作流。底层是 `/continue` 读 `task.json.status` + artifact 状态(`prd.md` / `implement.jsonl` curation )查表,通过 `get_context.py --mode phase --step X.X` 加载具体 step 的 how-to 。\n\n## 5. 多窗口并行不再互相覆盖\n\nactive-task 指针从全局 `.trellis/.current-task` 文件改成 per-session `.trellis/.runtime/sessions/\u003ccontext-key\u003e.json`。多窗口并行时每个窗口独立 active task ,不再互相覆盖。\n\n各平台的 session-key 来源:Claude Code 走 `CLAUDE_ENV_FILE`、Codex 用 `CODEX_SESSION_ID` / `CODEX_THREAD_ID`、Cursor 用 `beforeShellExecution` ticket 、OpenCode 走 Bash 前缀、Pi 注入 nested 进程。\n\n## 6. Joiner onboarding:新开发者克隆 Trellis 项目自动生成入门任务\n\n`trellis init` 三分支判定(基于 `.trellis/` × `.trellis/.developer` 的存在状态):\n\n* 无 `.trellis/` → **Creator bootstrap**(原有路径)\n* `.trellis/` 存在 + 无 `.developer` → **Joiner**(新):自动生成 `00-join-\u003cslug\u003e` 任务\n* 都存在 → no-op\n\n## 7. 7 个平台升级到 agent-capable\n\nQoder / CodeBuddy / Factory Droid / Cursor / Gemini CLI / Kiro / GitHub Copilot 从\"仅命令\"升级到完整的 agent-capable:\n\n* Sub-agent 定义(`implement` / `check` / `research`)按各平台原生格式生成\n* Hook 基于 `shared-hooks/` Python 脚本( session-start / inject-subagent-context / statusline )+ 各平台输出 adapter\n* Claude Code 的 hook 也迁移到共享实现,删了 1435 行平台专有代码\n\n\u003e 同时移除了对 iflow 的支持(悲)\n\n## 8. Sub-agent 上下文注入\n\nCodex / Copilot / Gemini / Qoder ( class-2 )无法可靠地通过 hook 改写 sub-agent prompt (上游 bug 或架构限制)。这 4 个平台只能通过在 sub-agent 定义最前面加一段指令,让 sub-agent 第一轮自己 Read `prd.md` 和 `implement.jsonl`。\n\n其它平台( Claude / Cursor / OpenCode / Kiro / CodeBuddy / Droid )继续走 hook 注入。\n\n## 9. 每轮工作流面包屑\n\n新增 `inject-workflow-state.py` 共享 hook ,每次用户消息触发一次( 8 个平台的 `UserPromptSubmit`; OpenCode 走 Bun plugin 的 `chat.message`)。注入一个 ~200 字节的 `\u003cworkflow-state\u003e` 块,根据 `task.json.status` 提示 AI 下一步该做什么。\n\n面包屑内容来自 [workflow.md](http://workflow.md) 的 `[workflow-state:STATUS]` 标签块,所以魔改工作流的只需改一个 markdown 文件,不用碰 hook Python 代码。\n\n## 10. SessionStart payload 重构\n\n每次开新 session ,AI 读取的 SessionStart 块从 2.7 KB (只有 TOC + Phase Index )升级到 9.5 KB (内联 Phase 1/2/3 每个 step 的完整 how-to )。`\u003cguidelines\u003e` 同时从 10.9 KB 压到 4.6 KB ( spec layer index 改成 paths-only )。总 payload 16.7 KB ,卡在 Claude Code `additionalContext` 的 ~20 KB 截断阈值下。\n\n效果:AI 不用再临时 lazy-load `get_context.py --mode phase --step X.Y`,step 级指令第一轮就在上下文里。\n\n## 11. 迁移与升级流程改进\n\n| 行为 | 0.5.0 之前 | 0.5.0 |\n| --- | --- | --- |\n| Breaking-change gate | 静默半迁移 | `trellis update` exit 1 ,要求加 `--migrate` |\n| breaking 时 `config.yaml` 的 `update.skip` | 半迁移状态(老路径留、新模板没写) | 自动 bypass:safe-file-delete / 新文件 / 模板更新 |\n| Confirm prompt | 通用 \"Modified by you, [k]eep / [r]eplace?\" | 展示 `What` + `Why prompted`( per-entry `reason`) + 每个选项的推荐 |\n| Backup 内容 | 包含 `.claude/worktrees/` 等(可能数百 MB ) | 排除 |\n\n`--dry-run` 仍然绕过 gate ,可以先预览迁移计划。\n\n## 12. 大规模清理( 138 条 safe-file-delete )\n\n这版本移除了四类\"已有更好替代\"的老功能:\n\n* **iFlow 平台** —— CLI 已不再维护\n* **Multi-agent pipeline**(`scripts/multi_agent/` + `worktree.yaml`)—— 主流 agent CLI/IDE 都有原生 worktree 支持了\n* **Ralph Loop hook**(`ralph-loop.py`)—— SubagentStop + exit-code-2 跨平台不可移植; check sub-agent 自己的修复循环已经够用\n* **6 个命令 + 3 个 sub-agent** —— `parallel`(被原生 worktree 取代)、`onboard` / `create-command` / `integrate-skill`(使用率低)、`check-cross-layer`(合并进 `check`)、`record-session`(被 `finish-work` 吸收);`dispatch` / `debug` / `plan` agent (被 skill routing 取代)\n\n## 13. Codex 用户须知\n\n**已修**( rc.5 ):`.codex/config.toml` 默认开启 `multi_agent_v2`,`min_wait_timeout_ms = 480000`( 8 分钟)`wait()` 超时下限 —— 阻止父线程频繁轮询子 agent 。**需要 Codex CLI ≥ v0.128.0**,旧版会报 `untagged enum FeatureToml in features.multi_agent_v2`。\n\n**Codex 上游限制( Trellis 侧无法修复)**:\n\n* **Hook context 渲染在终端**([#191](https://github.com/mindfold-ai/Trellis/issues/191))—— 每轮对话都把 SessionStart hook 的 context 打印到终端,目前没有开关关闭(用 Codex desktop app 可以避免)\n* **Sub-agent 启动可能卡在 MCP server 上** —— 等某个慢/失败的 MCP 永远不返回,从 `multi_agent_v1` 时期就有,`v2` 仍未修复\n\n---\n\ndoc: \u003chttps://docs.trytrellis.app/zh\u003e\nrepo: \u003chttps://github.com/mindfold-ai/Trellis\u003e\nhttps://www.v2ex.com/t/1210513#reply0",
"sig": "47bda179c47cb5a4a79b0520672c823918e8ed75dbe1997161e144888282f8475e6e4555a276d771b2a7ca6f8c4caa91b8c10324744a8f787da1804dff81bc2c"
}