📦 Data Structure Protocol — 代码图谱记忆

v1.0.0

为 LLM 智能体构建并导航 DSP 图谱,持久化存储模块、函数、依赖与 API,实现代码库结构长期记忆与快速查询。

1· 189·0 当前·0 累计
下载技能包
最后更新
2026/3/14
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能的代码与说明与其声明目的(构建并管理 .dsp 项目图谱)一致,无需外部凭据或安装,仅读写仓库内的 .dsp 文件。
评估建议
该技能看起来确实如其所述:在仓库内创建并更新 .dsp/ 图谱,不连接外部服务,也不要求密钥。安装或使用前,(1) 先审查并备份仓库(或在沙箱运行),因为智能体将就地创建/修改 .dsp 文件;(2) 确认你接受自主智能体修改项目元数据;(3) 如需更严格管控,可手动运行 dsp-cli 而非允许自动调用,以便在提交前审查更改。...
详细分析 ▾
用途与能力
名称/描述(面向代码库的图谱记忆)与提供的 CLI 及文档一致。脚本实现 UID 生成、目录管理、导入/导出记录与引导遍历——均符合该功能预期。未请求无关凭据或二进制文件。
指令范围
SKILL.md 指示智能体运行本地 dsp-cli 并读写 .dsp 目录及项目文件;这些操作适合维护结构记忆。指令未让智能体读取无关系统文件、环境密钥或向外传输数据。(小文档问题:示例 UID 含无效十六进制字符,但无安全影响。)
安装机制
无安装规范;技能仅为指令加本地 Python CLI 脚本。未使用远程下载、包安装或外部源。
凭证需求
技能未声明所需环境变量、凭据或配置路径。CLI 仅操作仓库相对路径,并仅向项目根下 .dsp 写入,符合所述目标。
持久化与权限
always:false(正常)。CLI 将持久状态写入仓库 .dsp 目录,并可被智能体自主调用。这对维护项目记忆的工具属预期行为,但用户需知晓智能体调用技能时会修改 .dsp 文件。
安全有层次,运行前请审查代码。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/14

Data Structure Protocol (DSP) 技能初始发布。 - 引入 DSP 作为代码库图谱,用于长期结构记忆(实体、依赖、API、原因)。 - 详述核心 DSP 概念、UID 系统与严格 CLI 驱动的工作流,用于创建、修改与导航代码结构。 - 提供全面的智能体提示,含使用规则与安全检查,适用于 DSP 跟踪项目。 - 记录设置、更新、删除场景与诊断命令,维护 DSP 完整性。 - 包含存储格式、引导流程与支持操作的参考资料。

无害

安装命令

点击复制
官方npx clawhub@latest install data-structure-protocol
镜像加速npx clawhub@latest install data-structure-protocol --registry https://cn.longxiaskill.com

技能文档

