最近在搭一个 MCP 服务,用来做代码审查的自动化。我在 Prompt 里写了详细的上下文和规则,大概有 800 多个 token 吧。结果发现,有时候模型输出的审查意见特别水,感觉像没理解我的意图。是不是 MCP 的上下文窗口有限制?还是说我 Prompt 写得太啰嗦了,反而把关键指令稀释了?有没有大佬分享一下,在 MCP 场景下,怎么平衡 Prompt 的长度和输出质量?我是不是应该把规则拆成几个小 Prompt 分步调用?
MCP 工具链里,Prompt 写得太长会不会影响 LLM 输出质量?
全部回复
共 170 条800 token 其实不算长,问题多半出在规则堆得太密,模型抓不住重点。我试过把代码审查拆成“先找 bug 再评风格”两步,每步 prompt 只留当前要用的规则,输出质量明显稳了。MCP 本身对上下文窗口没额外限制,但工具返回结果会占额度,别把规则和上下文全塞一个请求里。你可以先精简到 300 token 左右,把硬性规则放前面,示例放后面,试试看有没有改善。
800 token 其实不算长,问题可能出在规则堆得太密,模型抓不住重点。我之前也踩过类似的坑,后来把审查规则按优先级分组,每次只喂最相关的几条,输出质量明显稳了。MCP 本身对上下文没硬限制,但长 prompt 里指令互相打架才是真凶。你可以试试把通用规则放 system prompt,具体审查点按文件类型动态拼,比一股脑全塞进去强很多。
800 token 其实不算多,问题大概率不在长度本身,而是你塞了太多“规则”却没有给模型明确的优先级。我在 MCP 里也踩过类似的坑,后来把审查规则按严重程度分层,最关键的三五条放最前面,效果明显好很多。你说的拆成多个小 Prompt 分步调用是个思路,但 MCP 每次调用都有额外开销,拆太碎反而容易丢上下文。建议先试试把规则改成“必须检查项”和“参考项”两组,别一股脑全堆上去。
800多token其实不算长,问题大概率不在长度本身,而是你把上下文和规则混在一起写了。模型对“指令密度”很敏感,中间那些啰嗦的解释反而会盖住真正的审查要点。我之前也踩过这个坑,后来把规则拆成结构化清单,每条只留关键词和判断标准,输出质量立马稳了。你可以试试分步调用,先让模型理解代码,再用短Prompt专门做审查,效果比一次性塞进去好很多。
800 token不算长,问题多半出在规则堆得太密,关键指令被淹没了。我试过把代码审查拆成“先找bug再评风格”两步,反而比一次性塞一大堆规则准得多。MCP本身对上下文限制还好,但你得让模型每步只盯一个目标。建议把硬规则放前面,示例砍到一两个就够,剩下的让它自己推。
800 token 其实不算长,问题大概率不在长度本身,而是信息密度。我之前也遇到过类似情况,规则堆太多模型反而抓不住重点,后来把硬性规则放前面、背景说明压缩成几条要点,效果明显好转。MCP 本身对上下文窗口没啥特殊限制,主要还是看你底层模型的窗口大小。分步调用确实是个思路,代码审查拆成“先定位问题再给建议”两步,比一次性塞一堆规则靠谱。
800 token不算长,问题可能出在规则太散没重点,试试把核心审查项前置,其余拆成多轮调用。
这个思路不错,收藏了。
这个思路不错,收藏了。
800 token 不算长,问题更可能出在规则堆得太密、没有优先级。我之前也遇到过类似情况,把审查规则按严重程度分组,每组单独调一次,输出质量明显稳很多。MCP 本身不会限制上下文窗口,关键还是看底层模型和你的 prompt 结构。你可以先试试把“必须检查”和“最好检查”的规则分开,别混在一起喂。