AGI 路线调研终稿 · 2026-09-21 快照
实测报告

novice_test

新手压力测试(Round 2 · 6 组真机实测)

Round 2 — 新手压力测试报告(novice_test.md)

  • 测试官:Round 2 子代理 · 新手压力测试官
  • 日期:2026-09-21(CST)
  • 测试机:Kali Linux VM(kernel 7.1.5+kali-cloud-amd64),8 vCPU / 7.6 GB RAM(+4G swap)/ 79G 磁盘,无 GPU、无 GUI(CPU-only)
  • 任务:完全扮演零基础新手,把 Round 1 各文档里"成本最低、当天能跑起来"的步骤逐条实跑。每条记录:命令 / 预期 / 实际 / 耗时 / 成功与否 + 卡点 + 修正版命令。失败如实记录,不猜测绕过。
  • 安全约束(已遵守):未触碰任何已有 systemd 服务与容器(nginx / gpt-load / Hermes 全程未动);临时容器 --rm 并即时清理;未 pull >2GB 镜像;新开端口一律绑定 127.0.0.1;测试用 cron 完成后已还原。
  • 覆盖:6 条测试 —— ①Qdrant 容器 ②Ollama 本地模型 ③promptfoo 评测 ④LightRAG 本地 RAG/知识图谱 ⑤cron 定时 agent ⑥GitHub 项目与版本时效核查。
  • 总消耗:约 1.5 小时(含踩坑重跑)、现金 0 元(全本地/开源);测试期磁盘峰值 +约 11G,收尾已全部卸载清理、磁盘回落至基线(29G/39%,见第七节)

一、环境基线(新手拿到手时会看到什么)

检查项 命令 实际结果
Docker docker --version 29.8.1,已在跑(已有容器 gpt-load、kejilion-panel,不动)
Ollama command -v ollama ❌ 未安装 → 从零装
promptfoo command -v promptfoo ❌ 未安装 → 从零装
Node / npm node --version v26.8.2 / npm 11.19.1
Python python3 --version 3.14.7(PEP 668 受管环境,pip 直装被系统拒绝)
磁盘 df -h / 起始已用 29G / 可用 46G

二、逐条实测

测试 1:Qdrant 单容器部署(personal_memory.md 阶段 3 的依赖组件)

内容
命令 docker pull qdrant/qdrant:latestdocker run -d --name novice-qdrant --rm -p 127.0.0.1:16333:6333 qdrant/qdrantcurl 建集合 / 插点 / 搜点
预期 镜像拉取成功;容器启动;REST API 返回版本 JSON;能建 collection、插向量、搜向量
实际 全部通过。v1.19.1;建集合 {"result":true};插入 2 个点成功;搜索返回 {"id":1,"score":1.0}/collections/test_col 显示 status:green, points_count:2
耗时 pull 9.4s + 启动 ~3s + API 验证 <1s ≈ 15 秒全链路
成功 ✅ 一次通过,零卡点
卡点
清理 docker rm -f novice-qdrant 已执行,docker ps -a 确认无残留

修正版命令(防"端口裸奔")

docker pull qdrant/qdrant:latest
docker run -d --name qdrant --rm -p 127.0.0.1:6333:6333 qdrant/qdrant   # 必须加 127.0.0.1: 前缀
curl -s http://127.0.0.1:6333/                                          # 期望返回版本 JSON
docker rm -f qdrant                                                     # 用完即删

网上教程常写 -p 6333:6333,那会监听 0.0.0.0 把向量库暴露到公网——正是 infra_automation.md 说的"死法一"。


测试 2:Ollama 安装 → 拉模型 → 推理 → 升级(local_model.md 方案 A 步骤 1-2)

内容
命令 curl -fsSL https://ollama.com/install.sh -o /tmp/o.sh && sh /tmp/o.sh(分别测"固定版本"与"默认最新"两条路径)→ ollama pull qwen2.5:0.5bollama run qwen2.5:0.5b "..." → 重跑脚本升级
预期 安装为常驻服务;能拉模型;能推理出中文回答;升级平滑且模型保留
实际 固定版本装OLLAMA_VERSION=0.11.9)成功:服务 active、API 127.0.0.1:11434 正常。② qwen2.5:0.5b(397MB)拉取 41s;首次推理 6.6s(含冷加载),输出中文段落但质量很差(把向量数据库说成"二维坐标点集")。③ 默认路径重跑脚本 → 平滑升级到 v0.34.2:服务自动重启、4 个模型全部保留。④ 升级后冒烟:推理正常、嵌入 API 返回 768 维、服务 enabled+active。
耗时 安装 ≈1-2 分钟(含下载);pull:0.5B 41s、3B 2m59s、nomic-embed 30s、bge-m3(1.2G,未单独计时);升级数分钟(含重新下载)
成功
卡点 OLLAMA_NO_START=1 只在 macOS 分支生效——脚本里该变量仅用于 open -a Ollama,Linux 下必然创建并启用 systemd 服务(实测输出 "Creating ollama systemd service... Enabling and starting");② 固定版本会装旧版:0.11.9 vs 官方最新 0.34.2(2026-09-15 发布,GitHub API 实测)→ 装完必须核对版本;③ Round 1 方案 A 的验收线"本地 8B 流式对话 ≥30 tok/s"是 M 系 Mac 的数字,8G 内存无 GPU 机器不成立;④ 升级过程中短暂出现 could not connect to a running Ollama instance / client version is 0.34.2 告警,属正常过渡

修正版命令

# 1. 安装(默认装最新版;会自动创建并启用 systemd 服务)
curl -fsSL https://ollama.com/install.sh | sh
ollama --version        # 必做:和 https://github.com/ollama/ollama/releases 对一下
systemctl is-enabled ollama   # 默认 enabled(开机自启);不想要常驻:systemctl disable --now ollama

# 2. 小内存/无 GPU 机器:先用小模型走通全流程,别一上来就 7B
ollama pull qwen2.5:0.5b            # 397MB,~41s
ollama run qwen2.5:0.5b "你好,用一句话自我介绍"

# 3. 确实需要 7B(≥16G 内存或有 GPU 再上)
# ollama pull qwen2.5:7b && ollama run qwen2.5:7b "你好"

# 4. 升级 = 重跑安装脚本(实测平滑:服务自动重启、模型/配置保留)
curl -fsSL https://ollama.com/install.sh | sh

测试 3:promptfoo 安装 + 最小 eval(evaluation.md 第 1-2 步)

内容
命令 npm i -g promptfoo → 写 promptfooconfig.yaml(2 用例)→ promptfoo eval
预期 安装成功;eval 输出表格,2 用例 PASS
实际 安装成功(v0.123.1,2m33s)。第一次 eval 失败Error: Could not identify provider: ollama.chat:qwen2.5:0.5b。改成 ollama:chat:qwen2.5:0.5b 后成功:✓ 2 passed (100%)
耗时 npm 安装 2m33s;失败 eval 2.2s;成功 eval 3.1s(内部 Duration 1s)
成功 ✅(修正 provider 语法后)
卡点 provider 语法坑ollama.chat:<model> 报 "Could not identify provider",正确写法是 ollama:chat:<model>(冒号不是点号)——已查源码 providers.js 确认解析逻辑是 firstPart === "chat";② 安装体积意外大:2.6G(含 onnxruntime 等依赖),小 VPS 需留意;③ pip install promptfoo 不适用(这是 Node 项目)

修正版命令

npm i -g promptfoo                      # 约 2.5 分钟
mkdir -p ~/ai-dashboard && cd ~/ai-dashboard
cat > promptfooconfig.yaml <<'EOF'
description: "我的第一个 eval"
prompts:
  - "把下面的词翻译成英文,只输出译文: {{word}}"
providers:
  - ollama:chat:qwen2.5:0.5b            # 注意:冒号写法!ollama:chat:模型名
tests:
  - vars: { word: 猫 }
    assert: [{ type: contains, value: cat }]
  - vars: { word: 狗 }
    assert: [{ type: contains, value: dog }]
EOF
promptfoo eval                          # 预期: 2 passed (100%)
promptfoo view                          # 可选:浏览器面板(无 GUI 环境跳过)

接 Ollama 时确保服务在跑;换云 API:provider 改 openai:chat:gpt-4o-mini + export OPENAI_API_KEY=...


测试 4:LightRAG 本地知识图谱/RAG(personal_memory.md 阶段 4)

内容
命令 pip3 install lightrag-hku(失败)→ python3 -m venv + pip install lightrag-hku → 脚本用本地 Ollama 索引 2 个小 md → 3 种模式查询
预期 本地零成本建索引,能回答"谁负责凤凰计划、部署在哪台服务器"
实际 多次失败后跑通。最终可用路径:lightrag.llm.ollama 官方集成(ollama_model_complete + ollama_embed),实体抽取用 qwen2.5:3b、嵌入用 bge-m3。索引 2 个 ~200 字文件 → 抽出 9 个实体(张三/凤凰计划/PostgreSQL数据库/服务器/192.168.1.100/公司内网/李四/PostgreSQL/硬盘)、3 条关系;查询 3 模式(naive/local/hybrid)均返回正确答案(naive 命中原文;local/hybrid 基于图谱上下文)。
耗时 venv+pip 安装 26.9s(lightrag-hku 1.5.7);索引 2 个小文件(3B 模型,CPU)≈4-5 分钟;3 模式查询 1-2 分钟。全程含试错约 15 分钟。
成功 ✅(修正 4 个连环坑之后)
卡点 PEP 668pip install 直装被拒(externally-managed-environment)→ 必须 venv;② openai_embed 硬编码 1536 维 + 默认模型名 text-embedding-3-small:把 base_url 指向 Ollama 后要么 404、要么维度校验炸(total elements (768) cannot be evenly divided by expected dimension (1536))——不能直接把 OpenAI 集成改成 Ollama;③ 传普通 lambda 会崩:AttributeError: 'function' object has no attribute 'func'(必须用 EmbeddingFunc 实例);④ 官方 Ollama 路径默认嵌入模型是 bge-m3(要 ollama pull bge-m3,1.2G,1024 维);⑤ 小模型不可用:0.5B 能索引但实体抽取=0(图谱全空,local/global/hybrid 查询全部 [no-context]),3B 才可用;⑥ 速度瓶颈:CPU-only 下 3B 抽取 2 个小文件要 4-5 分钟——个人大笔记库(成百上千文件)用本地 CPU 模型不现实,必须云 API 或 GPU

修正版命令(可直接跑通)

# 0. 前置:Ollama 已在跑(见测试 2)
ollama pull qwen2.5:3b      # 实体抽取模型(≥3B,0.5B 实测不可用)
ollama pull bge-m3          # 嵌入模型(1024 维,官方默认)

# 1. 独立 venv(绕开 PEP 668)
python3 -m venv ~/lightrag-venv
~/lightrag-venv/bin/pip install lightrag-hku        # 实测 1.5.7,约 27s

# 2. 脚本(已归档:round2/agents/artifacts/lightrag_min_v3.py)
import asyncio, glob
from lightrag import LightRAG, QueryParam
from lightrag.llm.ollama import ollama_model_complete, ollama_embed

OLLAMA = "http://127.0.0.1:11434"

async def main():
    rag = LightRAG(
        working_dir="/tmp/lightrag-work",
        llm_model_func=ollama_model_complete,
        llm_model_name="qwen2.5:3b",
        llm_model_kwargs={"host": OLLAMA, "options": {"num_ctx": 8192}},
        embedding_func=ollama_embed,        # 关键:官方 Ollama 集成(bge-m3/1024维)
        embedding_batch_num=2,
    )
    await rag.initialize_storages()
    docs = [open(f, encoding="utf-8").read()
            for f in sorted(glob.glob("/tmp/lightrag-docs/*.md"))]
    await rag.ainsert(docs)
    for mode in ["naive", "local", "hybrid"]:
        print(mode, "->", (await rag.aquery(
            "谁负责凤凰计划?它部署在哪台服务器?", param=QueryParam(mode=mode)))[:200])
    await rag.finalize_storages()

asyncio.run(main())

实测结论:"本地全免费 RAG"可行但有硬门槛——模型 ≥3B、索引速度受 CPU 限制。小规模(几十个短文件)可接受;大规模笔记库建议走云 API 或 GPU,或只做增量小块索引。


测试 5:cron 定时 agent(infra_automation.md「24/7 自运行」最小验证)

内容
命令 daily_brief.py(调本地 Ollama 生成三句话简报,追加落盘)→ 手动跑通 → 加 crontab */2 * * * *(每 2 分钟,测试用高频)
预期 定时自动执行、产出可查、失败可见
实际 手动运行 13.3s 成功(冷启动)。cron 上线后 19/19 次全部成功(01:18:07 → 01:54:09,cron.log 19 行全 "ok",非 ok 0 行);产物 briefs/2026-09-21.md 共 20 条 = 19 次自动 + 1 次手动
耗时 单次 2-4s(模型常驻)/ 13s(冷启动);观察窗口 36 分钟
成功 ✅ 19/19(100%)
卡点/要点 必须绝对路径(cron 环境 PATH 极简);② 必须重定向日志 >> x.log 2>&1——否则失败无声(cron 默认只发本地 mail);③ 先手动跑通再加 cron(本次即按此顺序);④ 合并已有 crontab 时先 crontab -l > 文件 再追加,别直接覆盖(本次保留了原有 @reboot 行);⑤ 频率即成本:本例用本地模型=0 元;若指向云 API,每 2 分钟一次会烧钱,真实使用建议 1 天 1 次

修正版命令

#!/usr/bin/env bash
set -e
mkdir -p ~/agents
cat > ~/agents/daily_brief.sh <<'EOF'
#!/usr/bin/env bash
# 绝对路径 + 日志重定向,两个都不能省
OUT=~/agents/briefs/$(date +%F).md
mkdir -p "$(dirname "$OUT")"
curl -s http://127.0.0.1:11434/api/generate \
  -d '{"model":"qwen2.5:3b","prompt":"用三句话总结今天 AI 领域值得关注的事。","stream":false}' \
  | jq -r '.response' >> "$OUT" 2>> ~/agents/error.log
EOF
chmod +x ~/agents/daily_brief.sh
~/agents/daily_brief.sh          # ① 先手动跑通

# ② 再加 cron(每天 9:00;测试用 */2 高频验证后记得改回)
( crontab -l 2>/dev/null; echo "0 9 * * * $HOME/agents/daily_brief.sh >> $HOME/agents/cron.log 2>&1" ) | crontab -
crontab -l                       # 确认

本次测试后已还原 crontab(仅剩原 @reboot iptables-restore 行)。


测试 6:项目核查命令 + 版本时效(BRIEF「项目核查」环节)

内容
命令 curl -s https://api.github.com/repos/<owner>/<repo> \| jq '{stargazers_count, updated_at, pushed_at}'
预期 无需 token 即可确认项目存在、近期活跃
实际 ✅ 4 个全部返回:ollama/ollama 181,314★(推送 09-19)、HKUDS/LightRAG 39,778★(09-20)、qdrant/qdrant 34,711★(09-19)、promptfoo/promptfoo 25,307★(09-20)—— 全部活跃
耗时 <5 秒
成功
卡点 无(注意:匿名 API 限流 60 次/小时,BRIEF 已知)

版本时效核查(本次实测):Ollama 最新 v0.34.2(2026-09-15,GitHub API)|promptfoo 0.123.1(npm)|lightrag-hku 1.5.7(PyPI)|Qdrant 1.19.1(容器 API)|qwen2.5 系列模型正常可拉。


三、卡点总表(按严重度)

# 测试 卡点 现象 修正
1 promptfoo provider 语法 ollama.chat:xxx → "Could not identify provider" ollama:chat:xxx(冒号)
2 LightRAG OpenAI 集成接本地嵌入必炸 404 / 768 cannot be divided by 1536 改用 lightrag.llm.ollama.ollama_embed
3 embedding_func 必须传 EmbeddingFunc 实例 'function' object has no attribute 'func' 用官方已包装的 ollama_embed
4 小模型做不了知识图谱 0.5B → 0 实体,图谱查询全部 [no-context] 实体抽取 ≥3B
5 CPU 图谱索引慢 2 个小文件 ≈4-5 分钟 大库改云 API/GPU/增量索引
6 ③④ PEP 668 pip install 被系统拒绝 venv(或 pipx)
7 OLLAMA_NO_START 在 Linux 无效 仍创建并启用 systemd 服务 想不常驻:systemctl disable --now ollama
8 固定版本 = 旧版 0.11.9 vs 最新 0.34.2 装完 ollama --version 对照 GitHub
9 npm 全局安装体积 2.6G 小 VPS 磁盘压力 提前确认磁盘;或本地项目内安装
10 端口裸奔 教程式 -p 6333:6333 监听 0.0.0.0 127.0.0.1: 前缀
11 cron 静默失败 无日志则完全无感知 绝对路径 + >> log 2>&1

