用途:通过本地 Junior CLI 走开发者或运维实际使用的应用路径(从 apps/example 运行),检查结果并报告具体证据,验证测试套件难以覆盖的行为。先阅读 specs/local-agent.md,若变更行为有对应功能规格也需阅读。
主要能力与用法:使用仓库包装器运行本地 CLI,命令从 apps/example 执行并加载根与应用环境:pnpm cli -- chat -p "<targeted prompt>"。智能体行为、提示、技能、工具及面向模型的插件行为用 chat -p 或交互式 chat;宿主或插件 CLI 行为直接调用同一包装器,如 pnpm cli -- memory search --scope personal --scope-key local:local-cli --limit 5。技能或插件发现相关变更可用探测命令:pnpm cli -- chat -p "/example-local confirm local QA discovery" 和 pnpm cli -- chat -p "/example-bundle-help"。健康启动通常记录 SOUL.md、WORLD.md、已加载插件与已发现技能,可作为路径被执行的证据。
仪表盘 UI QA:涉及报告负载形状的 UI 变更,先用类型化模拟报告覆盖层:JUNIOR_DASHBOARD_MOCK_CONVERSATIONS=true pnpm dev,然后在浏览器打开仪表盘检查会话、转录、搜索或会话统计界面。模拟数据为只读的 @sentry/junior/reporting 会话 API 形状数据,含仅活动工具行、倒置工具时间戳等边界情况,以及 advisor 工具调用/结果与 advisor 子智能体活动配对。插件报告数据由配置的报告提供方透传,需单独验证。不要用模拟数据证明运行时摄取、Slack 投递、凭据行为或模型行为。
选择探测:优先与修改功能相关的定向提示或直接 CLI 命令;简单路由或提示上下文检查用精确输出提示;智能体/工具工作流用自然语言提示;运维 CLI 界面用直接插件命令;跨轮连续性用交互式 pnpm cli -- chat;仪表盘渲染、过滤、搜索或指标用模拟报告。不要用本地 CLI 声称 Slack 专属行为。自动化测试、类型检查、lint 和评估是独立验证,不能替代本地 QA 证据。
OAuth 流程 QA:Junior 有两种 OAuth 暂停/恢复流程,均通过 HTTP 回调恢复到 Slack 线程:插件(非 MCP)OAuth 经 /api/oauth/callback/<provider> 恢复,apps/example 中 sentry 插件为 OAuth 清单提供方;MCP OAuth 经 /api/oauth/callback/mcp/<provider> 恢复,linear、notion、hex 插件使用远程 MCP URL。本地 CLI 无法执行暂停或恢复,因本地运行器设置 authorizationFlowMode: "disabled",认证挑战会以终止性授权失败结束回合,只能证明该终止界面。恢复行为用集成测试确定性检查:pnpm --filter @sentry/junior exec vitest run tests/integration/oauth-callback-slack.test.ts 及 mcp-oauth-callback-slack.test.ts、mcp-auth-runtime-slack.test.ts。SQL 会话存储变更需验证恢复回合从 SQL 重建上下文。
失败处理:凭据缺失或过期可用 pnpm dev:env 刷新后重跑;出现 junior_conversation_messages 或 junior_agent_steps 查询错误说明本地 Postgres 模式早于 SQL 会话存储切换,运行 pnpm cli -- upgrade 后重跑;普通本地 QA 出现 Redis 错误检查是否设置了 JUNIOR_STATE_ADAPTER=redis。若模型回答不足以证明行为,改用更窄提示、精确输出提示、交互模式或直接插件命令;若无法通过本地客户端/智能体执行,应说明本地 QA 不足并指出仍需手动覆盖的运行时界面。
报告内容:运行的精确 pnpm cli -- ... 命令;仪表盘模拟 QA 的开发服务器命令、URL、检查的模拟会话或页面及可见 UI 证据;退出状态与证明行为的关键输出;apps/example 是否加载了预期的应用/插件/技能路径;本地 QA 是否充分或哪些仍未在本地证明。自动化测试/lint/类型检查/评估结果放在单独验证部分。