博客
用手机跟进 Bug 修复:从提问到验收
图片能显示,点开原图却报错。以这次实际修复为例,说明如何从手机提出具体需求、核对代码与测试,并完成结果验证。
继续查看该栏目下的产品与工程更新。
浏览此分类文章里的截图可以正常显示,点击原图却出现错误。这是 Tactic Remote 官网近期修复的一个问题:图片文件本身完好,但链接被错误地拼接了页面的语言前缀。
将这类任务交由 Agent 处理时,需要明确验收标准。本次修复需要确认三件事:原图可以正常打开,常规文档链接仍能跳转到对应语言,相关测试全部通过。 下文按这三项要求,说明如何提出问题、核对代码改动并完成验收。
案例来自官网的实际修复记录,代码修改与测试均在电脑端完成。文中的手机请求为根据该记录整理的操作示例,并非当时在手机端发送的历史对话。使用 Tactic Remote 时,手机用于发送指令和查看反馈,代码始终在连接的开发电脑上运行。
1. 明确描述问题
只说“修复图片问题”不够具体,Agent 可能会尝试替换资源、调整正文,甚至重构语言路由规则。提问时需要说明具体出错位置、预期表现以及需要保留的内容:
中文 iPhone 指南里的截图能显示,但点击原图后,地址不对。请先复现问题。共享图片应使用原来的
/images/地址,文章和文档链接仍要跟随当前语言。修改前先说明需要改哪里、怎么检查。不要改文章正文,也不要动已有的其他改动。
发送指令前,先选择对应的网站项目,确认对话所在的本地目录和 Git 分支。如果 Agent 载入了其他仓库,应先调整目录。若尚未连接开发电脑,可先参考iPhone 设置指南。
此处的关键在于区分“显示图片”与“打开原图”。前者读取的是图片的src属性,后者依赖链接的href属性。页面能显示图片,仅说明显示图片这一步正常。
2. 先复现问题,再进行修改
可以要求 Agent 提供复现依据:
给我看一个失败样例:原地址是什么,经过处理后变成了什么,正确结果应该是什么。再加一条普通文档链接作为对照,不要为了让测试通过而改掉预期结果。
本次排查的图片路径如下:
原有函数将该图片路径识别为网页路径,产生了以下错误处理:
| 当前语言 | 处理后的错误地址 |
|---|---|
| 英文 | 末尾多出了一个 / |
| 简体中文 | 开头拼接了 /zh-CN/ ,末尾多出了 / |
共享图片在各语言页面中保持共用,其路径不应被修改。进一步排查还发现,带有查询参数或#片段的图片链接,经处理后这些参数均会丢失。
在本地开发环境中请求原始图片地址,服务返回 200、image/png;请求拼接语言前缀的/zh-CN/images/...png时,服务返回 404。这一步仅用于确认本地环境存在链接拼接逻辑错误,不代表对线上故障范围或受影响用户数量的统计。
3. 核对代码修改
要求 Agent 列出修改涉及的文件与代码差异(diff),并通过 App 提供的文件或变更视图进行检查。先核实目录、分支与文件名是否无误,再确认修改范围是否局限在当前问题内。如果 Agent 提出重写整体路由逻辑,应要求其说明具体原因。
本次实际修复范围较小:原函数已对示例下载路径保留了原始地址,只需将共享图片路径加入相同的判断规则即可。
修改后,/images/与/examples/目录下的文件将直接保留原始地址,常规页面链接则继续按既有规则处理语言切换。这是基于当前项目目录结构的处理方案,并未扩大为“凡是包含点号的链接均不转换语言”。
上述内容仅包含链接修复部分。当时的完整提交还包含文章更新与日期修正,检查变更时仍需阅读完整的 diff 内容,并分清哪些是本次修复引入的改动,哪些是工作区原本存在的变更。
4. 核对测试范围与结果
仅确认“测试通过”并不充分,还需要核实测试具体覆盖了哪些行为,以及测试所针对的代码版本。可以提出如下要求:
列出实际运行的命令、目录、分支或提交,以及退出状态和失败项。哪些已经检查,哪些只是建议,也请分开写。如果测试后又改了代码,请重新运行受影响的检查。
本次测试在 8 种语言环境下,分别验证了 6 类链接行为:
| 检查项 | 预期表现 |
|---|---|
| 共享图片地址 | 保留原始地址 |
| 图片参数与片段 | 查询参数与 # 片段保持完整 |
| 共享示例地址 | 下载示例保留原始地址 |
| 外部链接 | 不转换为站内地址 |
| 页内锚点 | 保持跳转到对应章节 |
| 文档页面地址 | 随当前语言环境正确转换 |
测试共包含 48 项检查,针对修复前后的函数逻辑运行,结果如下:
| 函数版本 | 通过项 | 失败项 |
|---|---|---|
| 修复前 | 32 | 16 |
| 修复后 | 48 | 0 |
旧版逻辑在每种语言下均有 2 项图片检查未通过,8 种语言共计 16 项失败。这是失败的测试项数,不是受影响的文章、用户或独立故障数。保留文档链接作为对照项是必要的:如果简单地取消所有链接的语言转换,图片链接虽然恢复,但常规文档的语言跳转将会失效。
如需自行验证该逻辑,可下载脚本,阅读源码后在开发电脑上执行:
该脚本使用 Node.js 内置断言模块,仅在内存中运行,不发起网络请求,也不修改文件。脚本保留了修复前后的链接处理逻辑,移除了 TypeScript 类型声明以支持直接运行,其测试结果与仓库中的检查一致。该脚本仅用于复现当前问题,不能替代项目本身的构建与集成测试。
在官网的实际修复中,该提交还通过了 lint、生产构建与 SEO 检查。完成自动化验证后,仍需在页面上确认实际交互表现。
5. 在页面中验证操作
在浏览器中打开最初出现问题的文章,依次检查以下环节:
- 正文中的图片能够正常加载并显示。
- 点击图片后能直接打开原图而非 404 错误页,且支持返回原页面。
- 常规文档链接仍可正确跳转至对应语言页面。
建议在英文版与一种翻译语言版本中分别验证,并在移动端视口宽度下查看页面排版。

这就是检查时使用的原图,点击即可打开。图中是 App 的新对话示例;本次修复发生在网站的图片链接上。
若要在 iPhone 真机上访问开发电脑中的网页预览,需通过项目既有的跨设备访问方式连接。在手机浏览器中访问127.0.0.1仅会请求手机本地,无法连接到电脑上的开发服务器。在桌面端模拟手机宽度有助于检查响应式布局,但不能替代真机环境下的实际操作验证。
6. 完成验证后设定下一步
本次修复的代码已在本地环境通过测试,并在本地预览中完成人工核验。相关验收仅针对本地版本,本次修改尚未发布上线。
在日常协作中,应向 Agent 明确当前任务的节点:
我已经在本地预览检查过原图和文档链接。保留这份修改和回归检查,说明还有哪些没验证,然后先停在这里,暂不发布或继续改动。
如果尚未亲自查看预览,应如实确认状态:“代码检查已通过,页面表现仍待人工核验。”Agent 处于空闲状态、自动化测试通过,以及人工验证符合预期,属于三个不同的阶段。
如果在操作过程中未收到响应,可先参考连接与送达状态排查指南确认连接与消息状态,再决定是否重新发送请求。