1. 为什么 AI 写代码会「越写越烂」用 AI 写代码的人大多经历过这个曲线前 20 分钟它像个靠谱搭档代码又快又对聊到第 50 轮它开始忘记你定过的命名规范把之前删掉的字段又加回来甚至跟你上一轮的决定自相矛盾。这不是模型变笨了而是**上下文腐化Context Corruption**在起作用。原理不复杂。模型的上下文窗口是有限的对话越长早期那些约束、共识、边界条件就被后面越来越多的新内容稀释。它在有限窗口里做相关性加权窗口越满信噪比越低输出质量自然往下掉。你越聊越累它越写越飘。Vibe Coding 想做到「人工编程参与率百分之 0」靠的不是让模型更聪明而是把上下文当成工程问题来管。核心思路有两条一是让每个干重活的 AI 都从干净上下文出发二是把项目知识从聊天记录里搬出来落到文件里。gsd-core 就是把这套思路产品化的规格驱动框架它跑在 Claude Code 里用.planning/目录承载全部状态用子代理隔离上下文。这篇要交付的东西很具体一套可复制的 gsd-core 配置骨架、上下文文件的组织方式以及一次从规格到可运行代码的完整验证动作。全程走 TaoToken 统一 Key/API 通道你不需要在多个平台之间来回切。适合谁看已经会用 Claude Code 或类似 CLI 工具、想让 AI 独立跑完一个中小项目的开发者被上下文腐化折磨过、想找系统解法的人以及想搭一套「规格驱动」工作流但不知道文件该怎么摆的人。2. TaoToken 前置把 Key 和通道准备好gsd-core 本身是 Claude Code 的技能包它调用模型时走的是 Anthropic 兼容接口。如果你直接用官方通道会遇到两个现实问题一是账号和额度管理分散二是多项目切换时 Key 不好统一。TaoToken 在这里的角色是统一 Key/API 通道——一个 Key 覆盖模型对话、编码代理、批量任务gsd-core 的请求也走这条通道。先把 Key 拿到。打开控制台创建 API Keyhttps://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite创建后复制那串sk-开头的 Key先存到环境变量里别硬编码进任何文件export TAOTOKEN_API_KEYsk-你的key接着确认接入地址。TaoToken 的 API 基址是https://taotoken.net/api注意这个地址不带任何查询参数是干净的基址。Claude Code 和 gsd-core 需要的是 Anthropic 兼容端点配置时把 base URL 指向它即可。如果你用的是 Claude Code 的 Anthropic 配置方式可以在~/.claude/settings.json或项目级配置里指定{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的key } }这里有个容易踩的坑ANTHROPIC_BASE_URL不要带尾部斜杠也不要自己拼/v1让客户端去处理路径拼接。多拼一层会导致 404报错信息还很不直观。Key 和通道准备好之后装 gsd-corenpx opengsd/gsd-corelatest装完在 Claude Code 里输入/gsd-help能看到命令列表就说明技能包加载成功。如果看不到先检查 Claude Code 版本再确认 npx 拉取的是最新版——gsd-core 迭代很快旧版本命令名可能对不上。提示把TAOTOKEN_API_KEY写进 shell 的 rc 文件如~/.zshrc可以省去每次重设但别提交到 Git。项目里用.env加.gitignore更稳妥。3. 可复制的 gsd-core 配置骨架配置的核心不是命令有多少而是上下文文件怎么组织。gsd-core 把所有状态放在.planning/目录这个目录就是 AI 的「外部记忆」。先看骨架.planning/ ├── PROJECT.md # 项目愿景做什么、给谁用、边界在哪 ├── REQUIREMENTS.md # 需求清单带编号可追溯 ├── ROADMAP.md # 路线图拆成多个阶段 ├── STATE.md # 状态记忆进度、决定、待办 ├── config.json # 工作模式配置 ├── todos/ # 随手记的想法和待办 ├── phases/ # 各阶段的计划与执行记录 │ └── 01-xxx/ │ ├── 01-01-PLAN.md │ └── CONTEXT.md └── codebase/ # 旧项目接入时的代码地图这套结构的价值在于任何时刻中断状态都不丢。你不需要靠聊天记录续命回来跑一句/gsd-progress它读STATE.md就知道该从哪继续。config.json是工作模式配置建议显式写清楚避免默认行为不符合预期{ workflow: { autoCommit: true, verifyBeforeShip: true, contextIsolation: strict }, planning: { phaseGranularity: medium, requireAcceptanceCriteria: true } }contextIsolation: strict是关键项它保证每个执行子代理拿到的是全新上下文只装当前任务需要的东西。requireAcceptanceCriteria: true强制每个任务都带验收标准这是「规格驱动」落地的地方——没有验收标准的任务不允许进入执行阶段。初始化项目用/gsd-new-project它会追着你提问把「我要做个 X」问清楚做什么、给谁用、哪些先不做。回答完PROJECT.md、REQUIREMENTS.md、ROADMAP.md、STATE.md会自动生成。这一步别偷懒问题答得越具体后面 AI 跑偏的概率越低。如果是已有代码库先走接入流程/gsd-onboard /gsd-map-codebase/gsd-map-codebase会派子代理并行读你的代码把技术栈、目录结构、代码规范、测试习惯、风险点全记进.planning/codebase/。之后生成的每个计划都基于你项目的真实情况不用你一遍遍解释「我们错误处理用 Result 不用异常」这种约定。4. 从规格到可运行代码一次完整验证配置摆好了现在跑一次真实循环验证整条链路通不通。阶段循环是六步讨论 →界面设计→ 规划 → 执行 → 验收 → 发布。我们用一个最小可运行项目来验证一个带健康检查接口的 HTTP 服务。第一步讨论。规划前先聊清楚技术路线/gsd-discuss-phase 1Claude 会针对阶段 1 的关键决策提问用什么语言、错误怎么处理、配置放哪。你的回答写进CONTEXT.md后续规划和执行都照着来。如果这个阶段你已经想得很清楚加--auto让它自动选推荐答案。第二步规划。把阶段拆成带验收标准的任务/gsd-plan-phase 1gsd-core 会派子代理并行做技术调研生成phases/01-xxx/01-01-PLAN.md。打开看一眼每个任务应该都有明确的验收标准比如「GET /health 返回 200 且 body 为{status:ok}」。没有验收标准的计划说明config.json没生效回去检查。第三步执行。按计划写代码/gsd-execute-phase 1每个执行子代理拿全新上下文按计划逐条实现每完成一部分自动提交一次。执行完它会校验阶段目标是否达成。这一步是「人工参与率 0」的关键——你不需要盯着它写它自己按计划推进。第四步验收。问答式验收按标准一条条过/gsd-verify-work 1它会针对每条验收标准提问或自动检查过了才算完成。不是「看着能跑」而是逐条对照。第五步发布。/gsd-ship 1验收通过后提 PR。到这里一个阶段从规格到可运行代码的闭环就走完了。验证成功的标志.planning/phases/01-xxx/下有完整的 PLAN 和执行记录STATE.md更新了进度Git 历史里能看到自动提交/health接口实际可访问。如果接口跑不起来先看执行记录里的报错再对照CONTEXT.md里的技术决策通常是某个决策没被正确传递。5. 本篇常见错排查报 404 或模型不可用。九成是 base URL 拼错了。ANTHROPIC_BASE_URL只填https://taotoken.net/api不要加/v1不要加尾部斜杠。改完重启 Claude Code 让配置生效。/gsd-help没反应。技能包没加载。确认npx opengsd/gsd-corelatest跑完没报错Claude Code 版本是否满足要求。gsd-core 更新频繁旧版本命令名可能变了以/gsd-help --full的输出为准。执行阶段质量突然下滑。检查config.json里contextIsolation是不是被改成了非 strict。上下文隔离失效子代理会继承主会话的历史腐化就回来了。计划里没有验收标准。requireAcceptanceCriteria没生效或者config.json位置不对。它应该在.planning/根目录下。老项目接入后 AI 还是不懂代码。/gsd-map-codebase可能没跑完或没生成codebase/目录。重新跑一次确认.planning/codebase/下有内容。描述新需求时只说「我要加什么」别把整个项目重讲一遍——代码地图里已经有了。中断后不知道从哪继续。任何时候回来先跑/gsd-progress它读STATE.md告诉你下一步。别凭记忆猜。小任务走了完整循环太慢。改错别字用/gsd-fast 改个错别字小需求用/gsd-quick 给登录页加验证码。完整阶段循环留给复杂任务上下文腐化成为真实风险时才物有所值。6. 把通道和框架接起来gsd-core 解决的是上下文工程和规格驱动的问题TaoToken 解决的是通道统一的问题两者接起来才是一套能长期跑的 Vibe Coding 工作流。你现在手上应该有了一个统一 Key、一套.planning/骨架、一次跑通的阶段循环。接下来按你的场景选入口。如果你要长期跑编码代理、搭 Agent 工作流建议直接上 Coding Plan额度和并发更适合持续调用https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite如果你只是想先验证模型对话质量、对比不同模型在规格驱动任务上的表现用模型对话页更轻https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite如果你在接入过程中遇到 Key 或端点问题先看接入文档大部分报错在里面都有对照https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite需要新建或轮换 Key回控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite如果你用的是 Claude Code 的 Anthropic 兼容模式接入说明在这里https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode-anthropicutm_campaignrewrite我自己的习惯是新项目先跑/gsd-new-project把规格问清楚再/gsd-plan-phase看计划里的验收标准够不够硬标准不够就回去补CONTEXT.md而不是急着执行。规格驱动框架的收益全在「执行前把话说死」这一步。
