0xkobold-pi-learn

内容来源:SKILL.md(标准 Skill 格式) · 原始地址 · 查看安装指南

原始内容


name: pi-learn description: "Open-source memory infrastructure for pi agents. Provides peer representations, reasoning, context assembly, dreaming, and hybrid memory (global + project-scoped) capabilities. Use when tracking user preferences, maintaining context across sessions, building peer mental models, or enabling persistent agent memory." risk: safe source: 0xkobold/pi-learn date_added: "2026-03-16"

Pi-Learn

Open-source memory infrastructure for pi agents, inspired by Honcho. Enables stateful AI agents with persistent memory, peer understanding, and contextual reasoning.

When to Use

Use pi-learn when:

  • You need the agent to remember information across sessions
  • Tracking user preferences, interests, and goals
  • Building a mental model of the user (peer representation)
  • Maintaining project-specific context alongside user profiles
  • Enabling creative/dream synthesis for deeper insights
  • Cross-project memory sharing vs. project-isolated memory
  • Automatic data retention/pruning policies

Core Concepts

Peer Representation

The agent builds mental models of users through:

  • Conclusions: Insights extracted from conversations (deductive, inductive, abductive)
  • Peer Cards: Biographical data (name, occupation, interests, traits, goals)
  • Summaries: Periodic conversation summaries
  • Observations: Raw messages stored before reasoning

Hybrid Memory Architecture

Two-tier memory system:

Scope Storage Content Access
Global (user) __global__ workspace Traits, interests, goals All projects
Project (local) Project workspace Code patterns, decisions Current project only

Dreaming

Background reasoning that synthesizes deeper insights. Unlike real-time reasoning, dreaming:

  • Runs on a schedule
  • Looks at broader patterns
  • Generates creative hypotheses

Tools (28 total)

Core Memory Tools

Tool Description
learn_add_message Store a message for future reasoning
learn_add_messages_batch Bulk insert multiple messages
learn_add_observation Store raw observation before reasoning
learn_get_context Retrieve assembled peer context (blended)
learn_query Semantic search through memories

Reasoning Tools

Tool Description
learn_reason_now Trigger immediate reasoning
learn_trigger_dream Manually trigger dream cycle

Peer Card Tools

Tool Description
learn_get_peer_card Get biographical info card
learn_update_peer_card Manually update peer card

Session Tools

Tool Description
learn_list_peers List all peers in workspace
learn_list_sessions List all sessions
learn_get_session Get specific session with messages
learn_search_sessions Search sessions by keyword
learn_tag_session Add/remove session tags
learn_get_sessions_by_tag Get sessions by tag
learn_list_tags List all unique tags

Statistics & Insights

Tool Description
learn_get_stats Get memory statistics
learn_get_insights Comprehensive learning patterns
learn_get_summaries Get peer summaries
learn_get_dream_status Dream system status

Data Management

Tool Description
learn_prune Trigger retention pruning
learn_export Export all memory as JSON
learn_import Import from JSON backup

Cross-Peer Tools

Tool Description
learn_observe_peer Record observation about another peer
learn_get_perspective Get perspective from one peer on another

Scope-Specific Context

Tool Description
learn_get_global_context Get cross-project context only
learn_get_project_context Get project-specific context only

Usage Examples

Basic: Store and Retrieve Context

// Add user message to memory
learn_add_message({
  content: "I'm really interested in functional programming and TypeScript",
  role: "user"
});

// Later, retrieve assembled context
const context = learn_get_context({});
// Returns: blended global + project context with interests, traits, conclusions

Intermediate: Query Specific Memories

// Search for conclusions about a topic
const results = learn_query({
  query: "TypeScript preferences",
  topK: 5,
  minSimilarity: 0.5
});

// Get comprehensive stats
const stats = learn_get_stats({});
// Returns: conclusionCount, summaryCount, topInterests, topTraits, etc.

Advanced: Trigger Dreaming

// Manually trigger dream cycle
learn_trigger_dream({
  scope: "project"  // or "user" for global
});

// Check dream status
const status = learn_get_dream_status({});
// Returns: lastDreamedAt, dreamCount, nextDreamMs, etc.

Cross-Peer: Observe Other Agents

// Record observation about another peer
learn_observe_peer({
  aboutPeerId: "coding-agent",
  content: "Responds quickly and prefers TypeScript"
});

// Get perspective from user's view
const perspective = learn_get_perspective({
  observerPeerId: "user",
  targetPeerId: "coding-agent"
});

Configuration

{
  "learn": {
    "workspaceId": "default",
    "reasoningEnabled": true,
    "reasoningModel": "qwen3.5:latest",
    "embeddingModel": "nomic-embed-text-v2-moe:latest",
    "tokenBatchSize": 1000,
    "dream": {
      "enabled": true,
      "intervalMs": 3600000,
      "minMessagesSinceLastDream": 5,
      "batchSize": 50
    },
    "retention": {
      "summaryRetentionDays": 30,
      "conclusionRetentionDays": 90,
      "retentionDays": 0,
      "pruneOnStartup": true,
      "pruneIntervalHours": 24
    }
  },
  "ollama": {
    "apiKey": "your-api-key"
  }
}

CLI Commands

Command Description
/learn status Show memory status
/learn context Show assembled context
/learn config Show configuration
/learn dream Trigger dream cycle
/learn prune Prune old data
/learn search <query> Search sessions
/learn sessions List sessions

Conclusion Types

Type Confidence Description
Deductive 80-100% Logical certainty from explicit premises
Inductive 60-80% Pattern observed across messages
Abductive 40-60% Best explanation for behavior

Architecture

┌─────────────────────────────────────────────────────────────┐
│                        Pi-Learn                             │
├─────────────────────────────────────────────────────────────┤
│  Session Events    │  SQLiteStore   │  Reasoning Engine   │
│  ────────────────  │  ─────────────  │  ────────────────  │
│  • session_start   │  • Workspaces   │  • Message batch    │
│  • before_agent    │  • Peers        │  • Conclusions      │
│  • message_end     │  • Sessions     │  • Peer cards       │
│  • turn_end        │  • Messages     │  • Dreaming        │
│                    │  • Conclusions  │                    │
├─────────────────────────────────────────────────────────────┤
│                    Ollama Integration                       │
│  ┌─────────────────┐        ┌─────────────────────────┐  │
│  │ Embeddings       │        │ Reasoning Model          │  │
│  │ nomic-embed-     │        │ (configurable)          │  │
│  │ text-v2-moe      │        │                          │  │
│  └─────────────────┘        └─────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Data Storage

SQLite database at ~/.pi/memory/pi-learn.db:

-- Tables
workspaces, peers, sessions, messages, 
conclusions, summaries, peer_cards, observations

-- Indexes
idx_conclusions_peer, idx_conclusions_created
idx_summaries_peer, idx_messages_session

Ollama Requirements

Requires Ollama running locally with:

  • Embeddings: nomic-embed-text-v2-moe:latest
  • Reasoning: Any Ollama chat model
ollama pull nomic-embed-text-v2-moe:latest
ollama pull qwen3.5:latest

See Also