コンテンツにスキップ

コンセプト

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

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

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

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

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

ドキュメントには kura alias add で別名(別タイトル)も付けられ ます。別名は本来のタイトルと同じように [[リンク]] やドキュメント指 定を解決し、キーワード検索にもヒットします。表記ゆれ(サーバー/サーバ) や略称(DB設計)が 1 つのドキュメントに集まり、メモが分裂しません。

ドキュメントには、clips や db/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 export と kura import は、ストア全体を frontmatter 付きの Markdown としてラウンドトリップします。データはデータベースに閉じ込め られず、ポータブルで差分にも優しい形で保てます。

編集も失われません。変更のたびに直前の版が保存されるため、 kura history で過去の内容の表示や復元ができ、kura get --as-of で 任意の時点の状態を読めます。

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