ΓDocsInteractiveNet

25 · 外部用户测试协议

目标:在发布前验证两类用户能独立完成核心路径。 当前状态:未执行(需要真实用户)。本文是招募、脚本与记录模板。

25.1 两组用户

组 人数 背景 任务
A · 教材读者 5 了解 λ/图重写基础即可 完成 Netbook 第 1 章 + Sandbox 任务
B · 开发者 3 Rust/后端/Agent 框架经验 跑通 flow + cell cluster + failover

不招募:项目贡献者、看过设计文档的人(避免偏差)。

25.2 A 组协议(30–40 分钟)

  1. 打开 Netbook(本地 pnpm dev 或静态包)。
  2. 不读源码,只读页面,完成第 1 章。
  3. 在 Sandbox 构造一个 γ-γ 活跃对,点击单步,解释发生了什么。
  4. 完成一个内置任务(至少 1 个),使用 undo/redo 与 permalink。
  5. 打开 /trace,说出 trace 与网步骤的对应关系。

记录:

  • 完成时间、卡住的位置(章节/术语/交互);
  • 是否理解“端口/线/活跃对/规则”;
  • 是否能用一句话解释“为什么结果与归约顺序无关”;
  • 浏览器/设备/控制台错误。

成功标准:

  • ≥4/5 在 40 分钟内完成第 1 章与 1 个任务;
  • ≥4/5 能正确解释活跃对;
  • 0 个阻塞性 console error。

25.3 B 组协议(45–60 分钟)

环境:macOS/Linux,Rust stable,Node 20+,pnpm。

git clone https://github.com/lulgabc/InteractiveNet
cd InteractiveNet
cargo test --workspace
cd apps/netbook && pnpm install && pnpm build

任务:

  1. ain demo,解释输出中的 steps/normal_form/hash。
  2. ain check examples/research.flow,故意改错一行,读出诊断。
  3. ain flow run examples/research.flow --save-trace /tmp/t.json,再 flow replay。
  4. 启动 3 个 ain cell serve,跑 cluster demo。
  5. 用 --kill-after 30 --kill n1 跑 cluster llm100,观察 failover 与 state hash。
  6. 用 --run-id + --effect-ledger 重跑,确认 effect 不重复调用(scripts/effect-ledger-demo.sh)。
  7. 用 scripts/tls-demo.sh 跑 mTLS,确认明文失败。

记录:

  • 从 clone 到第一条成功命令的时间;
  • 失败的步骤与完整错误;
  • 文档中缺失的前置条件;
  • 对“Ainet 与 LangGraph/Temporal 差异”的一句话理解;
  • 是否愿意继续使用/贡献。

成功标准:

  • ≥2/3 在 60 分钟内跑通 1–5;
  • ≥2/3 能解释 cell ownership 与 failover;
  • 0 个 P0 文档错误(命令不可执行/路径错误)。

25.4 自动化预检

在招募前先跑:

./scripts/quickstart-check.sh

它覆盖 demo、check、flow run/replay、3 节点 cluster、100 LLM cells + kill、effect ledger、mTLS。若失败,先修再招人。

25.5 反馈模板

GitHub Issue(label user-test):

### 组别
A / B

### 环境
OS/架构、Rust/Node/pnpm 版本、commit/tag

### 完成情况
- [ ] 任务 1
- [ ] 任务 2
...

### 卡点
步骤、期望、实际、完整错误输出

### 理解题
用自己的话回答(不要查文档)

### 建议
最小可改进点

25.6 结果记录

日期 用户 组 完成 卡点 Issue
— — — — — —

测试结束后把阻塞问题分为:

  • P0:命令不可执行、数据错误、崩溃;
  • P1:术语误导、关键步骤缺失;
  • P2:体验/排版。

P0 必须在 v0.1.x 修复;P1 进入 docs/07-roadmap.md。

在 GitHub 编辑本文