关于在团队项目中个人使用Trellis的讨论

Ma1r6K 2026-06-24 11:16 1


Trellis 版本:0.6.3



问题背景


Trellis 的工作机制天然要求 .trellis/ 目录位于项目根目录下。它的 CLI(task.pyget_context.py 等)通过向上查找 .trellis/ 来确定项目根路径,spec 指南、session 日志、task 上下文都依赖这个路径约定。所以我现在在项目里用 Trellis,为了防止额外的约束和后续升级的稳定,得把.trellis/ 放在项目目录里。


个人痛点


因为我用 Trellis 是个人使用、不走团队 git,所以我必须把 .trellis/ 从团队仓库排除。于是出现一个死结:



  • 留在项目目录 → Trellis 正常运作,但文件完全失去 git 版本管理

  • 移到项目外 → Trellis CLI 可能全部失效,spec/context 机制报废(说不定也支持,我没有太研究文档 ^-^)


实际我用了一段时间,每次 task 记录、session 日志、spec 指南的修改,没有任何历史保护,有时候心里也挺慌的 ^-^。误删、回滚、对比变更都做不到。只能说是万一发生了啥看看能不能通过ide找回来。


之前的做法


我直接在 .git/info/exclude 里排除 .trellis/,这样不会污染暂存区,也不会修改项目的.gitignore。因为如果暂存区有东西,Trellis的 finish work 会卡住 ^-^。


现在的方案


我直接在 .trellis/ 内部创建独立的 git 仓库


项目根/
├── .git/ ← 团队仓库(.trellis/ 被 exclude)
├── .trellis/
│ ├── .git/ ← 个人 Trellis 仓库(独立版本管理,互不干扰)
│ ├── .gitignore ← 排除 .runtime/、backup 等运行时文件
│ ├── tasks/
│ ├── workspace/
│ └── config.yaml ← session_auto_commit: false
└── src/

因为我常年Agent的目录都是外层的仓库目录,所以要让他提交到我创建的这个内部仓库就得额外做一些操作 ^-^。



  • 关闭 Trellis 自带的 session_auto_commit(避免在外层仓库做无用操作)

  • 所有提交通过 git -C .trellis 显式指定目标


为了让 AI 感知内层仓库,我选择在项目的 AGENTS.md(或者其他能加载到上下文的位置)中加一段声明:


## Trellis 内层 Git 仓库

`.trellis/` 内存在一个独立的 git 仓库,不在外层项目仓库管理范围内。

每次 Trellis task 操作(create / start / finish / archive)或 session 结束时,
必须将变更提交到内层仓库:

git -C .trellis add -A
git -C .trellis commit -m "task({slug}): {action} - {title}"

提交信息从 task.json 的 id 和 title 字段读取,格式固定可追溯。

这样 AI 在每次 task 操作后,我可以让他在外层提交到内部仓库里。


不知道有没有佬用Trellis也遇到过类似的问题,有没有别的处理方案,欢迎讨论。

最新回复 (15)
  • 06-24 11:29
    1

    我刚刚开始使用trellis,目前也是在项目仓库排除了trellis,但是还没给它建仓库,可能我也需要处理一下 ^-^

  • Ma1r6K 楼主 06-24 11:33
    2

    其实按照我的经验,你让他裸奔大概也出不了啥太大岔子 ^-^毕竟我估计也很少会有对Trellis的prd.md那些文档疯狂精修的场景,大多数情况下代码才是唯一真相,实际使用的时候可能时不时你还得根据最新的代码来反向修补他的task信息。我这边因为团队产出有别的规范,所以我的结果文件其实是团队仓库管理的,还有一个兜底。

  • 唯独你没懂 06-24 11:37
    3

    我是直接把 .trellis 目录跟随仓库git一起管理的啊

  • Ma1r6K 楼主 06-24 11:41
    4

    那最好了,我主要是团队这边没采用Trellis,提交到远端的仓库会很难顶

  • 后仰跳投 06-24 11:41
    5

    楼主遇到的问题确实是一个普遍的痛点,总感觉版本管理不够优雅

  • xrall 06-24 11:43
    6

    一样的,现在采用的就是 .git/info/exclude 没有去版本管理。因为公司的事情只在公司,遇见紧急情况也是远程到公司。

  • Ma1r6K 楼主 06-24 11:43
    7

    感觉Trellis本身workspace和个人工作空间设计是为团队项目接入服务的,只是打工人私下用来提效确实会遇到这个边界情况 ^-^

  • 唯独你没懂 06-24 11:45
    8

    这个提交到远端,如果同事没安装 trellis 会怎么样啊,我这边项目就两个人搞,另一个同事也没说会导致什么问题,就之前说加上这个东西之后变慢了 ^-^

  • yuhc 06-24 11:47
    9

    从来没让git管理 trellis,不知道为啥git要去管理trellis,都是自己使用,不推送不就好了吗?

  • 唯独你没懂 06-24 11:49
    10

    那新建 worktree 出来就不带 trellis 了啊

  • yuhc 06-24 11:50
    11

    有道理,公司用svn,没有worktree ^-^

  • hwang 06-24 11:58
    12

    这里也不只是trellis 的问题,像.codex之类的配置都会有一样的问题。AI 工作流每个人的用法差异极大,尤其是小团队没那么规范各做各的时候。把相关配置提交了不合适,完全不做版本控制也不合适。


    单独一个仓库也不合适,哪天切换分支什么的,对应不上。

    或者可以加指令 hook(.git/hooks/pre-commit),把主仓库和配置仓库的对应信息关联上,比如commit 主仓库的时候把配置仓库也做关联一起commit 到本地,就是会很麻烦,常用指令都得加


    project/
    .git/ # 主项目仓库,正常 push
    .agent/ # 被主仓库忽略
    .codex/ # 被主仓库忽略
    .claude/ # 被主仓库忽略
    .ai-local/.git/ # 唯一本地私有配置仓库
  • 越笑越见疤痕 06-24 12:03
    13

    项目中把必备的 skills 通过 git 管理起来,通过软连接 ln 到 指定的目录下就好了。

  • Ma1r6K 楼主 06-24 13:25
    14

    感觉理论上问题不大吧,没有执行init的话,应该上下文里也没有使用的提示

  • Ma1r6K 楼主 06-24 13:32
    15

    对,但是之所以其他的我没搞仓库是因为我的使用场景下其他的变化比较少…而且Trellis好像本身也会不停的backup这些init后的内容

* 帖子来源Linux.do
返回