mirror of
https://github.com/kdnk/obsidian-automatic-linker.git
synced 2026-07-22 05:37:46 +00:00
- Implemented AI-powered link disambiguation using local LLMs (Gemma 4 / LM Studio). - Refactored Trie and candidate mapping to support multiple link candidates per word. - Added 'AI Link Enhancer' command with a progress bar UI in Obsidian. - Enhanced link replacement logic to verify existing links and resolve ambiguities using context. - Added comprehensive unit tests for AI disambiguation and candidate mapping. - Updated settings to include AI configuration (endpoint, model, context length).
3.8 KiB
3.8 KiB
プラン: Gemma 4 による「あいまいさ解消(Disambiguation)」機能の実装 (2-Pass 方式)
このプランは、Obsidian Automatic Linker において、Gemma 4 (Local LLM / LM Studio) を用いて文脈に最適なリンク先を選択、および既存の誤ったリンクを修正する機能を導入するものです。
1. 現状の分析と課題
- データ構造の制限:
src/trie.tsのCandidateDataインターフェースが単一のcanonicalパスしか保持できない。 - 重複登録の挙動:
buildCandidateTrie関数において、同じ名前の単語やエイリアスが見つかった場合、最初に見つかったものが優先されるか、後から来たもので上書きされている。 - 既存リンクの誤り: 機械的な処理や手動で作成された不適切な
[[Note]]リンクの存在。 - パフォーマンス: AI 処理は低速なため、コマンドによる明示的な実行と、進捗バー付きの UI フィードバックが必要。
2. 実装フェーズ
フェーズ 1: データ構造の拡張 (Data Structure)
CandidateDataインターフェースの修正 (src/trie.ts)canonical,scoped,namespaceを持つオブジェクトの配列を保持できるように変更。
buildCandidateTrieの修正- 重複する名前やエイリアスがある場合、既存の候補リストに
pushするように変更。
- 重複する名前やエイリアスがある場合、既存の候補リストに
- 完了条件:
src/trie.tsの既存テストおよび新規追加テスト(複数候補の保持)がパスすること。pnpm lintおよびpnpm tsc(タイプチェック) でエラーがないこと。
フェーズ 2: AI 連携クライアントと「解決ロジック」の実装 (AI Integration)
src/utils/ai-client.tsの新規作成- OpenAI 互換 API へのリクエスト処理とプロンプト設計。
- 非同期スキャン関数
resolveAmbiguitiesの実装-
- 新規リンク候補(複数候補あり)の特定。
-
- 既存リンクの再検証(別のより良い候補がないか)の特定。
-
- 完了条件:
- モックを使用した
resolveAmbiguitiesのテストがパスすること。 pnpm lintおよびpnpm tscでエラーがないこと。
- モックを使用した
フェーズ 3: リンク置換エンジンの拡張 (Sync Logic Enhancement)
src/replace-links/replace-links.tsのreplaceLinks引数の拡張resolvedAmbiguities?: Map<string, string>を受け取り、優先的に適用する。
- 既存リンクの「張り替え」ロジックの追加。
- 完了条件:
replace-links.test.tsに AI 解決マップを使用したテストケースを追加し、パスすること。pnpm lintおよびpnpm tscでエラーがないこと。
フェーズ 4: UI 実装とコマンドの追加 (UI & Integration)
Automatic Linker: Run AI Link Enhancerコマンドの実装。- 進捗バー付き
Noticeによる UI フィードバックの実装。 src/settings/settings.tsへの AI 設定追加。- 完了条件:
- Obsidian 上での実機動作確認(Notice の表示、リンクの修正・生成)。
- 全体のビルド (
pnpm build) が成功すること。
3. 共通の品質基準 (Definition of Done)
- 各フェーズの最後には必ず以下のコマンドを実行し、エラーがないことを確認する。
pnpm test(またはvitest)pnpm lintpnpm tsc
4. リスクと対策
- エディタの不整合: AI 処理開始時のテキストのスナップショットを保持し、置換時に大幅な変更があれば警告を出す。
- トークン制限: 段落単位での分割処理により、長いノートにも対応。