Files
goodbuddy/docs/features/local-tool-environment/user-stories.md
T
mesalogo 2f1881a414 docs: organize product design by feature
Define repository and feature-scoped documentation rules for PRDs, User Stories, logic, UI, technical design, and progress evidence.

Move feature-owned documents under docs/features, add one entry point per feature, remove the redundant docs index, and update all affected cross-references. Expand the local tool environment design with explicit product, story, logic, UI, technical, and progress documents.
2026-09-01 14:52:22 +08:00

8.3 KiB

本机工具环境 User Stories

文档信息

项目 内容
状态 计划
版本 0.2
日期 2026-09-01
关联 PRD 本机工具环境 PRD
关联逻辑 本机工具环境功能逻辑设计

1. 角色

1.1 普通用户

希望直接使用文档、演示文稿或数据处理 SKILL,不理解 Node.js、Python、pip 或 PATH。

1.2 MCP 使用者

希望配置一个本机工具服务,并由 GoodBuddy 解决其基础解释器启动问题。

1.3 专业开发者

已有明确的 Node、Python、虚拟环境或 Conda 环境,希望控制实际版本和绝对路径。

1.4 内网与离线用户

无法稳定访问公网,需要使用选定镜像或离线准备环境,同时不向远程 Host 传播本机配置。

2. Epic A:普通用户无需预装环境

US-A0 首次看到准确默认状态

作为普通用户,我希望第一次打开设置时看到 GoodBuddy 已提供什么、还需要安装什么,以免 误以为所有工具都已就绪。

验收:

  • 全新安装默认选择 GoodBuddy 托管 Node 和 Python
  • 托管 Node 立即执行真实诊断并显示版本
  • 未安装的托管 Python 显示“尚未安装”和安装入口
  • 检测到的系统解释器只作为自定义候选,不改变默认来源
  • 页面持续说明只对新启动的本机 Runtime 和 stdio MCP 生效

US-A1 直接使用托管 Node

作为普通用户,我希望安装 GoodBuddy 后即可使用 Node.js SKILL,以免单独安装 Node.js。

验收:

  • Given 系统 PATH 没有 Node.js
  • When 本机 Execute 请求运行普通 JavaScript SKILL
  • Then node 使用 GoodBuddy 托管来源
  • And npm、npx 与该 Node 来源一致
  • And 设置显示实际 Node 版本

US-A2 按需安装 Python

作为普通用户,我希望在设置中安装 Python,以便运行 Python SKILL 而不离开 GoodBuddy。

验收:

  • Given 系统没有 Python 且托管 Python 未安装
  • When 用户点击安装
  • Then 页面显示下载、校验和安装进度
  • And 成功后真实 Python、pip、venv 诊断通过
  • And 失败不会留下半安装目录

US-A3 看懂缺失依赖

作为普通用户,我希望区分“没有 Python”和“缺少 python-pptx”,以便采取正确修复操作。

验收:

  • 工具解释器不可用时显示工具环境错误
  • 解释器可用但能力包缺失时显示能力依赖错误
  • 页面不把 python --version 成功描述为 SKILL 已完全可用
  • 错误保留原任务和可执行的下一步

US-A4 看懂部分就绪

作为用户,我希望知道解释器可用但配套命令损坏,以免把所有失败都理解为没有安装环境。

验收:

  • Node 可用而 npm/npx 失败时显示“部分可用”和具体失败项
  • Python 可用而 pip、venv 或 SSL 失败时显示“部分可用”和具体失败项
  • 不依赖失败项的能力仍可通过实际诊断标记就绪
  • 没有能力专属诊断时显示“依赖未验证”,不推断为就绪

3. Epic B:本机 MCP 使用一致环境

US-B1 启动 Python MCP

作为 MCP 使用者,我希望 python -m my_mcp_server 使用设置中的 Python,以免配置第二套 解释器。

验收:

  • 裸 python、python3 和 pip 解析到当前选择
  • Main 直连工具链和本机 Runtime 使用相同来源
  • 绝对命令路径不被替换
  • MCP 自身包缺失时准确报告依赖错误

US-B2 启动 Node.js MCP

作为 MCP 使用者,我希望 node server.js 或 npx package 使用同一 Node 组合。

验收:

  • node、npm、npx 来源一致
  • npm lifecycle 子进程使用当前 Node
  • 取消或关闭应用后没有遗留 MCP 进程

US-B3 保持网络 MCP 不变

作为 MCP 使用者,我希望 HTTP/SSE MCP 不受本机解释器设置影响。

验收:

  • HTTP/SSE 配置不显示本机解释器要求
  • GoodBuddy 不管理远端 MCP 服务端依赖
  • 切换本机工具环境不重建 HTTP/SSE 服务

