# 核心功能集成测试手动 Case ## 1. 使用说明 这份文档只保留当前项目主线的核心手动用例: - 设置页面配置功能 - 任务线程场景测试 每个 case 都要求记录统一证据,最少包含: - 当前模式 - 当前 provider / endpoint - 输入提示词或操作 - 结果摘要 - 产物路径或截图点 - 是否需要外部服务人工确认 ## 2. 设置页面配置功能 ### `MANUAL-ACP-001` 在线用户同步后默认值与本地 override 共存 - 前置条件 - 已登录在线账户 - 账户侧存在可同步的 Gateway / ACP 默认配置 - 本地有一项可区分的 override 值 - 操作步骤 1. 打开 `Settings -> Integrations -> Gateway` 2. 触发账户同步或重进设置页等待同步完成 3. 观察远程默认 endpoint 与本地 override 的展示 4. 返回主页面,再次进入设置页确认状态稳定 - 期望结果 - 远程默认配置被注入 - 本地 override 没有被覆盖 - 页面不显示 secret 明文 - 建议记录项 - 当前登录账户 - 同步前后 endpoint 对比 - 是否看到 secret 明文 - 截图点:同步完成后的设置页 ### `MANUAL-ACP-002` selfhost ACP 远程接入 - 前置条件 - 有可访问的 selfhost ACP 基址 - 若服务需要 auth,准备好 auth 值 - 操作步骤 1. 进入 `Settings -> Integrations -> Gateway` 2. 输入 selfhost 基址,例如 `https://host.example.com/opencode` 3. 如有需要,填写 auth 4. 点击 `测试连接` 5. 保存并生效,返回页面再次确认 - 期望结果 - 连接测试成功或失败信息明确 - 内部派生路径符合 `/acp` 与 `/acp/rpc` - 保存后页面状态稳定,重新进入不会丢失 endpoint - 建议记录项 - provider / endpoint - auth 是否为空 - 测试连接结果摘要 - 截图点:测试连接结果 ### `MANUAL-ACP-003` managed bridge ACP 接入 - 前置条件 - 账号同步已返回 managed bridge endpoint - bridge token 已配置 - 操作步骤 1. 登录 svc.plus 并同步 bridge profile 2. 点击 `测试连接` 3. 保存并生效 4. 关闭设置页后重新进入确认仍然显示 managed bridge endpoint - 期望结果 - App 侧任务发送只使用 managed bridge ACP 主入口 - provider catalog 与 gateway provider 来自 `acp.capabilities` - 不会写入或拼接 local / loopback provider endpoint - 建议记录项 - 当前模式 - loopback endpoint - 测试连接结果 - 是否需要本机服务日志人工对照 ### `MANUAL-ACP-004` 账号同步返回 `bridge_auth_token_unavailable` - 前置条件 - 已登录 `svc.plus` 账号 - 账户侧能正常拉起 session - 本地 App 可访问 `https://accounts.svc.plus` - 典型现象 - 设置页顶部与账号面板显示 `xworkmate-bridge 连接失败` - 账号同步状态为 `失败` - 同步说明显示 `bridge auth token is unavailable` - 详情信息里可见 `bridge_auth_token_unavailable` - 排查步骤 1. 在 App 中触发账号同步或重新进入设置页 2. 直接请求 `GET /api/auth/xworkmate/profile/sync` 3. 确认是否返回 `409` 4. 检查本地 secure storage 中是否存在 `xworkmate.account.managed.bridge.auth_token` 5. 检查 `xworkmate-app` 的 `accountSyncState` 是否被写成 `blocked` 6. 回到 `accounts.svc.plus` 服务侧确认 shared bridge token 是否已注入 Vault 并可被读取 - 期望结论 - 若接口返回 `409 bridge_auth_token_unavailable`,问题不在 App 的 bridge 连接逻辑 - 根因在 `accounts.svc.plus` 的 shared XWorkmate bridge token 供给链路 - `BRIDGE_AUTH_TOKEN` 需要由 accounts 服务通过 Vault 读取并下发 - 恢复条件 - `GET /api/auth/xworkmate/profile/sync` 返回 `200` - 响应包含 `BRIDGE_SERVER_URL` 和 `BRIDGE_AUTH_TOKEN` - App 重新同步后,`accountSyncState.syncState` 变为 `ready` - 本地 managed secret `bridge.auth_token` 被写入 - 建议记录项 - 登录账号 - `profile/sync` HTTP 状态码 - 响应错误码或成功字段 - 本地 `accountSyncState.syncState` - `tokenConfigured.bridge` 是否为 `true` - 是否已在 `accounts.svc.plus` 侧确认 Vault / bootstrap 配置 ## 3. 本地执行型任务线程 ### `MANUAL-LOCAL-001` `powerpoint-pptx` - 前置条件 - `pptx` 技能可用 - 当前线程为空白或新建线程 - 操作步骤 1. 在 assistant 线程中选择 `powerpoint-pptx` 2. 输入“生成一个三页产品介绍演示稿” 3. 等待任务完成 4. 在同一线程继续追问“把第二页改成对比页” - 期望结果 - 当前线程生成 `.pptx` 产物 - 产物显示在当前线程 artifact 区域 - 第二次追问延续同一线程上下文 - 建议记录项 - 线程 ID 或线程标题 - 输入提示词 - 产物路径 - 截图点:artifact 列表与连续追问结果 ### `MANUAL-LOCAL-002` `word-docx` - 前置条件 - `word-docx` 技能可用 - 操作步骤 1. 选择 `word-docx` 2. 输入“生成一份包含标题、目录和表格的周报文档” 3. 等待结果生成 - 期望结果 - 当前线程返回 `.docx` 产物 - 结果归属当前线程 - 不会跳到其他 provider 或其他线程 - 建议记录项 - 当前模式 - provider - 文档产物路径 - 结果摘要 ### `MANUAL-LOCAL-003` `excel-xlsx` - 前置条件 - `excel-xlsx` 技能可用 - 操作步骤 1. 选择 `excel-xlsx` 2. 输入“生成一个带汇总公式的销售表” 3. 等待结果完成 - 期望结果 - 当前线程中出现 `.xlsx` 产物 - 线程 workspace 有对应文件 - 结果摘要说明生成成功 - 建议记录项 - 提示词 - 文件名 - artifact 区域截图 ### `MANUAL-LOCAL-004` `pdf` - 前置条件 - `pdf` 技能可用 - 操作步骤 1. 选择 `pdf` 2. 输入“合并两个 PDF 并输出新文件” 3. 等待任务完成 - 期望结果 - 当前线程生成 PDF 结果 - 失败时线程中能看到错误摘要 - 不会只显示文本而没有产物 - 建议记录项 - 输入操作 - 产物路径 - 成功或失败摘要 ### `MANUAL-LOCAL-005` `image-resizer` - 前置条件 - `image-resizer` 技能可用 - 有可处理的本地图片 - 操作步骤 1. 选择 `image-resizer` 2. 输入“将图片缩放到 1200x800 并压缩” 3. 等待任务完成 - 期望结果 - 当前线程出现处理后的图片产物 - 结果归属当前线程 workspace - 结果摘要包含尺寸或压缩信息 - 建议记录项 - 原图与结果图路径 - 输出尺寸 - 截图点:线程结果区 ### `MANUAL-LOCAL-006` 本地浏览器自动化 - 前置条件 - 本地浏览器自动化技能可用 - 有可访问网页 - 操作步骤 1. 在当前线程选择浏览器自动化技能 2. 输入“打开示例页面并提取标题” 3. 等待结果返回 - 期望结果 - 线程内返回网页操作摘要 - 如有截图或日志产物,进入当前线程 artifact - 切换到其他线程后不复用本线程结果 - 建议记录项 - 访问网址 - 返回摘要 - 是否生成截图或日志 ## 4. 在线执行任务线程 ### `MANUAL-ONLINE-001` `image-cog` - 前置条件 - 在线 provider 可用 - `image-cog` 技能可用 - 操作步骤 1. 在 assistant 线程选择 `image-cog` 2. 输入“生成一张极简产品海报” 3. 等待任务状态完成 - 期望结果 - 线程中显示在线任务结果 - 产物图片回到当前线程 artifact - provider 显示为在线执行 - 建议记录项 - 当前 provider / endpoint - 任务状态变化 - 图片产物路径或截图 ### `MANUAL-ONLINE-002` `image-video-generation-editting` - 前置条件 - 在线视频/图片生成服务可用 - 操作步骤 1. 选择 `image-video-generation-editting` 2. 输入“基于这张图生成 5 秒镜头推近视频” 3. 等待任务轮询完成 - 期望结果 - 线程内可见任务处理中间状态或最终状态 - 最终产物回传到当前线程 - 失败时有明确错误摘要 - 建议记录项 - 任务开始与结束时间 - 视频或图片结果路径 - 是否需要外部服务后台确认 ### `MANUAL-ONLINE-003` `video-translator` - 前置条件 - 在线翻译/配音服务可用 - 准备一个待翻译视频 - 操作步骤 1. 选择 `video-translator` 2. 输入“将视频翻译成英文并输出字幕版” 3. 等待任务完成 - 期望结果 - 当前线程返回翻译后的视频或字幕产物 - 线程中可见任务成功或失败摘要 - 不会丢失当前线程上下文 - 建议记录项 - 输入视频来源 - 结果产物路径 - 错误信息或成功摘要 ### `MANUAL-ONLINE-004` 资讯采集 - 前置条件 - 在线采集能力可用 - 操作步骤 1. 选择资讯采集能力 2. 输入“采集今天关于 AI Agent 的 5 条资讯” 3. 查看结果 - 期望结果 - 线程返回结构化资讯结果 - 标题、来源、摘要等字段完整 - 结果留在当前线程内 - 建议记录项 - 当前 provider / endpoint - 输入提示词 - 结果中的标题 / 来源 / 摘要 - 是否回到当前线程 ## 5. XWorkmate App -> XWorkmate Bridge 远端单 Agent / Gateway 验收 这些 case 用于验证 `xworkmate-app` 通过当前 bridge / gateway ACP 链路调用 `xworkmate-bridge`,再转发到远端 `codex / opencode / gemini / openclaw` 时的真实线程行为,重点关注: - provider 选择是否正确 - follow-up 是否保持同一 thread - artifact 是否写回当前线程本地 workspace - `lastRemoteWorkingDirectory` / `remoteWorkspaceRefKind` 是否只作为 metadata 统一新增记录项: - 当前模式 - 当前 provider / endpoint - 输入提示词 - 线程 ID - 本地线程 workspace 路径 - 产物路径列表 - `lastRemoteWorkingDirectory` - `remoteWorkspaceRefKind` - 是否需要外部服务人工确认 ### `MANUAL-REMOTE-001` Codex 对话 + `pptx` - 前置条件 - 已选择任务对话模式 `codex` - bridge/provider 连通 - 操作步骤 1. 输入“生成一个两页产品介绍演示稿,输出为 `deck.pptx`” 2. 等待任务完成并确认 artifact 区出现 `.pptx` 3. 在同一线程继续追问“把第二页改成总结页” - 期望结果 - 对话可用 - `.pptx` 写回当前线程本地 workspace - follow-up 复用同一线程,不漂移到其他 provider - `lastRemoteWorkingDirectory` 更新,但 `workspaceBinding` 仍是本地目录 ### `MANUAL-REMOTE-002` Codex `docx/xlsx/pdf` - 前置条件 - 已选择任务对话模式 `codex` - 操作步骤 1. 执行 `docx`:生成一份周报文档 2. 执行 `xlsx`:生成一个带汇总公式的销售表 3. 执行 `pdf`:生成或转换出一个 PDF 摘要文件 - 期望结果 - 三类任务均可执行 - 产物分别出现在 artifact 区 - 文件落回当前线程本地 workspace ### `MANUAL-REMOTE-003` Codex `image-resizer` - 前置条件 - 已选择任务对话模式 `codex` - 线程目录内有一张待处理图片 - 操作步骤 1. 输入“将 `input.png` 缩放到 1200x800 并输出 `resized.png`” 2. 等待结果完成 - 期望结果 - 图片处理成功 - 输出图片写回当前线程本地 workspace - 结果摘要含尺寸或压缩信息 ### `MANUAL-REMOTE-004` OpenCode 对话 + `pptx` - 前置条件 - 已选择任务对话模式 `opencode` - 操作步骤 1. 输入“生成一个两页演示稿 `deck.pptx`” 2. 等待完成 3. 同线程继续追问修改第二页内容 - 期望结果 - 对话可用 - `.pptx` 落回当前线程本地 workspace - follow-up 继续复用同一线程上下文 ### `MANUAL-REMOTE-005` OpenCode `docx/xlsx/pdf` - 前置条件 - 已选择任务对话模式 `opencode` - 操作步骤 1. 执行 `docx` 2. 执行 `xlsx` 3. 执行 `pdf` - 期望结果 - 三类任务可用 - 产物可见且落回当前线程本地 workspace ### `MANUAL-REMOTE-006` OpenCode `image-resizer` - 前置条件 - 已选择任务对话模式 `opencode` - 已准备本地输入图片 - 操作步骤 1. 输入图片缩放任务 2. 等待结果 - 期望结果 - 输出图片可见 - 线程 artifact 和本地 workspace 均可确认结果 ### `MANUAL-REMOTE-007` Gemini 基础对话 - 前置条件 - 已选择任务对话模式 `gemini` - 操作步骤 1. 输入“回复 exactly pong” 2. 在同一线程继续追问“回复 exactly round2” - 期望结果 - 基础对话可用 - 两轮消息都停留在同一线程 - provider 显示仍为 `gemini` ### `MANUAL-REMOTE-008` Gemini 文档 / 图片任务能力边界确认 - 前置条件 - 已选择任务对话模式 `gemini` - 操作步骤 1. 分别尝试 `docx / pptx / xlsx / pdf / image-resizer` 2. 记录每项成功或失败 - 期望结果 - 若成功:artifact 落回当前线程本地 workspace - 若失败:错误摘要明确,可区分是 provider 能力限制还是 bridge/app 落盘问题 ### `MANUAL-GATEWAY-001` OpenClaw Gateway 基础对话 - 前置条件 - 任务线程使用 remote gateway / `openclaw gateway` - `openclaw.svc.plus` 可连通 - 操作步骤 1. 输入普通对话任务 2. 等待 gateway 返回结果 - 期望结果 - 可建立对话 - 线程消息返回成功或明确失败摘要 - provider / mode 显示为 gateway 路径 ### `MANUAL-GATEWAY-002` OpenClaw Gateway 文档类任务 - 前置条件 - Gateway 路径可用 - 操作步骤 1. 执行 `docx` 或 `pptx` 2. 执行 `xlsx` 或 `pdf` - 期望结果 - 至少 1-2 类文档任务成功 - 若返回 artifact,应回写当前线程本地 workspace - 若只返回文本摘要,应记录为“对话成功但无 artifact” ### `MANUAL-GATEWAY-003` OpenClaw Gateway 浏览器自动化 - 前置条件 - Gateway 浏览器能力可用 - 有可访问网页 - 操作步骤 1. 输入“打开示例页面并提取标题” 2. 如支持截图,再追问“截图并保存结果” - 期望结果 - 可执行浏览器任务 - 返回网页摘要 - 若有截图 / 日志产物,应进入当前线程 artifact ### `MANUAL-GATEWAY-004` OpenClaw Gateway 在线资讯汇总 - 前置条件 - Gateway 联网能力可用 - 操作步骤 1. 输入“汇总今天关于 AI Agent 的 5 条资讯” 2. 查看结构化结果 - 期望结果 - 能返回标题、来源、摘要 - 结果留在当前线程 - 若生成文档或截图,写回当前线程本地 workspace - 查询词 - 结果条数 - 结果摘要截图 ### `MANUAL-ONLINE-005` 搜索 - 前置条件 - 在线搜索能力可用 - 操作步骤 1. 选择搜索能力 2. 输入“搜索 XWorkmate ACP 配置说明” 3. 查看结果后继续追问“把前 3 条结果做摘要” - 期望结果 - 搜索结果结构完整 - 连续追问复用同一线程 - 不新建孤立线程 - 建议记录项 - 初始查询词 - 连续追问内容 - 搜索结果摘要 ## 6. 通用线程场景 ### `MANUAL-THREAD-001` 同线程连续追问 - 前置条件 - 任意一个本地执行或在线执行任务已经成功完成 - 操作步骤 1. 在原线程继续提问“继续基于刚才结果展开 3 点” 2. 观察回复 - 期望结果 - 沿用原线程 - 回答引用刚才的结果 - 建议记录项 - 原线程标识 - 连续追问内容 - 是否保留上下文 ### `MANUAL-THREAD-002` 切换线程后的状态隔离 - 前置条件 - 至少准备两个不同线程 - 操作步骤 1. 在线程 A 完成一个任务 2. 切换到线程 B 执行不同任务 3. 再切回线程 A - 期望结果 - A、B 两个线程的技能、provider、artifact 不串线 - 当前线程状态只反映当前线程 - 建议记录项 - 线程 A/B 标识 - 各自技能与产物 - 切换前后截图 ### `MANUAL-THREAD-003` 失败回退观察 - 前置条件 - 准备一个可稳定触发失败的配置或任务 - 操作步骤 1. 使用错误 endpoint 或故意不可达的在线任务 2. 提交任务并观察线程结果 - 期望结果 - 线程中出现清晰失败信息 - 不会把失败误报为成功 - 保留当前线程,便于继续修正并重试 - 建议记录项 - 失败输入 - 错误摘要 - 是否能在同线程重试