← 返回 Skills 市场
afgonullu

Memory Graph

作者 afgonullu · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
259
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install agent-memory-graph
功能描述
Agent-agnostic personal knowledge graph stored as markdown files with YAML frontmatter. Use when you need persistent context about the user's life, projects,...
使用说明 (SKILL.md)

Memory Graph

A file-based personal knowledge graph at ~/memory/. Any agent can read/write. Human-browsable.

Structure

~/memory/
├── README.md              # full architecture doc
├── graph/                 # knowledge nodes
│   ├── people/
│   ├── projects/
│   ├── concepts/
│   ├── places/
│   ├── tools/
│   └── \x3Cany-category>/    # extend freely
├── log/                   # daily activity logs
│   └── YYYY-MM-DD.md
├── indexes/               # computed — NEVER edit directly
│   ├── memory.db          # SQLite (primary index, FTS5 search)
│   └── graph.html         # interactive graph visualization
├── backfill/              # connection discovery
│   ├── suggestions.md
│   └── history.md
└── scripts/               # symlinks → skill's scripts/ directory
    ├── rebuild-indexes.js  # full or incremental index rebuild
    ├── suggest-backfill.js # scoped connection discovery (+ QMD semantic)
    ├── query.js            # CLI structural query tool
    ├── briefing.js         # context assembly for agents
    ├── lint.js             # graph validation and health checks
    ├── visualize.js        # D3.js graph visualization generator
    ├── commit.js           # git auto-commit for graph/log changes
    └── promote.js          # log-to-node promotion suggestions

Script location: Scripts live in the skill directory (scripts/). ~/memory/scripts/ contains symlinks to them. All scripts support MEMORY_ROOT env var (defaults to ~/memory) so they resolve paths correctly regardless of where they're installed.

Setup

If ~/memory/ does not exist, read references/setup.md and follow the scaffolding steps. This creates the folder structure, symlinks scripts, seeds initial nodes, and builds indexes.

If ~/memory/ already exists, proceed to Operations below.

Node Format

Every node is a markdown file with YAML frontmatter:

---
type: project
created: 2026-03-20
updated: 2026-03-20
tags: [side-project, saas]
status: active
relations:
  - { to: people/someone, type: owner }
  - { to: tools/nextjs, type: built-with }
---

# Title

Free-form body.

## Changelog

- 2026-03-20: Created node

Required Fields

  • type — matches parent folder name
  • created — ISO date

Recommended Fields

  • updated — ISO date, last time node content was meaningfully changed. Used for staleness tracking.

Optional Fields

  • tags — flat list for categorization
  • statusactive, archived, idea, done, etc.
  • relations — list of { to, type } objects. to is relative path within graph/ (no .md). type is any string.
  • Add any other fields freely — unknown fields are preserved

Relation Type Taxonomy

Suggested standard types (non-standard types trigger info-level lint warnings):

  • Structural: uses, built-with, part-of, contains
  • Ownership: creator, owner, maintainer
  • Conceptual: related-to, inspired-by, alternative-to, core-concept-of, core-value-of
  • Temporal: led-to, preceded-by, evolved-into
  • Contextual: home-of, lives-in, works-at

Bidirectionality

Write a relation on one side only. The index script computes the reverse.

Changelog Convention

Nodes can have a ## Changelog section at the bottom of the body. Format:

- YYYY-MM-DD: description of what changed

Node Templates

Templates for common node types are in the skill's templates/ directory:

  • person.md, project.md, tool.md, concept.md, place.md

Use these as starting points when creating new nodes. Copy and edit — don't modify the templates themselves.

Operations

1. Read for Context (Session Start)

# Check recent activity
cat ~/memory/log/$(date +%Y-%m-%d).md

# Context briefing for a node (full content + relations + recent logs)
node ~/memory/scripts/briefing.js --node projects/flowmind

# Topic briefing (search-based)
node ~/memory/scripts/briefing.js --topic "immutability"

# Semantic search (if QMD is installed — best for natural language queries)
qmd vsearch "trust and data integrity"     # vector similarity
qmd query "what connects X and Y"          # hybrid + reranking

# Structural search
node ~/memory/scripts/query.js --search "keyword"

# Node details with all relations
node ~/memory/scripts/query.js --node projects/flowmind

# All nodes related to something
node ~/memory/scripts/query.js --related-to people/abdullah

