Skip to content

Memory: SQLiteテーブル + ファイルシステム永続化レイヤー #43

@terisuke

Description

@terisuke

親Epic: #37 (Persistent Cross-Session Memory System)

概要

メモリエントリをSQLiteテーブル + プロジェクト別ディレクトリのmdファイルで永続化する。

実装詳細

SQLiteスキーマ

CREATE TABLE memory (
  id TEXT PRIMARY KEY,
  project_id TEXT NOT NULL,
  name TEXT NOT NULL,
  description TEXT NOT NULL,
  type TEXT NOT NULL CHECK(type IN ('user','feedback','project','reference')),
  content TEXT NOT NULL,
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
  updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);

ファイルシステム

~/.opencode/projects/{project-hash}/memory/
├── MEMORY.md           # インデックス
├── feedback_*.md       # frontmatter付きmdファイル
├── project_*.md
├── user_*.md
└── reference_*.md

対象ファイル

  • packages/opencode/src/session/session.sql.ts — テーブル追加
  • 新規: packages/opencode/src/memory/ ディレクトリ
    • schema.ts — Drizzleスキーマ定義
    • repo.ts — CRUD操作
    • file.ts — mdファイル読み書き(frontmatter解析)
    • index.ts — 公開API

frontmatter形式

---
name: メモリ名
description: 一行説明
type: feedback
---
本文

受入基準

  • memory テーブルがmigrationで追加される
  • CRUD: create, read, update, delete が動作する
  • SQLite ↔ ファイルシステム双方向同期
  • プロジェクトIDでスコープ分離

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions