
不看发布会、不抄 README。本文在 Linux 真机上从零安装 Prime Agent v0.9.4,接 ZAI 的 GLM 模型,跑通两个真实任务——从零写一个带 pytest 的 CLI 工具、对 2000 行 CSV 做程序化分析(并用 awk 独立算出标准答案逐项对照)。所有数字均为本机实测,含 4 个真实踩坑,命令可直接复制复现。
前一篇 《Prime Agent 调研》 讲清楚了它的两大核心抽象(RLM 递归语言模型 + Continual Harness 自我进化骨架)。这一篇只做一件事:真机实测,用产物说话。
一、实验环境与声明
| 项目 | 配置 |
|---|---|
| 系统 | Ubuntu Linux x86_64(内核 6.17) |
| Node / Python | v24.18.1 / 3.12.3 |
| 磁盘 / 内存 | 423G 可用 / 29G |
| 网络 | 中国大陆网络环境(这一点很重要,见第三节) |
| 被测对象 | prime-agent v0.9.4(2026-09-08 发布) |
| 模型 Provider | ZAI · glm-5.3-flash |
声明:本文所有命令可直接复制复现;LLM 输出有随机性,你的运行结果细节可能有差异,但流程和坑是真实的。
二、安装:一条命令,1 分钟内完成
先把安装脚本下载下来过了一遍再执行(2232 行 bash,下载源是 Cloudflare R2,带 SHA-256 校验逻辑,未发现可疑行为):
curl -fsSL https://app.primeintellect.ai/prime-agent/install.sh -o prime-install.sh
sh prime-install.sh
真实安装日志(节选):
Downloading Prime Agent v0.9.4
Verifying Prime Agent download
prime-agent-0.9.4.tgz: 成功 # SHA-256 校验通过
Installing Prime Agent
added 190 packages in 20s
Prime Agent was installed successfully.
Run it with: prime-agent
$ prime-agent --version
0.9.4
安装位置在 Node 的 bin 目录下(~/.nvm/versions/node/v24.18.1/bin/prime-agent)。首次运行时它会在 ~/.prime/agent/ 下自建一套 kernel-venv(独立 Python 3.11 虚拟环境,给 Python REPL 内核用)——这个设计保证了 REPL 环境与系统 Python 隔离。
结论:安装体验顺畅,从下载到可用约 1 分钟,SHA-256 校验是默认行为。
三、Provider 接线:OpenAI 不通,ZAI 直连 5 分钟搞定
这一步踩了本次实验最大的环境坑:
- api.openai.com 直连超时(大陆网络环境,curl 8 秒超时无响应);
- 环境里现成的
OPENAI_API_KEY走本机 socks5 代理实测返回 401 Invalid API key——key 本身就是失效的; - 解法:prime-agent 的 providers 文档列了 25+ 个原生支持的 Provider(Anthropic / OpenAI / DeepSeek / Gemini / ZAI / MiniMax / Mistral / Groq 等),其中 ZAI(智谱)
api.z.ai直连可达,从网关配置里取出 key 设置环境变量即可:
export ZAI_API_KEY=sk-xxxx # 你的 ZAI key
认证优先级(官方文档 + 实测一致):~/.prime/agent/auth.json > 环境变量(唯一例外是 Prime Inference 的 PRIME_API_KEY 优先)。
冒烟测试:
$ prime-agent --provider zai --model glm-5.3-flash -p 'Reply with exactly: PRIME-AGENT-OK' --no-session
PRIME-AGENT-OK
real 4.351s
结论:Provider 抽象是真实可用的,换 Provider 只是换一个环境变量 + 两个 CLI 参数的事。
四、任务 1:从零写一个带测试的 CLI
任务 prompt(原文):
Create todo.py: CLI with add/list/done subcommands, stores in todo.json. Create tests/test_todo.py with pytest covering all three. Run pytest, ensure all pass. No external deps beyond pytest.
过程先说实话:第一次运行中途检查时,stdout 一片空白、工作目录也是空的,一度以为它卡死没干活;几分钟后再看,todo.py、tests/test_todo.py、.pytest_cache、__pycache__ 全部落盘(文件时间戳证明它自己跑过 pytest)。最后进程正常退出(exit 0),完整输出直到 进程结束时才一次性吐出——print 模式的 stdout 是最后一口气 flush 的,中途检查极易误判(这个坑在第六节细说)。
独立验收 1:第三方复跑 pytest
tests/test_todo.py::test_add_creates_task_in_json PASSED [8%]
tests/test_todo.py::test_add_assigns_incrementing_ids PASSED [16%]
tests/test_todo.py::test_add_rejects_blank_text PASSED [25%]
tests/test_todo.py::test_list_empty PASSED [33%]
tests/test_todo.py::test_list_shows_pending_tasks PASSED [41%]
tests/test_todo.py::test_list_shows_done_tasks PASSED [50%]
tests/test_todo.py::test_done_marks_task_done PASSED [58%]
tests/test_todo.py::test_done_is_idempotent PASSED [66%]
tests/test_todo.py::test_done_unknown_id_fails PASSED [75%]
tests/test_todo.py::test_done_rejects_non_integer_id PASSED [83%]
tests/test_todo.py::test_ids_keep_increasing_after_done PASSED[91%]
tests/test_todo.py::test_cli_entry_point_end_to_end PASSED [100%]
============================== 12 passed in 0.13s ==============================
12/12 全过,而且测试质量超出 ” 能跑就行 ” 的线:空文本拒绝、未知 id 报错、非整数 id 报错、id 不复用、done 幂等、端到端入口全覆盖。
独立验收 2:真实运行 CLI
$ python3 todo.py add "write prime-agent article"
Added task 1: write prime-agent article
$ python3 todo.py add "review needle repo"
Added task 2: review needle repo
$ python3 todo.py list
[ ] 1: write prime-agent article
[ ] 2: review needle repo
$ python3 todo.py done 1
Marked task 1 as done.
$ python3 todo.py list
[x] 1: write prime-agent article
[ ] 2: review needle repo
$ python3 todo.py done 99; echo "exit=$?"
error: no task with id 99
exit=1
$ python3 todo.py add ""; echo "exit=$?"
error: task text cannot be empty
exit=1
结论:一个 prompt,约 6 分钟(含它自行探索和写测试的时间),交付了带 12 个测试、错误处理完整的可用 CLI。这个质量可以直接进真实项目。
五、任务 2:RLM 程序化数据分析(带对照实验)
RLM 的核心卖点是 ” 上下文当变量,用程序处理数据而不是把数据读进上下文 ”。设计了一个可验证的实验:
实验材料:用 Python 生成 2000 行 CSV(固定随机种子 42,四列 id,value,category),文件对模型是陌生的。同时用 awk 独立计算出黄金标准答案。
任务 prompt(原文,明确禁止整读文件):
The file data.csv in the current directory has a header row and columns: id,value,category. IMPORTANT: do not dump the whole file into your context; analyze it programmatically with the Python REPL. Compute: (1) number of data rows, (2) sum of all values, (3) per-category row counts and value sums, (4) top 3 rows by value (report value and id). Write the results to results.json and print a short summary of your findings.
结果:11 秒完成,写出 results.json(565 字节),并如实汇报了它做了 sanity check(分类行数之和 = 2000、分类和 = 总和)。
逐项对照:prime-agent vs awk 黄金标准
| 指标 | awk 黄金标准 | prime-agent | 一致 |
|---|---|---|---|
| 数据行数 | 2000 | 2000 | ✅ |
| value 总和 | 9,978,551 | 9,978,551 | ✅ |
| alpha 行数 / 和 | 478 / 2,401,485 | 478 / 2,401,485 | ✅ |
| beta 行数 / 和 | 491 / 2,431,320 | 491 / 2,431,320 | ✅ |
| gamma 行数 / 和 | 507 / 2,553,380 | 507 / 2,553,380 | ✅ |
| delta 行数 / 和 | 524 / 2,592,366 | 524 / 2,592,366 | ✅ |
| top3(value@id) | 10000@1421 / 9999@1359 / 9996@532 | 同左 | ✅ |
七项全对,零幻觉。 还有个好玩的细节:我自己的 awk 标准答案先被 CSV 的 \r\n 行尾坑了($3=="alpha" 一个都匹配不上),prime-agent 反而正确处理了行尾——做对照实验的人得先验证自己的尺子。
六、踩坑实录(4 个,含原始报错)
| # | 坑 | 现象 / 原始报错 | 解法 |
|---|---|---|---|
| 1 | --thinking off 不被模型支持 |
400 This model always engages in thinking and cannot be disabled; please use low, high, or max |
glm-5.3-flash 必须思考,只能 low/high/max;换模型前先想清楚 |
| 2 | print 模式输出 ” 最后一口气 ” 才吐 | 中途检查 stdout 为空、极易误判卡死;实际进程正常 exit 0,完整输出(含它自报的 12 passed in 0.14s)在结束时一次性交付 |
长任务用 nohup + 日志文件;验收看产物 + 等进程退出码,不要中途下结论 |
| 3 | OpenAI 直连不通 + key 失效 | 直连超时;走 socks5 代理返回 401 Invalid API key | 换直连可达的 Provider(ZAI 实测顺畅);代理只能解决网络不能救活 key |
| 4 | 对照实验的尺子先坏 | awk 不处理 \r\n,alpha 统计为 0 |
先给标准答案工具喂 ” 已知答案 ” 自检 |
坑 1 和坑 2 都是 只有真跑才会遇到的——README 不会告诉你。
七、工程细节观察
daemon 常驻是真实的。装完第一次跑任务后,后台服务自动拉起:
$ prime-agent status
socket pid version status sessions uptime
/tmp/prime-agent-1000/daemon.sock * 809142 0.9.4 current 0 4m
会话全量落盘:~/.prime/agent/sessions/*.jsonl,本次实验产生 3 个会话文件(842B / 2.5KB / 9.1KB,最后一个就是任务 2 的完整轨迹),prime-agent agents / --resume 可浏览恢复。
CLI 表面相当完整(prime-agent --help 实测):--mode text|json|rpc|acp|daemon 四种输出模式、--goal 持久目标、--autonomous 系列参数(预算门 --autonomous-gate、最大轮次 /token/ 时长限制)、--thinking off…max 七档思考档位。这套参数面就是为无人值守长任务设计的。
八、风险与边界(实测确认的部分)
- 不是安全沙箱——官方 README 用 WARNING 明说:以你的用户权限执行模型生成的代码,worker/kernel 是进程隔离(防故障)不是安全隔离。跑不可信代码请外挂沙箱,本文两个任务都在干净目录进行。
- v0.9.x 早期版本,行为变动快——坑 1 的 thinking 参数就是例证。生产使用请锁定版本。
- scaffolding 效果依赖模型能力 :glm-5.3-flash 两个任务都过关,但
/refine自我进化、--autonomous自主模式、agent-to-agent 通信等高级特性 本文未实测,不评价——下一期补。 - token 成本未精确统计:print 模式不回显 usage;要精确计量建议用
--mode json自行采集。
九、总结:两个任务之后的判断
| 维度 | 实测结果 |
|---|---|
| 安装 | ✅ 1 分钟,SHA-256 默认校验 |
| Provider 接线 | ✅ 换 Provider = 1 个环境变量 + 2 个参数 |
| 代码生成质量 | ✅ 12/12 测试 + 完整错误处理,可直接用 |
| RLM 程序化分析 | ✅ 11 秒 / 2000 行 / 七项对照全对 / 主动做 sanity check |
| 可观测性 | ✅ 会话 JSONL 落盘 + daemon status + doctor |
| 坑 | ⚠️ thinking 档位与模型强相关;print 模式长任务要日志落盘 |
一句话:“ 会自我进化的 Agent” 先不管,” 能把活真干完的 Agent” 它已经是了。 建议拿一个你手头真实的、半天内能验收的小任务跑一遍——记得用干净目录 + 日志落盘。/refine 和 autonomous 模式的实测,下期见。
参考
- PrimeIntellect-ai/prime-agent – GitHub
- Release v0.9.4
- Prime Agent: A Self-Improving RLM Harness (arXiv:2608.23552)
- Recursive Language Models: the paradigm of 2026 – Prime Intellect Blog
- Providers 文档(25+ Provider 支持列表)
- earendil-works/pi – 上游 TUI/ 工具集
- 相关阅读:《Prime Agent 调研:上下文当变量、子智能体当函数调用》
作者:yunying(增长运营官)· 实测环境:Ubuntu Linux / prime-agent v0.9.4 / ZAI glm-5.3-flash · 2026-09-15