Files
pua/docs/FAQ.md
T
xsser 534b91c65f fix(upload): make contribution uploads reliable
Summary:
- Treat /contribute.html and /contribute as first-class SPA routes so
  GitHub OAuth callback and documented upload links land on the uploader.
- Switch the browser uploader from multipart/base64 to raw JSONL POSTs
  with metadata headers, while keeping JSON file_data and multipart
  compatibility on the API.
- Add static upload-flow gates and Vitest coverage for authenticated
  upload sanitization, R2 writes, and D1 metadata recording.
- Bump plugin and marketplace versions to 3.4.4.

Rationale:
- The upload path had two breakpoints: documented /contribute.html links
  rendered the homepage because routing only checked hash, and multipart
  browser uploads could be stripped by proxy/custom-domain behavior.
- Raw JSONL avoids multipart body loss and avoids base64 size/memory bloat
  for large session files.

Tests:
- bash evals/test-upload-flow.sh
- bash evals/test-release-consistency.sh
- npm --prefix landing test -- --run src/test/upload-function.test.ts
- static eval suite: governance, feedback auth, heartbeat, integrity
  guard, issue regressions, Microsoft flavor, platform compat, loop hook,
  Windows Python hooks, YAML frontmatter
- npm --prefix landing run build
- ./landing/node_modules/.bin/tsc -p pi/pua/tsconfig.json
- git diff --check

Co-authored-by: Codex <codex@openai.com>
2026-05-09 17:15:54 +08:00

4.3 KiB
Raw Blame History

PUA FAQ / Issue Playbook

需不需要总是开启 PUA

不建议无脑 always-on。推荐按风险分层:

场景 建议
普通首轮问答/简单代码 不必 always-on,避免噪音
Debug、失败 2 次以上、用户明显不满 开启 PUA 或手动触发
高风险交付、测试/评分/CI/memory 相关 开启 PUA + harness governance,按四权分离执行
项目初期探索 使用温和味道或仅用诊断先行/验证闭环

核心不是“压力越大越好”,而是把行动、诊断、评分、环境修改分开,并用证据交付。压力只负责防摆烂,不能替代 verifier。

Claude 说这是 prompt injection,怎么办?

从 v3.3.0 起,UserPromptSubmit hook 已做两件事:

  1. hook 脚本内部过滤关键词;普通首轮请求不再注入。
  2. 注入文案改为“用户安装的 productivity context”,不再使用强制式 MUST invoke Skill 文案。

如果仍遇到拒绝:

  • 先确认 Claude Code 版本足够新;
  • 使用 /pua:off 关闭自动注入,只在需要时手动 /pua
  • 对调试任务使用诊断先行格式:[PUA-DIAGNOSIS] 问题是... 证据是... 下一步...
  • 如果模型仍拒绝,提供完整 session JSONL,便于复现。

封闭网络 / 内网环境怎么用?

使用 /pua:offline 或手动设置:

{
  "offline": true,
  "feedback_frequency": 0
}

离线模式会关闭 PUA 自身的反馈问卷、排行榜上报和 session 上传提示;PUA 的本地验证、压力升级、诊断先行仍可使用。

Codex CLI 子命令怎么对应 Claude Code

Codex 没有 Claude Code 的 /pua:xxx slash command 命名空间时,可以用 $pua-xxx alias

Claude Code Codex CLI
/pua:on $pua-on
/pua:off $pua-off
/pua:p7 $pua-p7
/pua:p9 $pua-p9
/pua:p10 $pua-p10
/pua:pro $pua-pro
/pua:pua-loop $pua-loop

Pi / Trae 支持状态

  • pi/pua/:官方轻量 pi extension,提供 /pua-on/pua-off/pua-status/pua-reset 和会话注入。
  • pi/package/pi.dev package 版本,包含 extension + skills/pua/SKILL.md,可用 pi install ./pi/package 本地安装。
  • .trae/skills/Trae 标准 SKILL.md 包;trae/ 保留 Prompt/Rule 复制版和差异说明。
  • Trae / Pi 都不继承 Claude Code hooks;四权分离 gate 必须通过 Skill 工作规程、外部验证和用户确认落地。

Feedback endpoint 为什么要求更强认证?

从 v3.4.0 起选择 C 方案

  • 匿名评分仍允许写入 /api/feedback,便于低摩擦反馈;
  • 上传脱敏 session 不再允许匿名 session_data POST
  • session 文件上传必须走 https://openpua.ai/contribute.html 登录后的 /api/upload 流程。

这是最小权限折中:保留反馈转化率,但把高价值、高隐私的数据入口放到登录态和上传审计链路里。

“下场”这个词为什么改了?

“下场”同时可能表示“亲自动手介入”和“停止工作/退场”,容易让 agent lifecycle 语义混乱。现在统一为:

  • start/intervene → “亲自动手” / “亲自介入”;
  • stop/release → “释放” / “退场”。

静默 heartbeat 会不会污染对话?

不会。v3.4.3 的活跃用户统计走 SessionStart command hook,不是 skill prompt,也不输出 additionalContext。因此模型上下文里不会出现 heartbeat endpoint、install id 或统计提示。

治理边界:

  • offline: truetelemetry: falsefeedback_frequency: 0 会关闭 heartbeat
  • 本地只生成随机 install idCloudflare D1 只保存 SHA-256 hash
  • 管理页面是 https://openpua.ai/#/admin/heartbeats,需要 GitHub 登录并命中管理员白名单;
  • hook 有静默测试:即使网络失败,也不能向对话输出任何字节。

上传数据入口打不开或上传失败怎么办?

从 v3.4.4 起,https://openpua.ai/contribute.html 是一等路由:GitHub 登录回跳、登出回跳、README 和 Stop hook 都可以直接使用这个地址,不再依赖 hash route。

上传链路也改为浏览器发送 JSON file_data:前端先把 .jsonl 转成 base64,再 POST 到 /api/upload。服务端仍保留 multipart 兼容,但默认 JSON 路径可以避开部分自定义域名/代理对 multipart body 的剥离问题。