Files
ollama-cli/src/ollama_cli/tools/memory.py

59 lines
1.7 KiB
Python

import json
import os
from .base import tool
PROJECT_MEMORY_FILE = ".ollama-cli/memory.json"
def load_project_memory():
if os.path.exists(PROJECT_MEMORY_FILE):
try:
with open(PROJECT_MEMORY_FILE, 'r') as f:
return json.load(f)
except:
pass
return {}
def save_project_memory(memory):
os.makedirs(os.path.dirname(PROJECT_MEMORY_FILE), exist_ok=True)
with open(PROJECT_MEMORY_FILE, 'w') as f:
json.dump(memory, f, indent=2)
@tool(
name="remember_fact",
description="Store a key piece of information about the project",
parameters={
"fact": {"type": "string", "description": "The fact to remember (e.g., 'API key is in .env', 'Main entry point is src/index.ts')"}
}
)
def remember_fact(fact: str) -> str:
memory = load_project_memory()
facts = memory.get("facts", [])
if fact not in facts:
facts.append(fact)
memory["facts"] = facts
save_project_memory(memory)
return f"Remembered: {fact}"
return "Fact already known."
@tool(
name="recall_facts",
description="Recall all stored facts about the project",
parameters={}
)
def recall_facts() -> str:
memory = load_project_memory()
facts = memory.get("facts", [])
if not facts:
return "No project facts stored."
return "Project Facts:\n" + "\n".join(f"- {f}" for f in facts)
@tool(
name="clear_memory",
description="Clear project memory",
parameters={}
)
def clear_memory() -> str:
if os.path.exists(PROJECT_MEMORY_FILE):
os.remove(PROJECT_MEMORY_FILE)
return "Project memory cleared."
return "Memory was already empty."