上下文膨胀:每一轮对话,模型都要把你之前的所有对话历史 + 引用的文件重新读一遍。聊得越久,单次请求越贵。 Agent 多轮调用:Agent 模式会自己读文件、跑命令、再读输出,一个任务可能偷偷调了几十次模型。 整段粘贴大文件:把几千行的文件全贴进 prompt,或者让工具每次都扫描整个仓库。 重复解释需求:每次新开会话都重新说一遍「我们项目用 React + TypeScript、禁止 any……」。
用 @文件名精确引用单个文件,而不是让 agent 自己去翻整个 repo。
把超长文件拆小,一个函数一个文件胜过 2000 行巨石。
用规则文件固化规范(见第 3 条),减少「重复解释」带来的 token。
# 项目约定
- 技术栈:React 18 + TypeScript + Vite
- 禁止使用 any,优先用 unknown + 类型守卫
- 组件用函数式 + hooks,不写 class 组件
- 提交前必须跑 pnpm lint && pnpm testfrom openai import OpenAIclient = OpenAI()resp = client.chat.completions.create(model="gpt-4o",messages=[{"role": "system", "content": open("project_rules.txt").read()},{"role": "user", "content": "给这个模块加单元测试"},],# 全局请求缓存配置,作用于整轮对话上下文prompt_cache_options={"enabled": True,"ttl": "1h" # 缓存存活时长})
# 安装并启动本地模型
ollama pull qwen2.5-coder:7b
ollama run qwen2.5-coder:7b给每次请求设 max_tokens,防止模型喋喋不休输出几千字。
在平台后台开用量告警(到 50 元 / 100 元自动邮件提醒)。
Cursor、Claude 都有「用量面板」,每周看一眼,找出「吞 token 大户」。
一个任务开一个新会话,别把一个会话聊成「长篇连续剧」。
指令一次给全:「用 Python 写一个读取 CSV 并按金额排序的脚本,要处理空值,输出到 result.csv」——比来回追问省得多。
Claude Code 里用 /clear 清掉无关上下文再开新任务。
夜雨聆风