# 数据结构协议(DSP) DSP 在 .dsp/ 目录中构建项目实体的依赖图。每个实体(模块、函数、外部依赖)获得一个 UID、描述、导入列表和导出索引。该图回答:存在什么、为什么存在、依赖什么、被谁使用。 DSP 不是给人类看的文档,也不是 AST 转储。 它捕获的是 _意义_(目的)、_边界_(导入/导出)和 _连接原因_(why)。 ## Agent 提示 在 DSP 跟踪的项目中工作时,请嵌入以下上下文: > 本项目使用 DSP(数据结构协议)。 > .dsp/ 目录是本项目的实体图:模块、函数、依赖、公共 API。它是你对代码结构的长期记忆。 > > 核心规则: > > 1. 修改代码前 —— 通过 dsp-cli searchfind-by-sourceread-toc 找到受影响的实体。阅读它们的 descriptionimports 以理解上下文。 > 2. 创建文件/模块时 —— 调用 dsp-cli create-object。为每个导出函数调用 create-function(带 --owner)。通过 create-shared 注册导出。 > 3. 添加导入时 —— 调用 dsp-cli add-import 并附简短 why。对于外部依赖 —— 若实体尚不存在,先 create-object --kind external。 > 4. 移除导入 / 导出 / 文件时 —— 分别调用 remove-importremove-sharedremove-entity。级联清理自动完成。 > 5. 重命名/移动文件时 —— 调用 move-entity。UID 不变。 > 6. 仅内部实现变更且不影响目的或依赖时 —— 不要碰 DSP。 > 7. 引导 —— 若 .dsp/ 为空,从根入口点通过 DFS 遍历导入,记录每个文件。 > > 关键命令: > `` > dsp-cli init > dsp-cli create-object [--kind external] [--toc ROOT_UID] > dsp-cli create-function [--owner UID] [--toc ROOT_UID] > dsp-cli create-shared [ ...] > dsp-cli add-import [--exporter UID] > dsp-cli remove-import [--exporter UID] > dsp-cli remove-shared > dsp-cli remove-entity > dsp-cli move-entity > dsp-cli update-description [--source S] [--purpose P] [--kind K] > dsp-cli get-entity > dsp-cli get-children [--depth N] > dsp-cli get-parents [--depth N] > dsp-cli search > dsp-cli find-by-source > dsp-cli read-toc [--toc ROOT_UID] > dsp-cli get-stats > ` ## 使用 CLI 脚本位于本 skill 目录下的 scripts/dsp-cli.py` python /scripts/dsp-cli.py [--root ] [args] ` --root 默认为当前工作目录。所有参数中的路径均为仓库相对路径。 ## 核心概念 - 代码 = 图。 节点是 Object 和 Function。边是 importsshared/exports。 - 通过 UID 而非文件路径标识身份。 路径是属性;重命名/移动不改变 UID。 - “Shared” 会创建实体。 若某物变为公共(导出),它会获得自己的 UID。 - Import 同时记录“来自哪里”和“什么”。 一次代码导入可能在 DSP 中创建两条链接:到模块和到具体共享实体。 - 全覆盖导入。 每个被导入的文件/资产都必须是 .dsp 中的 Object —— 代码、图片、样式、配置,一切。 - why 位于被导入实体的 exports/ 目录中(反向索引)。 - 从根开始。 每个根入口点有自己的 TOC 文件。 - 外部依赖 —— 仅记录。 kind: external,不深入 node_modules/site-packages 等。但 exports index 有效 —— 显示谁导入了它。 ## UID 格式 - Objects: obj-<8 位 hex>(例如 obj-a1b2c3d4) - Functions: func-<8 位 hex>(例如 func-7f3a9c12) 源代码中的 UID 标记 —— 在声明前用注释 @dsp `js // @dsp func-7f3a9c12 export function calculateTotal(items) { ... } ` `python # @dsp obj-e5f6g7h8 class UserService: ` ## 工作流 ### 设置 DSP 1. 运行 dsp-cli init 创建 .dsp/ 目录。 2. 识别根入口点 —— package.json main、框架入口等。 3. 运行引导(从根开始的 DFS)。见 bootstrap.md。 ### 创建实体(编写新代码时) 1. 创建模块:dsp-cli create-object <路径> <目的> 2. 创建函数:dsp-cli create-function <路径>#<符号> <目的> --owner <模块-uid> 3. 注册导出:dsp-cli create-shared <模块-uid> <函数-uid> [<函数-uid> ...] 4. 注册导入:dsp-cli add-import <本实体-uid> <被导入-uid> [--exporter <模块-uid>] 5. 外部依赖:dsp-cli create-object <包名> <目的> --kind external ### 浏览图(阅读/理解代码时) - 按文件找实体dsp-cli find-by-source <路径> - 按关键字搜索dsp-cli search <查询> - 读 TOCdsp-cli read-toc → 获取所有 UID,再用 get-entity 查看详情 - 向下依赖树dsp-cli get-children --depth N - 向上依赖树dsp-cli get-parents --depth N - 影响分析dsp-cli get-recipients —— 谁依赖此实体 - 实体间路径dsp-cli get-path <起点> <终点> ### 更新(修改代码时) - 目的变更:dsp-cli update-description --purpose <新目的> - 文件移动:dsp-cli move-entity <新路径> - 导入原因变更:dsp-cli update-import-why <导入方> <被导入方> <新原因> ### 删除(移除代码时) - 移除导入:dsp-cli remove-import <导入方> <被导入方> [--exporter UID] - 移除导出:dsp-cli remove-shared <导出方> <共享方> - 删除文件/模块:dsp-cli remove-entity (级联清理) ### 诊断 - dsp-cli detect-cycles —— 循环依赖 - dsp-cli get-orphans —— 未使用实体 - dsp-cli get-stats —— 项目图概览 ## 何时更新 DSP | 代码变更 | DSP 操作 | |---|---| | 新文件/模块 | create-object + create-function + create-shared + add-import | | 新增导入 | add-import(+ create-object --kind external 若新外部依赖) | | 移除导入 | remove-import | | 新增导出 | create-shared(+ create-function 若新函数) | | 移除导出 | remove-shared | | 文件重命名/移动 | move-entity | | 文件删除 | remove-entity | | 目的变更 | update-description | | 仅内部变更 | 无需更新 DSP | ## 参考资料 - 存储格式 —— .dsp/` 目录结构、文件格式、TOC - 引导过程 —— 初始项目标记(DFS 算法) - 操作参考 —— 所有操作的详细语义及导入示例

数据来源ClawHub ↗ · 中文优化:龙虾技能库