Team First Development(TFD)是一套选择性使用的 Codex 团队开发方法。它通过 目标对齐、模型与职责匹配、聚焦上下文和独立审核,改善一个边界明确的开发结果。
当前源码版本为 3.5.0。是否已发布以 v3.5.0 标签和 GitHub Release 为准;
本地检出本身不能证明已经安装、部署或发布。
显式调用唯一的 Skill:
Use tfd:using-tfd to complete this development task.
TFD 首先判断协作收益是否高于协调成本。简单任务由单 Agent 完成,不读取或写入
.tfd/。当任务包含可分离的专业职责,或风险确实要求独立审核时,才考虑使用
项目已配置的团队。
对于 TEAM,Coordinator 在激活成员前把有界目标拆成最少且有用的
workstream。精确确认方案必须展示每个 workstream 的责任成员、验收条件、写入
范围、依赖、交接,以及并行或串行顺序。
只有 Coordinator 可以激活成员;成员不能继续委派,也不能创建未经确认的辅助
Agent。只有无依赖且写入范围不重叠的 workstream 才可并行;BLOCKER 会停止
下游,Coordinator 最后把已接受的产出整合成一个不可变审核候选。
默认仍是人工确认。用户显式选择 AUTO_REVIEW 后,只需先确认一个会话级
Autonomy Envelope,其中列明范围、Roster、workstream、可自动审核的 Gate、有界修复
策略、证据要求和精确外部目标。当前 Coordinator 随即成为 Orchestrator,自动审核
并通过每个 Envelope 内 Gate,不再等待用户逐次回复。只有风险或 Envelope 要求时
才调用独立 reviewer;reviewer 提供证据,Orchestrator 才是审批权威。
只有证据充分的 Orchestrator PASS 会推进。BLOCKER 可以进入 Envelope 内的
有界修复循环,UNVERIFIED 可以触发已列明的补证,但都不能直接释放下游。Envelope
可以预先授权精确 commit、non-force merge、branch/tag-ref push、tag、Release、本地
first install/reinstall 和 non-production deployment。production deployment、破坏性
或 force 操作、付费资源、提权、外部消息、安全或身份变更、用户验收、扩大范围,
以及修改 Envelope/Orchestrator,始终只能由用户确认;宿主或平台确认也不能绕过。
未来才产生的 candidate、commit、tag、Release、artifact、install 和 deployment 值,
必须用 late-bound 引用绑定到一个命名 Gate 输出。Orchestrator 在下游 Gate 前冻结完整
digest/OID 并校验 lineage,因此一次确认即可驱动完整链路,不会依赖可漂移的
latest,也不必在每个产物出现后再次询问。有界修复会作废并重算全部下游派生输出。
凡是修改源码或软件架构的任务,TFD 都必须在最终确定 PLAN 前完整读取
references/engineering-constraints.md。
这个要求同时适用于 SOLO 和团队执行。规则保持不变;证据深度按风险缩放。
该 reference 是唯一规范副本。计划只识别相关改动形状,执行只携带适用约束, review 检查完整候选;不增加第二个 Skill 或策略引擎。
项目创建时可以定义可复用的团队和成员资料:
.tfd/
├── manifest.yaml
├── product-team/
│ ├── team.yaml
│ ├── members/
│ │ ├── alice.yaml
│ │ └── bob.yaml
│ ├── receipts/ # Wiki 初始化前的旧回执
│ └── wiki/
│ ├── schema.md
│ ├── raw/
│ ├── pages/
│ ├── queries/
│ ├── activity/
│ ├── index.md
│ └── log.md
└── platform-team/
├── team.yaml
└── members/
└── tingting.yaml
manifest.yaml 只索引团队目录。每个 team.yaml 保存团队名称、用途、成员 ID,
以及可选的 trace: delivery_receipt 策略。每位成员都有一个以人物名字命名的
members/<name>.yaml:
display_name: Alice
responsibility: Implement the agreed product scope
expected_output: A runnable and verified result
agency_role: backend-architect
runtime: codex_thread
model: gpt-5.3-codex-spark
reasoning_effort: high
skills: []agency_role 是可选的冻结方法来源,与 Runtime 和模型相互独立。TFD 不安装或
运行 agency-agents,不同步人物卡,也不批量导入角色。skills 可以为空;列出
的每个 Skill 都必须以精确名称安装在本地。
| Runtime | 执行入口 | 用户可见行为 |
|---|---|---|
codex_spawn |
spawn_agent |
当前任务内的子 Agent |
codex_thread |
Codex thread/App Server | 侧边栏可见的独立任务 |
codex_exec |
codex exec |
一次性 CLI 运行 |
新建或修改成员资料时必须填写 runtime。v3.1 资料缺少 runtime 时解析为
codex_spawn,TFD 必须在激活方案中展示该结果,且不自动改写资料。
项目创建只起草团队资料,不创建 Agent。每个开发需求最多选择一个已配置团队, 再从中选择覆盖计划所需的最小成员子集。经常需要的跨职能组合应单独配置成一个 团队。
写入团队资料或创建任何 Agent 前,TFD 必须先展示精确团队方案:目标与范围、
团队标识与用途、每位成员的 ID、显示名称、职责和预期产出、精确模型与 Skills、
可选 agency_role、精确 Runtime、reasoning_effort(或默认值)、资格证据与
来源、用户可见行为、最小激活成员子集与独立 reviewer,以及本次动作是写资料、
激活成员,还是两者都做。
笼统的“组建团队”、沉默、时间紧迫或允许 TFD 自行选择,都不等于确认用户尚未 看过的名单。TFD 必须等待明确确认。若同一份方案同时写明资料写入和立即激活, 一次确认即可覆盖两项动作。任何提案字段发生实质变化都必须重新确认,包括目标、 验收条件、范围、排除项、动作模式、团队标识或用途、成员身份、职责、产出、模型、 Runtime、reasoning effort、Skill、激活子集或 reviewer。
仅配置资料时,TFD 只写入已确认的 profiles,然后停止,不创建 Agent。
codex_spawn 在当前任务内创建子 Agent;codex_thread 创建侧边栏可见的独立
Codex 任务;codex_exec 创建一次性 CLI 运行。
models_cache.json 只用于发现账户候选模型,不证明某个 Runtime 当前可执行该模型。
TFD 还要在所选执行入口检查资格,并要求每个 Skill 以精确名称安装在本机。
确认后只按指定的 runtime + model + reasoning_effort 启动一次;缺少可信运行元数据
时保留 UNVERIFIED,启动失败或不匹配不能成为成功交付。TFD 不自动重试、切换
Runtime、替换模型、降低 reasoning effort 或采用其他静默降级。
完整最小示例见
plugins/tfd/examples/project-tfd。
每个已配置团队可以在自己的目录下拥有一个 Git 原生 Markdown Wiki。团队目录被 移动或归档时,Wiki 会一起保留。LLM Wiki 分为三层:
raw/按完整摘要保存不可变来源快照;pages/和index.md保存带来源引用、相互链接的维护知识;log.md、queries/和activity/保存知识变更、明确提问和有限工作里程碑 的追加式审计。
它不是通用 RAG,也不会恢复任务控制平面。V1 没有 embedding、向量数据库、 daemon、远程存储、进度状态或恢复权威。可以把 Obsidian 当作可选 Markdown 阅读器,但它没有运行时或写入权威。
人工模式下,初始化、摄取、修复、冲突解决和 schema 变更都遵循
PROPOSE -> CONFIRM -> APPLY。已确认 AUTO_REVIEW Envelope 时,初始化和常规
add-only ingest 可以用 Guard 校验加 Orchestrator PASS 代替逐次人工确认;修复、
冲突解决和 schema 变更仍只能由用户确认。在取得其中一种授权前,wiki/ 下任何
文件都不能变化。TFD 展示团队、来源与摘要、页面差异、冲突、index/log 影响、
当前 Wiki baseline、完整 SHA-256 和 12 字符指纹。自然语言确认可以引用短指纹,
但 Guard 只接受完整匹配摘要。提案或 proposal-local Wiki baseline 的实质变化,
在人工模式下需要重新确认;仍在 Envelope 内的 initialization 或常规 add-only ingest
则要重新通过 Guard 并取得绑定新摘要的 Orchestrator PASS。只要混入 conflict、repair、schema 或其他
human-only effect,整个提案都回到人工确认。Envelope 字段变化始终要用户确认。
来源只增不改。新版本创建新的摘要寻址快照,绝不覆盖旧版本。相互冲突且都有
来源的结论保留在 disputed 页面,直到用户单独确认解决方案。
用户向团队明确提问,或成员在已授权任务中明确查询 Wiki,只授权记录该问题、
最终答案、引用、提问者和读取时的 Wiki baseline,不需要第二次确认。已确认
执行同样只授权 work_started、关键 handoff、证据约束的 review、最终
delivery 和显式补录。两种例外都不能自动把内容提升为维护知识。
Guard 会按 team.yaml 校验操作者和入选成员 ID,但 V1 没有持久化执行令牌,也不
提供恶意共享主机隔离。符合规范的 Skill 调用仍是确认边界;外部进程竞态替换目录
不在 V1 范围内,并保持 UNVERIFIED。
默认长记录阈值是 1,000 个 Unicode 字符。1,000 字符的答案完整保留在
log.md;1,001 字符的答案写入 queries/,日志只留摘要、引用、详情摘要和
链接。长工作事件按完整允许记录的长度写入 activity/,其简洁摘要本身不能
超过阈值。prompt、隐藏推理、完整 Agent 对话和原始工具输出永远不能成为审计
内容。
如果回答或真实工作成功,但审计追加失败,TFD 分别报告结果和审计失败;不会 回滚成功工作,也不会谎报记录成功。
只读 lint 检查目录结构、链接、来源、不可变来源历史、日志哈希链和 Git 已提交 前缀、详情记录、跨团队引用、未解决争议以及明显凭据。它绝不自动修复。
V1 的规划规模约为 100 份来源快照和数百个页面。只有实际出现已知内容查询失败、 索引维护成本明显,或语料规模已无法做有界页面选择时,才单独设计搜索升级; 不能只因文件数量就自动引入搜索系统。
在 plugins/tfd 下使用 Python 3.10 或更高版本运行。使用 - 时,提案和记录
JSON 从标准输入传入:
python3 -m scripts.tfd_wiki.cli init --project-root PROJECT --team-id TEAM --actor-type user --actor-id user --at UTC
python3 -m scripts.tfd_wiki.cli validate --project-root PROJECT --team-id TEAM --proposal -
python3 -m scripts.tfd_wiki.cli apply --project-root PROJECT --team-id TEAM --proposal - --approval-digest SHA256
python3 -m scripts.tfd_wiki.cli record-query --project-root PROJECT --team-id TEAM --record -
python3 -m scripts.tfd_wiki.cli record-activity --project-root PROJECT --team-id TEAM --record -
python3 -m scripts.tfd_wiki.cli lint --project-root PROJECT --team-id TEAM团队初始化 Wiki 前,trace: delivery_receipt 继续使用旧的一次性回执。
Wiki 存在后,最终交付只记录一个 delivery activity,不再创建重复回执。
回执和 Wiki activity 都只是工作痕迹,不是运行时权威或可恢复状态;都不会 恢复任务数据库、进度状态、恢复系统或管理控制平面。
人工团队确认只授权方案中列明的本地资料写入和/或成员激活,不授权安装、合并、
推送、打标签、发布、部署、对外消息、破坏性清理、特权命令、付费动作或扩大
范围。AUTO_REVIEW 只能预授权已确认 Envelope 定义的精确内部与外部 Gate 和目标;
Orchestrator 随后无需用户再次回复即可完成 TFD 审批。其他动作继续保留人工审批边界。
本地检出目录中的版本号本身不能证明已经安装或部署。请以 v3.5.0 标签和
GitHub Release 作为发布证据。
plugins/tfd/.codex-plugin/plugin.json 插件清单
plugins/tfd/skills/using-tfd/SKILL.md 唯一用户 Skill
plugins/tfd/skills/using-tfd/references/auto-review.md
按需加载的 AUTO_REVIEW 协议
plugins/tfd/skills/using-tfd/references/engineering-constraints.md
按需加载的工程合同
plugins/tfd/skills/using-tfd/references/team-wiki.md
按需加载的 Team Wiki 协议
plugins/tfd/scripts/tfd_wiki/ 标准库 Wiki Guard
plugins/tfd/examples/project-tfd/ 最小 YAML 团队示例
scripts/test_plugin_contract.py 包结构契约
测试需要 Python 3.10 或更高版本以及 PyYAML。
python3 -m pip install -r requirements.txt
python3 -m unittest discover -s scripts -p 'test_*.py' -v
cd plugins/tfd
python3 -m unittest discover -s scripts -p 'test_*.py' -v