1. 核心大招:强制“增量输出”(Diff-Only)

这是节省 输出 Token 最有效的手段。默认情况下,大模型喜欢把整份代码文件重新写一遍,即便它只改了一行。

  • 笨办法:“帮我修改这个文件的 bug。”(模型直接吐出 500 行代码)
  • 妙招:在 Prompt 中明确限制输出格式。

    Prompt 模板: “请只输出修改过的代码片段。未修改的部分请用 // ... 保持不变 ...# ... existing code ... 代替。如果可以,请直接以 Git Diff 的格式提供修改方案。”


2. 输入“骨架”而非全量代码(Skeleton Prompting)

当你需要让模型理解你的项目结构或某个工具类时,不要直接把几千行的源文件贴过去。

  • 妙招:只给模型提供类型定义(Types/Interfaces)函数签名(Function Signatures)骨架代码
  • 例如(TS/JS)
// 不要贴整个实现,只给这个:
interface UserService {
  getUser(id: string): Promise<User>;
  updateProfile(id: string, data: Partial<User>): Promise<boolean>;
}

模型只需要知道“有什么方法可用”以及“入参和出参是什么”,并不需要知道你内部复杂的 SQL 是怎么写的。


3. 巧用 XML 标签(对 Claude 尤为有效)

Claude 对 XML 标签(如 <code_>)有着极强的敏感度。用 XML 标签包裹代码和指令,不仅能提高准确率,还能减少解释性废话

<system_instruction>
你是一个极简主义的编程助手。请直接输出代码,不要解释,不要说“好的,我为你准备了以下代码”。
</system_instruction>

<source_code>
// 贴入你的核心代码
</source_code>

<task>
重构上面的代码,提高运行效率。
</task>

省流原理:明确的结构让模型不需要在 Prompt 里猜测“哪里是代码,哪里是要求”,从而大大减少了模型的推理和多余的客套话(“Certainly! Here is…” 也是要算 Token 的)。


4. 及时“断舍离”,开启新会话(Reset Context)

很多人习惯在一个聊天窗口里从早聊到晚,甚至聊上好几天。

  • 痛点:每一次你发送新消息,大模型都会把之前所有的聊天记录重新打包发送一遍(这叫 Cumulative Token)。如果前文有 5 个版本的完整代码,你发一句“谢谢,搞定了”,这一句谢谢可能要消耗你几万 Token。
  • 妙招一个 Bug 解决后,立刻开新窗口。 开启前,可以把上一个窗口最终确定的方案或关键 Context 复制过去作为新会话的起点。

5. 清理输入代码的“水分”

在把代码贴给 LLM 之前,做一些简单的预处理:

  • 删掉不必要的日志和注释(比如大段的 JSDoc/Docstring 或者是历史 debug 的 console.log)。
  • 避免贴入无关静态资源:例如代码中嵌套的巨长 Base64 字符串、大型 SVG 矢量图代码、几百行的 mock 数据。贴入前把它们替换成 const logoSvg = "..." // SVG Content here

⚖️ 省流策略对比表

场景 以前的做法(Token 刺客) 现在的做法(Token 守财奴) 预计节省率
修改已有代码 直接贴全文件,让它重新生成全文件 使用 // ... 保持不变 ... 指令,只输出修改点 50% - 80%
让模型理解多文件关系 把相关的文件一股脑全贴过去 只贴相关文件的目录树(tree)和对外接口定义 70% - 90%
多轮 Debug 在同一个长对话里反复调试 Debug 成功后,立刻复制正确代码,开新窗口继续下一步 30% - 60%(越往后省越多)