# Filter by type and status
node ~/memory/scripts/query.js --type project --status active

# Browse by tag
node ~/memory/scripts/query.js --tag side-project

# Recently modified nodes
node ~/memory/scripts/query.js --recent 7

# Stale nodes (not updated in N days)
node ~/memory/scripts/query.js --stale 30

# Graph overview
node ~/memory/scripts/query.js --stats

2. Create a Node

  1. Check if node already exists: ls ~/memory/graph/\x3Ccategory>/
  2. Copy a template from the skill's templates/ directory to ~/memory/graph/\x3Ccategory>/\x3Cname>.md
  3. Fill in frontmatter + body (set created and updated to today)
  4. Scan existing nodes for potential relations (shared tags, mentions)
  5. Add discovered relations with type: suggested if uncertain
  6. Log the creation in today's activity log
  7. Rebuild indexes: node ~/memory/scripts/rebuild-indexes.js --incremental
  8. If QMD is installed: qmd update && qmd embed (refreshes semantic search)

3. Update a Node

  1. Read the current node
  2. Update frontmatter and/or body
  3. Update the updated field to today's date
  4. Add entry to ## Changelog section if significant
  5. Log the update
  6. Rebuild indexes: node ~/memory/scripts/rebuild-indexes.js --incremental

4. Log Activity

Append to ~/memory/log/YYYY-MM-DD.md (create if needed):

- **HH:MM** [agent-name] Description {ref: path/to/node, path/to/other}

{ref: ...} references are backfill signals — they hint at connections between nodes.

5. Backfill (Discover Missing Connections)

# Rebuild indexes first (if not recently done)
node ~/memory/scripts/rebuild-indexes.js --incremental

# Generate suggestions (scoped — uses tags, FTS, log co-refs, + QMD semantic)
node ~/memory/scripts/suggest-backfill.js                                  # all nodes
node ~/memory/scripts/suggest-backfill.js --scope recent                   # last 7 days only
node ~/memory/scripts/suggest-backfill.js --scope node:projects/flowmind   # specific node
node ~/memory/scripts/suggest-backfill.js --no-qmd                         # skip semantic search

# Rebuild with automatic scoped backfill on changed nodes
node ~/memory/scripts/rebuild-indexes.js --incremental --with-backfill

Review ~/memory/backfill/suggestions.md. Accept by adding the relation to the node's frontmatter. Reject by logging in backfill/history.md.

6. Lint (Validate Graph Health)

node ~/memory/scripts/lint.js            # check for issues
node ~/memory/scripts/lint.js --fix      # auto-fix (adds missing updated fields)

Checks: missing required fields, broken relations, orphan nodes, duplicate titles, non-standard relation types.

7. Visualize

node ~/memory/scripts/visualize.js       # generates ~/memory/indexes/graph.html
open ~/memory/indexes/graph.html         # view in browser

Interactive D3.js force-directed graph. Nodes colored by type, sized by connections. Click for details.

8. Git Backing

node ~/memory/scripts/commit.js                        # auto-commit graph/ and log/ changes
node ~/memory/scripts/commit.js --message "custom msg"  # with custom message

Stages graph/, log/, backfill/history.md, and README.md changes, commits with descriptive message. Does NOT auto-push.

9. Log Promotion

node ~/memory/scripts/promote.js           # find recurring topics without nodes
node ~/memory/scripts/promote.js --min 5   # raise mention threshold
node ~/memory/scripts/promote.js --days 30 # only recent logs

Scans logs for entities mentioned 3+ times without existing nodes. Suggests node creation.

10. Add a New Category

Create a folder under graph/. No config changes. Indexes adapt on rebuild.

Rules

  1. Read before writing. Check if a node exists before creating a duplicate.
  2. Log significant work. Append to log/YYYY-MM-DD.md when you do something significant.
  3. Use refs in logs. If your work touches existing concepts/projects, add {ref: ...}.
  4. Scan for connections. When creating a node, check for related nodes (shared tags, mentions).
  5. Never edit indexes/. Run the rebuild script instead.
  6. Add fields freely. If a node needs a field that doesn't exist yet, just add it.
  7. Add categories freely. Need graph/recipes/? Create the folder. No config changes.
  8. Preserve unknown fields. If a node has fields you don't recognize, leave them.
  9. Use suggested type for uncertain relations. Let a human or another agent confirm.
  10. One-side relations only. Write on whichever node feels natural. Index computes the reverse.
  11. Keep the body useful. Frontmatter is for machines. The markdown body is for humans.
  12. Set updated on changes. Keep the updated field current for temporal tracking.
  13. Use standard relation types. Prefer the taxonomy above. Run lint.js to check.
