2026 年 AI 编程工具链实测:用 Pi 等四个工具排查前端回归

返回
Kevin Riedl

12 分钟 阅读 · 2026年11月14日
最近审核

下一篇
图片在你的设备上生成,不连接 Instagram。文章链接会复制到剪贴板,供链接贴纸使用。

用户在订单页面选中 Open(未关闭)。第一页显示两笔未关闭的订单。开发人员把截图贴进工单,标记修复完成。可用户只要再点一次“下一页”,就会看到两笔 Closed(已关闭)的订单。用 AI 写代码时,谁来发现这个问题?

ChunkHound 作者 Ofri Wolfus 在公开教程里用四个工具开发了一款多人游戏。Pi 运行编程会话,ChunkHound 调查代码,pi-schematic 安排分工,agent-browser 查看前端实际运行的结果。我们沿用这套分工,把任务换成熟悉的维护场景:一个已有应用出了问题,审查者需要看到什么,才有依据合并修复?Wolfus 的作者介绍 · 四工具协作的原版教程

核查日期:2026 年 11 月 14 日。我们安装了四个软件包,在 Pi 中加载扩展,用 ChunkHound 为示例代码建索引,并在 Chromium 中操作订单页面。当前环境限制了 agent-browser 守护进程需要的本地套接字,浏览器实测改由 Playwright 驱动。下文的模型研究、编写补丁环节是建议流程。本次验证没有发起付费模型请求。

这套 AI 开发工具链中,四个工具各负责什么?

Pi 让模型获得可操作的编程环境。ChunkHound 从仓库中找出相关实现。pi-schematic 在 Pi 内把调查、修改和审查分开。agent-browser 可以定位页面上实际渲染出来的控件。评估这四个工具时,可以逐项问:这一步结束后,下一位同事能拿到什么?

本次检查的开源项目、版本、职责与交付证据
组件在订单工单中的职责应保留的证据代码许可证
Pi 1.5.2使用选定的模型、仓库工具和项目说明运行编程会话。范围明确的代码差异,以及验证改动的命令。MIT
ChunkHound 6.1.0找到读取筛选条件和生成翻页链接的代码。每个判断对应的文件、符号和行号。MIT
pi-schematic 0.7.1让调查、实现和审查各自围绕一个具体问题展开。交接记录,列清已确定的约束和尚待验证的行为。MIT
agent-browser 0.43.0在真实浏览器中按用户的顺序操作页面。地址栏、可见订单号和状态,以及刷新后的结果。Apache-2.0

这四个项目的代码均免费开源。模型 API、托管向量服务、云浏览器和 GPU 仍可能产生费用。本文的正则检索和本地浏览器示例无需模型账号。Pi 许可证 · ChunkHound 仓库与许可证 · pi-schematic 许可证 · agent-browser 仓库与许可证

怎样把 Pi、pi-schematic 和 ChunkHound 接起来?

先安装 Pi 命令行工具,再把 pi-schematic 安装为 Pi 扩展。随后把 ChunkHound 注册为项目级 MCP 服务。MCP 即模型上下文协议,Pi 通过这个接口发现和调用仓库工具。目前 Pi 已内置 MCP 支持。agent-browser 可以独立作为命令行工具使用。Pi 运行环境和内置 MCP 支持

以下命令固定了我们核查过的软件版本,环境使用 Node 24 和 Python 3.12。在执行界面测试的机器上安装浏览器,并确保 Pi 所在环境的 PATH 能找到它要启动的工具。Pi CLI 安装与身份验证 · agent-browser 安装说明

npm install -g --ignore-scripts @earendil-works/[email protected]
pi install npm:@chunkhound/[email protected]
uv tool install chunkhound==6.1.0
npm install -g [email protected]
agent-browser install

# 在要交给 Pi 使用的项目仓库中执行以下两条命令。
pi mcp add -l chunkhound -- chunkhound mcp --no-daemon
pi mcp list

