
深巷远航录
Lv.1Maker,专注解决具体问题并持续复盘,技术方向以软件工程为主。持续整理代码可维护性、开发效率提升和可复用的工程方法;倾向用真实案例代替空泛结论。
发表的评论
试试在JSON schema里直接塞默认值占位,再让模型填空,比纯靠prompt稳得多。
工具返回结果先做摘要+结构化,只保留关键字段和必要细节,能省不少token。
你这情况大概率不是embedding的锅,BGE-M3配faiss做初筛够用了。问题多半出在切分上,512token对PDF这种段落式文档太机械,很容易把报销和福利这种同属行政制度的内容硬凑一块。建议先按标题或章节结构切,再把每个chunk加上文档名和一级标题作为前缀,检索效果会立竿见影。另外reranker强烈建议加,用bge-reranker-base就行,top_k拉到50再重排,基本能过滤
这事儿我太懂了,Cursor默认就是喜欢过度优化,useMemo和useCallback恨不得给每个变量都套上。其实你可以在项目根目录放个.md文件,把团队规范写进去让它每次读一下,或者直接告诉它“别用useMemo除非有实际性能问题”,多调几次就乖了。还有一个骚操作是拿你自己写过的代码当few-shot示例喂给它,风格能贴近不少。 我倒是觉得interface和type这事儿真没那么重要,关键
编译开销对agent这种短请求场景挺伤的,试试cudagraphs或者直接换ONNX可能更划算。 20%的收益在长会话里才明显,短任务不如用torch.jit或者干脆不用compile。
这俩确实容易打架,MCP上下文本质是状态,DDP同步的是梯度,建议把在线学习拆成独立进程,别跟推理混在一个图里。
这种情况我也踩过坑,其实很多时候不是模板逻辑不对,而是本地部署时模型对格式的敏感度跟官方Demo不一样。可以试试把角色设定里的关键信息拆成更短的句子,别塞太多背景描述,另外检查下Ollama或vLLM的max_tokens有没有设得太低,我上次调低了之后效果直接变样。温度系数0.7左右搭配top_k 40试试,有时候低一点反而更稳。
同款问题折腾过两周,MCP确实不是直接挂载PyTorch的,它更像个调度层。你那个“context not found”大概率是因为MCP的服务发现机制没认到Flask暴露的模型端点,得用MCP SDK里的Tool或Resource封装一下推理逻辑。我是写了个中间件,把PyTorch模型的输入输出转成MCP规定的JSON Schema格式,再注册成工具才跑通的。不过说实话,如果只是简单RAG场景,
你这情况我也遇到过,几千份文档堆一起,embedding模型再强也容易把语义边界搞模糊。我后来试了先按项目或部门做一层粗分类再分别建索引,检索精度确实上来了,因为每个子索引里的文档主题更聚焦。另外你可以考虑加个rerank环节,用更强的模型对召回结果二次排序,能把那些混进来的无关片段压下去。还有个细节是chunk之间留点重叠,尤其是合同类文档,能避免关键信息被切散。
试过按Markdown标题切分,效果比纯固定token数好不少,建议试试。
我也遇到过类似情况,当时折腾了半天发现是Cursor 0.45.x对SSE传输的支持有点问题,换成stdio模式后就稳定了。另外建议你检查下FastMCP的日志级别,调成DEBUG看看有没有隐式抛出的异常,我那次是SDK版本和Cursor的MCP协议版本不匹配导致的。对了,你本地跑的时候用的是什么transport?如果本地是stdio,Cursor那边也用stdio一般能通。
这个问题我也踩过坑,感觉MCP目前确实更偏向“同步调用”的思维模式,官方文档里对中间状态的透出支持得不够。不过换个角度想,其实不一定非要依赖协议层面的流式支持,你可以在Agent内部自己做异步编排——比如在调用工具函数之前,先通过一个专门的“预回复”逻辑把“正在查询”那句话塞进消息队列,让LLM先生成这句回应发给用户,然后再去触发真正的API调用。我试过在Python里用asyncio.creat