Files
xsser 4a7793859b fix: preserve PUA tone across model runtimes in 3.5.1
Retain original skill rhetoric and the frozen flavor library while adding
portable Claude Code, Codex and ChatGPT runtime contracts and packages.
Correct hook event handling, scoped numeric checkpoints, flavor locks,
plugin path resolution, advisory integrity checks and voluntary feedback.

Add native-loading and ordered-evidence runners for cc0, OMP and Codex.
Document paired model results, refusals, approval/rate-limit failures,
explanatory factual errors and remaining evidence gaps without an all-model
pass claim. Exclude private execution archives from public Git content.

Bump all six PUA manifests including Pi, refresh three-language READMEs,
and add release notes plus reproducible offline validation instructions.
Resolve optional OMP source metadata relative to the current user's home.

Validation:
- 17 offline suites passed, including 13 OMP evidence regressions
- Six manifest versions synchronized; all tested skill hashes unchanged
- Three portable packages rebuilt reproducibly; original tone checks pass
- Python, Bash and JSON syntax; public doc links; staged diff checks pass
- 330 private archive files verified unchanged and excluded from staging

Real-model results remain limited: this is not universal behavior acceptance.

Co-authored-by: Codex <codex@openai.com>
2026-09-09 17:56:22 +08:00

6.0 KiB
Raw Permalink 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 的本地验证、压力升级、诊断先行仍可使用。

注意: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 工作规程、外部验证和用户确认落地。

PUA 会不会上传我的数据?

不会。全部数据收集功能已移除,客户端不发、服务端也不再接收。具体删掉了五条通道:

已移除 曾经发送的内容
session 语料上传 脱敏后的对话 .jsonl 全文
评分反馈上报 评分、PUA 计数、味道、任务摘要
静默心跳 telemetry 随机安装 ID、插件版本、平台、味道
PUA 排行榜 邮箱、手机号、PUA 计数、L3+ 计数
pua-api 平台 手机号 + 短信验证码注册、session_start/pua_triggered/command_used 事件上报,以及依赖它的远端指令模板拉取和支付流程

对应的客户端 hook、服务端 Pages Functions、D1 迁移和 Cloudflare 绑定都已删除。

任务结束时保留非阻断的本地反馈提醒;运行 /pua:survey quick 自愿评分后,才向本机 ~/.pua/feedback.jsonl 追加一行。跳过不记录。Stop(停止钩子)使用客户端可见的 systemMessage,不再假装普通 stdout(标准输出)能让模型自动发问。

回归防护:evals/test-no-telemetry.sh 对全仓做反向断言——扫描已知采集域名、endpoint 路径、行首的 curl/wget 调用,以及已删文件的重新出现。任何一条被加回来,测试就会失败。

Integrity Guard 为什么不再使用 permissionDecision: "ask"?

从 v3.4.6 起,PUA Integrity Guard 将敏感但合法的操作降级为 advisory-only:只注入 additionalContext,不再输出 permissionDecision: "ask"。

原因是 Claude Code 会把 hook 返回的 ask 当成硬权限请求处理,它的优先级高于 bypassPermissions,会导致用户明明开启 bypass 仍频繁弹窗。

新的分层是:

  • memory、CLAUDE.md、settings.json、tests/evals/CI 等敏感操作:advisory-only,提醒模型谨慎并解释治理边界;
  • hidden tests、hidden solution、gold patch、benchmark answers:permissionDecision: "deny",硬阻断,避免答案污染和评测作弊;
  • 普通源码读写:静默放行。

核心原则:提醒走上下文通道,阻断才走权限裁决通道。

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

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

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

静默 heartbeat 还在吗?

不在了。SessionStart 的 heartbeat hook 已删除,~/.pua/install_id 不再被使用也不再被创建。老版本留下的这个文件可以直接删掉。

openpua.ai/contribute.html 现在是什么?

一个说明页。原来的上传表单已移除,页面只说明数据收集已停止。GitHub 登录、上传历史、管理统计面板一并下线,因为它们唯一的用途就是给上传归属和看采集量。

我想手动脱敏一份 session 自己用,还有工具吗?

有。hooks/sanitize-session.sh 保留下来了,它是纯本地工具,不联网:

bash hooks/sanitize-session.sh <输入.jsonl> <输出.jsonl>

三层脱敏:已知格式黑名单(路径、各家云厂商密钥、JWT、PEM 私钥、数据库连接串、邮箱/IP/手机号)→ key=value 上下文识别 → Shannon 熵兜底(32 字符以上的高熵串,纯 hex 用更高阈值以免误伤 git hash)。

它现在没有任何调用方,删掉它也不影响 PUA 运行。