项目上下文地图
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f3d21924/project-context-map。
技能介绍
问题从哪来
在陌生或大型仓库里,agent 常见做法是整仓 Glob/Grep 或逐文件 Read。这不仅耗 token,还容易踩坑:例如 ripgrep 默认跳过 .deps 等隐藏目录,会出现「搜不到其实存在的符号」的误判。你需要的是会话级全局认知——先有一张紧凑、可检索的索引,再按关键词落到少数文件。
技能如何工作
本技能用 build_map.py(Python 3.8+ 标准库、离线、无 pip)生成 /.workbuddy/project-map.md,可选 --json 导出 project-map.json。地图通常包含:
- 目录树与每文件一行摘要(docstring/首行注释)
- 符号索引(class/function/type,多语言正则启发式)
- 依赖与调用关系(文字有向边,模块/可选文件级)
- API 路由(Flask/FastAPI/Django/Express/NestJS/Next 等)
- 部署架构角色(设备端/服务器/客户端/桩/外部 URL,与 import 依赖是不同维度)
- 核心文件重要性排序、死代码提示、展示层密钥脱敏
增量靠 .workbuddy/project-map.cache.json(文件 hash);重跑只重算变更文件。查定位应走技能的 --search 流程(先地图再默认读前几个命中),而不是绕过统计手动翻地图。
设计上支持零配置自启:在含源码的工作区,agent 加载技能后会确保地图存在且较新;小项目可用 --min-files(hook 默认 20)跳过建图。
边界与注意
- 小于约 20 个文件的项目,建图索引开销可能大于直接读;不必硬建。
- 符号、路由、调用图、死代码均为启发式,动态/装饰器/宏场景可能漏提或误提;文件路径比符号名更可靠,删「疑似未用」前需人工确认。
- 地图是快照;结构大改后需 refresh;
--timeout超大仓可能只产出部分地图。 - 只读写
/.workbuddy/下的地图与缓存,不改源码;MCP/Tree-sitter 精确解析在路线中暂缓。
使用场景
- 首次打开百文件级陌生仓库,要在不全仓 Grep 的情况下用地图符号索引定位某个 class 的定义文件
- 多进程/多端仓库需区分真实后端、联调桩与客户端,先读地图里的部署角色与外部端点再改集成代码
- 重构后 API 行为异常,需在 project-map 中查 Flask/FastAPI/NestJS 路由对应的 `METHOD /path → file:line` 再打开少数文件
- monorepo 只对某一子服务目录建图,会话内用 `--search` 按关键词命中路径并只读前几个相关文件
适合人员
- 维护 100+ 文件后端或库项目、希望 agent 每次先查 `project-map.md` 再读文件的日常开发负责人
- 全栈或 IoT 项目里 systemd/打包产物与 Web 服务并存、需要先弄清「谁连谁」再动配置的集成工程师
- 为团队配置 WorkBuddy/CodeBuddy、需要 SessionStart 自动建图且小项目用 `--min-files` 跳过的平台或工具维护者
- 短期进驻客户代码做排障、依赖重要性排序与调用关系文字图快速找到主干模块的外包或咨询开发