Files
goodbuddy/docs/features/direct-model-agent/user-stories.md
T
mesalogo ec100f8176 feat: improve direct model workspace tools
Direct models now use bundled ripgrep for workspace discovery, read files through resumable pages, and edit multiple files with apply_patch. Ask can search and read while Execute retains write access, and fixed total input limits no longer constrain these tools.

Release note: 直连模型现可使用随包 ripgrep 搜索项目、分页读取任意大小的文本,并通过多文件补丁修改代码;设置中的相关能力统一显示为工作区文件和开发工具。
2026-09-10 00:45:03 +08:00

6.9 KiB
Raw Blame History

直连模型 Agent 能力 User Stories

文档信息

项目 内容
状态 已实施,跨平台 CI 待验证
版本 0.4
日期 2026-09-09
关联 PRD 直连模型 Agent 能力 PRD
关联逻辑 功能逻辑设计

1. 角色

1.1 普通项目用户

希望模型直接完成脚本、文档生成或数据处理,不关心不同平台的 Shell 名称。

1.2 开发者

希望直连模型能够修改代码、运行测试、检查 Git 状态并根据失败结果继续修正。

1.3 Runtime 用户

已经使用 OpenCode、Continue 或 DeepSeek Harness,希望继续使用 Runtime 原生能力,不看到 重复的 GoodBuddy Shell 或 Subagent。

2. Epic A:跨平台执行

US-A1 在 Windows 运行项目命令

关联:FR-2、FR-3、FR-4。

Given 当前项目位于 Windows 本机且选择直连模型 Execute,When 模型调用 process_execute,Then GoodBuddy 使用可用 PowerShell 在项目目录运行命令,并返回 Shell、目录、退出码、输出和耗时。

US-A2 在 macOS/Linux 运行项目命令

关联:FR-2、FR-3。

Given 当前项目位于 macOS 或 Linux 本机,When 模型运行同一工具,Then GoodBuddy 使用 Bash,Bash 不可用时使用 Sh,工具契约保持不变且实际 Shell 明确可见。

US-A3 选择命令工作目录

关联:FR-3。

Given 当前请求为本机 Execute,When 模型传入绝对路径或相对工作区路径,Then 命令在 解析后的目录执行,包括工作区外目录和符号链接目标,And 后续省略 cwd 时仍使用原工作区。 When 目标不是目录或不存在,Then 命令不启动并返回准确错误。

US-A4 根据非零退出继续修正

关联:FR-2、FR-9。

Given 测试命令退出码非零,When 进程结束,Then 工具正常返回退出码和 stderr,模型请求 继续运行,And 模型可以读取失败原因、修改代码并再次运行。

US-A5 取消长命令

关联:FR-7。

Given 命令仍在运行,When 用户取消父请求,Then 当前 Shell 及其由本次命令创建的子进程树 停止,And 活动状态显示“已取消”,And 其他用户进程不受影响。

US-A6 看懂截断结果

关联:FR-7、FR-9。

Given 命令输出超过上限,When 工具返回结果,Then 保留有用的开头和结尾并明确 truncated: true,And 模型与用户都不会把结果理解为完整日志。

US-A7 从瞬时模型网络故障恢复

关联:FR-7、FR-9、FR-11。

Given 直连模型在 TLS 建连、网络传输或单次请求超时时失败且尚未显示输出,When 请求仍未 取消,Then GoodBuddy 显示当前重试次数并使用递增等待时间最多重试 3 次,And 成功后继续 原问答或工具轮次。Given 已经显示文本或推理内容,Then 不自动重放该调用。

3. Epic B:编程闭环

US-B0 搜索和分页读取大型项目

关联:FR-4、FR-12。

Given 用户在 Ask 或 Execute 中处理本机项目,When 模型需要定位代码或读取大文件,Then 它可以使用随包 ripgrep 搜索内容或列出文件,并按行分页读取命中位置,不要求用户预装 rg。

