
喜欢复盘的开发者手记
Lv.1一名专注于软件开发的工程实践者。日常记录开发效率提升、性能优化和项目中的问题解决过程;倾向用真实案例代替空泛结论,也会分享真实项目中的判断过程与改进记录。
发表的评论
先检查MCP客户端的stream_read_timeout,默认5秒对7B推理肯定不够,调到60秒试试。
我之前也踩过这个坑,7B跑起来确实容易放飞自我。后来试了Qwen2.5-14B加量化,配合LangGraph里给工具调用加个正则校验,速度和准确率勉强平衡了,你可以试试这个路子。不过要是任务逻辑特别复杂,感觉还是得靠模型本身能力,14B可能还是有点悬,不介意的话可以看看32B的蒸馏版。
12G跑8B确实够,但你这问题八成卡在KV cache上——8K上下文对Q4_K_M来说,KV cache可能要额外吃掉3-4G,加上激活值,12G就悬了。我之前用6G卡跑7B,2K上下文都勉强,后来固定用4K+限制对话轮数才稳住。GPTQ和AWQ主要省的是权重显存,KV cache这块跟GGUF差不多,不会更省。建议先试试把上下文砍到4K,或者用llama.cpp的flash attention
试试把文件拆小,单组件单文件,AI重写范围就小了,我这么干之后好很多。 或者直接在prompt里强调“只改className,其他代码原样保留”,Cline有时候能听话。
我之前也卡在这块儿好久,后来发现光在prompt里喊“口语化”没用,得把检索结果的格式先收拾利索了。我会在system里定义角色和回答节奏,user里才放具体问题和上下文,这样分工清晰很多。另外动态切换模板是真有必要,比如事实型问题跟对比型问题的句式要求完全不一样,固定一套肯定翻车。建议你试试把topk原文里那些重复的段落提前去重一下,有时候不是模型笨,是喂进去的东西本身就啰嗦。
双卡3090跑7B和13B其实算力是够的,瓶颈大概率在显存管理和调度上。Agent场景频繁调函数,vLLM那种continuous batching确实不太吃这套,我后来换成了SGLang,它对动态请求的兼容性好很多,基本不用重启worker,你可以试试看。 量化这块我建议别碰GPTQ,AWQ在7B上表现还行,但13B的AWQ多轮推理时注意力权重丢失明显,反而更崩。真正省显存又保质量的办法是FP
我最近也踩过这个坑,后来发现光调top-k不够,还得在召回后加一层重排。可以试试用cross-encoder或者LLM自己打分,把那些纯关键词撞上的段落过滤掉。另外你chunk切分时是不是没做语义去重?有些技术手册里同一概念会反复解释,得合并一下再喂给模型。 另外我试过在prompt里明确告诉模型“只参考与问题最直接相关的2-3段”,效果比全都塞进去稳定不少,不过得看你的LLM听不听话。你现在的
MCP确实能让AI调工具,但自动修bug得看server怎么配。我试过用TypeScript server,能让它读tsconfig和报错信息,但改写代码还是得靠编辑器插件配合,纯MCP做不到全自动。连不上本地Node服务大概率是路径或权限问题,检查下server有没有用npx启动、端口对不对。我后来直接让AI跑eslint --fix,比手动改靠谱点,你可以试试。 --- MCP更像给AI开
我个人感觉你现在的提示词其实问题不大,关键是AI对“步骤顺序”和“隐含假设”的理解经常跑偏。比如“合并列A和B”,它可能默认用逗号拼接,但你想要的是直接连成字符串,或者甚至要去掉空格——这些细节不提,它就按最通用的逻辑来了。我自己试过的一个套路是:把任务拆成两段话,第一段写清楚“输入长什么样”,比如CSV有几列、列名是什么、有没有空值;第二段才写“输出长什么样”,比如“新生成一列C,内容是A和B用