{
  "schemaVersion": "1.0",
  "item": {
    "slug": "persisent-mind",
    "name": "Persistent Mind",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/vedantsingh60/persisent-mind",
    "canonicalUrl": "https://clawhub.ai/vedantsingh60/persisent-mind",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/persisent-mind",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=persisent-mind",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "LICENSE.md",
      "persistentmind.py",
      "README.md",
      "manifest.yaml",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/persisent-mind"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/persisent-mind",
    "agentPageUrl": "https://openagent3.xyz/skills/persisent-mind/agent",
    "manifestUrl": "https://openagent3.xyz/skills/persisent-mind/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/persisent-mind/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "PersistentMind",
        "body": "Persistent, searchable, context-aware memory for AI agents. Store what matters. Never lose context again.\n\nFree and open-source (MIT License) • Zero dependencies • Works locally • No API keys required"
      },
      {
        "title": "Why This Skill?",
        "body": "AI agents forget everything between sessions. Every time you start a new conversation, you repeat the same context: your preferences, your project setup, corrections to previous mistakes, procedures you've documented. This skill solves that permanently."
      },
      {
        "title": "Problems it solves:",
        "body": "Agents forget user preferences between sessions\nSame mistakes repeated because corrections aren't persisted\nProject context has to be re-explained every time\nNo way to build up a team knowledge base over time"
      },
      {
        "title": "Memory Types",
        "body": "TypeUse ForExamplefactFactual information\"Database is PostgreSQL 16\"preferenceUser preferences\"User prefers concise responses\"procedureHow-to steps\"Run migrations with: poetry run alembic upgrade head\"correctionMistakes + fixes\"Never use wildcard imports — CI will fail\"contextBackground info\"This is a B2B SaaS product for HR teams\"relationshipHow things relate\"AuthService depends on UserRepository\"reminderNotes for later\"Check with team before changing DB schema\""
      },
      {
        "title": "Memory Scopes",
        "body": "ScopePersistsUse ForglobalAlwaysCross-project preferences, universal rulesprojectWithin projectProject-specific facts, procedures, correctionssessionCurrent session onlyTemporary working notes"
      },
      {
        "title": "1. Store Memories",
        "body": "from persistentmind import PersistentMind, MemoryType, MemoryScope\n\nmm = PersistentMind(project=\"my-app\")\n\n# Critical correction — will always surface first in context\nmm.remember(\n    \"Never use wildcard imports — the linter will fail CI\",\n    memory_type=MemoryType.CORRECTION,\n    scope=MemoryScope.PROJECT,\n    importance=10.0,\n    tags=[\"linting\", \"ci\", \"imports\"]\n)\n\n# Global preference — applies everywhere\nmm.remember(\n    \"User prefers code examples over long explanations\",\n    memory_type=MemoryType.PREFERENCE,\n    scope=MemoryScope.GLOBAL,\n    importance=8.0\n)\n\n# Auto-tags extracted from content automatically if you don't specify\nmm.remember(\n    \"The Stripe API key is in .env as STRIPE_SECRET_KEY\",\n    memory_type=MemoryType.FACT,\n    scope=MemoryScope.PROJECT,\n    importance=9.0\n)"
      },
      {
        "title": "2. Search Memories",
        "body": "# Full-text search with relevance scoring\nresults = mm.recall(\"database migrations\")\nfor r in results:\n    print(f\"[{r.relevance_score:.2f}] [{r.memory.memory_type}] {r.memory.content}\")\n\n# Search with filters\nresults = mm.recall(\"imports\", type_filter=\"correction\", min_importance=7.0)\n\n# Get by type\ncorrections = mm.recall_by_type(MemoryType.CORRECTION)\n\n# Get by tag\ndb_memories = mm.recall_by_tag(\"database\")"
      },
      {
        "title": "3. Inject Context Into Prompts",
        "body": "# Get a formatted context block to prepend to any prompt\ncontext = mm.get_context(project=\"my-app\", max_tokens_estimate=1500)\n\nprompt = f\"\"\"\n{context}\n\n---\n\nUser request: {user_input}\n\"\"\"\n\nOutput:\n\n# Relevant Memory Context\n\n⚠️ [CORRECTION] Never use wildcard imports — the linter will fail CI\n⚙️ [PREFERENCE] User prefers code examples over long explanations\n📌 [FACT] The Stripe API key is in .env as STRIPE_SECRET_KEY\n📋 [PROCEDURE] Run migrations with: poetry run alembic upgrade head\n\nCorrections always surface first. Importance score determines ranking."
      },
      {
        "title": "4. Memory Management",
        "body": "# Update an existing memory\nmm.update_memory(memory_id=\"mem_abc123\", importance=9.0, tags=[\"critical\"])\n\n# Archive a memory (soft delete)\nmm.forget(\"mem_abc123\")\n\n# Permanently delete\nmm.forget(\"mem_abc123\", permanent=True)\n\n# Expire automatically after N days\nmm.remember(\"Temp token: abc...\", expires_in_days=7)"
      },
      {
        "title": "5. Deduplication",
        "body": "# Find near-duplicate memories (dry run — just report)\ngroups = mm.consolidate(dry_run=True)\nfor g in groups:\n    print(f\"Found {g['count']} similar memories:\")\n    for m in g['memories']:\n        print(f\"  - {m['content']}\")\n\n# Actually merge them\nmm.consolidate(dry_run=False)"
      },
      {
        "title": "6. Team Sharing",
        "body": "# Export your memory set\nmm.export_memories(\"team_memories.json\")\n\n# Import a colleague's memories\nmm.import_memories(\"team_memories.json\")"
      },
      {
        "title": "7. Summary & Stats",
        "body": "print(mm.format_summary())\n\n🧠 Total Active Memories: 24  |  Archived: 3\n   Avg Importance: 7.4/10\n\n📊 BY TYPE\n  • correction             4\n  • fact                   8\n  • preference             5\n  • procedure              4\n  • context                3"
      },
      {
        "title": "Importance Scoring Guide",
        "body": "ScoreUse When10Critical — never violate (e.g. security rules, CI requirements)8-9Important — strong preference or key fact5-7Useful but not critical1-4Nice to know, low priority"
      },
      {
        "title": "PersistentMind(storage_path, project, session_id, auto_cleanup_days)",
        "body": "Initialize. Data stored in .persistentmind/ by default."
      },
      {
        "title": "remember(content, memory_type, scope, tags, importance, project, expires_in_days, source)",
        "body": "Store a new memory. Returns Memory object."
      },
      {
        "title": "recall(query, scope_filter, type_filter, project_filter, limit, min_importance)",
        "body": "Search memories. Returns List[MemorySearchResult] sorted by relevance."
      },
      {
        "title": "recall_by_type(memory_type, limit)",
        "body": "Get all memories of a specific type, sorted by importance."
      },
      {
        "title": "recall_by_tag(tag, limit)",
        "body": "Get all memories with a specific tag."
      },
      {
        "title": "get_context(project, max_tokens_estimate)",
        "body": "Get formatted context block for prompt injection. Corrections surfaced first."
      },
      {
        "title": "update_memory(memory_id, content, importance, tags)",
        "body": "Update an existing memory's fields."
      },
      {
        "title": "forget(memory_id, permanent)",
        "body": "Archive (default) or permanently delete a memory."
      },
      {
        "title": "consolidate(dry_run)",
        "body": "Find near-duplicate memories. Set dry_run=False to merge them."
      },
      {
        "title": "get_stats()",
        "body": "Return memory statistics dictionary."
      },
      {
        "title": "format_summary()",
        "body": "Human-readable memory summary."
      },
      {
        "title": "export_memories(output_file, include_archived)",
        "body": "Export to JSON for backup or team sharing."
      },
      {
        "title": "import_memories(input_file, overwrite_duplicates)",
        "body": "Import from JSON export file."
      },
      {
        "title": "Privacy & Security",
        "body": "✅ Zero telemetry — No data sent anywhere\n✅ Local-only storage — Everything in .persistentmind/ on your machine\n✅ No API keys required — Zero credentials needed\n✅ No authentication — No accounts or logins\n✅ Full transparency — MIT licensed, source code included"
      },
      {
        "title": "[1.0.0] - 2026-02-16",
        "body": "✨ Initial release — PersistentMind\n✨ 7 memory types: fact, preference, procedure, context, correction, relationship, reminder\n✨ 3 scopes: global, project, session\n✨ Full-text search with relevance scoring, importance boosting, recency decay\n✨ Prompt context injection via get_context()\n✨ Automatic tag extraction from content\n✨ Memory consolidation for deduplication\n✨ Export/import for team sharing\n✨ Auto-expiry and stale session cleanup\n✨ Zero dependencies, local-only storage, MIT licensed\n\nLast Updated: February 16, 2026\nCurrent Version: 1.0.0\nStatus: Active & Community-Maintained\n\n© 2026 UnisAI Community"
      }
    ],
    "body": "PersistentMind\n\nPersistent, searchable, context-aware memory for AI agents. Store what matters. Never lose context again.\n\nFree and open-source (MIT License) • Zero dependencies • Works locally • No API keys required\n\nWhy This Skill?\n\nAI agents forget everything between sessions. Every time you start a new conversation, you repeat the same context: your preferences, your project setup, corrections to previous mistakes, procedures you've documented. This skill solves that permanently.\n\nProblems it solves:\nAgents forget user preferences between sessions\nSame mistakes repeated because corrections aren't persisted\nProject context has to be re-explained every time\nNo way to build up a team knowledge base over time\nCore Concepts\nMemory Types\nType\tUse For\tExample\nfact\tFactual information\t\"Database is PostgreSQL 16\"\npreference\tUser preferences\t\"User prefers concise responses\"\nprocedure\tHow-to steps\t\"Run migrations with: poetry run alembic upgrade head\"\ncorrection\tMistakes + fixes\t\"Never use wildcard imports — CI will fail\"\ncontext\tBackground info\t\"This is a B2B SaaS product for HR teams\"\nrelationship\tHow things relate\t\"AuthService depends on UserRepository\"\nreminder\tNotes for later\t\"Check with team before changing DB schema\"\nMemory Scopes\nScope\tPersists\tUse For\nglobal\tAlways\tCross-project preferences, universal rules\nproject\tWithin project\tProject-specific facts, procedures, corrections\nsession\tCurrent session only\tTemporary working notes\nFeatures\n1. Store Memories\nfrom persistentmind import PersistentMind, MemoryType, MemoryScope\n\nmm = PersistentMind(project=\"my-app\")\n\n# Critical correction — will always surface first in context\nmm.remember(\n    \"Never use wildcard imports — the linter will fail CI\",\n    memory_type=MemoryType.CORRECTION,\n    scope=MemoryScope.PROJECT,\n    importance=10.0,\n    tags=[\"linting\", \"ci\", \"imports\"]\n)\n\n# Global preference — applies everywhere\nmm.remember(\n    \"User prefers code examples over long explanations\",\n    memory_type=MemoryType.PREFERENCE,\n    scope=MemoryScope.GLOBAL,\n    importance=8.0\n)\n\n# Auto-tags extracted from content automatically if you don't specify\nmm.remember(\n    \"The Stripe API key is in .env as STRIPE_SECRET_KEY\",\n    memory_type=MemoryType.FACT,\n    scope=MemoryScope.PROJECT,\n    importance=9.0\n)\n\n2. Search Memories\n# Full-text search with relevance scoring\nresults = mm.recall(\"database migrations\")\nfor r in results:\n    print(f\"[{r.relevance_score:.2f}] [{r.memory.memory_type}] {r.memory.content}\")\n\n# Search with filters\nresults = mm.recall(\"imports\", type_filter=\"correction\", min_importance=7.0)\n\n# Get by type\ncorrections = mm.recall_by_type(MemoryType.CORRECTION)\n\n# Get by tag\ndb_memories = mm.recall_by_tag(\"database\")\n\n3. Inject Context Into Prompts\n# Get a formatted context block to prepend to any prompt\ncontext = mm.get_context(project=\"my-app\", max_tokens_estimate=1500)\n\nprompt = f\"\"\"\n{context}\n\n---\n\nUser request: {user_input}\n\"\"\"\n\n\nOutput:\n\n# Relevant Memory Context\n\n⚠️ [CORRECTION] Never use wildcard imports — the linter will fail CI\n⚙️ [PREFERENCE] User prefers code examples over long explanations\n📌 [FACT] The Stripe API key is in .env as STRIPE_SECRET_KEY\n📋 [PROCEDURE] Run migrations with: poetry run alembic upgrade head\n\n\nCorrections always surface first. Importance score determines ranking.\n\n4. Memory Management\n# Update an existing memory\nmm.update_memory(memory_id=\"mem_abc123\", importance=9.0, tags=[\"critical\"])\n\n# Archive a memory (soft delete)\nmm.forget(\"mem_abc123\")\n\n# Permanently delete\nmm.forget(\"mem_abc123\", permanent=True)\n\n# Expire automatically after N days\nmm.remember(\"Temp token: abc...\", expires_in_days=7)\n\n5. Deduplication\n# Find near-duplicate memories (dry run — just report)\ngroups = mm.consolidate(dry_run=True)\nfor g in groups:\n    print(f\"Found {g['count']} similar memories:\")\n    for m in g['memories']:\n        print(f\"  - {m['content']}\")\n\n# Actually merge them\nmm.consolidate(dry_run=False)\n\n6. Team Sharing\n# Export your memory set\nmm.export_memories(\"team_memories.json\")\n\n# Import a colleague's memories\nmm.import_memories(\"team_memories.json\")\n\n7. Summary & Stats\nprint(mm.format_summary())\n\n🧠 Total Active Memories: 24  |  Archived: 3\n   Avg Importance: 7.4/10\n\n📊 BY TYPE\n  • correction             4\n  • fact                   8\n  • preference             5\n  • procedure              4\n  • context                3\n\nImportance Scoring Guide\nScore\tUse When\n10\tCritical — never violate (e.g. security rules, CI requirements)\n8-9\tImportant — strong preference or key fact\n5-7\tUseful but not critical\n1-4\tNice to know, low priority\nAPI Reference\nPersistentMind(storage_path, project, session_id, auto_cleanup_days)\n\nInitialize. Data stored in .persistentmind/ by default.\n\nremember(content, memory_type, scope, tags, importance, project, expires_in_days, source)\n\nStore a new memory. Returns Memory object.\n\nrecall(query, scope_filter, type_filter, project_filter, limit, min_importance)\n\nSearch memories. Returns List[MemorySearchResult] sorted by relevance.\n\nrecall_by_type(memory_type, limit)\n\nGet all memories of a specific type, sorted by importance.\n\nrecall_by_tag(tag, limit)\n\nGet all memories with a specific tag.\n\nget_context(project, max_tokens_estimate)\n\nGet formatted context block for prompt injection. Corrections surfaced first.\n\nupdate_memory(memory_id, content, importance, tags)\n\nUpdate an existing memory's fields.\n\nforget(memory_id, permanent)\n\nArchive (default) or permanently delete a memory.\n\nconsolidate(dry_run)\n\nFind near-duplicate memories. Set dry_run=False to merge them.\n\nget_stats()\n\nReturn memory statistics dictionary.\n\nformat_summary()\n\nHuman-readable memory summary.\n\nexport_memories(output_file, include_archived)\n\nExport to JSON for backup or team sharing.\n\nimport_memories(input_file, overwrite_duplicates)\n\nImport from JSON export file.\n\nPrivacy & Security\n✅ Zero telemetry — No data sent anywhere\n✅ Local-only storage — Everything in .persistentmind/ on your machine\n✅ No API keys required — Zero credentials needed\n✅ No authentication — No accounts or logins\n✅ Full transparency — MIT licensed, source code included\nChangelog\n[1.0.0] - 2026-02-16\n✨ Initial release — PersistentMind\n✨ 7 memory types: fact, preference, procedure, context, correction, relationship, reminder\n✨ 3 scopes: global, project, session\n✨ Full-text search with relevance scoring, importance boosting, recency decay\n✨ Prompt context injection via get_context()\n✨ Automatic tag extraction from content\n✨ Memory consolidation for deduplication\n✨ Export/import for team sharing\n✨ Auto-expiry and stale session cleanup\n✨ Zero dependencies, local-only storage, MIT licensed\n\nLast Updated: February 16, 2026 Current Version: 1.0.0 Status: Active & Community-Maintained\n\n© 2026 UnisAI Community"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/vedantsingh60/persisent-mind",
    "publisherUrl": "https://clawhub.ai/vedantsingh60/persisent-mind",
    "owner": "vedantsingh60",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/persisent-mind",
    "downloadUrl": "https://openagent3.xyz/downloads/persisent-mind",
    "agentUrl": "https://openagent3.xyz/skills/persisent-mind/agent",
    "manifestUrl": "https://openagent3.xyz/skills/persisent-mind/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/persisent-mind/agent.md"
  }
}