用途:DSP 面向 LLM 编码智能体,解决大代码库中跨任务丢失上下文、大量 token 消耗在“定位”上的问题。它把项目结构外化为 .dsp/ 目录中的持久可查询图,而非人类文档或 AST 转储。
主要能力:以有向图建模代码库,节点为实体、边为导入与共享/导出。实体分两类:Object(模块/文件/类/配置/资源/外部依赖等非函数事物)与 Function(导出的函数/方法/处理器/流水线)。实体以稳定 UID 标识(obj-<8hex>、func-<8hex>),文件路径只是可变更属性,UID 在重命名、移动、重排后仍有效;文件内实体用源码注释锚定,如 // @dsp func-7f3a9c12。每条导入连接都记录简短“原因”,存于被导入实体的 exports/ 反向索引,用于判断改动安全性与影响范围。存储为纯文本,可 diff、可评审,无需数据库。所有被导入的文件或产物(代码、图片、样式、配置、JSON、wasm 等)都需登记为 Object;外部依赖记为 kind: external,但不分析其内部。
使用方式:依赖独立 Python CLI 脚本 dsp-cli.py,需 Python 3.10+,命令形式为 python dsp-cli.py --root <project-root> <command>。若项目缺少该脚本可下载:curl -O https://raw.githubusercontent.com/k-kolomeitsev/data-structure-protocol/main/skills/data-structure-protocol/scripts/dsp-cli.py。初始化时若 .dsp/ 为空,从根入口(package.json main、框架入口、main.py 等)按导入做 DFS:记录根文件,用 create-object、create-function、create-shared、add-import 登记,再深入首个非外部导入,回溯直至所有可达文件登记完毕。改代码前用 search、find-by-source 或 read-toc 定位受影响实体并阅读其 description 与 imports;新建文件/模块用 create-object,导出函数用 create-function(带 --owner),导出用 create-shared 登记;新增导入用 add-import 并附简短原因,外部依赖先 create-object --kind external。
适用场景:项目已有 .dsp/ 目录;用户要求搭建、引导或映射项目结构;在 DSP 跟踪的项目中增删改代码以保持图更新;导航结构、理解依赖或查找模块;用户提及 DSP、dsp-cli、.dsp 或结构映射;重构或替换依赖前做影响分析。
限制:资料未提供收费、价格、平台支持范围与效果数据;外部依赖内部不分析;需 Python 3.10+ 与手动维护图更新。