4. Epic C:专业用户明确控制环境

US-C1 使用检测到的系统解释器

作为专业开发者,我希望从版本和绝对路径列表中选择解释器,以便使用已有工具链。

验收:

  • 候选经过真实版本和架构诊断
  • 相同真实路径不重复显示
  • 保存后状态显示实际生效来源
  • PATH 后续变化不会自动替换选择

US-C2 指定项目虚拟环境

作为专业开发者,我希望选择未被自动发现的 Python,以便使用自己的 venv 或 Conda 环境。

验收:

  • 文件选择由 Main 管理
  • 保存前验证 Python 3、版本和架构
  • GoodBuddy 不安装、升级或删除该环境
  • 路径失效时不静默回退

US-C3 返回托管环境

作为专业开发者,我希望随时切回 GoodBuddy 托管环境,以便恢复标准组合。

验收:

  • 切换前显示新启动进程才生效
  • 新 Runtime 和 stdio MCP 使用托管来源
  • 已运行进程不中途换环境

US-C4 明确设置何时生效

作为专业开发者,我希望知道环境切换何时影响进程,以免一个运行中的任务突然换解释器。

验收:

  • 保存前后都说明只对新启动进程生效
  • 有活动请求的 Runtime 保持启动时环境
  • 空闲 Runtime 在下一次使用前按现有入口重建
  • 已启动 stdio MCP 在关闭、重连或显式测试后使用新环境
  • 活动记录不根据最新设置改写历史解释器来源

5. Epic D:范围和生命周期可理解

US-D1 不影响远程主机

作为远程项目用户,我希望清楚知道本机环境不会上传到 Host,以免错误预期远程脚本可用。

验收:

  • 本机工具环境页显示范围说明
  • 远程主机设置页显示本机 Skills 和 MCP 不适用
  • Host PATH、Agent 包和 Runtime 包不包含本机选择

US-D2 删除托管 Python

作为用户,我希望删除不再使用的托管 Python,以便释放磁盘空间。

验收:

  • 删除前说明受影响的本机 SKILL 和 MCP
  • 只删除 GoodBuddy-owned Python 目录
  • 不删除系统、自定义或工作区文件
  • 使用中的进程先按现有生命周期停止

US-D3 升级后保持既有解释器

作为现有用户,我希望升级 GoodBuddy 后已有脚本仍使用原来的系统解释器。

验收:

  • 首次迁移把有效系统解释器保存为自定义绝对路径
  • 无有效解释器时才选择托管来源
  • 迁移结果只写一次

US-D4 取消 Python 安装

作为用户,我希望可以取消耗时的 Python 安装,并在之后重试。

验收:

  • 下载、校验、安装和候选诊断阶段都响应取消
  • 取消后清理本次暂存
  • 取消不发布未验证候选
  • 页面回到操作前的未安装状态或健康旧版本
  • 取消不显示为安装失败

US-D5 安全更新托管 Python

作为用户,我希望更新托管 Python 失败时仍能使用旧版本,以免现有能力全部中断。

验收:

  • 下载和验证候选期间旧版继续服务已有进程
  • 应用更新前说明需要停止哪些本机 Runtime/MCP
  • 用户确认后才通过现有生命周期停止相关进程
  • 无法停止时不替换当前版本
  • 候选完整诊断成功后才发布
  • 更新失败继续使用健康旧版本

US-D6 安装解释器不扩大 Ask 权限

作为 Ask 用户,我希望安装 Node/Python 后仍保持原有只读边界,以免环境准备改变授权范围。

验收:

  • 工具环境不新增 Runtime 工具
  • Ask 是否允许命令仍由当前 Runtime 边界决定
  • Ask 中禁止的写入和执行不会因解释器存在而放行
  • Execute 继续使用用户已授权的本机账号权限

6. Epic E:受限网络与离线行为明确

US-E1 通过所选官方来源安装 Python

作为内网用户,我希望托管 Python 使用“关于与更新”中选择的官方来源,以便符合当前网络 条件。

验收:

  • Python 安装复用当前 GitHub/镜像来源
  • 来源不可达时显示来源和准确失败原因
  • 同一次安装不静默切换到另一来源
  • 失败保留健康旧版本或未安装状态

US-E2 完全离线时使用已有环境

作为完全离线用户,我希望清楚知道首期可用路径,以免等待一个无法完成的下载。

验收:

  • 托管 Node 安装后可离线使用
  • 托管 Python 未缓存且来源不可达时明确说明无法下载
  • 首期不展示未实现的 Python 离线导入入口
  • 用户可以选择设备上已经离线安装的自定义 Python