コンセプト
kura は 1 つの賭けの上に成り立っています。強制されるファイリングは メモにとって間違ったプリミティブだ、というものです。必須の階層は ドキュメントごとに 1 つの「仕舞う場所」の判断を強います。そして その判断は、メモが 2 か所に属した瞬間に間違いになります。kura は その判断を強制せず、構造を内容から立ち上げます。
つながる 3 つの方法
Section titled “つながる 3 つの方法”Bucket
Section titled “Bucket”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 ホップリンク(隣を
共有するドキュメント)も、同じグラフから自然に導かれます。
任意のドキュメント path
Section titled “任意のドキュメント path”ドキュメントには、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 としてラウンドトリップします。データはデータベースに閉じ込め
られず、ポータブルで差分にも優しい形で保てます。
人間にもエージェントにも
Section titled “人間にもエージェントにも”同じコアが 3 つのフロントエンドを支えます——CLI、ローカルの
ブラウザ UI(閲覧・編集・ナレッジグラフ)、
そして検索と CRUD を AI エージェント向けツールとして公開する
MCP サーバー です。すべての読み取りコマンドは
--json にも対応するので、kura はターミナルになじむのと同じくらい
自然に、スクリプトやエージェントになじみます。