-l 会把服务定义写进项目的 .pi/mcp.json。在 Pi 中信任这个项目之前,先查看配置文件。Pi 找不到可执行文件,或项目配置还未被信任时,写入配置也可能无法调用工具。先检查 Pi 发现了哪些工具,再查询一段已知代码,核对返回的源文件位置。Pi 的项目配置、信任机制与 MCP 命令

实测环境限制了共享守护进程的本地套接字。我们使用 ChunkHound 的单客户端模式 --no-daemon。信任测试项目后,Pi 显示服务已连接,并列出了 search 和 daemon_status。随后用独立的 MCP 客户端执行正则检索,查询 PAGE_SIZE,返回结果指向示例中的定义。这验证了通信和查询,无需让模型自行选择工具。ChunkHound CLI 与单客户端模式

我们还在一个全新的离线 Pi RPC 进程中加载了已安装的 pi-schematic。Pi 返回了扩展提供的 model-groups、notebook、handoff 和 readonly 命令。由此可以确认这组版本能够一起加载。具体模型能写出什么质量的补丁,还要给它一张真实工单来验证。

怎样用 ChunkHound 找到回归的原因?

先提一个能在源码中核对的问题。在这张工单里就是:哪个函数把订单状态写进下一页的 URL?如果地址没有这个参数,请求处理函数会返回什么?调查结果需要指向链接生成和参数读取两处,才能解释用户为何看到错误的订单。

把本地订单筛选示例下载到空目录。数据包含六笔虚构订单,每页两笔。缺陷模式和修复模式共用同一组数据。在该目录建索引即可搜索,不必接入向量服务。示例保留了 next_status 这个变量名,方便读者复现查询。ChunkHound 建索引、正则检索、语义检索和代码研究

chunkhound index --no-embeddings .
chunkhound search --regex 'next_status'

ChunkHound 把一个文件划分成 20 个代码片段,生成 0 个向量。查询得到三个内容有重叠的结果,都来自同一个文件。在缺陷模式下,一行代码将 next_status 设为所有订单,下一行用 page_url 生成链接。URL 没有 status 参数时,请求处理函数默认返回所有订单。三处命中解释的是同一个缺陷。

已经知道变量名,普通文本搜索就够用。实际仓库可能把界面链接、路由解析、API 筛选和测试放在四个不同的包里。这时再试语义检索,或要求 ChunkHound 的研究工具追踪整个调用路径,每一步给出源码位置。审查时在目标提交上核对这些行。修改后先刷新索引,或确认索引已经收录变更,再参考下一次查询。

索引保存在本机,模型推理的地点则由后端配置决定。正则检索无需模型服务,语义检索需要向量模型,深入研究还依赖语言模型和兼容的重排配置。选用远程服务时,核对各阶段会向哪个地址发送代码片段和查询内容。如果仓库要求数据留在本地,先单独验证每个后端,再向团队开放。ChunkHound 的模型服务与索引配置

Pi 和 pi-schematic 应该怎样分配同一项改动?

把待调查的问题交给研究者,把范围明确的改动交给实现者,再让审查者独立验证用户能看到的结果。pi-schematic 的 spawn 可以启动拥有全新对话的子智能体,handoff 将已有决策带到下一阶段。子智能体继承当前工作目录。即使对话相互独立,两个智能体也可能改写同一份文件。pi-schematic 角色、模型组、笔记和工作目录

订单筛选工单的分工示例
角色任务交接条件
研究者从第一页开始,追踪筛选状态怎样进入翻页链接、再由请求处理函数读取。给出源码位置。接手的人能指出参数在哪里丢失,解释默认值如何影响结果。
实现者生成下一页 URL 时保留当前状态。保留现有路由和空结果行为。提交范围小的代码差异,相关文件由一位实现者负责。
审查者打开第二页之前,先根据测试数据写下预期的订单号,再检查 URL、行内容、刷新、后退和空结果。保留预期值和实测值,做到下一次发布也能复核。

