1. 为什么你的 AI 编程助手总在重复劳动用 AI 写代码的人大多经历过这个阶段第一次让助手帮你搭项目它表现得像个资深工程师第二次换个需求它又像个刚入职的实习生连项目用哪个包管理器都要重新问一遍。问题不在模型能力而在于每次对话都是「失忆」的——你昨天教它的目录规范、今天要遵守的提交格式、这个项目特有的质量门禁它一概不记得。Tack Harness 编程工作流要解决的就是这件事。它是一套精简克制、人类可读、任意配置的编程工作流 Skill通过/tack触发覆盖从工作区初始化到代码上线的完整开发流程。核心思路是把「重复开发任务」沉淀成可复用的步骤文件让 AI 每次执行时都按同一套剧本走而不是即兴发挥。这套工作流适合谁如果你符合下面任意一条它值得你花半小时落地手上有多个项目每个项目的规范、目录、命令都不一样每次都要重新交代团队里多人用 AI 编程输出风格和质量参差不齐想统一标准需求拆解、任务分解、单元测试这些环节你希望有固定套路而不是每次靠提示词碰运气想把「怎么用 AI 干活」这件事本身变成项目资产而不是散落在聊天记录里。它由三个层次协作SKILL.md定义通用能力能做什么AGENTS.md定义项目专属行为在这个项目里怎么做resources/目录下的执行指令定义每个环节的具体动作。三者分工明确升级 Skill 不影响项目配置改项目配置也不动通用能力。我试过把这套东西套到一个前后端分离的项目上最大的感受是以前每次开新需求都要写一大段背景说明现在只需要/tack new-req加分支名剩下的上下文加载、任务拆解、开发、单测都有固定流程接管。下面把目录结构、配置片段和一次完整执行过程拆开讲。2. TaoToken 前置准备把模型接入配好Tack Harness 本身是工作流编排层它需要调用大模型来执行分析、拆解、编码这些动作。所以第一步是把模型接入配置好。这里用 TaoToken 作为接入层它提供统一的 API 入口兼容主流模型调用格式配置一次就能在多个工具里复用。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数配置时直接用这个。你需要先拿到 API Key。进入控制台创建密钥路径在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。创建后复制那串以sk-开头的字符串后面配置里会用到。拿到 Key 之后关键是把三件套配齐Base URL、API Key、Model ID。这三样缺一不可很多接入失败都是因为只填了 Key 没填 Base URL或者 Model ID 写错。Base URL 填https://taotoken.net/api注意结尾不要多加/v1之类的路径具体以接入文档为准。Model ID 根据你实际要用的模型填比如claude-sonnet-4-20250514这类标识。API Key 就是刚才复制的那串。如果你用的是 Claude Code 这类工具配置方式略有不同。Claude Code 通过环境变量或配置文件读取接入信息你需要设置ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY两个变量Base URL 同样指向 TaoToken 的 API 入口。具体写法参考接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各工具的完整配置示例。配好之后建议先做一次连通性验证别等到跑工作流时才发现 Key 无效。验证方法很简单用 curl 发一个最小请求curl -X POST https://taotoken.net/api/v1/messages \ -H Content-Type: application/json \ -H x-api-key: sk-你的密钥 \ -H anthropic-version: 2023-06-01 \ -d { model: claude-sonnet-4-20250514, max_tokens: 64, messages: [{role: user, content: 回复 ok}] }如果返回里能看到模型输出说明接入层通了。如果报 401检查 Key 是否复制完整、有没有多余空格如果报连接失败检查 Base URL 是否写对。这一步过了再往下装 Tack Harness 才有意义。3. 可复制配置AGENTS.md 与 SKILL.md 目录结构这一节是整篇的核心给你可以直接抄的目录结构和配置片段。Tack Harness 的安装方式有几种最省事的是让 agent 自己装在 TRAE 里输入「安装这个 skillhttps://github.com/frcoder-lh/tack-harness」即可。也可以用一键脚本curl -fsSL https://raw.githubusercontent.com/frcoder-lh/tack-harness/main/install.sh | sh -s -- --agent trae或者克隆后手动执行git clone gitgithub.com:frcoder-lh/tack-harness.git cd tack-harness sh install.sh --agent trae # 安装到 TRAE sh install.sh --agent cursor # 安装到 Cursor sh install.sh --target ~/my-agent # 自定义路径 sh install.sh --list # 查看所有支持的 agent sh install.sh --agent trae --dry-run # 预览安装安装完成后Skill 会落到~/.trae/skills/tack/目录下结构如下tack/ ├── SKILL.md # Skill 定义AI 读取 ├── README.md # 说明文档 ├── resources/ # 12 个工作流执行指令 ├── script/ # 4 个自动化脚本 └── template/ # 项目初始化模板resources/里每个环节一份详细执行指令比如implement.md、tdd.md、code-review.md、diagnosing-bugs.md、handoff.md等。script/里是骨架、仓库克隆、需求创建、worktree 辅助这几个脚本。template/里是 AGENTS.md、wiki 占位、文档模板、编码规范、脚本副本大约 20 个文件。真正让工作流「认项目」的是项目级的 AGENTS.md。它在init-workspace时自动生成定义这个项目的最高优先级约束、目录结构、命令路由。下面是一份可以直接改的 AGENTS.md 片段# AGENTS.md ## 最高优先级约束 - 不篡改原始信息所有修改必须可追溯 - 代码审查为必选环节跳过需显式说明理由 - Git 操作遵循安全规范禁止 force push 到主分支 ## 项目目录结构 - src/ 源码目录 - tests/ 测试目录 - harness/ 工作流定义rule / doc / script / template - wiki/ 全局上下文 - work/branch/ 每个需求一个文件夹 ## 命令路由 ### /tack 开发 或 /tack develop - 调用: implement.md tdd.md code-review.md script/git-worktree-helper.sh - 新增: 先执行 my-custom-check.md业务特有的质量门禁 ### /tack 单测 或 /tack unit-test - 调用: tdd.md code-review.md项目运行时的完整目录长这样project/ ├── AGENTS.md # 项目常驻说明书 ├── harness/ # 流程定义从 template 复制 │ ├── rule/ # coding-standards、development-workflow │ ├── doc/ # PRD / 技术设计 / 测试计划模板 │ ├── script/ # 项目级脚本副本 │ └── template/work/ # status.yaml、repo_readme.md ├── wiki/ # 全局上下文 ├── work/branch/ # 每个需求一个文件夹 │ ├── status.yaml # 进度跟踪 │ ├── wiki/ # 需求上下文 │ ├── harness/ # 技术设计 │ ├── plan/ # 任务清单 │ └── repo/ # git worktree └── repo/ # 代码主仓库SKILL.md 和 AGENTS.md 的分工要拎清楚SKILL.md 定义「能做什么」是通用能力换项目不变AGENTS.md 定义「在这个项目里怎么做」是项目专属行为每个项目独立维护。升级 Skill 只需替换~/.trae/skills/tack/下的文件项目级 AGENTS.md 和 harness/ 配置保持不动。如果你用 Cline MCP 或 Codex 这类工具配置思路一致同样要写全 Base URL、Key、Model ID 三件套。Codex 的auth.json里填对应的接入信息Cline 的 MCP 配置里指定模型端点。具体字段名以各工具文档为准但三件套的逻辑不变。4. 验证请求从需求到执行的一次完整跑通配置写完得跑一遍才知道对不对。这一节演示从初始化到单测的完整流程每一步都有可复制的命令和预期结果。先在 TRAE 里输入/tack看到命令列表就说明安装成功。然后按顺序执行# 初始化项目 /tack init-workspace ~/projects/my-app # 输入业务上下文 /tack init-context business-prd.md architecture-doc.md # 克隆代码仓库 /tack init-repos gitgithub.com:org/backend.git gitgithub.com:org/frontend.gitinit-workspace会在目标目录生成 AGENTS.md、harness/、wiki/、work/ 这套骨架。init-context把 PRD 和架构文档读进 wiki/ 作为全局上下文。init-repos把代码仓库克隆到 repo/ 下后续每个需求用 git worktree 隔离。接下来走一个真实需求# 新建需求 /tack new-req feature/user-auth # 输入需求上下文 /tack req-context prd.md # 分析需求 /tack analyze-req # 任务拆解 /tack breakdown # 开发 /tack developnew-req会在work/feature/user-auth/下建好文件夹生成 status.yaml 跟踪进度。req-context把 PRD 读进需求上下文。analyze-req让模型分析需求边界、依赖、风险。breakdown把需求拆成可执行的任务清单落到plan/目录。develop按 AGENTS.md 里定义的路由依次调用 implement.md、tdd.md、code-review.md并用 git-worktree-helper.sh 在隔离环境里改代码。整个流程的走向是这样的init-workspace ── init-context ── init-repos │ ▼ new-req ── req-context ── analyze-req ── breakdown │ ▼ develop ⇄ fix-req │ ▼ unit-test跑完之后work/feature/user-auth/status.yaml里会记录每个环节的完成状态plan/里有任务清单repo/里有 worktree 里的代码改动。你可以打开 status.yaml 确认进度也可以直接看 plan/ 里的任务是否都勾掉了。验证成功的标志有三个一是/tack命令列表能正常显示二是init-workspace后目录结构完整AGENTS.md 内容符合预期三是develop跑完后 worktree 里有实际代码改动且 code-review 环节有输出。三个都满足说明工作流落地成功。如果中途想跳过某个环节直接不执行对应命令即可各环节独立。也可以在 AGENTS.md 的命令路由里删掉对应命令让它彻底不出现在流程里。5. 常见报错排查401、local proxy failed 与 OAuth接入和工作流跑起来的过程中最容易卡在几个固定报错上。这一节按真实报错对照排查帮你快速定位。401 Unauthorized。这是最常见的接入错误几乎都是 Key 或 Base URL 的问题。先检查 API Key 是否复制完整有没有首尾空格有没有把sk-前缀漏掉。再检查 Base URL 是否写成https://taotoken.net/api不要多加/v1或结尾斜杠。如果用的是 Claude Code检查ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY两个环境变量是否都设了只设一个也会 401。还有一种情况是 Key 被禁用或额度耗尽去控制台确认密钥状态。local proxy failed。这个报错通常出现在工具尝试走本地代理但代理没起来的时候。检查你的工具配置里有没有指向127.0.0.1:xxxx的代理设置如果有但本地没有对应服务就会报这个。解决办法是把代理配置去掉直接指向 TaoToken 的 API 入口。另外检查系统环境变量里有没有残留的HTTP_PROXY、HTTPS_PROXY这些也会干扰。reading choices 相关报错。这类错误一般是响应格式不符合预期常见于 Model ID 写错或模型不支持当前调用方式。检查 Model ID 是否拼写正确是否是该接入层支持的模型。如果返回体里没有choices字段说明请求根本没到模型多半是 Base URL 或鉴权的问题回到 401 的排查思路。OAuth 相关报错。如果你用的是需要 OAuth 登录的工具报错通常和 token 过期或回调地址不匹配有关。检查登录状态是否有效必要时重新走一遍授权流程。如果工具同时支持 API Key 和 OAuth优先用 API Key配置更简单也更稳定。Skill 装了但/tack不识别。先确认安装目录对不对TRAE 是~/.trae/skills/tack/Cursor 是~/.cursor/skills/tack/。再确认 SKILL.md 文件存在且格式正确。如果目录对但命令不出现重启一下编辑器有些工具需要重新加载 skill 列表。AGENTS.md 改了但行为没变。检查改的是不是项目根目录的 AGENTS.md而不是 Skill 安装目录里的。项目级配置只认项目根目录那份。另外确认命令路由的格式没写错/tack 开发和/tack develop要能对应上。排查时有个通用技巧先用 curl 直接打 API确认接入层本身是通的。curl 通了再查工具配置curl 不通就先解决 Key 和 Base URL。这样能把问题范围缩小一半。6. 把工作流变成项目资产Tack Harness 这套东西的价值不在于它替你写了多少代码而在于它把「怎么用 AI 干活」这件事从聊天记录里捞出来变成了项目里可版本控制、可 review、可传承的文件。SKILL.md 是工具箱AGENTS.md 是项目说明书resources/ 是每个环节的标准动作。三者配合AI 每次执行都按同一套剧本走。落地建议从一个小项目开始先跑通 init-workspace 到 develop 的完整链路确认接入层没问题再把 AGENTS.md 按自己项目的规范改一遍。改的时候重点放在命令路由和质量门禁上这两块最能体现项目特色。等一个需求完整跑完你会拿到一份 status.yaml 和 plan/ 任务清单这就是可复用的模板下个需求直接套。如果后续要长期用 AI 做编码和 Agent 任务可以考虑 Coding Plan路径在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。需要管理多个密钥或查看用量去 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。想先试试模型对话效果模型对话入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 。接入细节以文档为准https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。最后留一个实用技巧每次跑完一个需求把work/branch/下的 status.yaml 和 plan/ 归档到一个work/_archive/目录。积累十几个需求后你会发现哪些环节经常卡住、哪些任务类型反复出现这些就是下一步该沉淀成新 Skill 或新命令路由的地方。工作流不是一次配好就完事它是跟着项目一起长的。
阅读完成 · 觉得有帮助?