安全使用建议
This skill appears coherent and implements a local, file-based memory graph as described, but review the following before installing: - Inspect the scripts yourself (they are bundled). They will read/write ~/memory/ and can create symlinks from the skill folder into ~/memory/scripts/. Ensure you trust the skill source before creating those symlinks. - Node.js 22+ is required. Run scripts manually first (e.g., run rebuild-indexes.js, query.js) to confirm behavior before allowing any agent to invoke them automatically. - commit.js runs git commands (git add / git commit) in MEMORY_ROOT. If you enable git in ~/memory, understand commits will be made automatically when the script runs; the script does not auto-push but will stage/commit changes. Consider initializing the git repo yourself so you control commit history. - Because the skill writes files and can be invoked by the agent, consider setting MEMORY_ROOT to a non-default path for testing, backing up any existing ~/memory, and limiting autonomous invocation or restricting which agents may call this skill until you’re comfortable. - There are no network/exfiltration calls in the runtime scripts, but the HTML visualization references a public D3 CDN (for browser display only). If you need an air-gapped setup, host or inline dependencies locally. If you’re unsure about the source, treat the skill as untrusted code: review all files, run in a sandboxed account or VM first, and don't grant it access to sensitive directories outside the intended ~/memory path.
功能分析
Type: OpenClaw Skill Name: agent-memory-graph Version: 1.0.0 The skill bundle provides a sophisticated personal knowledge graph system for AI agents, but it contains multiple shell injection vulnerabilities. Specifically, 'scripts/commit.js' and 'scripts/suggest-backfill.js' use 'child_process.execSync' to execute git and search commands using variables (like commit messages or node titles) that are not properly sanitized against shell metacharacters such as '$', '`', or ';'. While the code appears to be a legitimate productivity tool with no clear evidence of intentional malice or data exfiltration, these vulnerabilities could allow an attacker to achieve remote code execution (RCE) by influencing the content of the memory graph or the arguments passed to the scripts.
能力评估
Purpose & Capability
Name/description (local file-based memory graph) match the files and scripts provided. The skill reads/writes ~/memory/, builds a local SQLite index, runs local Node.js scripts, and optionally commits to a local git repo — all expected for the stated purpose.
Instruction Scope
Runtime instructions and scripts operate on ~/memory/ (graph/, log/, indexes/, backfill/) and the local SQLite index. They do not reference external credentials or remote endpoints in the runtime scripts. Notable behaviors: scripts read and write local markdown files, rebuild indexes, and search logs; commit.js runs git commands (adds/stages/commits). This is within scope but means the skill will modify files and commit changes to the user's ~/memory repository when invoked.
Install Mechanism
There is no install spec; this is instruction + bundled scripts. The setup process uses symlinks to expose scripts under ~/memory/scripts and requires Node.js 22+. No downloads from untrusted URLs or archive extraction are used.
Credentials
The skill declares no required environment variables or credentials (scripts accept an optional MEMORY_ROOT). The scope of env access (home directory memory path) is appropriate for a local file-based memory graph.
Persistence & Privilege
always:false (normal). The skill's scripts write to and modify files under ~/memory/, and commit.js executes git commands in that directory. Allowing autonomous agent invocation (platform default) means an agent could autonomously run these scripts and modify your files; that increases blast radius but is coherent with the skill's purpose.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install agent-memory-graph
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /agent-memory-graph 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release: file-based knowledge graph for AI agents. 8 scripts, 5 templates, zero dependencies.
元数据
Slug agent-memory-graph
版本 1.0.0
许可证 MIT-0
累计安装 1
当前安装数 0
历史版本数 1
常见问题

Memory Graph 是什么?

Agent-agnostic personal knowledge graph stored as markdown files with YAML frontmatter. Use when you need persistent context about the user's life, projects,... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 259 次。

如何安装 Memory Graph?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install agent-memory-graph」即可一键安装,无需额外配置。

Memory Graph 是免费的吗?

是的,Memory Graph 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Memory Graph 支持哪些平台?

Memory Graph 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Memory Graph?

由 afgonullu(@afgonullu)开发并维护,当前版本 v1.0.0。

💬 留言讨论