Repository navigation
自定义规则每次都会发给llm吗? #551
Replies: 1 comment
|
按代码捋了一遍,分三部分回答。 1. 不是「每次把所有 rules 都发给 LLM」——每个文件只会解析出一条规则正文规则解析是 first-match-wins,四层链
所以「自定义规则比较多」这件事本身不会让 prompt 变大。 这里有个容易踩的坑:同一个 glob 下堆多条 entry 是没用的,命中第一条之后其余的不会被拼接。 2. 注入时机:按「分组」注入,不是全局一次
它填的是 至于「每次都会发吗」——如果指的是同一个子任务内工具循环的每一轮:是的,会重发。规则在消息历史里,而 LLM API 是无状态的,每轮请求都要把完整消息数组再传一遍,这是协议决定的。缓解手段是 provider 的 prompt 前缀缓存, 粗略的成本模型: 3. 关于把 Sonar 规则搬进来可以搬,但有两点建议: 技术上——把同一类文件的多条 Sonar 规则折叠进一条 策略上——说句可能不太中听的:Sonar 里那些确定性的规则(空指针、资源未关闭、圈复杂度阈值、重复代码率……)建议继续留给 Sonar 跑。Sonar 是确定性的程序执行,LLM 是概率性的,把这类规则搬到 LLM 上是降级而不是升级。 真正值得搬进 OCR 的是 Sonar 查不了的那部分:跨文件的契约一致性、业务语义、「这个改动和同一次提交里的另一个文件对不上」这类需要理解意图的问题。 @lizhengfeng101 在 #243 里也提到过规则越精炼遵循率越好——几百条 Sonar 规则全量搬过来,反而会把真正想强调的维度稀释掉。两个工具并行跑、各管各擅长的部分,效果会比合并成一个好。 以上基于 |
Uh oh!
There was an error while loading. Please reload this page.
我的自定义规则比较多,我想请问一下,ocr每次都会将rules发送给llm吗?这块的具体架构是怎样的,另外我想将soanr的规则应用到ocr中,大家是否有好的建议

All reactions