日常写业务代码时找人做 Code Review(代码审查)非常奢侈,很多时候写了 Bug 只能靠测试测出来跌入甩锅旋涡。
而在 AI 时代,大模型天然具备百万级开源代码库的抽象理解能力,只要用法对,它就是最好的高级程序员助手。在我们的 code_assistant.py 示例中,展示了如何轻松在命令行和 AI 形成交互。
核心实现思路
用脚本做一个 AI 代码审查助手,核心只有两步:读取代码文本、精心构造审查 Prompt。
1. The Prompt (提示词设计)
我们不能简单让 AI “看看这段代码”。真正有用的代码审查需要结构化的视角。我们可以通过 System Prompt 给 AI 下达这样的规章制度:
"请对以下 Java 代码进行审查。 要求分为以下几个模块输出结果:
- 【高危 Bug】:找出逻辑漏洞或空指针异常。
- 【性能优化】:提出关于内存、数据库 N+1、耗时循环的改进建议。
- 【代码规范】:命名规范、重复代码等重构意见。 如果代码没问题,大胆告诉我完美。"
2. 本地交互循环
通过读取本地 Java 文件,并将上面的结构化 Prompt 注入,发送给 DeepSeek 或智谱 AI 后,你会得到一份格式整洁、针砭时弊的 Code Review 报告。
并且我们可以写一个简单的 while(True) 循环留在终端,拿到报告后继续用命令行追问:“那如果我要按你的建议使用 Stream API,请你给我完整的重构代码。”
扩展应用
随着工程的演进,你甚至可以把这个脚本集成到 Git Hooks 里。只要你本地执行 git commit,脚本自动拦截代码并由大模型进行静默扫描。有 Bug?强制打回重写!无聊的代码重复?通过!——一个强大的工程基建就这样诞生了。
"""
代码助手 - 你的AI编程伙伴
"""
import sys
sys.path.append('..')
from ai_client import AIClient
class CodeAssistant:
def __init__(self):
self.client = AIClient()
def explain(self, code: str):
"""解释代码"""
print("=" * 60)
print("📖 代码解释")
print("=" * 60)
result = self.client.explain_code(code)
print(result)
def review(self, code: str):
"""审查代码"""
print("=" * 60)
print("🔍 代码审查")
print("=" * 60)
result = self.client.code_review(code)
print(result)
def optimize(self, code: str):
"""优化代码"""
print("=" * 60)
print("⚡ 代码优化")
print("=" * 60)
system = """你是Java性能优化专家。请:
1. 分析性能瓶颈
2. 给出优化后的代码
3. 解释优化原理"""
result = self.client.chat(f"请优化以下代码:\n\n```java\n{code}\n```",
system=system)
print(result)
def generate(self, requirement: str):
"""生成代码"""
print("=" * 60)
print("✨ 代码生成")
print("=" * 60)
result = self.client.generate_code(requirement)
print(result)
def interactive_mode():
"""交互模式"""
assistant = CodeAssistant()
print("""
🤖 Java代码助手
命令:
1 [代码] - 解释代码
2 [代码] - 审查代码
3 [代码] - 优化代码
4 [需求] - 生成代码
q - 退出
""")
while True:
cmd = input("\n请输入命令: ").strip()
if cmd == 'q':
break
elif cmd.startswith('1 '):
assistant.explain(cmd[2:])
elif cmd.startswith('2 '):
assistant.review(cmd[2:])
elif cmd.startswith('3 '):
assistant.optimize(cmd[2:])
elif cmd.startswith('4 '):
assistant.generate(cmd[2:])
else:
print("未知命令")
if __name__ == "__main__":
# 演示模式
assistant = CodeAssistant()
# 示例代码
sample_code = """
public List<User> getUsers() {
List<User> users = new ArrayList<>();
for(Long id : idList) {
users.add(userDao.findById(id));
}
return users;
}
"""
assistant.explain(sample_code)
print("\n")
assistant.review(sample_code)
本文是个人学习大模型方向时的实战小记,希望对准备入门 AI 开发的大家有所启发。
感谢关注,我会持续更新,欢迎查看相关源码实现与学习记录:
github.com/start007-sm…