用途:在打开或修改任何 Frappe/ERPNext 代码库前,先做一次项目分诊,弄清项目类型、已安装应用、版本和开发环境,避免盲目改动。
主要能力:识别项目结构(apps/ 与 sites/ 为 Bench 安装;含 frappe 的 docker-compose.yml 为 Frappe Manager 站点;含 frappe 的 pyproject.toml 或 setup.py 为独立应用;doctype/ 目录表示位于应用模块内);列出已安装应用;检查 Frappe 版本;识别工具链(Procfile 为标准 bench,docker-compose.yml 为 Docker/FM,cypress/ 表示有 UI 测试,.github/workflows/ 表示配置了 CI,含 @frappe/* 的 package.json 表示 JS 构建工具);检查是否处于开发模式。
使用方式:需要项目根路径(apps/、sites/ 或应用代码所在处)以及运行 shell 命令的权限。常用命令包括 bench --site <site> list-apps、ls apps/、bench version,或在 bench --site <site> console 中查看 frappe.version 与 frappe.conf.developer_mode。完成后按固定格式记录:项目类型、Frappe 版本、已安装应用、开发模式、工具链、站点名,再据此路由到相应技能(DocType 开发、API 开发、测试、企业模式等)。
适用场景:接手新 Frappe 项目、改动代码前理解代码库、调试时确认涉及的应用与版本、判断开发环境是 Bench 还是 Frappe Manager。
限制与注意事项:分诊完成前不要修改代码;注意可能覆盖标准行为的自定义应用;运行站点相关命令前确认站点存在;做 schema 变更前检查 developer_mode;注意 Node.js 版本(v15 通常需 18+);Python 需 3.10+(v15+)。常见错误包括未指定 --site 就运行 bench migrate、假设已安装 ERPNext、缺少 FM shell 上下文、目录层级错误、忽略自定义应用覆盖、未检查 Python 版本。若结构不清晰,可查找 hooks.py 定位应用根、sites/common_site_config.json 定位 bench 根,或通过 git remote 识别应用仓库。