コンテンツにスキップ

コンセプト

kura は 1 つの賭けの上に成り立っています。強制されるファイリングは メモにとって間違ったプリミティブだ、というものです。必須の階層は ドキュメントごとに 1 つの「仕舞う場所」の判断を強います。そして その判断は、メモが 2 か所に属した瞬間に間違いになります。kura は その判断を強制せず、構造を内容から立ち上げます。

Bucket は、フラットな最上位のグループです。「仕事」「個人」 「読書」のようなものと考えてください。すべてのドキュメントは ちょうど 1 つの Bucket に属します(既定は main)。Bucket は 仕舞うためではなく、粗く分けるためのもので、数個あれば十分です。

タグは、通常フォルダツリーが担う構造を、単一の住所を強いることなく 表現します。#tech/db/sqlite を付けたドキュメントは、techtech/dbtech/db/sqlite の 3 つに同時に現れます。タグは本文中に インライン(#tech/db/sqlite)で書いて保存時に抽出するか、 --tags で明示的に指定します。

タグは安価で多値なので、SQLite を本番で運用するメモは、どちらの 引き出しに入れるか選ぶことなく #tech/db/sqlite かつ #ops/reliability にできます。

[[タイトル]] は、ドキュメントどうしをタイトルでつなぎます。メモ用途 で効くのは次の点です——対象が存在する前にリンクを書けること。 kura はそれを未解決リンクとして記録し、そのタイトルのドキュメントが 作られた瞬間に自動でつながります。バックリンクや 2 ホップリンク(隣を 共有するドキュメント)も、同じグラフから自然に導かれます。

ドキュメントには、clipsdb/sqlite のようなスラッシュ区切りの フォルダ風の名前——パス——を任意で付けられます。パスはドキュメント の同一性の一部で、一意性は Bucket・パス・タイトルの組で決まります。 「メモ」というタイトルのドキュメントが db/sqlite/ml/ に同居 できるのはこのためです。kura が拒むのはフォルダの形ではなく、 強制される判断の方です。パスは必須ではなく、パスの無いドキュメント は Bucket のルートに置かれ、そのまま inbox として機能します。 kura clip は新しいクリップを既定で clips/ に保存し、 kura ls --prefix db はサブツリーを一覧し、kura mv はリネームや 移動の際に参照元の相互リンクも書き換えます。タイトルだけでは曖昧な ときは、フルパス([[db/sqlite/メモ]])でリンク先を 1 つに固定でき ます。パスは命名とブラウズのための補助的な名前空間であり、Bucket・ タグ・リンクを置き換えるものではありません。

日本語に最適化したハイブリッド検索

Section titled “日本語に最適化したハイブリッド検索”

自己組織化は、検索が良くて初めて報われます。kura の検索は、最初から 日本語テキストのために設計したハイブリッドパイプラインです。

  • キーワード検索 は SQLite FTS5 と sqlite-vaporetto 形態素解析トークナイザーを使い、日本語クエリを文字 n-gram ではなく 実際の単語境界で分割します。
  • セマンティック検索sqlite-vec を使い、ローカル モデルが生成した embedding に対する KNN で引きます。
  • ハイブリッド検索 は両方の結果を融合し、ローカル LLM で リランクして最高の精度を得ます。

3 つのモードの違いと使い分けは 検索 を参照して ください。

ローカル・単一ファイル・劣化可能

Section titled “ローカル・単一ファイル・劣化可能”

kura のストア全体は ~/.kura/kura.db の単一 SQLite ファイルです。 起動するサーバーも、アカウントも、テレメトリーもありません。LLM 機能は kura が自動検出するローカルプロバイダ(Ollama または LM Studio)を 使い、どれにも到達できないときは、モデル依存の機能がエラーではなく 警告付きで劣化します。キーワード検索・CRUD・リンク・タグは、 そもそもモデルを必要としません。

kura exportkura import は、ストア全体を frontmatter 付きの Markdown としてラウンドトリップします。データはデータベースに閉じ込め られず、ポータブルで差分にも優しい形で保てます。

同じコアが 3 つのフロントエンドを支えます——CLI、ローカルの ブラウザ UI(閲覧・編集・ナレッジグラフ)、 そして検索と CRUD を AI エージェント向けツールとして公開する MCP サーバー です。すべての読み取りコマンドは --json にも対応するので、kura はターミナルになじむのと同じくらい 自然に、スクリプトやエージェントになじみます。