docs: research - add trellis domain

This commit is contained in:
tradecatlabs
2026-07-04 07:13:59 +08:00
parent 332350ca54
commit 663e331cf2
24 changed files with 1393 additions and 14 deletions
+2 -1
View File
@@ -532,10 +532,11 @@
* [**工程实践**](docs/references/quality-gates-and-pitfalls.md): 项目架构、代码组织、开发经验、AI 编程质量门禁与常见坑的统一入口。
* [**技术栈**](docs/references/technology-stack.md#reference-technology-stack-十四如何选择技术栈): 常见软件系统技术栈、选型维度、组合案例与初学者学习路径。
* [**研究域治理契约**](docs/research/research-domain-contract.md): 研究域的结构、raw 原始事实层、成熟度、证据、沉淀和归档规则。
* [**研究价值与应用地图**](docs/research/research-value-application-map.md): 18 个研究域的用户价值、核心启示、应用位置和下沉路线。
* [**研究价值与应用地图**](docs/research/research-value-application-map.md): 19 个研究域的用户价值、核心启示、应用位置和下沉路线。
* [**研究迁移综合**](docs/research/research-transfer-synthesis.md): 用对标拆解、改良迭代和杂交创新把研究转成可执行路线。
* [**Harness 工程解析**](docs/research/harness/harness-engineering.md): Harness Engineering 的工程控制、评估器与反馈闭环解析。
* [**Learn Harness Engineering 研究域**](docs/research/walkinglabs-learn-harness-engineering/README.md): Harness Engineering 课程、模板、Skill 与审计工具对标对象。
* [**Trellis 研究域**](docs/research/mindfold-ai-trellis/README.md): 跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统研究对象。
* [**OpenAI Codex 研究域**](docs/research/openai-codex/README.md): 官方 coding agent 工具源码研究对象。
* [**Claude Code Best Practice 研究域**](docs/research/shanraisshan-claude-code-best-practice/README.md): Agentic Engineering 方法论对标研究对象。
* [**Cline 研究域**](docs/research/cline-cline/README.md): IDE/SDK/CLI 自主编码 Agent 研究对象。
+3
View File
@@ -85,6 +85,9 @@ GEOFlow 的关键启发是:GEO 不是关键词堆砌,而是内容工程链
- docs/research/walkinglabs-learn-harness-engineering/README.mdHarness Engineering 课程、模板、Skill 与审计工具对标研究对象。
- docs/research/walkinglabs-learn-harness-engineering/analysis.mdwalkinglabs/learn-harness-engineering 的结构化研究结论、可迁移做法、风险和验证动作。
- docs/research/walkinglabs-learn-harness-engineering/deep-dive.mdwalkinglabs/learn-harness-engineering 的 L2 结构深度研究、关键机制和本仓应用建议。
- docs/research/mindfold-ai-trellis/README.md:跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统研究对象。
- docs/research/mindfold-ai-trellis/analysis.mdmindfold-ai/Trellis 的结构化研究结论、可迁移做法、风险和验证动作。
- docs/research/mindfold-ai-trellis/deep-dive.mdmindfold-ai/Trellis 的 L2 结构深度研究、关键机制和本仓应用建议。
- docs/research/aider-ai-aider/README.md:终端 AI 结对编程工具研究对象。
- docs/research/aider-ai-aider/analysis.mdAider-AI/aider 的结构化研究结论、可借鉴点、风险和下一轮任务。
- docs/research/aider-ai-aider/deep-dive.mdAider-AI/aider 的 L2 源码/结构深度研究、关键机制和可迁移模式。
+3
View File
@@ -84,6 +84,9 @@
- [walkinglabs/learn-harness-engineering 研究域](./research/walkinglabs-learn-harness-engineering/README.md) - Harness Engineering 课程、模板、Skill 与审计工具对标对象。
- [walkinglabs/learn-harness-engineering 研究分析](./research/walkinglabs-learn-harness-engineering/analysis.md) - 结构化研究结论、可迁移做法、风险和验证动作。
- [walkinglabs/learn-harness-engineering 深度研究](./research/walkinglabs-learn-harness-engineering/deep-dive.md) - L2 结构深度研究、关键机制和本仓应用建议。
- [mindfold-ai/Trellis 研究域](./research/mindfold-ai-trellis/README.md) - 跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统。
- [mindfold-ai/Trellis 研究分析](./research/mindfold-ai-trellis/analysis.md) - 结构化研究结论、可迁移做法、风险和验证动作。
- [mindfold-ai/Trellis 深度研究](./research/mindfold-ai-trellis/deep-dive.md) - L2 结构深度研究、关键机制和本仓应用建议。
- [tmux 蜂群协作](./research/tmux-ai-swarm.md) - 用 tmux 让多个 AI 终端可感知、可调度、可救援的实验性协作范式。
- [Aider-AI/aider 研究域](./research/aider-ai-aider/README.md) - 终端 AI 结对编程工具。
- [Aider-AI/aider 研究分析](./research/aider-ai-aider/analysis.md) - 结构化研究结论、可借鉴点、风险和下一轮任务。
+8 -1
View File
@@ -31,6 +31,13 @@ research/
│ ├── deep-dive.md
│ ├── raw/
│ └── AGENTS.md
├── mindfold-ai-trellis/
│ ├── README.md
│ ├── domain.yml
│ ├── analysis.md
│ ├── deep-dive.md
│ ├── raw/
│ └── AGENTS.md
├── ai-for-developers-awesome-vibe-coding/
│ ├── README.md
│ ├── domain.yml
@@ -107,7 +114,7 @@ research/
上方只展开了第一个外部仓库研究域的基础形态;所有外部仓库研究域都必须包含同样的原始事实层、
`analysis.md``deep-dive.md`
`deep-dive.md` 是 L2 产物;当前 18 个外部仓库研究域已经全部补齐,P3 只表示采用优先级低,
`deep-dive.md` 是 L2 产物;当前 19 个外部仓库研究域已经全部补齐,P3 只表示采用优先级低,
不再表示研究深度缺口。
## 修改规则
+4
View File
@@ -17,6 +17,7 @@
| <a id="research-transfer-synthesis"></a>[研究迁移综合](research-transfer-synthesis.md) | 将对标拆解、改良迭代和杂交创新转成可执行研究路线。 |
| <a id="research-harness-engineering"></a>[Harness 研究对象](harness/) | 工程控制、评估器、反馈闭环与 AI 生成系统可靠性。 |
| <a id="research-walkinglabs-learn-harness-engineering"></a>[walkinglabs/learn-harness-engineering 研究域](walkinglabs-learn-harness-engineering/) | Harness Engineering 课程、模板、Skill 与审计工具对标对象。 |
| <a id="research-mindfold-ai-trellis"></a>[mindfold-ai/Trellis 研究域](mindfold-ai-trellis/) | 跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统。 |
| <a id="research-tmux-ai-swarm"></a>[tmux 蜂群协作](tmux-ai-swarm.md) | 用 tmux 让多个 AI 终端可感知、可调度、可救援的实验性协作范式。 |
| <a id="research-aider-ai-aider"></a>[Aider-AI/aider 研究域](aider-ai-aider/) | 终端 AI 结对编程工具。 |
| <a id="research-cline-cline"></a>[cline/cline 研究域](cline-cline/) | IDE/SDK/CLI 自主编码 Agent。 |
@@ -49,6 +50,9 @@
- [walkinglabs/learn-harness-engineering 研究域](walkinglabs-learn-harness-engineering/README.md) - Harness Engineering 课程、模板、Skill 与审计工具对标对象。
- [walkinglabs/learn-harness-engineering 研究分析](walkinglabs-learn-harness-engineering/analysis.md) - 结构化研究结论、可迁移做法、风险和验证动作。
- [walkinglabs/learn-harness-engineering 深度研究](walkinglabs-learn-harness-engineering/deep-dive.md) - L2 结构深度研究、关键机制和本仓应用建议。
- [mindfold-ai/Trellis 研究域](mindfold-ai-trellis/README.md) - 跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统。
- [mindfold-ai/Trellis 研究分析](mindfold-ai-trellis/analysis.md) - 结构化研究结论、可迁移做法、风险和验证动作。
- [mindfold-ai/Trellis 深度研究](mindfold-ai-trellis/deep-dive.md) - L2 结构深度研究、关键机制和本仓应用建议。
- [tmux 蜂群协作](tmux-ai-swarm.md) - 用 tmux 让多个 AI 终端可感知、可调度、可救援的实验性协作范式。
- [Aider-AI/aider 研究域](aider-ai-aider/README.md) - 终端 AI 结对编程工具。
- [Aider-AI/aider 研究分析](aider-ai-aider/analysis.md) - 结构化研究结论、可借鉴点、风险和下一轮任务。
+1 -1
View File
@@ -28,7 +28,7 @@ harness/
- 不承载通用工程模板;稳定模板迁移到 `docs/references/`
- 不承载可执行能力;可复用能力迁移到 `skills/`
- 不把单个工具、单篇文章或单次实验直接包装成稳定结论。
- 单个外部仓库的一手研究放到同级独立研究域,例如 `../walkinglabs-learn-harness-engineering/`
- 单个外部仓库的一手研究放到同级独立研究域,例如 `../walkinglabs-learn-harness-engineering/``../mindfold-ai-trellis/`
## 证据要求
+4 -1
View File
@@ -5,7 +5,7 @@
- 本目录把 Harness 作为独立研究对象维护。
- 稳定正文入口是 [Harness 工程解析](harness-engineering.md)。
- 研究重点是工程控制、评估器、反馈闭环、上下文注入、架构约束和长期治理。
- 相关对标研究域是 [walkinglabs/learn-harness-engineering](../walkinglabs-learn-harness-engineering/README.md)。
- 相关对标研究域是 [walkinglabs/learn-harness-engineering](../walkinglabs-learn-harness-engineering/README.md) 和 [mindfold-ai/Trellis](../mindfold-ai-trellis/README.md)
- 成熟结论可晋升到 `docs/concepts/``docs/references/``docs/workflow/``skills/`
## 快速导航
@@ -14,6 +14,7 @@
|:---|:---|
| [Harness 工程解析](harness-engineering.md) | 工程控制、评估器、反馈闭环与 AI 生成系统可靠性。 |
| [walkinglabs/learn-harness-engineering 研究域](../walkinglabs-learn-harness-engineering/README.md) | Harness Engineering 课程、模板、Skill 与审计工具对标对象。 |
| [mindfold-ai/Trellis 研究域](../mindfold-ai-trellis/README.md) | 跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统。 |
| [AGENTS](AGENTS.md) | Harness 研究对象目录操作规则。 |
<details>
@@ -23,6 +24,7 @@
- [Harness 工程解析](harness-engineering.md) - 工程控制、评估器、反馈闭环与 AI 生成系统可靠性。
- [walkinglabs/learn-harness-engineering 研究域](../walkinglabs-learn-harness-engineering/README.md) - Harness Engineering 课程、模板、Skill 与审计工具对标对象。
- [mindfold-ai/Trellis 研究域](../mindfold-ai-trellis/README.md) - 跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统。
- [AGENTS](AGENTS.md) - Harness 研究对象目录操作规则。
</details>
@@ -31,6 +33,7 @@
- 需要理解 Harness Engineering 时,先读 Harness 工程解析。
- 需要看课程、模板、Skill 和审计工具的外部对标时,读 walkinglabs/learn-harness-engineering 研究域。
- 需要看跨平台 Agent Harness、任务/规格/记忆控制面和多 Agent runtime 时,读 mindfold-ai/Trellis 研究域。
- 需要新增来源、评估框架、工具链样例或采用判断时,先检查 AGENTS 中的对象边界。
- 结论稳定后,再迁移到对应的概念、参考、流程或技能文档。
@@ -0,0 +1,27 @@
# mindfold-ai/Trellis 研究域 Agent 指南
本目录维护 `mindfold-ai/Trellis` 的独立研究域。
## 目录职责
```text
mindfold-ai-trellis/
├── README.md # 研究域入口和判断层
├── AGENTS.md # 本目录维护规则
├── domain.yml # 事实摘要层:仓库元数据、研究角色、来源证据
├── analysis.md # L1 结构化研究结论、可迁移做法、风险和验证动作
├── deep-dive.md # L2 结构深度研究、关键机制和本仓应用建议
└── raw/ # 原始事实层:拉取到本地的一手材料快照
```
## 维护规则
- 本目录只研究 `mindfold-ai/Trellis`,不要混入其他仓库的横向比较正文。
- 动态事实必须写入 `domain.yml.github_observed`,并更新 `observed_at`
- `raw/` 保存原始事实层,必须通过 `python3 scripts/fetch-research-raw.py` 刷新。
- 不手工改写 `raw/*.raw.*` 文件;稳定事实摘要再同步到 `domain.yml`
- README 只写判断、定位、使用方式和后续观察点,不堆外部 README 全文。
- `analysis.md` 写 L1 结构化理解;`deep-dive.md` 写 L2 结构证据、关键机制和可迁移模式。
- Trellis 使用 AGPL-3.0 许可证;本仓只能研究机制和引用事实,不直接复制代码或模板实现。
- 与通用 Harness 范式的横向比较放到 `docs/research/harness/` 或独立对比文档,不把本目录重新变成聚合域。
- 修改后运行 `make sync-doc-toc``make test`
@@ -0,0 +1,73 @@
# mindfold-ai/Trellis 研究域
## 字多不看
- 本目录研究 `mindfold-ai/Trellis` 这个外部仓库。
- 当前优先级:P1;研究角色:跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统。
- GitHub 动态事实放在 `domain.yml`,观测日期为 2026-07-04。
- 它最值得迁移的不是 AGPL 代码,而是把任务、规格、记忆、验证和多平台适配沉淀为仓库控制面的机制。
## 快速导航
| 文档 | 定位 |
|:---|:---|
| [domain.yml](domain.yml) | 仓库事实快照、研究方向、优先级和来源证据。 |
| [analysis.md](analysis.md) | 本研究域的结构化研究结果、可迁移做法、风险和验证动作。 |
| [deep-dive.md](deep-dive.md) | L2 结构深度研究、关键机制和对本仓 Harness 体系的应用建议。 |
| [AGENTS.md](AGENTS.md) | 本研究域维护规则。 |
<details>
<summary><strong>完整细粒度目录(点击展开/收起)</strong></summary>
### 细粒度目录
- [domain.yml](domain.yml) - 仓库事实快照、研究方向、优先级和来源证据。
- [analysis.md](analysis.md) - 本研究域的结构化研究结果、可迁移做法、风险和验证动作。
- [deep-dive.md](deep-dive.md) - L2 结构深度研究、关键机制和对本仓 Harness 体系的应用建议。
- [AGENTS.md](AGENTS.md) - 本研究域维护规则。
</details>
## 使用方式
- 先读本 README 的判断,再读 `analysis.md``deep-dive.md` 的研究结论,最后读 `domain.yml`
- 需要引用 stars、forks、release、归档状态、主页或主题标签时,先重新核验 GitHub。
- 需要更新原始事实时,运行 `python3 scripts/fetch-research-raw.py mindfold-ai-trellis`
- 如果形成稳定方法论,再下沉到 `docs/research/harness/``docs/workflow/``scripts/``skills/`
## 正文
### 研究定位
`mindfold-ai/Trellis` 的当前研究定位是:跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统。
### 当前判断
Trellis 是本仓 Harness 研究线的 P1 样本。它不是把 `AGENTS.md``CLAUDE.md` 或规则文件再包一层,
而是把 AI 编程过程做成仓库内可运行控制面:
-`.trellis/spec/` 保存团队约束,让 Agent 通过任务上下文加载规则,而不是靠模型记忆。
-`.trellis/tasks/` 保存 `prd.md``design.md``implement.md``implement.jsonl``check.jsonl`
-`.trellis/workflow.md` 保存状态机和每轮注入的 breadcrumb,约束从计划、执行到收尾的相位。
-`.trellis/workspace/` 保存开发者会话记录,解决跨会话恢复和团队共享问题。
- 用 CLI 同时生成 Claude Code、Codex、Cursor、OpenCode、Gemini、Kiro、Qoder、Copilot 等平台适配层。
-`channel``mem``task` 等核心原语把多 Agent 协作、会话检索和任务记录从文档推进到 runtime。
对本仓最有价值的点是:把“AI 协作经验”进一步升级为“可注入、可验证、可迁移、可升级的控制面”。
经验句子容易被遗忘;任务、规格、上下文清单、状态机和验证命令能被下一轮 Agent 继续执行。
### 观察字段
- GitHub URLhttps://github.com/mindfold-ai/Trellis
- 当前研究方向:`agent-harness-framework`
- 当前优先级:P1
- 当前归档状态:`false`
- 主要语言:`TypeScript`
### 后续观察
- `channel` runtime 是否继续成熟为通用多 Agent 协作层。
- `mem` 是否从多平台会话检索扩展为更强的长期项目记忆。
- Codex、Copilot、Gemini 等 pull-based 平台的上下文注入方式是否继续收敛。
- `.trellis/spec/``.trellis/tasks/``.trellis/workflow.md` 的状态契约是否能稳定支撑团队协作。
- AGPL-3.0 许可证边界下,哪些机制可借鉴、哪些代码和模板不能直接搬入本仓。
@@ -0,0 +1,81 @@
# mindfold-ai/Trellis 研究分析
## 本轮结论
`mindfold-ai/Trellis` 的核心价值不是“又一个 AI 编程提示词集合”,而是把 AI 编程的关键过程做成
仓库内控制面:规格注入、任务状态、上下文清单、会话记忆、验证 Agent、多平台适配和可升级模板。
本仓最应该迁移的是它的对象化治理方式:把上下文、约束和验证从聊天窗口中抽离出来,落到仓库文件、
脚本和索引中,让不同 Agent 在不同会话中仍然执行同一套工作流。对本仓而言,最有价值的迁移方向是:
-`docs/research/` 的研究域继续强化为“对象目录 + raw 事实层 + 分析层 + 深度层 + 索引层”。
-`docs/research/harness/` 的概念研究补成任务、规格、记忆、验证四件套的控制面清单。
-`.trellis/tasks/` 的任务 artifact 思想迁移到重要文档任务:目的、约束、验收、验证命令和证据。
-`.trellis/spec/` 的规格注入思想迁移到本仓 AGENTS、README、llms 和 module context 的同步策略。
-`trellis-check``trellis-update-spec` 的收尾机制迁移为“验证后沉淀经验”的固定闭环。
## 本地证据
- 研究对象:`mindfold-ai/Trellis`
- 当前研究角色:跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统
- 原始仓库:`raw/repository/`
- 原始来源清单:`raw/sources.yml`
- 事实摘要:`domain.yml`
- 深度证据:`deep-dive.md`
## 对标拆解
| 项 | 内容 |
|:---|:---|
| 参考对象 | `mindfold-ai/Trellis` |
| 它解决的核心问题 | AI 编程会话从零开始、规则分散、任务状态不稳定、验证闭环弱、多平台配置割裂、跨会话记忆无法复用 |
| 核心机制 | `.trellis/spec/``.trellis/tasks/``.trellis/workflow.md``.trellis/workspace/`、平台配置生成器、`channel` runtime、`mem` 检索、`task` schema |
| 真正带来结果的动作 | 把规则、任务、上下文、验证和会话历史变成仓库内可读、可执行、可升级的 artifact |
| 可迁移做法 | 规格注入、任务 artifact、jsonl 上下文清单、workflow breadcrumb、finish-work 收尾、spec update、跨平台适配矩阵 |
| 不可迁移条件 | 不复制 AGPL 代码或模板;不把本仓改造成 Trellis 运行时;不为了完整性引入过重的 CLI/runtime 所有权面 |
| 下一步试用动作 | 为本仓设计一份“任务 artifact 最小契约”:目标、约束、上下文清单、验证命令、沉淀路径和交接摘要 |
## 改良迭代
| 改良目标 | 原模式 | 本仓版本 | 验证指标 |
|:---|:---|:---|:---|
| 上下文稳定 | Trellis 用 `.trellis/spec/` 和 jsonl 清单给 Agent 注入规则 | 本仓用 AGENTS、README、llms、研究域索引和 raw 事实层形成上下文路由 | 新会话能不用聊天记录也理解目录边界和验证路径 |
| 任务可恢复 | Trellis 每个任务有 PRD、设计、实现计划、上下文清单和状态 | 本仓重要研究/文档任务使用对象目录和分析层记录目的、证据、验收 | 中断后可从文件恢复下一步 |
| 验证闭环 | `trellis-check` 检查 diff`trellis-update-spec` 沉淀新规则 | 本仓用 `make test`、链接检查、结构检查和研究域审计作为收尾门禁 | 交付前有可复跑命令和失败修复路径 |
| 多平台一致 | CLI 生成 Claude、Codex、Cursor、OpenCode 等平台配置 | 本仓维护根 `AGENTS.md``llms.txt``assets/ai-citation/llms-full.txt` 和工具配置入口 | 不同 AI 工具读取到同一套项目事实 |
| 会话记忆 | `mem` 检索 Claude、Codex、OpenCode、Pi 会话 | 本仓将稳定经验写入文档、研究域和技能,而不是依赖聊天历史 | 同类问题能被文档和索引复用 |
## 可迁移清单
- 规格不靠记忆:项目规则必须写入仓库文件,并通过明确入口被 Agent 加载。
- 任务不靠聊天:复杂任务必须有目标、上下文、验收、验证、状态和交接。
- 上下文不全量塞入:用清单声明哪些文件为什么进入当前任务,减少噪声。
- 状态不靠自觉:用 workflow phase 或检查清单强制计划、执行、验证、沉淀的顺序。
- 验证不靠同一上下文自信:实现后必须有独立检查层,重要结论要能交叉审计。
- 经验不只复盘:失败、约束和新模式要回写到规范层,让下一次自动加载。
- 平台不各自为政:Claude、Codex、Cursor 等入口应共享同一项目事实,不维护冲突规则。
- runtime 不默认引入:通道、worker 和会话检索机制值得研究,但本仓先采用轻量文档控制面。
## 不可迁移清单
- 不直接复制 Trellis 的 AGPL-3.0 代码、模板、hook 或脚本。
- 不把 `.trellis/` 原样引入本仓作为新的真相源,除非先完成许可证、维护成本和门禁评估。
- 不把多平台生成器当成所有项目的必选项;小型知识库先维护少量明确入口。
- 不把 channel runtime 当成当前本仓必需能力;只有出现真实多 Agent 并发协作需求时再评估。
- 不用复杂状态机替代清晰文档;只有任务会跨会话、跨 Agent 或需要审计时才提升治理等级。
## 验证动作
| 动作 | 成功信号 | 失败信号 |
|:---|:---|:---|
| 为本仓设计任务 artifact 最小契约 | 新会话能从文件读出目标、约束、上下文和验证 | 仍需要翻聊天记录才能继续 |
| 对现有研究域做一次 Trellis 式上下文清单审计 | 每个研究域都有事实层、分析层、索引层和沉淀路径 | 研究报告读完仍不知道可应用什么 |
| 抽取一条新增经验并回写到稳定入口 | 后续 Agent 能自动读取并执行 | 经验只留在本次回答里 |
| 评估多平台入口一致性 | `AGENTS.md``llms.txt``llms-full.txt` 指向一致 | 不同入口对项目结构说法冲突 |
## 沉淀判断
- 稳定概念进入 `docs/research/harness/``docs/workflow/`
- 可执行任务 artifact 契约成熟后,可进入 `docs/references/``scripts/`
- 与 Skill、Agent、workflow 相关的可复用能力成熟后,再考虑进入 `skills/`
- 本研究域保持 P1,对齐 Agent Harness、任务控制面和多平台 AI 编程运行时。
@@ -0,0 +1,157 @@
# mindfold-ai/Trellis 深度研究
## 一句话判断
Trellis 的底层设计是:把 AI 编程从“聊天驱动”改造成“仓库控制面驱动”,让任务、规格、上下文、
会话、验证和平台适配都成为可版本化对象。
## 结构拆解
| 层级 | 关键对象 | 作用 |
|:---|:---|:---|
| 仓库控制面 | `.trellis/` | 承载 workflow、spec、tasks、workspace、scripts、config,是 Agent 行为的本地真相源。 |
| 任务层 | `.trellis/tasks/{MM-DD-name}/` | 每个任务保存 `task.json``prd.md``design.md``implement.md``implement.jsonl``check.jsonl`。 |
| 规格层 | `.trellis/spec/` | 按 package/layer 管理编码规范、质量规则、架构约束和思考指南。 |
| 状态层 | `.trellis/workflow.md` | 定义 Plan、Execute、Finish 相位和 per-turn workflow-state breadcrumb。 |
| 记忆层 | `.trellis/workspace/``mem` | 保存会话日志,并从 Claude、Codex、OpenCode、Pi 等历史会话中检索上下文。 |
| 适配层 | `.claude/``.codex/``.cursor/``.opencode/` 等 | 把同一套 Trellis 工作流渲染到不同 AI coding 平台。 |
| runtime 层 | `channel`、worker、supervisor、event log | 支撑多 Agent 协作、消息路由、上下文挂载、worker 生命周期和中断。 |
## 关键机制
### 1. 规格注入,而不是模型记忆
Trellis 的 `.trellis/spec/` 把团队规则拆成 package 和 layer,再通过任务的 `implement.jsonl``check.jsonl`
选择性注入给实现 Agent 与检查 Agent。这里的关键不是“多写文档”,而是让文档参与运行时:
- spec 是长期规则;
- task artifact 是短期目标;
- jsonl manifest 是本次任务需要加载的上下文清单;
- implement/check Agent 只读与本次任务相关的部分,避免上下文膨胀。
对本仓的启示:`AGENTS.md``README.md``llms.txt``assets/ai-citation/llms-full.txt` 和研究域索引必须保持一致。
它们不是说明书,而是 AI 进入仓库时的上下文入口。
### 2. 任务是执行单元,不是聊天片段
Trellis 的任务目录把“要做什么”拆成可恢复 artifact:
- `task.json` 保存 24 字段的规范任务记录,包含 status、priority、assignee、branch、commit、PR、parent/children 等。
- `prd.md` 保存需求、约束和验收。
- `design.md` 保存边界、契约、数据流和取舍。
- `implement.md` 保存执行顺序、验证命令、review gate 和回滚点。
- `implement.jsonl``check.jsonl` 保存进入实现/检查阶段的上下文文件和原因。
对本仓的启示:复杂研究和文档治理任务不能只靠聊天推进。至少要能在文件里回答:目标是什么、上下文在哪里、
验收是什么、验证命令是什么、未完成项是什么。
### 3. workflow breadcrumb 把状态注入每一轮
Trellis 在 `.trellis/workflow.md` 中维护 `[workflow-state:STATUS]` 块,并通过 hook 在每轮用户输入时注入当前状态。
这解决的是 Agent 常见失败:忘记先计划、忘记进入检查、忘记提交前验证、忘记收尾沉淀。
关键设计点:
- `no_task` 要求先判断是否创建任务。
- `planning` 要求轻量任务至少有 PRD,复杂任务补齐 `design.md``implement.md`
- `in_progress` 明确实现、检查、更新 spec、commit、finish-work 的顺序。
- Codex 可以走 inline 变体,适配平台子 Agent 隔离问题。
对本仓的启示:工作流规则不应该只写在长文档深处,而应出现在 Agent 每次开始任务时必读的位置。
### 4. 多平台适配不是复制多份规则
Trellis 的 `AI_TOOLS` registry 把 Claude Code、Cursor、OpenCode、Codex、Kilo、Kiro、Gemini、Antigravity、
Devin、Qoder、CodeBuddy、Copilot、Droid、Pi、Reasonix、ZCode、Trae 等平台统一成配置对象。
平台差异被压到 configurator、template 和 hook 能力矩阵中,核心工作流保持一致。
对本仓的启示:多 AI 工具支持应该有一个事实中心。根 `AGENTS.md``llms.txt``assets/ai-citation/llms-full.txt`
和工具目录不能各讲各的。
### 5. channel runtime 把多 Agent 协作变成事件系统
Trellis 的 `channel` API 暴露 channel、thread、message、context、worker、inbox、interrupt、watch、supervisor 等能力。
CLI 侧提供 `create``send``wait``interrupt``spawn``run``list``messages``kill``post` 等命令。
这说明 Trellis 对 Agent 协作的理解不是“开几个窗口”,而是:
- 共享事件日志;
- 明确 worker 身份;
- 消息有发送者、目标、线程和 delivery mode
- 上下文可以挂到 channel 或 thread
- supervisor 管理 worker 生命周期、空闲清理、超时和中断。
对本仓的启示:如果未来真的要做多 Agent 协同研究或 tmux worker 编排,应该优先采用“事件日志 + worker 状态 + 上下文挂载”
的模型,而不是只靠口头分工。
### 6. mem 把历史会话变成可检索材料
Trellis 的 `mem` 子系统从 Claude、Codex、OpenCode、Pi 等平台读取会话,提供 list、search、context、extract、projects。
它的重点不是把所有聊天永久塞回提示词,而是让 Agent 能检索过去发生过的事实、决策和问题。
对本仓的启示:聊天记录可以辅助检索,但稳定知识必须进入仓库文档。真正的长期记忆不是“记住一切”,
而是把有价值的经验晋升到可维护结构。
## 可迁移模式
### 模式一:任务 artifact 最小契约
本仓可以设计轻量版任务契约,不需要引入完整 Trellis runtime
| 字段 | 最小含义 |
|:---|:---|
| 目的 | 本次任务要改变什么结果。 |
| 对象 | 涉及哪些文件、目录、研究域或流程。 |
| 约束 | 哪些地方不能动、哪些事实必须核验。 |
| 上下文 | 当前任务必须读取的文件和原因。 |
| 验收 | 什么状态算完成。 |
| 验证 | 可复跑的命令、检查或人工审计动作。 |
| 沉淀 | 哪些结论要进入 README、AGENTS、llms、research 或 skills。 |
### 模式二:规格入口一致性
本仓已有多个 AI 入口。Trellis 的启示是:入口可以多,事实只能一个。
最低要求:
-`AGENTS.md` 说明仓库操作规则。
- `llms.txt` 提供短上下文入口。
- `assets/ai-citation/llms-full.txt` 提供完整 AI 引用入口。
- `docs/research/README.md``docs/README.md` 提供研究域索引。
- 新增研究域必须同步进入 metadata 和 llms。
### 模式三:验证后更新规格
Trellis 的 `trellis-update-spec` 思路可以转成本仓收尾规则:
1. 完成修改。
2. 运行质量门禁。
3. 如果发现新的稳定规则、坑、流程或边界,回写到对应 AGENTS、README、docs 或 skills。
4. 再提交。
这比“写完总结一下”更强,因为它要求下一次 Agent 能自动读到新规则。
## 不采用 Trellis 的边界
- AGPL-3.0 代码边界:本仓不能直接复制 Trellis 的实现、模板或 hook。
- 项目形态边界:本仓是中文 Vibe Coding 知识库,不是 Trellis runtime 分发包。
- 所有权边界:引入完整 CLI、多平台 configurator 和 channel runtime 会显著增加维护面。
- 需求边界:当前本仓主要需要研究域、文档治理和质量门禁,不需要立即运行 worker supervisor。
## 对本仓的下一步建议
1.`docs/research/harness/` 补一份“Agent Harness 控制面检查清单”。
2. 为复杂文档任务定义轻量任务 artifact 契约。
3. 建立“验证后沉淀规格”的收尾规则,把高频教训写回 AGENTS、README 或 skills。
4. 对多 AI 入口做一致性检查,确保 `AGENTS.md``llms.txt``llms-full.txt` 和研究索引不漂移。
5. 如果未来需要多 Agent 并发执行,再研究 channel runtime 或 `auto-tmux` 的事件化改造。
## 最小试用动作
下一轮可以选一个真实文档任务试用轻量 Trellis 模式:
1. 写一个任务 artifact,明确目的、对象、约束、上下文、验收和验证。
2. 执行修改。
3. 用独立检查视角审计结果。
4. 把新经验回写到稳定入口。
5. 提交前确认索引和 AI 入口同步。
@@ -0,0 +1,37 @@
version: 1
repo:
name: mindfold-ai/Trellis
source_name: mindfold-ai/Trellis
url: https://github.com/mindfold-ai/Trellis
research:
domain_id: mindfold-ai-trellis
domain_name: mindfold-ai/Trellis 研究域
primary_direction: agent-harness-framework
role: 跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统
priority: 1
why_study: 直接补强本仓 Harness 研究线,适合提炼任务控制面、规格注入、多平台 Agent 适配和会话记忆机制。
github_observed:
observed_at: '2026-07-04'
source: gh repo view
stars: 11728
forks: 661
archived: false
language: TypeScript
license: AGPL-3.0
default_branch: main
pushed_at: '2026-07-02T04:33:18Z'
updated_at: '2026-07-03T22:44:18Z'
latest_release: null
homepage: https://docs.trytrellis.app
topics:
- agentic-coding
- ai-workflow
- codex
- harness
- claudecode
source_evidence:
file: user-provided GitHub URL
line: null
maintenance:
fact_policy: GitHub 动态字段只代表 observed_at 当日快照,更新结论前必须重新核验。
split_policy: 本目录已经是一等研究域;更深分析放入本目录新增文档。
@@ -0,0 +1,12 @@
# raw/ Agent 指南
本目录是 `mindfold-ai/Trellis` 的原始事实层。
## 维护规则
- 只保存从研究对象拉取的一手材料,不写分析判断。
- `repository/` 是本地 Git 工作树,刷新时由脚本 clone 或 fast-forward pull。
- 不手工改写 `*.raw.*` 文件内容;需要刷新时运行 `python3 scripts/fetch-research-raw.py`
- `sources.yml` 必须记录拉取时间、来源命令和每个文件的状态。
- 外部 README 原文必须保存为 `.txt`,避免本仓库 Markdown 链接检查误判。
- 分析、判断、采用建议和沉淀路径写回上一级 `README.md``analysis.md``decisions.md`
@@ -0,0 +1,16 @@
# raw 事实层
本目录保存 `mindfold-ai/Trellis` 的本地原始材料快照。
这里不写分析结论,只保存可复查的一手资料:
- `sources.yml`:来源清单、拉取时间、命令和文件状态。
- `repository/`Git 仓库工作树;本目录由 `.gitignore` 忽略,只作为本地研究材料。
- `github-repo.raw.json`GitHub 仓库元数据。
- `github-readme.raw.md.txt`GitHub README 原文快照。
- `github-license.raw.txt`GitHub license 原文快照;仓库无 license 时可能不存在。
- `github-root-contents.raw.json`:默认分支根目录内容快照。
- `github-languages.raw.json`GitHub language 统计快照。
- `github-latest-release.raw.json`:最新 release 快照;无 release 时可能不存在。
`repository/` 是外部源码快照,不参与本仓库 Markdown、链接、README/AGENTS 覆盖检查。原始 README 使用 `.txt` 后缀保存,避免其中的外部相对链接被本仓库 Markdown 链接检查误判。
@@ -0,0 +1,7 @@
{
"TypeScript": 2044535,
"Python": 777390,
"JavaScript": 162160,
"HTML": 14591,
"Shell": 12336
}
@@ -0,0 +1,235 @@
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software.
A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public.
The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version.
An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based on the Program.
To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work.
A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.
The Corresponding Source for a work in source code form is that same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices".
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.
"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.
All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).
However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.
A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.
Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation.
If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements.
You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see <http://www.gnu.org/licenses/>.
@@ -0,0 +1,149 @@
<p align="center">
<picture>
<source srcset="assets/trellis.png" media="(prefers-color-scheme: dark)">
<source srcset="assets/trellis.png" media="(prefers-color-scheme: light)">
<img src="assets/trellis.png" alt="Trellis Logo" width="500" style="image-rendering: -webkit-optimize-contrast; image-rendering: crisp-edges;">
</picture>
</p>
<p align="center">
<strong>An out-of-the-box engineering framework for AI coding.</strong><br/>
<sub>AI writes code fast, but every session it starts from scratch — no memory of your project, your conventions, or your team's requirements. Trellis persists specs, tasks, and memory into your repo, so any coding agent works to your engineering standards.</sub>
</p>
<p align="center">
<a href="./README_CN.md">简体中文</a> •
<a href="https://docs.trytrellis.app/">Docs</a> •
<a href="https://docs.trytrellis.app/start/install-and-first-task">Quick Start</a> •
<a href="https://docs.trytrellis.app/advanced/multi-platform">Supported Platforms</a> •
<a href="https://docs.trytrellis.app/start/real-world-scenarios">Use Cases</a>
</p>
<p align="center">
<a href="https://www.npmjs.com/package/@mindfoldhq/trellis"><img src="https://img.shields.io/npm/v/@mindfoldhq/trellis.svg?style=flat-square&color=2563eb" alt="npm version" /></a>
<a href="https://www.npmjs.com/package/@mindfoldhq/trellis"><img src="https://img.shields.io/npm/dw/@mindfoldhq/trellis?style=flat-square&color=cb3837&label=downloads" alt="npm downloads" /></a>
<a href="https://github.com/mindfold-ai/Trellis/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-16a34a.svg?style=flat-square" alt="license" /></a>
<a href="https://github.com/mindfold-ai/Trellis/stargazers"><img src="https://img.shields.io/github/stars/mindfold-ai/Trellis?style=flat-square&color=eab308" alt="stars" /></a>
<a href="https://docs.trytrellis.app/"><img src="https://img.shields.io/badge/docs-trytrellis.app-0f766e?style=flat-square" alt="docs" /></a>
<a href="https://discord.com/invite/tWcCZ3aRHc"><img src="https://img.shields.io/badge/Discord-Join-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord" /></a>
<a href="https://github.com/mindfold-ai/Trellis/issues"><img src="https://img.shields.io/github/issues/mindfold-ai/Trellis?style=flat-square&color=e67e22" alt="open issues" /></a>
<a href="https://github.com/mindfold-ai/Trellis/pulls"><img src="https://img.shields.io/github/issues-pr/mindfold-ai/Trellis?style=flat-square&color=9b59b6" alt="open PRs" /></a>
<a href="https://deepwiki.com/mindfold-ai/Trellis"><img src="https://img.shields.io/badge/Ask-DeepWiki-blue?style=flat-square" alt="Ask DeepWiki" /></a>
<a href="https://chatgpt.com/?q=Explain+the+project+mindfold-ai/Trellis+on+GitHub"><img src="https://img.shields.io/badge/Ask-ChatGPT-74aa9c?style=flat-square&logo=openai&logoColor=white" alt="Ask ChatGPT" /></a>
</p>
<p align="center">
<img src="assets/trellis-demo.gif" alt="Trellis workflow demo" width="100%">
</p>
## Why Trellis?
| Capability | What it changes |
| --- | --- |
| **Auto-injected specs** | Write conventions once in `.trellis/spec/`, then let Trellis inject the relevant context into each session instead of repeating yourself. |
| **Task-centered workflow** | Keep PRDs, implementation context, review context, and task status in `.trellis/tasks/` so AI work stays structured. |
| **Project memory** | Journals in `.trellis/workspace/` preserve what happened last time, so each new session starts with real context. |
| **Team-shared standards** | Specs live in the repo, so one person's hard-won workflow or rule can benefit the whole team. |
| **Multi-platform setup** | Bring the same Trellis structure to 16 AI coding platforms instead of rebuilding your workflow per tool. |
## Prerequisites:
- **Node.js** >= 18
- **Python** >= 3.9
## Quick Start
```bash
# 1. Install Trellis
npm install -g @mindfoldhq/trellis@latest
# 2. Initialize in your repo
trellis init -u your-name
# 3. Or initialize with the platforms you actually use
trellis init --cursor --opencode --codex -u your-name
```
See the [Quick Start](https://docs.trytrellis.app/start/install-and-first-task) and [Supported Platforms](https://docs.trytrellis.app/advanced/multi-platform) guides for setup details.
## How to Use
The workflow is simple:
1. **Describe what you want** in natural language.
2. **Brainstorm** with the AI one question at a time until the PRD is clear, then implementation begins.
3. **Let it run** — the AI calls Trellis Implement and auto-checks the result against specs, lint, type-check, and tests.
4. **Type `/trellis:finish-work`** when the work is done or the session context fills up. Trellis archives the task and updates journals.
## How It Works
Trellis runs a 4-phase loop with auto-invoked skills and sub-agents:
1. **Plan** — `trellis-brainstorm` walks through requirements one question at a time and writes `prd.md`. Research-heavy items go to a `trellis-research` sub-agent. The result is curated specs + research files referenced from `implement.jsonl` / `check.jsonl`.
2. **Implement** — a `trellis-implement` sub-agent writes code from the PRD with the curated context auto-injected, no git commit.
3. **Verify** — a `trellis-check` sub-agent reviews the diff against specs and runs lint, type-check, and tests, self-fixing where it can.
4. **Finish** — a final check runs, then `trellis-update-spec` promotes new learnings back into `.trellis/spec/` so the next session starts smarter.
## Resources
| Need | Link |
| ------------------------------- | ------------------------------------------------------------------------------ |
| Install Trellis in a repo | [Quick Start](https://docs.trytrellis.app/start/install-and-first-task) |
| Understand platform differences | [Supported Platforms](https://docs.trytrellis.app/advanced/multi-platform) |
| See the workflow in practice | [Real-World Scenarios](https://docs.trytrellis.app/start/real-world-scenarios) |
| Start from spec templates | [Spec Templates](https://docs.trytrellis.app/templates/specs-index) |
| Track releases | [Changelog](https://docs.trytrellis.app/changelog) |
## FAQ
<details>
<summary><strong>How is Trellis different from <code>CLAUDE.md</code>, <code>AGENTS.md</code>, or <code>.cursorrules</code>?</strong></summary>
Those files are useful entry points, but they tend to become monolithic. Trellis adds scoped specs, task PRDs, workflow gates, workspace memory, and platform-aware generated files around them.
</details>
<details>
<summary><strong>Is Trellis only for Claude Code?</strong></summary>
No. Trellis is a project layer that works across multiple coding agents and IDEs.
</details>
<details>
<summary><strong>Is Trellis for solo developers or teams?</strong></summary>
Both. Solo developers use it for memory and repeatable workflow. Teams get the larger benefit: shared standards, task boundaries, reviewable context, and platform portability.
</details>
<details>
<summary><strong>Do I have to write every spec file manually?</strong></summary>
No. Many teams start by letting AI draft specs from existing code and then tighten the important parts by hand. Trellis works best when you keep the high-signal rules explicit and versioned.
</details>
<details>
<summary><strong>Can teams use this without constant conflicts?</strong></summary>
Yes. Personal workspace journals stay separate per developer, while shared specs and tasks stay in the repo where they can be reviewed and improved like any other project artifact.
</details>
## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=mindfold-ai/Trellis&type=Date)](https://star-history.com/#mindfold-ai/Trellis&Date)
## Community & Resources
- [Official Docs](https://docs.trytrellis.app/)
- [GitHub Issues](https://github.com/mindfold-ai/Trellis/issues)
- [Discord](https://discord.com/invite/tWcCZ3aRHc)
- [Tech Blog](https://docs.trytrellis.app/blog)
<p align="center">
<a href="https://github.com/mindfold-ai/Trellis">Official Repository</a> •
<a href="https://github.com/mindfold-ai/Trellis/blob/main/LICENSE">AGPL-3.0 License</a> •
Built by <a href="https://github.com/mindfold-ai">Mindfold</a>
</p>
@@ -0,0 +1,46 @@
{
"createdAt": "2026-01-26T11:49:10Z",
"defaultBranchRef": {
"name": "main"
},
"description": "The best agent harness.",
"forkCount": 661,
"homepageUrl": "https://docs.trytrellis.app",
"isArchived": false,
"isFork": false,
"isMirror": false,
"latestRelease": null,
"licenseInfo": {
"key": "agpl-3.0",
"name": "GNU Affero General Public License v3.0",
"nickname": "GNU AGPLv3"
},
"nameWithOwner": "mindfold-ai/Trellis",
"primaryLanguage": {
"name": "TypeScript"
},
"pushedAt": "2026-07-02T04:33:18Z",
"repositoryTopics": [
{
"name": "agentic-coding"
},
{
"name": "ai-workflow"
},
{
"name": "codex"
},
{
"name": "harness"
},
{
"name": "claudecode"
}
],
"stargazerCount": 11728,
"updatedAt": "2026-07-03T22:44:18Z",
"url": "https://github.com/mindfold-ai/Trellis",
"watchers": {
"totalCount": 29
}
}
@@ -0,0 +1,466 @@
[
{
"name": ".agents",
"path": ".agents",
"sha": "6885670ee3a7ed5957ef731428333c0673eb8cc2",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.agents?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/.agents",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/6885670ee3a7ed5957ef731428333c0673eb8cc2",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.agents?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/6885670ee3a7ed5957ef731428333c0673eb8cc2",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/.agents"
}
},
{
"name": ".claude",
"path": ".claude",
"sha": "79b9deccba46c4a92ec5c265bc54d3ba2af9cb99",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.claude?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/.claude",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/79b9deccba46c4a92ec5c265bc54d3ba2af9cb99",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.claude?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/79b9deccba46c4a92ec5c265bc54d3ba2af9cb99",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/.claude"
}
},
{
"name": ".codex",
"path": ".codex",
"sha": "d762ddedb772ba9aec2535735129642dd4864f74",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.codex?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/.codex",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/d762ddedb772ba9aec2535735129642dd4864f74",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.codex?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/d762ddedb772ba9aec2535735129642dd4864f74",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/.codex"
}
},
{
"name": ".cursor",
"path": ".cursor",
"sha": "8de0905de1e19fa2e1853abab8f1f22a501c51af",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.cursor?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/.cursor",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/8de0905de1e19fa2e1853abab8f1f22a501c51af",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.cursor?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/8de0905de1e19fa2e1853abab8f1f22a501c51af",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/.cursor"
}
},
{
"name": ".github",
"path": ".github",
"sha": "86aa9e52d726b75bfc43c8c918ebba6112c2748e",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.github?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/.github",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/86aa9e52d726b75bfc43c8c918ebba6112c2748e",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.github?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/86aa9e52d726b75bfc43c8c918ebba6112c2748e",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/.github"
}
},
{
"name": ".gitignore",
"path": ".gitignore",
"sha": "2d83298a5a222693b0936df0b28c47dc8a591652",
"size": 2907,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.gitignore?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/.gitignore",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/2d83298a5a222693b0936df0b28c47dc8a591652",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/.gitignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.gitignore?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/2d83298a5a222693b0936df0b28c47dc8a591652",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/.gitignore"
}
},
{
"name": ".gitmodules",
"path": ".gitmodules",
"sha": "8694e6adf63468db89368fc2f8fcd9193a696868",
"size": 189,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.gitmodules?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/.gitmodules",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/8694e6adf63468db89368fc2f8fcd9193a696868",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/.gitmodules",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.gitmodules?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/8694e6adf63468db89368fc2f8fcd9193a696868",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/.gitmodules"
}
},
{
"name": ".husky",
"path": ".husky",
"sha": "634ce13f3215730cc01bbce8187a8db8f3e8db63",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.husky?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/.husky",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/634ce13f3215730cc01bbce8187a8db8f3e8db63",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.husky?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/634ce13f3215730cc01bbce8187a8db8f3e8db63",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/.husky"
}
},
{
"name": ".lintstagedrc",
"path": ".lintstagedrc",
"sha": "d4b1d5d91626144351d5886d6db35464763c0a88",
"size": 149,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.lintstagedrc?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/.lintstagedrc",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/d4b1d5d91626144351d5886d6db35464763c0a88",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/.lintstagedrc",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.lintstagedrc?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/d4b1d5d91626144351d5886d6db35464763c0a88",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/.lintstagedrc"
}
},
{
"name": ".opencode",
"path": ".opencode",
"sha": "1acacb1442960c7c7a9ccf7b8ba5a97931eb5e95",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.opencode?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/.opencode",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/1acacb1442960c7c7a9ccf7b8ba5a97931eb5e95",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.opencode?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/1acacb1442960c7c7a9ccf7b8ba5a97931eb5e95",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/.opencode"
}
},
{
"name": ".pi",
"path": ".pi",
"sha": "e1528793ce23044ef2185c7fd93245e49439232d",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.pi?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/.pi",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/e1528793ce23044ef2185c7fd93245e49439232d",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.pi?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/e1528793ce23044ef2185c7fd93245e49439232d",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/.pi"
}
},
{
"name": ".trellis",
"path": ".trellis",
"sha": "110d68f8e6db5887919cd22bc5f9b811ece24300",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.trellis?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/.trellis",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/110d68f8e6db5887919cd22bc5f9b811ece24300",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/.trellis?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/110d68f8e6db5887919cd22bc5f9b811ece24300",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/.trellis"
}
},
{
"name": "AGENTS.md",
"path": "AGENTS.md",
"sha": "2e516c4d4c5ebbf733c42ddad064000bb915503f",
"size": 3843,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/AGENTS.md?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/AGENTS.md",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/2e516c4d4c5ebbf733c42ddad064000bb915503f",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/AGENTS.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/AGENTS.md?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/2e516c4d4c5ebbf733c42ddad064000bb915503f",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/AGENTS.md"
}
},
{
"name": "CLAUDE.md",
"path": "CLAUDE.md",
"sha": "9f51904bc6657728654a01bcd7a0ed26d44b6c5f",
"size": 5127,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/CLAUDE.md?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/CLAUDE.md",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/9f51904bc6657728654a01bcd7a0ed26d44b6c5f",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/CLAUDE.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/CLAUDE.md?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/9f51904bc6657728654a01bcd7a0ed26d44b6c5f",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/CLAUDE.md"
}
},
{
"name": "CONTRIBUTING.md",
"path": "CONTRIBUTING.md",
"sha": "5547fe6a55d28cd89b28bcfa3b09ab3785b4eb62",
"size": 4043,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/CONTRIBUTING.md?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/CONTRIBUTING.md",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/5547fe6a55d28cd89b28bcfa3b09ab3785b4eb62",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/CONTRIBUTING.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/CONTRIBUTING.md?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/5547fe6a55d28cd89b28bcfa3b09ab3785b4eb62",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/CONTRIBUTING.md"
}
},
{
"name": "CONTRIBUTING_CN.md",
"path": "CONTRIBUTING_CN.md",
"sha": "42d348480cf7ba40edfed1847c2c5d27d65ed509",
"size": 3700,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/CONTRIBUTING_CN.md?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/CONTRIBUTING_CN.md",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/42d348480cf7ba40edfed1847c2c5d27d65ed509",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/CONTRIBUTING_CN.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/CONTRIBUTING_CN.md?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/42d348480cf7ba40edfed1847c2c5d27d65ed509",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/CONTRIBUTING_CN.md"
}
},
{
"name": "COPYRIGHT",
"path": "COPYRIGHT",
"sha": "836b3fd2a97dc50b84b646219f55c71f19464799",
"size": 734,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/COPYRIGHT?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/COPYRIGHT",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/836b3fd2a97dc50b84b646219f55c71f19464799",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/COPYRIGHT",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/COPYRIGHT?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/836b3fd2a97dc50b84b646219f55c71f19464799",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/COPYRIGHT"
}
},
{
"name": "LICENSE",
"path": "LICENSE",
"sha": "0c97efd25b5974b974ed9a8a18207bc4f55bb338",
"size": 34020,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/LICENSE?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/LICENSE",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/0c97efd25b5974b974ed9a8a18207bc4f55bb338",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/LICENSE",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/LICENSE?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/0c97efd25b5974b974ed9a8a18207bc4f55bb338",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/LICENSE"
}
},
{
"name": "README.md",
"path": "README.md",
"sha": "9c84539811bf2263e1517c2669066362b463c4f4",
"size": 8404,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/README.md?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/README.md",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/9c84539811bf2263e1517c2669066362b463c4f4",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/README.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/README.md?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/9c84539811bf2263e1517c2669066362b463c4f4",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/README.md"
}
},
{
"name": "README_CN.md",
"path": "README_CN.md",
"sha": "4309bf07d635d9a2f6041604f3ff7eaff9f8843c",
"size": 8626,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/README_CN.md?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/README_CN.md",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/4309bf07d635d9a2f6041604f3ff7eaff9f8843c",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/README_CN.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/README_CN.md?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/4309bf07d635d9a2f6041604f3ff7eaff9f8843c",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/README_CN.md"
}
},
{
"name": "assets",
"path": "assets",
"sha": "da15d29ed750299ddaa37c6eac72684db595437c",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/assets?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/assets",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/da15d29ed750299ddaa37c6eac72684db595437c",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/assets?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/da15d29ed750299ddaa37c6eac72684db595437c",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/assets"
}
},
{
"name": "docs-site",
"path": "docs-site",
"sha": "44341c92082bf602594cc10b1e75fe6b09782244",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/docs-site?ref=main",
"html_url": "https://github.com/mindfold-ai/docs/tree/44341c92082bf602594cc10b1e75fe6b09782244",
"git_url": "https://api.github.com/repos/mindfold-ai/docs/git/trees/44341c92082bf602594cc10b1e75fe6b09782244",
"download_url": null,
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/docs-site?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/docs/git/trees/44341c92082bf602594cc10b1e75fe6b09782244",
"html": "https://github.com/mindfold-ai/docs/tree/44341c92082bf602594cc10b1e75fe6b09782244"
}
},
{
"name": "drafts",
"path": "drafts",
"sha": "ad9c98443adb0567dd12ed49506101be665c35ef",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/drafts?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/drafts",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/ad9c98443adb0567dd12ed49506101be665c35ef",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/drafts?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/ad9c98443adb0567dd12ed49506101be665c35ef",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/drafts"
}
},
{
"name": "marketplace",
"path": "marketplace",
"sha": "2f2e30d1465fe3e2a4ea8cd107dab2a1070ef25b",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/marketplace?ref=main",
"html_url": "https://github.com/mindfold-ai/marketplace/tree/2f2e30d1465fe3e2a4ea8cd107dab2a1070ef25b",
"git_url": "https://api.github.com/repos/mindfold-ai/marketplace/git/trees/2f2e30d1465fe3e2a4ea8cd107dab2a1070ef25b",
"download_url": null,
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/marketplace?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/marketplace/git/trees/2f2e30d1465fe3e2a4ea8cd107dab2a1070ef25b",
"html": "https://github.com/mindfold-ai/marketplace/tree/2f2e30d1465fe3e2a4ea8cd107dab2a1070ef25b"
}
},
{
"name": "package.json",
"path": "package.json",
"sha": "3d1d1a7415e4b705fc10e26940ea9302daefa082",
"size": 1432,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/package.json?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/package.json",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/3d1d1a7415e4b705fc10e26940ea9302daefa082",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/package.json",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/package.json?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/3d1d1a7415e4b705fc10e26940ea9302daefa082",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/package.json"
}
},
{
"name": "packages",
"path": "packages",
"sha": "7db088fef597fb91a2082a2e5de6c63a35a4db98",
"size": 0,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/packages?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/tree/main/packages",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/7db088fef597fb91a2082a2e5de6c63a35a4db98",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/packages?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/trees/7db088fef597fb91a2082a2e5de6c63a35a4db98",
"html": "https://github.com/mindfold-ai/Trellis/tree/main/packages"
}
},
{
"name": "pnpm-lock.yaml",
"path": "pnpm-lock.yaml",
"sha": "50e443542014ac876a3bdbd29d6aec4371aaf9f3",
"size": 84818,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/pnpm-lock.yaml?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/pnpm-lock.yaml",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/50e443542014ac876a3bdbd29d6aec4371aaf9f3",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/pnpm-lock.yaml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/pnpm-lock.yaml?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/50e443542014ac876a3bdbd29d6aec4371aaf9f3",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/pnpm-lock.yaml"
}
},
{
"name": "pnpm-workspace.yaml",
"path": "pnpm-workspace.yaml",
"sha": "dee51e928d8abc3063b11689792bba48750eb708",
"size": 27,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/pnpm-workspace.yaml?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/pnpm-workspace.yaml",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/dee51e928d8abc3063b11689792bba48750eb708",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/pnpm-workspace.yaml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/pnpm-workspace.yaml?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/dee51e928d8abc3063b11689792bba48750eb708",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/pnpm-workspace.yaml"
}
},
{
"name": "pyrightconfig.json",
"path": "pyrightconfig.json",
"sha": "8916d8ad759e1ed04ecdea68f2891aecb0e3b76d",
"size": 382,
"url": "https://api.github.com/repos/mindfold-ai/Trellis/contents/pyrightconfig.json?ref=main",
"html_url": "https://github.com/mindfold-ai/Trellis/blob/main/pyrightconfig.json",
"git_url": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/8916d8ad759e1ed04ecdea68f2891aecb0e3b76d",
"download_url": "https://raw.githubusercontent.com/mindfold-ai/Trellis/main/pyrightconfig.json",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/mindfold-ai/Trellis/contents/pyrightconfig.json?ref=main",
"git": "https://api.github.com/repos/mindfold-ai/Trellis/git/blobs/8916d8ad759e1ed04ecdea68f2891aecb0e3b76d",
"html": "https://github.com/mindfold-ai/Trellis/blob/main/pyrightconfig.json"
}
}
]
@@ -0,0 +1,39 @@
version: 1
domain_id: mindfold-ai-trellis
object:
type: github_repository
name: mindfold-ai/Trellis
url: https://github.com/mindfold-ai/Trellis
pulled_at: '2026-07-03T23:09:26+00:00'
puller: scripts/fetch-research-raw.py
files:
- path: repository/
kind: git-working-tree
status: ok
source: 'git -C docs/research/mindfold-ai-trellis/raw/repository pull --ff-only'
message: 'Already up to date.'
- path: github-repo.raw.json
kind: repository-metadata
status: ok
source: 'gh repo view mindfold-ai/Trellis --json nameWithOwner,url,description,homepageUrl,isArchived,isFork,isMirror,defaultBranchRef,licenseInfo,primaryLanguage,repositoryTopics,stargazerCount,forkCount,watchers,createdAt,updatedAt,pushedAt,latestRelease --jq .'
- path: github-readme.raw.md.txt
kind: readme
status: ok
source: 'gh api repos/mindfold-ai/Trellis/readme -H Accept: application/vnd.github.raw'
- path: github-license.raw.txt
kind: license
status: ok
source: 'gh api repos/mindfold-ai/Trellis/license -H Accept: application/vnd.github.raw'
- path: github-root-contents.raw.json
kind: root-contents
status: ok
source: 'gh api repos/mindfold-ai/Trellis/contents'
- path: github-languages.raw.json
kind: languages
status: ok
source: 'gh api repos/mindfold-ai/Trellis/languages'
- path: github-latest-release.raw.json
kind: latest-release
status: missing_or_error
source: 'gh api repos/mindfold-ai/Trellis/releases/latest'
message: 'gh: Not Found (HTTP 404)'
+6 -4
View File
@@ -3,8 +3,8 @@
## 字多不看
- 研究不是证明“我看过资料”,而是把成熟对象拆成可迁移机制、不可迁移边界和可验证动作。
- 本轮把 P1 研究对象合成为一条主线:Codex 负责执行控制面,Aider 负责 Git 编辑闭环,Cline 负责多入口平台化,Claude Code Best Practice 负责方法论资产化。
- 当前 18 个研究域均已补齐 `deep-dive.md`,全量进入 L2 证据层。
- 本轮把 P1 研究对象合成为一条主线:Codex 负责执行控制面,Trellis 负责 Agent Harness 任务/规格/记忆控制面,Aider 负责 Git 编辑闭环,Cline 负责多入口平台化,Claude Code Best Practice 负责方法论资产化。
- 当前 19 个研究域均已补齐 `deep-dive.md`,全量进入 L2 证据层。
- 本仓不应该复制任何一个外部项目,而应该杂交成“AI 原生知识库控制面”。
- 下一步最小试用动作是:补 `scripts` 风险登记、补 Harness 检查表、补资源治理 schema、补工作流验证闭环。
@@ -30,6 +30,7 @@
|:---|:---|:---|:---|:---|:---|
| `openai/codex` | 执行控制面 | 把配置、沙箱、执行策略、工具、技能和项目上下文显式建模 | `scripts` 风险分级、Agent 执行边界、技能输入输出契约 | 不复制 Rust/Bazel/CLI runtime,本仓不是 coding agent 产品 | 建立 `scripts/manifest.yml`,记录 owner、风险、输入、输出、dry-run 和 CI 状态 |
| `walkinglabs/learn-harness-engineering` | Harness 课程到工具化 | 把 Agent 可靠性拆成指令、状态、验证、范围、生命周期、模板、Skill 和审计脚本 | 五子系统审计、feature state、init 验证入口、评估表、会话交接 | 不复制 VitePress 站点、多语言工程和 Electron 课程项目 | 为本仓 Harness 研究域补最小检查表,并抽样改写成文档仓库版本 |
| `mindfold-ai/Trellis` | Agent Harness 任务/规格/记忆控制面 | 把 AI 编程会话转成 `.trellis/spec``.trellis/tasks`、workflow breadcrumb、workspace、channel runtime 和多平台配置 | 任务 artifact 最小契约、规格入口一致性、验证后沉淀、jsonl 上下文清单、多 AI 入口同步 | 不复制 AGPL 代码或模板,不把本仓改造成 Trellis runtime | 设计本仓轻量任务 artifact 契约,并用一个复杂文档任务试跑 |
| `Aider-AI/aider` | Git 驱动编辑闭环 | 让每次 AI 修改都进入 diff、lint/test、commit、回滚和审查链路 | 研究域和文档修改必须保留 diff 证据、门禁命令和失败修复记录 | 不复制 Python 实现、repo map 算法和完整交互式终端产品 | 建立“AI 修改 -> diff 审查 -> make test -> commit”工作流模板 |
| `cline/cline` | 多入口 agent 平台 | 同一套能力暴露为 IDE、CLI、SDK、rules、skills、examples 和测试平台 | 为人类入口、AI 入口、脚本入口、skill 入口、资源入口和 metadata 入口写清协议 | 不提前做 SDK、服务端 hub 或复杂 UI | 梳理本仓入口矩阵,记录每个入口的输入、输出、owner 和验证命令 |
| `shanraisshan/claude-code-best-practice` | 方法论资产化 | 把经验拆成 best practice、implementation、workflow、reports、config | 把经验短句下沉为概念、模板、流程、skill 或检查项 | 不照搬 Claude Code 生态绑定配置,不把个人偏好当通用标准 | 建立“经验 -> 产物类型 -> 验证方式”的分流表 |
@@ -42,6 +43,7 @@
|:---|:---|:---|:---|:---|
| `openai-codex` | coding-agent-tooling | 执行控制面 | `scripts/``workflow/``references/` | 建脚本风险登记表 |
| `walkinglabs-learn-harness-engineering` | harness-engineering | Harness 课程、模板、Skill 与审计工具 | `docs/research/harness/``workflow/``scripts/``skills/` | 建最小 Harness 检查表 |
| `mindfold-ai-trellis` | agent-harness-framework | 任务、规格、记忆、验证和多平台适配控制面 | `docs/research/harness/``workflow/``metadata/``llms.txt` | 建任务 artifact 最小契约 |
| `aider-ai-aider` | coding-agent-tooling | Git 驱动编辑闭环 | `workflow/` | 建 AI 修改到提交的证据模板 |
| `cline-cline` | coding-agent-tooling | 多入口 agent 平台 | `metadata/``llms.txt``skills/` | 建入口矩阵 |
| `shanraisshan-claude-code-best-practice` | agentic-engineering-methodology | 方法论资产化 | `concepts/``workflow/``skills/` | 建经验分流表 |
@@ -67,8 +69,8 @@
| 改动点 | 原模式 | 本仓改良 | 验证指标 |
|:---|:---|:---|:---|
| 研究域分析 | 结构观察和可借鉴点 | 对标拆解、迁移边界、试用动作 | 18 个研究域 `analysis.md` 都有可执行动作 |
| 深度研究 | L2 证据和关键机制 | 保留证据链,另写迁移综合 | 18 个研究域均有 `deep-dive.md` |
| 研究域分析 | 结构观察和可借鉴点 | 对标拆解、迁移边界、试用动作 | 19 个研究域 `analysis.md` 都有可执行动作 |
| 深度研究 | L2 证据和关键机制 | 保留证据链,另写迁移综合 | 19 个研究域均有 `deep-dive.md` |
| 价值地图 | 用户价值说明 | 增加组合方案和验收指标 | 能回答“看完有什么用” |
### 第二轮:让研究进入仓库控制面
@@ -2,10 +2,10 @@
## 字多不看
- 当前研究体系已经覆盖 18 个独立研究域,18 个均已完成 L2 深度研究。
- 当前研究体系已经覆盖 19 个独立研究域,19 个均已完成 L2 深度研究。
- 这些研究不是为了介绍外部项目,而是为了把外部项目拆成可验证事实、核心机制、迁移边界和本仓可执行改进项。
- 18 个研究域的 `analysis.md` 已统一为对标拆解、改良迭代、可迁移清单、不可迁移清单和验证动作格式。
- 18 个研究域的 `deep-dive.md` 已补齐 L2 证据层、关键机制、迁移边界和 L3 验证任务。
- 19 个研究域的 `analysis.md` 已统一为对标拆解、改良迭代、可迁移清单、不可迁移清单和验证动作格式。
- 19 个研究域的 `deep-dive.md` 已补齐 L2 证据层、关键机制、迁移边界和 L3 验证任务。
- 用户获得的直接价值是少走弯路、看见范式、拿到可落地路线。
- 本仓获得的直接价值是形成 `getting-started``references``workflow``skills``assets``scripts`
`research` 的改进输入。
@@ -16,8 +16,8 @@
| 层级 | 数量 | 状态 | 说明 |
|:---|---:|:---|:---|
| 研究域 | 18 | 已建立 | 每个外部仓库一个独立研究域,均有 raw 原始事实层、`analysis.md``deep-dive.md` |
| L2 深度研究 | 18 | 已完成 | 覆盖工具、课程、资源索引、项目实践、中文主题雷达、Harness 课程和归档工具样本 |
| 研究域 | 19 | 已建立 | 每个外部仓库一个独立研究域,均有 raw 原始事实层、`analysis.md``deep-dive.md` |
| L2 深度研究 | 19 | 已完成 | 覆盖工具、课程、资源索引、项目实践、中文主题雷达、Harness 课程、Agent Harness 框架和归档工具样本 |
| L1 观察研究 | 0 | 已清空 | P3 仍是低采用优先级,不再代表研究深度缺口 |
## 用户能获得什么
@@ -76,7 +76,7 @@
### 一、AI Coding 的底座是控制面
来自 `openai/codex``aider``cline` 的共同启示是:成熟 coding agent 依赖控制面,而不是只依赖
来自 `openai/codex``aider``cline``Trellis` 的共同启示是:成熟 coding agent 依赖控制面,而不是只依赖
聊天能力。
可迁移结论:
@@ -141,6 +141,7 @@
|:---|:---|:---|:---|
| `openai/codex` | 理解 coding agent 控制面 | `scripts/``skills/``references/` | 脚本风险分级、沙箱/审批清单、Agent 控制面模板 |
| `learn-harness-engineering` | 理解 Harness 如何从概念变成课程、模板、Skill 和审计工具 | `docs/research/harness/``workflow/``scripts/``skills/` | 最小 Harness 检查表、feature state 样例、Agent 产出评估表 |
| `Trellis` | 理解跨平台 Agent Harness 如何把任务、规格、记忆和验证做成仓库控制面 | `docs/research/harness/``workflow/``metadata/``llms.txt` | 任务 artifact 最小契约、规格入口一致性检查、验证后沉淀规则 |
| `aider` | 理解 Git 驱动 AI 修改闭环 | `workflow/``references/` | AI 修改到提交的标准流程、文档 map / repo map 机制 |
| `cline` | 理解多入口 agent 平台 | `metadata/``llms.txt``skills/` | 人类入口、AI 入口、脚本入口、skill 入口的入口契约 |
| `awesome-claude-code` | 理解资源治理 | `assets/external-resources/` | 资源 schema、生命周期字段、资源校验脚本 |
+1
View File
@@ -56,6 +56,7 @@ vibe-coding-cn 是一个中文 Vibe Coding / AI 结对编程系统教程,帮
- docs/research/research-transfer-synthesis.md
- docs/research/harness/harness-engineering.md
- docs/research/walkinglabs-learn-harness-engineering/README.md
- docs/research/mindfold-ai-trellis/README.md
- docs/research/openai-codex/README.md
- docs/research/shanraisshan-claude-code-best-practice/README.md
- docs/research/cline-cline/README.md
+9
View File
@@ -190,6 +190,15 @@ documents:
- path: docs/research/walkinglabs-learn-harness-engineering/deep-dive.md
title: walkinglabs/learn-harness-engineering 深度研究
role: L2 结构深度研究、关键机制和本仓应用建议
- path: docs/research/mindfold-ai-trellis/README.md
title: mindfold-ai/Trellis 研究域
role: 跨平台 Agent Harness 框架、CLI 与任务/规格/记忆系统
- path: docs/research/mindfold-ai-trellis/analysis.md
title: mindfold-ai/Trellis 研究分析
role: 结构化研究结论、可迁移做法、风险和验证动作
- path: docs/research/mindfold-ai-trellis/deep-dive.md
title: mindfold-ai/Trellis 深度研究
role: L2 结构深度研究、关键机制和本仓应用建议
- path: docs/research/aider-ai-aider/README.md
title: Aider-AI/aider 研究域
role: 终端 AI 结对编程工具