把预期订单号和改动范围写进工单,或者随代码提交回归测试。扩展的 notebook 适合在交接时保留当前决策。它与工作流绑定,开始新的工作流后会清空。下次发布时,两位同事若要还原当时的判断,可以从 Git 差异、测试和工单入手。多个实现者需要并行修改时,分别准备工作树或隔离写入范围。编程智能体运行框架怎样管理工具、状态与验证。

怎样证明用户点到下一页后,修复依然有效?

操作界面之前先写清预期。选择 Open 后,第一页应列出 ORD-101 和 ORD-102。点击下一页,应列出 ORD-105 和 ORD-106,两笔状态均为 Open。地址栏要保留筛选条件和页码,刷新后才能还原同一组结果。

先以缺陷模式运行本地服务。在允许 agent-browser 启动本地浏览器守护进程的机器上,打开第二个终端执行以下命令。示例按链接的可访问角色和名称定位界面控件。快照生成的元素编号即使发生变化,这些命令仍能找到对应的链接。agent-browser 的导航、定位与状态检查命令

# 终端 1
python3 order_filter_lab.py --mode broken --port 8765

# 终端 2
agent-browser open http://127.0.0.1:8765/orders
agent-browser snapshot -i
agent-browser find role link click --name "Open" --exact
agent-browser find role link click --name "Next page" --exact
agent-browser get url
agent-browser snapshot
agent-browser reload
agent-browser snapshot
agent-browser back
agent-browser snapshot
agent-browser find role link click --name "Cancelled" --exact
agent-browser snapshot
agent-browser close

交互快照(-i)适合定位控件。完整快照还会返回表格中可读的行内容。使用 @e3 这类引用时,导航后重新获取快照,从新结果中选择引用。如果验收涉及元素对齐或文字是否被截断,再补一张截图。这处缺陷则要看订单号、状态和 URL 是否都正确。快照类型与元素引用

真实 Chromium 中的观察:Playwright 操作同一组六笔订单
检查点缺陷模式修复模式
选择 OpenORD-101、ORD-102,状态都是 Open。第一页相同。
点击 Next page/orders?page=2。显示 ORD-103 和 ORD-104,状态都是 Closed。/orders?status=open&page=2。显示 ORD-105 和 ORD-106,状态都是 Open。
刷新第二页URL 没有筛选参数,仍显示同样两笔已关闭的订单。URL 保留筛选参数,仍显示同样两笔未关闭的订单。
浏览器后退回到 Open 的第一页,显示 ORD-101 和 ORD-102。恢复翻页之前的 URL 和订单。
选择 Cancelled没有数据行,显示“No matching orders.”(没有符合条件的订单)。同样显示空结果,URL 保留已取消状态。

按 Ctrl-C 停止服务,使用 --mode fixed 重新启动,再重复相同操作。两个版本都能通过“第一页筛选正常”这一项。把行内容和路由状态放在一起检查,才能解释为什么下一页和刷新会失败。后退和空结果则验证了相邻操作是否仍然可用。

如需在后续版本中反复验证,把Playwright 回归测试放在示例文件旁。测试对两个版本使用完全相同的验收条件。即使探索性浏览会话已经结束,另一位审查者也能独立复现。在缺陷模式下,测试在“下一页”失败,退出码为 1。在修复模式下,五项检查全部通过,退出码为 0。

python3 -m pip install playwright
python3 -m playwright install chromium
python3 test_order_filter.py http://127.0.0.1:8765/orders

更大范围上线时,可参考产品发布前 QA 检查清单。

团队什么时候值得引入这四个工具?

