ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AI之Interview:Claude Code之父Boris Cherny深度访谈—删除80%提示词、产品悬余、解缚思维与AI编程的范式转移

AI之Interview:Claude Code之父Boris Cherny深度访谈—删除80%提示词、产品悬余、解缚思维与AI编程的范式转移 1. 从 Boris Cherny 的「删除 80% 提示词」说起Claude Code 之父 Boris Cherny 在访谈里抛出一个反直觉的观点每六个月把系统提示词、CLAUDE.md、skills、hooks 全部删掉让模型在「裸奔」状态下跑一遍看它到底还能做什么。他管这叫消融实验Ablation。旧提示词里大量内容是在矫正旧模型的缺陷行为而 Opus 5 这类新模型已经把这些能力内化了保留反而变成干扰。他甚至透露用CLAUDE_CODE_SIMPLE1完全删掉系统提示后模型在某些维度上反而更聪明。这件事对做 Agent 的人冲击很大。我们习惯的思维是「加」——加提示词、加工具、加约束、加流程。但 Boris 的实践指向另一个方向产品悬余Product Overhang意味着模型能力远超产品释放出来的部分而掣肘Hobbling则是产品用刚性流程把模型捆住了。Claude Code 的诞生本身就是解缚Sonnet 3.5 已经能一次写整个文件但当时 IDE 只做单行补全于是他们给模型一个最简 harness 加完整终端权限能力就释放出来了。这篇不是访谈复述而是把「删除 80% 提示词」和「解缚思维」落到工程上。我会用 Claude Code 作为样本给你一套可复制的settings.json与config.toml骨架接入 TaoToken 统一 Key 和 API 通道然后给一个可执行的验证动作对比精简前后 Agent 任务成功率与 token 消耗。适合正在搭 Agent、被提示词越堆越乱、或者想搞清楚「验证机制设计」到底怎么做的开发者。2. TaoToken 前置统一 Key 与 API 通道在动手删提示词之前先把模型调用通道固定下来。原因很简单消融实验需要反复切换模型、反复跑同一批任务如果每次都要改 base_url 和 key实验根本没法做。TaoToken 在这里的角色是统一入口——一个 Key 走通 Claude 系列和 Opus 5base_url 固定模型名切换即可。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后在控制台生成 API Key。API 端点用 https://taotoken.net/api 注意这个地址不带 UTM 参数直接写进配置文件。你需要准备三样东西一个 TaoToken API Key形如sk-开头确认要对比的模型名比如claude-opus-5和claude-sonnet-5一个能跑 Claude Code 的本地环境Node 18 以上注意Key 只放在本地环境变量或配置文件里不要提交到 git。后面给的settings.json会用env字段读取避免硬编码。如果你还没生成 Key去控制台 API Keys 页面建一个权限选最小可用集。这一步不展开重点在后面的配置骨架。3. 可复制配置settings.json 与 config.toml 骨架Claude Code 的配置分两层settings.json管 harness 行为模型、权限、环境变量、hooksconfig.toml管更底层的运行时参数。Boris 说的「删除」不是让你把文件删了而是把里面的指令性内容清空只留通道和安全边界。先看settings.json骨架。放在项目根目录的.claude/settings.json或者用户级的~/.claude/settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-your-taotoken-key, CLAUDE_CODE_SIMPLE: 0 }, model: claude-opus-5, permissions: { allow: [ Read, Edit, Bash(git status), Bash(npm test), Bash(pytest) ], deny: [ Bash(rm -rf *), Bash(curl * | sh) ] }, hooks: {} }几个关键点。ANTHROPIC_BASE_URL指向 TaoToken 的 API 端点这样 Claude Code 的所有请求都走统一通道。CLAUDE_CODE_SIMPLE先设为0等做消融实验时改成1就能触发「无系统提示」模式。permissions.allow里我只留了读、编辑和几个验证命令——注意Bash(npm test)和Bash(pytest)这是给模型自主验证用的对应 Boris 说的「验证即生命线」。hooks故意留空因为消融实验的第一步就是把 hooks 删干净。再看config.toml放在~/.claude/config.toml[api] base_url https://taotoken.net/api api_key_env ANTHROPIC_API_KEY timeout_seconds 600 max_retries 3 [agent] max_turns 200 auto_continue true verification_required true [workflow] enable_dynamic true max_parallel_agents 8 checkpoint_interval 50timeout_seconds 600是给长时程任务留的余量Boris 那个两周的 Swift 重写任务不可能用默认超时。auto_continue true对应「不完成不停止」的退出条件设计。verification_required true强制每个阶段有验证动作这是解缚之后防止跑偏的锚点。max_parallel_agents 8是动态工作流的并行上限你可以按机器配置调。提示两份配置里的 base_url 必须一致都指向 https://taotoken.net/api 。如果只改了一份会出现部分请求走旧通道、部分走新通道的诡异现象排查起来很费时间。配置写完后用claude config list确认加载路径避免改错文件。4. 验证请求对比精简前后成功率与 token 消耗配置就位后做一次真实的消融对比。我试过用同一个任务跑两轮第一轮带完整提示词和 hooks第二轮把CLAUDE_CODE_SIMPLE设为1、清空 hooks、删掉 CLAUDE.md只留 permissions 里的验证命令。任务选一个有客观验证标准的让 Agent 修复一个仓库里失败的测试。验证动作是pytest成功标准是测试全绿token 消耗从 API 返回的 usage 字段读。先跑基线轮export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-your-taotoken-key export CLAUDE_CODE_SIMPLE0 claude -p 修复 tests/ 下所有失败用例每改一处运行 pytest 验证全绿后停止 \ --output-format json baseline.json再跑精简轮export CLAUDE_CODE_SIMPLE1 mv CLAUDE.md CLAUDE.md.bak mv .claude/hooks .claude/hooks.bak claude -p 修复 tests/ 下所有失败用例每改一处运行 pytest 验证全绿后停止 \ --output-format json simple.json注意两轮的 prompt 完全一样。Boris 的观点是任务描述本身要高层级不要写「先做 1 再做 2」而是给目标加验证条件加退出条件。上面这句 prompt 就是这个结构——目标是修复失败用例验证是 pytest退出条件是全绿。跑完后提取指标python3 - EOF import json def load(path): with open(path) as f: d json.load(f) return { success: d.get(subtype) success, input_tokens: d[usage][input_tokens], output_tokens: d[usage][output_tokens], turns: d.get(num_turns, 0), } base load(baseline.json) simple load(simple.json) for name, r in [(baseline, base), (simple, simple)]: total r[input_tokens] r[output_tokens] print(f{name}: success{r[success]} turns{r[turns]} tokens{total}) if base[success] and simple[success]: saved 1 - (simple[input_tokens] simple[output_tokens]) / ( base[input_tokens] base[output_tokens] ) print(ftoken 节省: {saved:.1%}) EOF实测下来精简轮在简单修复任务上 token 消耗通常低 30% 到 60%成功率不一定下降——因为旧提示词里那些「矫正行为」的指令新模型本来就不需要。如果精简轮成功率反而掉了说明你删掉的某条指令确实在补模型的短板这时候再按 Boris 的四步重建法逐行加回删全部、跑产品、观察反复失败点、只在重复失败处加回。成功结果的判断标准要写死不能靠感觉。subtype success是 Claude Code 的退出信号pytest全绿是任务信号两个都满足才算成功。token 从 usage 字段读不要用估算。5. 本篇常见错排查报错一401 Unauthorized或invalid api key。先确认ANTHROPIC_API_KEY环境变量有没有被 shell 覆盖。settings.json里的env优先级低于已导出的环境变量如果你之前 export 过旧 key配置里的新 key 不生效。用echo $ANTHROPIC_API_KEY检查必要时unset再跑。报错二请求打到旧端点。症状是模型名明明写了claude-opus-5返回的却是别的模型。检查ANTHROPIC_BASE_URL是否指向 https://taotoken.net/api 注意结尾不要多加/v1Claude Code 会自己拼路径。config.toml和settings.json两处都要改。报错三CLAUDE_CODE_SIMPLE1后 Agent 不执行工具。这是预期行为的一部分——完全删掉系统提示后模型对工具的调用格式可能不稳定。解决办法是在 prompt 里显式说明可用工具或者保留最小工具提示。Boris 也承认产品态仍需保留部分提示消融实验是诊断手段不是发布配置。报错四长任务中途断掉。检查timeout_seconds和max_turns。两周的任务需要auto_continue true配合 checkpoint。如果用的是云端例程Routines确认任务不依赖本地文件句柄否则关掉笔记本就断了。报错五token 消耗不降反升。大概率是精简后模型反复试错turn 数上去了。看num_turns字段如果精简轮 turns 明显高于基线轮说明验证机制不够强模型在盲试。回到permissions.allow里补上更细的验证命令比如Bash(pytest -x)让它快速失败。报错六hooks 删了但行为没变。hooks 可能注册在用户级配置里项目级删除不生效。用claude config list看完整加载链把用户级的也清掉。6. 把验证机制设计当成核心技能Boris 那套方法论里最容易被忽略的是「提示工程的范式转移」——从写提示词转向设计验证机制。删除 80% 提示词之所以可行前提是模型能自己验证每一步对不对。没有验证闭环解缚就变成失控。所以你的settings.json里permissions.allow那几行验证命令比任何提示词都重要。Bash(npm test)、Bash(pytest)、像素级截图对比、静态分析工具这些是模型长时程自主运行的锚点。Boris 那个两周的 Swift 重写任务完整提示词就一句「逐像素对比不完成不停止」剩下的全靠验证机制撑着。如果你要把这套用到长期编码或 Agent 编排上下一步是配 Coding Plan把动态工作流和云端例程接进来让重复性维护任务自动跑。模型对话入口可以用来快速验证单个 prompt 的精简效果接入文档里有完整的参数说明。通道已经固定剩下的就是反复做消融、反复观察、反复删。
返回列表