接手一个不熟悉的开源项目,你可能只想先弄明白:首页从哪里进入、数据存在哪、改一个功能要看哪些文件。把整个仓库丢给 AI,答案看着完整也可能会错。本教程用本机 Qwen 读 Flask 官方教程里的 Flaskr,再对照源码和测试核实答案。电脑上已有 Ollama 和模型时,练习不调用云端 API。
先准备一个安全的样例
Flask 是 Python 网页框架,Pallets 团队维护。官方教程用 Flaskr 演示注册、登录和博客文章;项目代码可以从 Flask 仓库取得。练习只读这个公开样例,不需要注册服务或付费。查看陌生仓库前,先看 README、许可证和维护状态;不要因为项目能下载就直接运行安装脚本。
在终端克隆仓库并固定到本次测试的提交:
git clone https://github.com/pallets/flask.git
git -C flask checkout d086db856be187255b8ec61ef409357393020f32
这篇只读 flask/examples/tutorial/flaskr/ 下的代码。固定提交号能让你和教程看的文件保持一致;后续提交可能会改动项目。
让本机 Qwen 解释代码
Ollama 可以在本机运行大模型并提供本地接口;Qwen3.8 是通义千问系列模型的开放权重版本。我们用 Qwen3.8-27B,因为问题需要沿着 Python 文件解释路由;电脑内存较小的话,先选自己能运行的小模型。本站的 Ollama 安装教程说明了如何安装和下载模型。
| 准备项 | 本次使用 |
|---|---|
| 电脑 | M1 Max,64GB 内存;模型文件约 18GB,运行时内存约 34GB |
| 软件 | Ollama 0.35.1、Python 3.11、Git |
| 费用 | 本机模型不按请求收费;需要下载模型和占用本机资源 |
| 时间 | 约 20 分钟,不含首次下载模型 |
下载并解压项目阅读练习包,确认 Ollama 已启动,再把项目目录和问题交给助手:
python3 项目阅读助手.py /你的路径/flask/examples/tutorial/flaskr "访客请求首页 GET / 时,实际由哪个函数处理?请指出文件和证据。"
路径要指向 flaskr 文件夹。脚本读取常见源码和说明文件,忽略 .git、虚拟环境及疑似密钥文件,并限制读取数量和文本长度;请求发往 localhost:11434,由本机 Ollama 处理。你可以再问一个更具体的问题,例如“更新文章前怎样确认当前登录用户是作者?”
模型回答要当线索,不要直接照搬。这次 Qwen 把 app.add_url_rule("/", endpoint="index") 说成访问 / 时的实际视图。源码注释写明这行是为了让 url_for('index') 和 url_for('blog.index') 都能生成首页地址;Flask 实际收到 GET / 时匹配到 blog.index。官方测试还检查了访客和登录用户打开首页时的内容。模型答得很肯定,也可能读错调用关系。
对照源码和测试
打开 flaskr/__init__.py,先看 create_app 怎样注册 auth.bp 和 blog.bp。再看 flaskr/blog.py 中带 @bp.route("/") 的 index 函数,它从数据库读取文章并渲染首页。文章更新、删除路由则在 blog.py;get_post 会查文章是否存在,并在需要时比较文章作者与当前用户。
官方测试能帮你确认关键行为。项目使用 Python 3.11 建立环境后,在 flask/examples/tutorial/ 目录运行:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e '.[test]'
python -m pytest -q
这次 24 项测试全部通过。tests/test_blog.py 里的 test_index 请求 / 并检查首页;test_author_required 则把文章改成另一位用户所有,再验证当前用户更新和删除时得到 403。测试说明这些路径的预期行为,但不能证明项目没有其他问题。
本机另一个 Python 3.9.6 构建运行时有 2 项认证测试因为缺少 hashlib.scrypt 而失败;换成本机 Python 3.11 后 24 项通过。如果你也遇到这个报错,先检查 Python 构建是否提供 hashlib.scrypt,不要先改项目的密码处理代码。
问得更准,核得更快
一次只问一件事,并要求模型给出文件路径、函数名和代码依据。看到它说“会调用”“会检查”“一定安全”,就回到对应函数或测试确认。README 能说明作者打算怎么用,源码能说明具体实现,测试则记录项目希望保持的行为;三者有冲突时,先记录差异,不让模型替你裁决。
练习包里有助手脚本、自检脚本、使用说明、Qwen 原始回答和核对记录。运行 python3 selfcheck.py 可用临时模拟接口检查脚本,不会调用模型。这个练习只覆盖 Flaskr 的少量 Python 文件;大型仓库需要自己缩小目录或问题范围。助手最多读取 12 个文件、约 10,000 个字符,遇到截断提示后应缩小范围再问。不要向在线聊天服务粘贴公司私有代码或密钥;本机接口也不要暴露到公网。