四、六条测试总览

# 测试 结果 关键耗时 卡点数
1 Qdrant 容器 ✅ 一次通过 15s 0
2 Ollama 本地模型 ✅(含升级验证) 安装 1-2min 4
3 promptfoo 评测 ✅(1 次失败后修好) 2.5min 3
4 LightRAG 本地 RAG ✅(4 个连环坑后修好) ~15min 含试错 6
5 cron 定时 agent ✅ 19/19 13s + 36min 观察 0(5 条要点)
6 项目/版本核查 <5s 0

五、对 Round 1 文档的具体修改建议(实测驱动)

  1. local_model.md 方案 A:验收线"8B ≥30 tok/s"要分硬件档(无 GPU 机器改成"3B 流程跑通");补 OLLAMA_NO_START 在 Linux 无效 的说明;补"装完必核版本";"1 小时体验"要计入模型下载时间。
  2. evaluation.md:明确 npm i -g promptfoo(不是 pip);provider 语法写 ollama:chat:<model>;加 2.6G 安装体积提示。
  3. personal_memory.md:阶段 1 的 Obsidian+Smart Connections 是 GUI 插件,本环境无 GUI 未实测(诚实标注);阶段 4 的 LightRAG 示例命令与 pip 包 1.5.7 API 差异大,建议整段替换为本文档测试 4 的修正版。
  4. infra_automation.md:cron/心跳部分补"绝对路径 + 日志重定向 + 先手动后自动"三条铁律;补频率成本提醒。
  5. 通用:所有"验收标准"应标注前置硬件条件(内存/GPU/网络),否则新手会照抄不可达的数字。

六、本次实测的局限与未覆盖

  • 无 GPU、无 GUI:Obsidian 插件、桌面 agent、promptfoo view 面板、浏览器类步骤未实测(诚实声明)。
  • 样本小:cron 只观察 36 分钟;模型质量结论只基于 0.5B/3B 两个小模型;每项基本只跑 1-2 次。
  • 网络环境:Docker Hub / GitHub / npm / PyPI 直连可用(非中国大陆网络);国内网络复现可能有差异。
  • 未覆盖:n8n、browser-use/Playwright、MCP 客户端接入(Claude Code 等)、Mem0/Zep、LoRA 微调——超出本轮时间预算或需 GUI/GPU,建议 Round 3 补。

七、产物与清理记录

归档产物(保留)/root/agi-research/round2/agents/): - daily_brief.pycron.log(19 行全 ok)、briefs/2026-09-21.md(20 条) - artifacts/lightrag_min_v3.py(可用版)、artifacts/lightrag_query_only.pyartifacts/promptfooconfig.yamlartifacts/lightrag-docs/

收尾清理(2026-09-21 02:10–02:26 CST 已执行完毕)——按“服务器资源有限、用完收尾”要求逐项卸载,并复核残留:

组件 处理 释放
Ollama v0.34.2(服务 + 二进制 + 4 个模型 + systemd unit + 用户/组) stop/disable + 全量删除 ≈6.2G
promptfoo(npm 全局,825 个包) npm rm -g promptfoo ≈2.6G
LightRAG venv + 临时目录(/tmp/lightrag-* 删除 ≈0.4G
Qdrant 镜像 docker rmi ≈0.3G
npm / ms-playwright / pip 缓存(测试产生部分) 清理 ≈2.2G
测试 crontab 条目 还原原样(仅剩 @reboot 行)

清理结果:磁盘 40G → 29G(回落至测试前基线,79G 盘的 39%);残留复核全部通过(command -v ollama 为空、端口 11434 无监听、ollama 用户/组/systemd unit 已删);既有容器(gpt-load、kejilion-panel)与 nginx / Hermes 全程未动、运行正常。

如需复现:测试 1–5 各节的“修正版命令”即完整重装步骤(Ollama 全套含模型下载约 10 分钟)。


报告定稿于 2026-09-21 02:26 CST;测试安装与缓存已于同日完成收尾清理。所有“实际”均为本机实测输出,未实测项已逐条标注。