先从交付中反复出现的问题入手。工程师本来就能快速找到相关函数,为一处六行改动接入向量服务,收益有限。如果代码审查放行的功能经常在用户下一次点击时出错,就应先投资可重复的浏览器断言。已有项目可以逐个引入工具,观察效果后再扩大范围。

  • 代码定位太慢:让同一位工程师用现有搜索和 ChunkHound 分别处理难度相近的工单。记录找到正确文件所需的时间,并核对调查结果中有多少条引用真正支持结论。
  • 任务范围经常漂移:在 pi-schematic 中保存一套流程,由一位实现者修改、一位审查者复核。统计重复调查、冲突改动和可复现的问题。把简单改动分配给三个付费模型会话,也可能只增加成本。
  • 审查漏掉界面缺陷:在浏览器中记录失败,独立写下预期值,打补丁后用同一组条件复测。需要在每次发布都保证的行为,可以把确定性的断言加入 CI。

试点的分母可以用满足约定验收条件的修复数。假设八项修复验收通过,模型调用共花 12 欧元,审查花三小时,按示例费率每小时 80 欧元计算,总计 252 欧元,每项通过验收的修复花费 31.50 欧元,另加基础设施费用。被驳回的尝试同样会占用审查时间,要计入分子。把结果和团队处理同类工单的现有流程对照。更多模型路由与采购取舍见多模型编程智能体技术栈选型指南。

原型进入企业试点时还有其他交付工作,可参考 Twinsoft AI 项目案例。Wavect 的智能体运行框架工程服务帮助团队把仓库工具、智能体流程和发布检查接起来。用一张现有工单设计试点。

Pi 开发工具链常见问题

Pi 本身是一个编程模型吗?
Pi 是编程智能体的运行框架,负责运行会话,并向选定的模型提供工具。记录 Pi 和扩展的版本时,另外记录模型 ID。两位工程师即使使用同一套框架,也可能因模型、项目说明和工具权限不同而得到不同结果。
现有项目可以只用 agent-browser 吗?
可以。agent-browser CLI 能独立操作浏览器。先选本地或预发布页面,把待验证行为写下来。可访问性快照能帮你找到控件。由测试数据或其他独立依据确定预期值,其他同事就可以复核结果,不必仅凭智能体的叙述验收。
在笔记本电脑上运行 ChunkHound,能保证代码始终留在本机吗?
要看启用了哪些功能、选了哪些后端。本次本地正则检索没有生成向量,也没有使用模型账号。向量模型和研究后端可能部署在远程。为私有仓库选型时,先核对配置中的服务端点,以及每个阶段实际发送的数据。
用 pi-schematic 启动审查智能体,会自动创建 Git 工作树吗?
子智能体从新的对话开始,继承当前的工作目录。独立对话仍可写入同一个文件。为每项修改指定负责人,需要并行写入时显式创建工作树。把最终审查结论和测试证据保存在仓库或工单中。
有了 agent-browser,还需要 Playwright 测试吗?
取决于需要重复验证什么。浏览器 CLI 适合探索新流程、检查页面和尝试其他路径。提交到仓库的断言可以在每次发布时检查同样的 URL 和数据行。本文演示这两种用途,并提供可重复运行的回归测试。
怎样判断这套工具链能否处理我们的仓库规模?
选一份有代表性的项目代码,准备一些已知负责模块的真实工单。记录首次建索引时间、索引大小、变更收录延迟、检索准确度,以及审查后通过验收的修复数。另外统计内存消耗和模型服务费用。小型示例可验证功能。企业仓库的容量和成本应当用本团队的代码实测。

让 Harness 可审查

从一个仓库与反复出现的故障开始,为代表性任务定义上下文、工具权限、检查点与验证。

相关服务:

只收重要内容

关注与你相关的内容

每当我们发布新文章,你会收到一封简短邮件。你可以关注整个博客,也可以只选感兴趣的主题。

你希望接收哪些内容?
选择主题

免费、双重确认、不使用跟踪像素。

返回
Kevin Riedl

12 分钟 阅读 · 2026年11月14日
最近审核

下一篇

获取下一篇关于交付与 QA的一线笔记

有新文章时发送一封简短邮件,不使用跟踪像素,也不发送填充内容。

免费、双重确认、不使用跟踪像素。