US-B1 修改后运行验证

关联:FR-2、FR-4。

Given 用户选择 Execute 并要求修复代码,When 直连模型修改文件,Then 它可以运行聚焦测试 或检查命令,并根据真实结果继续修改,直到给出完成或阻塞结论。

US-B2 使用本机工具环境

关联:FR-8、FR-10。

Given 用户选择了 GoodBuddy 托管或自定义 Node/Python,When 新命令调用 node、npm、 npx、python 或 pip,Then 它们解析到当前工具环境,And 不修改系统 PATH 或已有终端。

US-B3 依赖或命令不存在

关联:FR-2、FR-9。

Given 项目缺少所需命令或依赖,When Shell 返回错误,Then 工具保留退出码和错误文本, And 模型说明缺失项或在 Execute 中采取用户要求的安装步骤,不把环境缺失报告为模型故障。

US-B4 使用补丁修改文件

关联:FR-4、FR-12。

Given 用户选择 Execute,When 模型提交包含新增、修改或删除操作的工作区补丁,Then GoodBuddy 在写入前验证全部路径和上下文,逐文件原子写入,并返回实际修改的文件列表。 Given 用户选择 Ask,Then 补丁工具不出现在清单中且伪造调用会被拒绝。

4. Epic C:Subagent 委派

US-C1 委派聚焦编程任务

关联:FR-5、FR-6。

Given 父直连模型正在处理复杂请求,When 它调用 subagent_delegate 并给出独立任务, Then 子级使用同一项目、模型连接和 Execute 能力完成工作,And 最终结果返回父模型综合。

US-C2 Ask 中只读委派

关联:FR-4、FR-5。

Given 父请求为 Ask,When 模型委派分析任务,Then 子级保持 Ask,不能写文件或运行命令, And 不因 Subagent 存在而扩大权限。

US-C3 禁止递归委派

关联:FR-5、FR-7。

Given 子级正在执行,When 它读取自己的工具清单,Then 清单中没有 subagent_delegate,And 子级不能创建孙级任务。

US-C4 子级失败后父级继续

关联:FR-5、FR-9。

Given 子级运行期间失败或超时,When 子任务结算,Then 父模型收到失败状态、部分输出和 有界错误,And 可以自行继续、改变方案或向用户说明阻塞。

US-C5 取消传播

关联:FR-7。

Given 一个 Subagent 正在运行模型或命令,When 用户取消父请求,Then 排队和运行中的子级 全部取消,当前命令进程树停止,And 不再向父请求追加迟到结果。

US-C6 保持产品对象简单

关联:FR-6。

Given 直连模型完成一次委派,When 用户查看会话、Task Center 和活动,Then 会话内可看到 Subagent 状态与结果摘要,And Task Center 不出现新的子 Task,And UI 不展示 Job/Run 树。

5. Epic D:Runtime 与执行空间边界

US-D1 Agent Runtime 不重复获得工具

关联:FR-1、FR-10。

Given 用户选择 OpenCode、Continue 或 DeepSeek Harness,When Runtime 启动,Then GoodBuddy 不注入 process_execute 或 subagent_delegate,And Runtime 原生能力保持不变。

US-D2 切换 Runtime 后工具清单更新

关联:FR-1。

Given 会话从直连模型切换为 Agent Runtime,When 下一次请求开始,Then 新请求只使用目标 Runtime 的能力;切回直连模型时重新获得符合工作模式的直连工具。

US-D3 不在错误设备执行

关联:FR-3。

Given 当前执行空间是 SSH 且远端进程后端尚不可用,When 解析工具清单,Then 不注册 process_execute;即使调用参数有效,也不能回退到桌面本机执行。

US-D4 消息通道使用相同规则

关联:FR-1、FR-4。

Given 消息通道项目选择直连模型,When 合法消息触发 Ask 或 Execute,Then 使用与桌面会话 相同的工具矩阵和通道既有工具策略,不维护第二套 Shell 能力配置。