DeepSeek 可以在离线环境分析代码,但模型建议不能代替测试。下面用 Ollama 审查一个单独的 Python 文件,要求输出结构化问题,再由本地测试验证。整个示例不允许模型执行命令或读取任意目录。
准备一个可验证的小函数
新建 discount.py:

def final_price(price: float, rate: float) -> float:
return round(price * (1 - rate), 2)
再新建 test_discount.py:
from discount import final_price
def test_normal():
assert final_price(100, 0.2) == 80.0
def test_invalid_rate():
try:
final_price(100, 1.5)
assert False, "应拒绝超过1的折扣率"
except ValueError:
pass
只把指定文件内容发送给本地模型
Ollama Chat API支持本机消息请求。下面的脚本只读取固定文件,不递归扫描仓库:
import json
import urllib.request
from pathlib import Path
code = Path("discount.py").read_text(encoding="utf-8")
prompt = """审查下面函数。只输出JSON数组;每项含 severity、line、problem、fix。
重点检查输入边界,不要假装运行过代码。\n""" + code
body = json.dumps({
"model": "deepseek-r1:1.5b",
"messages": [{"role": "user", "content": prompt}],
"stream": False,
}).encode()
request = urllib.request.Request(
"http://127.0.0.1:11434/api/chat", data=body,
headers={"Content-Type": "application/json"}
)
with urllib.request.urlopen(request) as response:
result = json.load(response)
print(result["message"]["content"])
模型应指出 rate 缺少 0~1 边界,但也可能遗漏或误报。先人工核对行号和建议,再修改函数:
def final_price(price: float, rate: float) -> float:
if price < 0:
raise ValueError("price must be non-negative")
if not 0 <= rate <= 1:
raise ValueError("rate must be between 0 and 1")
return round(price * (1 - rate), 2)
运行测试形成证据
python -m pip install pytest
python -m pytest -q
只有测试通过且人工复核业务规则,修改才算完成。再增加负价格、0、1 和浮点边界用例;模型说“已修复”不等于代码正确。
怎么确认过程真的离线
先按Ollama FAQ确认请求地址是本机服务;测试时断开外网,重复 API 请求和 pytest。若脚本、IDE 插件或网页界面另有联网功能,需要分别关闭和检查,不能因为模型在本机就推断整个工具链离线。
本文只审查假设函数,没有运行你的项目,也没有证明 1.5B 模型适合复杂安全审计。处理真实代码前要排除密钥和客户数据,并在隔离分支审阅差异;安全关键代码还需静态分析、依赖扫描和人工评审。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32394.html