Install
openclaw skills install @littlelollipop/se-semantic-graph软件工程语义图谱——把项目全知识域(客户画像/需求/成本/架构/分层/模块运行逻辑/历史决策)落进 axolotl 图库,修 bug/加功能/重构时沿跨域语义边定向查询精确上下文,根治上下文爆炸与注意力分散。触发词:项目语义图谱、修 bug 前查上下文、这段代码为什么存在、功能来源、为何这么设计、影响面查询。
openclaw skills install @littlelollipop/se-semantic-graph把经典软件工程的全知识域(不是只有需求)落进 axolotl 图库,节点带字段级摘要,跨域语义边连接。编程/调试/重构时,从任意入口(报错栈函数、模块、需求、决策)沿语义边定向遍历,只取与当前任务相关的上下文——替代"把整个项目塞进 prompt 硬扛"。
编程中反复调试修改的根因,往往不是"不会写",而是上下文爆炸 + 注意力分散: 修 bug 时看不到这段代码服务于什么需求、为什么存在、当初为什么这么设计。 写作用图库解决"长篇跨章一致性",编程用图库解决"跨代码库的功能-需求-约束一致性"。 同一个病,同一副药。
底层 axolotl 图库需支持 in_neighbors(入边遍历):
# axolotl (dev 分支) 需含 in_neighbors API:
# src/graph_db.rs / mmap_graph.rs / py_bindings.rs 三层都已补齐后构建:
cd <axolotl>/prototype-rust
maturin build --release --features python-bindings -o target/wheels
# 用有 axolotl_rs 的 venv python 安装 wheel
pip install --force-reinstall --no-deps target/wheels/axolotl_rs-*.whl
验证:python -c "import axolotl_rs; print('in_neighbors' in dir(axolotl_rs.AxolotlGraph))" → True
| 变量 | 含义 | 默认 |
|---|---|---|
SE_SEMANTIC_DIR | 图文件目录(每个项目一个目录) | ~/.workbuddy/se-semantic-graph |
SE_SEMANTIC_ENGINE | lobster-memory 引擎目录 | ~/.workbuddy/skills/lobster-memory |
PY=<lobster-memory venv python> # 有 axolotl_rs 的那个
RUN=~/path/to/se-semantic-graph/runner.py
export SE_SEMANTIC_DIR=<项目自己的图目录>
$PY $RUN init # 初始化项目图
$PY $RUN add --id <id> --label <名> --type <类型> --summary <一句话> --source <来源>
$PY $RUN connect --from <id> --to <id> --kind <边类型> [--note <说明>]
$PY $RUN trace --start <id> --direction up|down --depth 4 [--verbose] # 核心
$PY $RUN list --type <类型>
$PY $RUN stats
$PY $RUN types # 列出全部节点/边类型
| 域 | 类型 | 说明 |
|---|---|---|
| 问题域 | persona 客户画像 | 谁在用、场景、痛点 |
| 问题域 | requirement 需求 | 功能/非功能、优先级、来源 |
| 问题域 | cost 成本约束 | 预算、时间线、ROI、为何不做更重的 |
| 问题域 | business_rule 业务规则 | 不可违背的领域约束 |
| 方案域 | architecture 架构层 | 分层架构中的一层(接入/业务/领域/设施) |
| 方案域 | module 模块 | 职责边界、归属层 |
| 方案域 | interface 接口契约 | 对外服务定义 |
| 方案域 | tech_stack 技术栈 | 选型 |
| 实现域 | runtime_logic 运行逻辑 | 状态机、关键路径 |
| 实现域 | data_flow 数据流 | 输入输出、流转 |
| 实现域 | data_model 数据模型 | 实体关系 |
| 实现域 | function 函数锚点 | 被反复改动的重点函数 |
| 决策域 | decision 历史决策 ADR | 为何这么写 |
| 决策域 | rejected 被否方案 | 被否的替代方案(往往更值钱) |
所有边统一方向 = 问题域 → 实现域(from 在上游,to 在下游):
画像 → 需求 → 架构层 → 模块 → 运行逻辑 → 函数
↑drives ↑mapped_to ↑part_of ↑implements ↑traced_to
成本/规则 → 需求(constrains)
决策 → 任意(affects) 决策 → 被否方案(rejects)
trace --direction up(原生 in_neighbors)trace --direction down(原生 out_neighbors)反了方向(如 serves 写成 模块→需求)会导致追溯断链——录入时严格照此约定。
本技能不只是查询工具,它定义项目怎么推进。 四个阶段严格顺序,每阶段结束必须用户确认,确认后才能进下一阶段。跳步 = 用假设替代用户真实意图 = 上下文爆炸的另一种形式。
阶段一 画像对话 → 阶段二 需求对话 → 阶段三 架构评审 → 阶段四 开发+实时录入
(用户确认画像) (用户确认需求) (用户确认架构) (边写边录,修 bug 时 trace)
persona 节点,展示给用户确认后才算完成templates/onboarding-dialogue.mdtemplates/requirement-dimensions.md(含多类项目:游戏/Web/CLI/库/服务)requirement 节点,连 drives(画像→需求)templates/onboarding-dialogue.mdarchitecture / module / runtime_logic 节点 + mapped_to / part_of / implements 边decision 节点记录templates/onboarding-dialogue.mddecision 节点trace --start <定位点> --direction up 拿"为什么"链trace --start <需求> --direction down 看影响面add + connecttrace --start <id> --direction up --depth 4 → 拿"为什么"链(需求/画像/成本/决策)trace --direction down 或交给 LSP 查调用关系图库价值 = 边定向遍历 + 字段级提取 + 只输出差异。禁止全量 dump 图库给模型(图库不是存储桶)。查询结果就是"与本次任务相关的上下文子图"。
每个节点只存摘要级字段,不存全文/源码:
id:稳定标识符(英文/拼音,无空格)label:可读名称type:节点类型summary:一句话摘要(≤200 字,字段级提取的关键)detail_ref:详细文档/源码位置引用(不存全文)source:来源(需求文档/issue/PR/会议/对话)~/.workbuddy/lobster-memory/memory.axeb),本技能记项目语义(每个项目一个 SE_SEMANTIC_DIR)