把团队规范也教给本地 Qwen3.5:让代码知识库同时懂“代码”和“规矩”(Ollama + RAG 进阶) 📅 发布时间:2026/7/5 3:32:05 👁️ 浏览次数: 一、为什么要把“团队规范”也塞进 RAG现在你的本地 AI 能做到按仓库问代码实现RAG Ollama Embedding Qwen 3.5在网页里做 Code Review基于 git diff支持多项目、多仓库切换。但现实里真正决定“代码好不好”的往往不是「语法对不对」而是是否符合团队统一的日志规范、错误处理规范是否踩过历史线上事故的“老坑”比如少打关键监控、随手吞异常是否遵守你们安全规范敏感信息脱敏、鉴权校验、参数校验等。如果这些规范没有进到 AI 的“知识库”里它的判断标准永远是抽象的“通用最佳实践”而不是“你们团队真正关心的那套规矩”。所以这一篇的目标是在已有的代码 RAG 体系上加一个**“团队规范知识库层”**让 Qwen 3.5 在回答和 Code Review 时一边看代码一边主动对照你们的规范 历史踩坑记录输出的建议不再是空泛的“建议加日志”而是变成“根据《服务异常处理规范 v2》中第 3 条这里缺少… 建议按 XXX 模式补上。”二、整体设计代码库 规范库 两层 RAG你当前结构可以简单理解为代码仓库 → CodeRAGEmbeddingChroma → Qwen 3.5 回答 / Review现在我们加一层┌── 代码知识库按项目用户问题/差异 ──┤└── 规范知识库团队级全项目共享│合并成统一 Prompt│Qwen 3.5关键改动点再建一个“规范向量库”可以是单独一个 Chroma Collection 或单独一个 DB 目录所有团队规范 / 历史事故复盘 / 最佳实践文档都当成“文档”统一 Embedding在ask()/review_diff()时多做一次“规范检索”把规范片段一并塞进 PromptPrompt 模板中明确提示“请优先对照下面的团队规范和历史问题案例给出建议。”三、准备「团队规范 历史踩坑」原始材料建议在仓库外单独建一个目录比如team_knowledge/里面放/specs/团队编码规范日志、异常处理、API 设计、数据库访问、缓存、鉴权等/incidents/线上事故复盘、事后总结文档重点是“以后不要怎么写应该怎么写”/best_practices/你们内部沉淀的一些最佳实践如“幂等接口写法”、“重试策略模板”、“鉴权中间件模板”/checklists/上线自查清单、PR 自查清单。这些文件可以是Markdown (.md)文本文件 (.txt)简单的.rst / .docx转成.md再放进来四、实现一个 TeamSpecRAG团队规范 RAG新建team_spec_rag.py# team_spec_rag.py import os import glob from typing import List, Dict import chromadb import ollama class TeamSpecRAG: 团队规范 / 历史踩坑 知识库 - 专门存团队级文档不跟代码库混在一起 def __init__( self, base_dir: str ./team_knowledge, db_path: str ./team_spec_db, embedding_model: str nomic-embed-text, ): self.base_dir os.path.abspath(base_dir) self.db_path db_path self.embedding_model embedding_model self.client chromadb.PersistentClient(pathdb_path) self.collection self.client.get_or_create_collection( nameteam_spec_collection, metadata{hnsw:space: cosine}, ) def _iter_files(self) - List[str]: exts [*.md, *.txt] files [] for ext in exts: files.extend(glob.glob(os.path.join(self.base_dir, **, ext), recursiveTrue)) return files def _read_file(self, path: str) - str: try: with open(path, r, encodingutf-8) as f: return f.read() except Exception as e: print(f读取失败 {path}: {e}) return def build_index(self): 全量重建团队规范索引 files self._iter_files() print(f发现团队规范文档 {len(files)} 个) all_ids, all_docs, all_metas [], [], [] for path in files: rel os.path.relpath(path, self.base_dir) content self._read_file(path) if not content.strip(): continue doc_id rel # 这里每个文件一个向量简单版本 all_ids.append(doc_id) all_docs.append(content) all_metas.append({file_path: rel}) if not all_docs: print(没有可索引的团队规范文档) return # 清空旧索引 existing self.collection.get() if existing.get(ids): self.collection.delete(idsexisting[ids]) # 向量化 print(开始向量化团队规范文档...) resp ollama.embeddings(modelself.embedding_model, promptall_docs) embeddings resp[embeddings] if embeddings in resp else resp self.collection.add( idsall_ids, documentsall_docs, metadatasall_metas, embeddingsembeddings, ) print(团队规范索引构建完成) def query(self, query_text: str, top_k: int 5) - List[Dict]: 检索与某段描述/问题最相关的团队规范片段 resp ollama.embeddings(modelself.embedding_model, promptquery_text) if embedding in resp: q_vec resp[embedding] else: q_vec resp[embeddings][0] res self.collection.query( query_embeddings[q_vec], n_resultstop_k, ) docs res[documents][0] metas res[metadatas][0] scores res[distances][0] return [ {text: d, meta: m, score: s} for d, m, s in zip(docs, metas, scores) ]这样你就有了一个独立的“团队规范 RAG”和代码层完全解耦。五、在 Code Review 里接入团队规范接下来我们改造CodeReviewRAG.review_diff()在构造 Prompt 时多做一步从 diff 文件路径中抽取“关键描述”比如“异常处理”、“日志”、“鉴权”等用它去TeamSpecRAG.query()一次拿到几条相关规范 / 历史事故把这几条规范塞进 Prompt 的「【团队规范与历史案例】」区块要求 Qwen 3.5 必须参考这部分给意见。伪代码示例重点是思路具体你可以按前面的CodeReviewRAG整合# 在 code_review_rag.py 里增加一个 team_spec_rag 参数 from team_spec_rag import TeamSpecRAG class CodeReviewRAG(IncrementalCodeRAG): def __init__(self, repo_path: str, team_spec_rag: TeamSpecRAG None, **kwargs): super().__init__(repo_path, **kwargs) self.team_spec_rag team_spec_rag def review_diff(...): # 1. 原有逻辑获取 diff_by_file contexts ... # 2. 提取一个摘要作为“规范查询 key” summary_for_spec .join(list(diff_by_file.keys()))[:300] spec_snippets [] if self.team_spec_rag: spec_snippets self.team_spec_rag.query(summary_for_spec, top_k3) # 3. 构造“团队规范”区块文本 spec_section for i, s in enumerate(spec_snippets, 1): spec_section f\n\n--- 规范 / 案例 {i}文件: {s[meta][file_path]}---\n{s[text]} # 4. 在原来的 Prompt 里加一段 prompt f 【团队规范与历史问题案例】 {spec_section or 当前没有检索到相关团队规范可仅从通用最佳实践角度审查。} 请在给出审查意见时尽量引用上述规范/案例中的关键点例如 - “根据《XXX 规范》第Y条这里的做法存在……” - “历史故障《YYY》提到过类似问题这里需要避免……” # 5. 继续调用 Qwen 3.5 生成报告 ...这样生成出来的 Code Review 报告就天然带有“我们团队自己的规矩”。六、在「问代码仓库」网页里增加“规范视角”同样的思路也可以用在普通问答上。比如在ask()时用户问「登录模块的异常处理是否符合规范」代码 RAG 找到登录模块的代码片段规范 RAG 找到「异常处理规范」、「登录安全规范」Prompt 一起塞给 Qwen 3.5让它在回答里自动引用规范内容。你在 Streamlit 里可以增加一个开关「启用团队规范增强」开启后main.py中调用的是“带 TeamSpecRAG 的 ask()”版本返回内容中会有明显的“引用规范”的小节方便团队成员对齐理解。
gazebo总结 一、版本Gazebo Classic 版本 (数字版本号版)Gazebo7、8、9、10、11。Gazebo11为最终版本,已停止支持。ubuntu查看版本的命令行:gazebo --versiondpkg -l | grep gazebogazebo # 试运行新 Gazebo 版本 (字母代号版) 旧称 Ignition:Gazebo-A、… 2026/7/5 13:01:21
超自动化巡检:为IT系统装上7x24小时“智能监护仪” 在医疗领域,重症监护仪(ICU Monitor)能够7x24小时持续监测患者的生命体征,实时预警潜在风险,为抢救赢得黄金时间。如今,这一理念正在IT运维领域落地——超自动化巡检系统,正成为企业IT基础设施的… 2026/5/17 11:09:05
rtklib stat文件中的估计对流层延迟 ppp中估计的是总延迟 第一个是浮点解的对流层延迟 第二个是固定解的对流层延迟rtk中是两个站点的湿延迟 不是总延迟 这点要注意 2026/5/17 6:19:01
最好的VibeCoding宣讲材料 先建立认知:AI 编程为什么从“对话”走向“行动”; 再讲清底层:Function Call、MCP、Skill、Agent 如何协作; 然后落地实践:Claude Code 怎么装、怎么用、适合哪些场景; 最后收束到工程化:Code … 2026/7/5 13:02:02
Google点击劫持漏洞深度解析:从原理到1.5万美元赏金的实战挖掘 1. 项目概述:一次价值近1.5万美元的点击劫持漏洞挖掘实录最近在安全圈里,一个关于Google的点击劫持漏洞被炒得沸沸扬扬,其赏金高达14981美元。这个数字对于漏洞赏金猎人来说,无疑是一剂强心针。点击劫持,这个听起来有点… 2026/7/5 13:00:01
量子多参数传感协议:原理、实现与应用 1. 量子多参数传感协议概述量子多参数传感协议是一种基于全局Clifford酉变换的量子测量技术,它通过优化测量策略实现了高效的参数估计。这项技术的核心在于利用量子系统的并行性,在一次测量中同时获取多个参数信息,从而显著提升测量效率。在量… 2026/7/5 13:00:01
量子计算中的全局Clifford协议与信号检测技术 1. 全局Clifford协议概述 量子计算中的Clifford协议是一类基于Clifford群的特殊量子电路构建方法。Clifford群由保持Pauli群在共轭作用下不变的酉算子组成,在量子信息处理中扮演着核心角色。全局Clifford协议通过随机选择Clifford电路,将待测信号映射到特… 2026/7/5 13:00:01
以太网 PHY PCB 布局布线 10 要点:从分立磁珠到集成连接器的实战避坑 以太网PHY PCB布局布线10大实战要点:从分立磁珠到集成连接器的设计精要 在工业控制、嵌入式设备等场景中,以太网接口的可靠性直接影响着整个系统的稳定性。不同于消费级产品,工业级以太网设计需要应对更严苛的EMC环境、更长的传输距离以及更复… 2026/7/5 13:00:01
Allegro PCB设计环境搭建与高速布线实战指南 1. Allegro PCB设计环境搭建与基础配置 1.1 软件安装与授权配置 Cadence Allegro作为业界领先的PCB设计工具,其安装过程需要特别注意版本兼容性。以Allegro 17.4版本为例,安装前需确保系统满足以下要求: 操作系统:Windows 10 64… 2026/7/5 12:58:00
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/5 0:01:32
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/5 0:01:32
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/5 0:05:36