Files
claude-code/docs/testing/SLASH-COMMANDS-TEST-CHECKLIST.md
unraid 8945f08708 feat: integrate fork work onto upstream main (squashed)
Squash-merge of feat/autofix-pr-test (69 commits) onto upstream/main
with -X ours strategy (upstream as authoritative for content conflicts).

Key features brought in from fork:
- LocalMemoryRecall + VaultHttpFetch tools (end-to-end wired)
- /local-memory, /local-vault, /memory-stores, /skill-store interactive panels
- /agents-platform, /schedule, /vault command scaffolding
- /login: switch / replace / remove of workspace API key
- statusline refactor (built-in status row, /statusline as info command)
- autofix-pr command + workflow

Conflict resolutions (upstream-wins):
- 10 .js command stubs kept from upstream (alongside fork's .ts implementations)
- src/components/BuiltinStatusLine.tsx accepted upstream's deletion
  (fork's wire-up references in StatusLine.tsx will be cleaned up next)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 14:58:26 +08:00

13 KiB
Raw Blame History

斜杠命令完整测试清单

日期2026-05-06 适用范围:本 session 累积所有恢复/新建命令PR-1 ~ PR-4 + audit-fix + H2 refactor 起点 commitorigin/main (4f1649e2) 最新 commitfe99cf0e35+ commits ahead


测试前准备

cd E:/Source_code/Claude-code-bast-autofix-pr

# 1. 确保最新 dist 含全部 commits
bun run build

# 2. 验证 dist 不是 stale
stat -c '%Y %n' dist/cli.js
git log -1 --format=%ct\ %h
# dist mtime 必须 ≥ HEAD commit time

# 3. 完全退出当前 dev REPL按 Ctrl+D 或 /quit后重启
bun run dev

关键提醒Bun 不会动态重载 dist任何 source 改动都必须 bun run build + 重启 REPL。


A 组 — 纯本地(无网络/无 key立即可测

前置:无

# 命令 输入 期望输出 通过
A1 /version 直接跑 显示版本号(如 1.10.10
A2 /env 直接跑 runtime 信息 + env vars 白名单CLAUDE_/FEATURE_/ANTHROPIC_/BUN_/NODE_/...+ secrets masked
A3 /context 直接跑 fork 原生命令colored gridanalyzeContextUsage() 真实 API view含 compact boundary + projectView 转换)+ token 数与 API 看到的一致
A4 /context 在压缩边界附近 直接跑 显示 compact boundary 后的 messages不重复计 token
A5 (删 ctx_viz/context 是唯一 context 可视化命令)
A6 /debug-tool-call 默认 N=5 列最近 5 个 tool_use+tool_result 配对
A7 /debug-tool-call 10 数字参数 列最近 10 个
A8 /perf-issue 直接跑 ~/.claude/perf-reports/perf-<stamp>.mdmem+cpu+token+per-tool
A9 /perf-issue --format=json flag 写 .json 格式
A10 /perf-issue --limit 1000 flag 仅读 log 最后 1000 行
A11 /break-cache 默认 once ~/.claude/.next-request-no-cache marker
A12 /break-cache status 子命令 显示 marker 状态 + 累计 break 次数
A13 /break-cache always 子命令 写 always flag 文件
A14 /break-cache off 子命令 删 once + always
A15 /tui toggle 切换 marker ~/.claude/.tui-mode
A16 /tui status 子命令 显示当前 marker + env var 状态
A17 /tui on /tui off 子命令 marker write/unlink
A18 /onboarding status 子命令 显示 hasCompletedOnboarding / theme / lastVersion
A19 /onboarding theme 子命令 进入 ThemePicker
A20 /onboarding trust 子命令 清 trust dialog flag
A21 /onboarding reset 子命令 清 hasCompletedOnboarding下次启动重跑
A22 /recap 直接跑 一行 ≤40 字 session recap
A23 /away /catchup aliases of recap 同 A22
A24 /usage 直接跑 合并 cost + statsSettings/Usage 或 Stats panel
A25 /cost /stats aliases of usage 同 A24
A26 /summary 直接跑 调 manuallyExtractSessionMemory + 显示 summary.md

A 组失败诊断

  • 命令找不到 → 检查 dist staleness + 重启 REPL
  • feature() unsupportedbun run build 时 feature flag 没注入

B 组 — GitHub CLIgh auth login

前置gh auth status 显示 logged-infork 仓库要有 issues enabled

# 命令 输入 期望输出 通过
B1 /share 默认 secret gist gh gist create,输出 gist URL
B2 /share --public flag public gist
B3 /share --mask-secrets flag redact sk-ant-* Bearer * ghp_* 等模式
B4 /share --summary-only flag 仅前 200 字/turn
B5 /share --allow-public-fallback flag gh 失败 → 0x0.st fallback
B6 /issue Fix login bug title 参数 gh issue createrich body 含最近 5 turns + errors
B7 /issue --label bug --assignee me <title> 多 flag label + assignee 生效
B8 /issue (仓库 issues disabled 自动降级到 GitHub Discussions
B9 /commit 直接跑(有 staged 生成 commit message 草稿
B10 /commit-push-pr 直接跑 commit + push + 创建 PR

B 组失败诊断

  • gh: command not found → 装 https://cli.github.com/
  • gh auth status 未登录 → gh auth login
  • issues disabled → 看是否降级到 discussion

C 组 — Subscription OAuth/login claude.ai

前置/login 完成 claude.ai OAuth/login 显示 ☑ Subscription

# 命令 输入 期望输出 通过
C1 /login 无参 3 plane summary:☑ Subscription、☐/☑ Workspace API key、4 third-party providersPR-4 新增)
C2 /teleport 无参 列最近 sessionslist-style picker
C3 /teleport <session-uuid> 参数 resume from claude.ai
C4 /tp <session-uuid> alias 同 C3
C5 /teleport <session-uuid> --print flag print mode 直接输出 session URL
C6 /autofix-pr 386 PR# CCR 派发,输出 sessionUrl
C7 /autofix-pr stop 子命令 停止 active monitor
C8 /autofix-pr anthropics/claude-code#999 cwd 不匹配 拒绝 repo_mismatch(不真创建会话)
C9 /schedule list 子命令 /v1/code/triggers GET返回 data:[] 或 trigger 列表
C10 /schedule create <cron> <prompt> 子命令 POSTcron expr UTC 验证
C11 /schedule run <id> 子命令 POST /run 立即触发
C12 /schedule update <id> <field> <value> 子命令 POST(不是 PATCH
C13 /cron list /triggers list aliases 同 C9
C14 /init-verifiers 无参 创建项目 verifier skills
C15 /bridge-kick 无参 bridge 故障注入测试
C16 /subscribe-pr 无参 列本地 ~/.claude/pr-subscriptions.json
C17 /ultrareview <PR#> 参数 preflight gatev1 已有)

C 组失败诊断

  • 401 → 重 /login
  • /v1/agents 类 401 → 这些是 workspace endpoint预期会失败,移到 F 组
  • /schedule 401 → 检查 dist 含 ccr-triggers-2026-01-30 beta header

D 组 — (已删除 2026-05-06

/providers 命令在 2026-05-06 移除。理由:与 fork 原生 /login 的 "Anthropic Compatible Setup" form 功能重叠(同样配 OpenAI-compat Base URL + API Key保留单一入口避免双 UI 混淆。

第三方 provider 配置请用 /login 内的 form:选 provider 后填 Base URL + API Key + Haiku/Sonnet/Opus 类别按钮。

src/services/providerRegistry/* utility 模块 保留4 内置 cerebras/groq/qwen/deepseek 元数据 + DeepSeek 三模式 compatMatrix可被未来 fork form 的 "Quick Select" enhancement 复用。


E 组 — 本地兜底PR-3 新增,订阅用户无 key 也能用)

前置:无

E.1 /local-vaultOS keychain + AES fallback

# 命令 输入 期望输出 通过
E1 /local-vault list 无参 空列表(首次)
E2 /local-vault set test-key foo-secret-value 写 secret onDone 显示 [REDACTED]显示原值
E3 /local-vault list 再跑 显示 test-key(不含 value
E4 /local-vault get test-key 默认 mask foo-...e (16 chars) 类似格式
E5 /local-vault get test-key --reveal 明文 + 警告 foo-secret-value + 警告 "secret revealed in terminal"
E6 /local-vault set bad-key C:hack path traversal 拒绝CRITICAL E1 修复)
E7 /local-vault set ../traverse foo path traversal 拒绝
E8 /local-vault delete test-key OK
E9 /lv list alias 同 E1

安全验证

# E1 加密文件存在 + value 不明文
ls ~/.claude/local-vault.enc.json
cat ~/.claude/local-vault.enc.json | grep -c "foo-secret-value"  # 必须是 0
# salt 16 字节存在
cat ~/.claude/local-vault.enc.json | grep "_salt"

E.2 /local-memory(多 store 持久化)

# 命令 输入 期望输出 通过
E10 /local-memory list 无参
E11 /local-memory create my-store 创建 ~/.claude/local-memory/my-store/ 建好
E12 /local-memory store my-store key1 value1 写 entry OK
E13 /local-memory fetch my-store key1 value1
E14 /local-memory entries my-store [key1]
E15 /local-memory store my-store ../escape foo path traversal 拒绝
E16 /local-memory archive my-store 改名 dir 改为 my-store.archived
E17 /lm list alias 同 E10

E 组失败诊断

  • AES 错 passphrase → 提示重新 setSecret
  • keychain 不可用 → 自动 fallback 文件warn 一次)
  • path traversal 接受 → audit-fix-all-40 修复未生效,重新 build

F 组 — Workspace API key需配 ANTHROPIC_API_KEY=sk-ant-api03-*

前置

  1. https://console.anthropic.com/settings/keys 创建 API keysk-ant-api03-*
  2. Windows: setx ANTHROPIC_API_KEY "sk-ant-api03-..." 持久化
  3. 完全退出 dev REPLCtrl+D / /quit + 启动新 shell让 setx 生效)+ bun run dev
  4. 验证:/login 应显示 ☑ Workspace API key ANTHROPIC_API_KEY set
# 命令 输入 期望输出 通过
F1 /help(配 key 后) 4 命令 /agents-platform /vault /memory-stores /skill-store 出现(之前 isHidden:true
F2 /help(不配 key 4 命令出现(动态 isHidden
F3 /agents-platform list 无参 /v1/agents GET 200返回 agents 数组
F4 /vault list 无参 /v1/vaults GET 200
F5 /vault create test-vault 子命令 创建 vault
F6 /vault add-credential <vault_id> api-key sk-secret 子命令 onDone 显示 [REDACTED]stdout grep 不到 sk-secret
F7 /memory-stores list 无参 /v1/memory_stores GETbeta managed-agents-2026-04-01
F8 /memory-stores create test-store 子命令 POST
F9 /memory-stores update-memory <id> <mid> "new" 子命令 PATCH(不是 POST
F10 /skill-store list 无参 /v1/skills?beta=true GET
F11 /skill-store install <id> 子命令 ~/.claude/skills/<name>/SKILL.md
F12 错配API key 不是 sk-ant-api03-* 前缀) 配错 key 友好错(不 401
F13 不配 key 时调 /vault list(手动 /help 找不到,但直接输入命令名) 501 + 文案 "ANTHROPIC_API_KEY required"

F 组失败诊断

  • 401 with workspace key → key 没生效(重启 REPL + 检查 echo $ANTHROPIC_API_KEY
  • 命令仍 isHidden → dist stalenessrebuild + 重启)
  • credential value 出现在 stdout → audit fix 未生效

全过验收标准

  • A 组 26/26 pass
  • B 组 ≥8/10 pass有 gh + 仓库权限的)
  • C 组 ≥10/17 pass订阅环境完整
  • D 组 8/8 pass
  • E 组 17/17 passpath traversal 必须拒绝)
  • F 组 ≥10/13 pass取决于 workspace key 是否配)

任何 fail 立即报告:命令 + 实际输出 + 期望输出。我针对 fail 立即修。


已知限制

命令 限制
/teleport 无参 picker 用 list-style 不是 Ink <SelectInput>LocalJSXCommandCall 不能 mid-call suspend
/autofix-pr cross-repo 仅元数据git source 仍来自 cwdrepo_mismatch 显式拒绝跨 cwd
/skill-store install 写到 ~/.claude/skills/fork 主流程不自动 load 该目录的 markdown skills用户手动用
/providers use <id> 输出 shell export 命令,自动 mutate runtime重启生效

测试报告模板

## 测试报告 - 2026-05-XX

### 环境
- OS: Windows 11
- Bun: <version>
- dist mtime: <date>
- HEAD: <commit-hash>
- ANTHROPIC_API_KEY: 配/未配
- gh CLI: 装/未装

### 结果
- A: 26/26 ✅
- B: 8/10B5/B8 fail
- C: 12/17C5/C13/C14/C15/C16 fail
- D: 8/8 ✅
- E: 17/17 ✅
- F: 12/13F12 边界)

### 失败详情
B5: <command> → 实际 <output>,期望 <expected>
...