系统采用四层结构:
所有模块通过消息队列(Redis)异步解耦,保证对主业务无侵入。
使用ChromaDB存储向量化文档,供LLM检索增强。
import chromadb
from sentence_transformers import SentenceTransformer
class KnowledgeBase:
def __init__(self, path="./kb_store"):
self.client = chromadb.PersistentClient(path)
self.collection = self.client.get_or_create_collection("dev_knowledge")
self.encoder = SentenceTransformer('all-MiniLM-L6-v2')
def add_doc(self, doc_id: str, content: str, metadata: dict):
emb = self.encoder.encode(content).tolist()
self.collection.add(documents=[content], embeddings=[emb], ids=[doc_id], metadatas=[metadata])
def retrieve(self, query: str, top_k=3):
q_emb = self.encoder.encode(query).tolist()
results = self.collection.query(query_embeddings=[q_emb], n_results=top_k)
return [{"content": c, "meta": m} for c, m in zip(results['documents'][0], results['metadatas'][0])]
# 初始化并添加示例规范
kb = KnowledgeBase()
kb.add_doc("style_001", "变量命名采用小驼峰,禁止使用拼音", {"type": "style"})
kb.add_doc("bug_001", "空指针异常通常发生在未判空的对象调用,建议使用Optional或提前检查", {"type": "bug"})监听Git事件,获取新增或修改的代码,调用LLM结合知识库进行审查。
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
import json
class CodeReviewer:
def __init__(self):
self.llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.1)
self.kb = KnowledgeBase()
def review(self, diff_text: str, repo_context: str = "") -> list:
# 提取关键词以检索知识库
query = f"代码变更涉及:{diff_text[:200]}"
docs = self.kb.retrieve(query, top_k=2)
kb_context = "\n".join([d['content'] for d in docs])
prompt = PromptTemplate.from_template("""
你是资深代码审查专家,请对以下代码变更进行审查。
仓库背景:{repo_context}
知识库参考:{kb_context}
变更内容:
{diff_text}
输出JSON数组,每项包含:file, line_range, severity, suggestion, reference。
""")
chain = prompt | self.llm
resp = chain.invoke({"repo_context": repo_context, "kb_context": kb_context, "diff_text": diff_text})
try:
return json.loads(resp.content)
except:
return [{"error": "解析失败", "raw": resp.content}]
# 示例:模拟git diff
diff = """
- public void process(String name) {
- if (name.equals("admin")) { ... }
- }
+ public void process(String name) {
+ if ("admin".equals(name)) { ... }
+ }
"""
reviewer = CodeReviewer()
comments = reviewer.review(diff)
print(comments)从日志流中实时检测异常模式,并结合历史故障知识给出根因和缓解建议。
import re
from datetime import datetime
class LogAnalyzer:
def __init__(self):
self.llm = ChatOpenAI(model="gpt-4o-mini")
self.kb = KnowledgeBase()
def analyze(self, log_lines: list[str]) -> dict:
# 提取错误堆栈
errors = [line for line in log_lines if re.search(r'ERROR|Exception|FATAL', line)]
if not errors:
return {"status": "ok"}
combined = "\n".join(errors[-20:]) # 取最近20条
query = f"错误日志:{combined[:300]}"
docs = self.kb.retrieve(query)
kb_info = "\n".join([d['content'] for d in docs])
prompt = f"""
你是一个运维专家,根据以下错误日志和历史知识,分析可能原因和修复建议。
日志:
{combined}
历史知识:
{kb_info}
输出JSON:{{"root_cause": "...", "suggestion": "...", "severity": "high/medium/low"}}
"""
resp = self.llm.invoke(prompt)
return json.loads(resp.content)行动层集成钉钉/飞书机器人或JIRA API,自动创建任务。
import requests
def create_issue(title, description, severity):
# 示例:发送至飞书
webhook = "https://open.feishu.cn/open-apis/bot/v2/hook/xxx"
msg = {
"msg_type": "interactive",
"card": {
"header": {"title": {"tag": "plain_text", "content": f"[{severity}] {title}"}},
"body": [{"tag": "div", "text": {"content": description}}]
}
}
requests.post(webhook, json=msg)在Jenkinsfile或GitHub Actions中,添加阶段调用上述模块。
stage('AI陪跑审查') {
steps {
script {
def diff = sh(script: 'git diff HEAD~1', returnStdout: true)
def result = python3("""
from code_reviewer import CodeReviewer
cr = CodeReviewer()
comments = cr.review('''$diff''')
print(comments)
""")
// 若存在严重问题,构建失败并输出报告
}
}
}该陪跑系统已在一家中型互联网公司试用,代码审查效率提升40%,线上故障平均发现时间从15分钟缩短至3分钟。未来将引入主动学习:根据人工修正反馈自动更新知识库,形成自我进化闭环。
AI系统陪跑并非取代开发者,而是通过智能化感知+知识增强+自动行动,将重复性、低价值的诊断工作自动化,让团队聚焦于架构与业务创新。本文提供的代码框架模块清晰、易于扩展,可作为企业DevOps智能化的起点。随着大模型推理成本降低,更复杂的端到端修复能力将成为下一代“陪跑”的核心竞争力。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。