今週(第009週)は、2月23日単日の集中作業として、ディレクトリ整理とビルド修復から始まり、Issue 双方向同期・仕様書現代化・DB正規化・v0.3.0 リリース・UI刷新・MCPモジュール分割まで、23件の案件が実施された。重要な方針・指摘の変遷: (1) GitBucket を Source of Truth とする Issue 運用と手動クローズのルール化、(2) 仕様・運用の分離(docs/specification と .agent/rules)、(3) DB の documents/items 正規化とマイグレーション v0.2.5→v0.3.0、(4) コード品質基準(600行・7階層)に基づく MCP の機能分割。
gantt
title 第009週 プロジェクト進捗 (2026-02-23)
dateFormat YYYY-MM-DD
section 環境
ディレクトリ整理とビルド修復 :2026-02-23, 1d
ソース不要ファイル掃除 :2026-02-23, 1d
section Issue
GitBucket双方向同期ツール :2026-02-23, 1d
Issue Dir Git除外・手動クローズ :2026-02-23, 1d
section ドキュメント
仕様書現代化・LSA化 :2026-02-23, 1d
仕様と運用ルールの分離 :2026-02-23, 1d
section DB
テーブル正規化・マイグレーション :2026-02-23, 1d
スキーマバージョン管理 :2026-02-23, 1d
section リリース
v0.3.0 繰り上げ・リリース :2026-02-23, 1d
section UI・MCP
UI刷新・MCP応答標準化・リファクタ :2026-02-23, 1d
vec0.dll 未検出による Rust パニックと特定。build.rs の相対パスを ../../node_modules に修正して解決。scripts/ 内の test_mcp_client.mjs 等をルート直下の tests/ に移動。AIエージェントは、ビルド出力の最適化(.cargo/config.toml)、不要フォルダ削除、ツール群の tools/ 集約、テストの tests/ 集約、ドキュメントの docs/specification 等への統合、ログの logs/ 隔離を実行した。
ビルドエラーの根本原因が修正され、ディレクトリが機能・役割ベースで再構築され、保守性が向上した。
src/ 配下の不要ファイルの調査・整理の指示。src/frontend/ に React 時代の不要アセットが残っている。
App.css、assets/、types/ を削除。src/backend/ に一時 DB 等が残っている。
telos.db* および空の logs/ を削除。tests/ は保持。未使用ファイルのリストアップと実装プラン作成ののち、PowerShell で対象を削除。
フロント・バックエンドとも本番に必要なコードとリソースのみが残る洗練された構造となった。
docs/issues/ に Markdown で同期(プル・プッシュ)したい要望。fetch を用いた tools/scripts/sync_issues.mjs を作成。id, state, title, updated_at)でメタデータを保持し、updated_at 比較で Pull/Push。id: new は POST で新規発番からリネームまで自動処理。実装計画とタスク定義ののち、sync_issues.mjs を実装。既存 Issue 2件の Pull に成功。
IDE 上で Markdown として Issue の閲覧・追記・クローズが可能になり、開発フローが効率化された。※ リモート Push には .env の GITBUCKET_TOKEN が必要。
docs/issues/ を Git で二重管理しないようにしたいとの指摘。.gitignore に docs/issues/ を登録し、追跡から除外する。docs/issues/ が Git 管理下になっている。
.gitignore に追記し、git rm -r --cached docs/issues/ で追跡のみ解除。.gitignore 追記、キャッシュからの除外、ジャーナル作成とコミット・プッシュを実施。
同期スクリプトと Git の責務が分離され、リポジトリが不要な Markdown 履歴で汚れない運用が確立した。
main で全機能のコンパイル・テスト通過とリリースバイナリ構築が必要。cargo run で API サーバーを起動し、cargo test で疎通確認。GITBUCKET_TOKEN 未設定のため Push はスキップ。ローカル Issue-1.md は state: closed に更新済み。テスト・リリース計画の立案、API サーバー起動下での cargo test 成功、npm run tauri build でインストーラー生成、Issue-1 のクローズと同期スクリプト実行。
大再編後の TelosDB が完全に機能し、本番バイナリとしてリリース可能であることが証明された。
06_development_guide.md に「Issue管理ルール」を新設。sync_issues.mjs の PATCH 失敗時のリマインド機能実装、開発ガイドの更新、Issue #2 での URL リマインド表示を検証。
API の制限をルールと補助機能でカバーする運用体制を構築した。
docs/specification/ が旧来の src-tauri 依存・LLM 前提のまま。src/frontend, src/backend)および LSA ベース検索エンジンに即して仕様書をすべて更新する。01_system_overview.md〜04_mcp_api_specification.md、07_ui_design_spec.md、mcp.json を LSA・50次元・サイドカー排除に合わせて全面更新。全ファイルの走査と「脱LLM・LSA特化」に合わせた論理的な書き換え。Mermaid 図もシングルプロセス構成に修正。
仕様書がソースコードと完全に一致する唯一の正(Single Source of Truth)の状態になった。
README.md も LLM 基盤や古いディレクトリ構成の記述が残っていた。src/frontend, src/backend 等に修正、環境要件から重いモデル不要を反映。デザインをミニマル・ハイコントラストに修正。古いパスの置換、LSA による「GPU不要」「モデル配置不要」の強調、デザイン文言の修正。
初見の開発者・エージェントが現在のアーキテクチャを正しく把握できる環境が整った。
Issue-1.md および Issue-2.md に英語を追記。開発ガイドの更新、Issue-1/Issue-2 の翻訳・更新、同期スクリプト実行と手動更新用 URL リマインドの確認。
ローカル docs/issues/ はすべて日英併記となり、新規 Issue でも自動で翻訳提案・補完する流れが確立した。
06_development_guide.md で製品名依存を排除し、「上流トラッカー」「GitHub v3 互換 API」に抽象化。該当ドキュメントの走査と意味を維持したままの呼称変更。同期スクリプトの実装詳細ではなく「外部トラッカーとの同期」という運用定義に修正。
制約が「特定ソフト」から「プロトコル(GitHub API v3)」に昇華し、将来のトラッカー切り替え時も仕様の大幅書き換えが不要な記述になった。
docs/specification/ にプロジェクト運用ルール(GitBucket 連携・Issue の書き方等)が混在し、設計書のポータビリティを損なっていた。06_development_guide.md から Issue 管理記述を削除し、新設の docs/workflow/issue_management.md に移行。README のディレクトリ案を仕様とワークフロー区別で更新。docs/workflow/issue_management.md の作成、既存ルールの集約、06_development_guide.md を純粋な技術ガイドに再定義、README の修正。
設計書は「システムの作り」、ワークフローは「開発の進め方」を独立して記述する健全な構成となった。
Issue-2 に基づく DB 正規化。従来は items にチャンクごとに同一 path が冗長に保持されていた。
path を一意に管理。document_id と chunk_index を追加、冗長な path を削除。add_item_text・search_text を新スキーマに合わせてリファクタ。型不整合は JsonRpcResponse で解決。db.rs のスキーマ更新、mcp.rs の各ツールリファクタ(特に add_item_text でドキュメント存在確認と既存チャンク削除)、仕様書 ER 図の更新。
DB 構造がクリーンになり、ドキュメント単位の管理が容易になった。Axum ハンドラと MCP の境界も明確化した。
ユーザー指示に基づき、運用ルールを .agent/rules に集約し、日英併記を適用するため。
docs/ に仕様と運用が混在。.agent/rules に置き、セッション開始時にコンテキスト化する。issue_management.md を .agent/rules へ移動。技術仕様は docs/specification で継続。06_development_guide.md → 05_、07_ui_design_spec.md → 06_ にリネーム。issue_management.md の抽出・英訳と .agent/rules への配置、開発ガイド・UI 仕様のリネームと日英併記、技術仕様と AI 向けルールの境界を明確化。
運用ルールが .agent/rules に集約され、AI の自己規律が高まる。日英併記で一貫したポリシーとなった。
documents に MIME を保持し、将来の PDF・画像・コード等の拡張に対応しやすくするため。
documents に mime TEXT を追加。mcp 内で path 拡張子から主要 MIME を判別。add_item_text に mime 引数追加、検索結果に mime を返す。DB 仕様書を更新。db.rs のテーブル定義修正、mcp.rs の add_item_text と検索・get の MIME 対応、cargo check で整合性確認。
TelosDB が「型(MIME)を持ったドキュメント集合」としての性質を強め、将来の UI・マルチモーダル対応の基盤となった。
MIME 対応等の新機能が完了し、バージョンを 0.3.0 に繰り上げ、リリース用ブランチを作成するため。
release/v0.3.0 を新規作成。0.3.0 に統一。release/v0.3.0 の作成とチェックアウト、Cargo.toml・mcp の initialize レスポンス・tauri.conf.json・package.json のバージョン更新、cargo check と Cargo.lock の検証。
TelosDB が正式に 0.3.0 開発サイクルへ移行し、複数設定ファイルのバージョンが同期された。
0.3.0 繰り上げに伴い、リリースノートの作成と Git タグ付与でマイルストーンを確定するため。
RELEASE_v0.3.0.md を作成。MIME、DB 正規化、検索精度向上、Vibrato 移行を網羅。v0.3.0 を付与。リリースノート作成、release/v0.3.0 へのコミット、git tag -a v0.3.0 -m "Release v0.3.0" の実行。追記としてリポジトリ整理コミット(.githooks、.protected-files、CONTRIBUTING、ジャーナル名正規化等)の要約を記録。
v0.3.0 が正式にリリース定義され、内部構造の健全化と解析精度向上が両立したマイルストーンとなった。
v0.3.0 のテーブル正規化により v0.2.5 との互換性が失われたため、既存ユーザーがデータを失わず移行できる自動マイグレーションを実装する。
items からメタデータを抽出し、documents との 1:N 構造に再編。ベクトル整合のため id を維持する。PRAGMA table_info(items) で古い path の有無を確認し、要否を判断。documents 新規作成、ユニークな path を移行。items を新スキーマで再作成(document_id・chunk_index 付与)。全工程を 1 トランザクションで実行。db.rs に migrate_025_to_030 を実装、init_schema 冒頭で呼び出し、cargo check で確認。ウォークスルーで移行ロジックを整理。
ユーザーは特別な操作なく v0.3.0 へアップデート可能になった。ベクトル ID を引き継ぐ設計で再インデックスも最小限に抑えられた。
今後のマイグレーションを確実かつ自動的に管理するため、DB 自体に現在のスキーマバージョンを保持する。
internal_metadata が存在しない = 0.3.0 未満」という判断基準を導入し、既存マイグレーションを整理する。key と value を持つ internal_metadata を追加。version: 0.3.0 を保存。migrate_025_to_030 でまず internal_metadata の有無を確認するステップを追加。DB 仕様書を更新。db.rs で internal_metadata の作成とバージョン書き込みを init_schema に追加。migrate_025_to_030 のリファクタ、仕様書の ER 図・説明の更新、cargo check で確認。
明示的なバージョン管理により、今後のマイグレーションが安全かつ論理的に行えるようになった。v0.2.5 以前にも「テーブル有無で判断」が有効な移行パスとなった。
ヘッダ・フッタの見た目と配置を安定させ、「画面左端基準でのヘッダ」「フッタも左端基準」にすること。
site-header.js と styles.css を編集し、ロゴを左端に安定配置。フッタの内側コンテナを左寄せに変更。ユーザーのスクリーンショットとフィードバックで微調整。
header-content ラッパーを導入し、ロゴをラッパー内に配置。model-name-display を stats 内へ移動。--page-vertical-padding を 0 に。ヘッダを左端基準に。フッタの .footer-inner を左端基準に。パネルボーダーを削除してフラット化。初期の「サイドバーに被らないようメインと揃える」方針がユーザー意図と食い違い混乱を招いた。次回からはレイアウト基準(左端基準 or サイドバー基準)を先に確認する運用に改善する。
06_ui_design_spec.md の「High-Contrast Minimalism」を完全に反映し、グラスモーフィズムからプロフェッショナルなソリッドデザインへ進化させるため。
main-panel.js で構文エラー。
UI は High-Contrast Minimalism でレイアウト・コンポーネント・UX を刷新。バックエンドは FTS5/Trigram と BM25 を導入し、Vector と BM25 の Max を取るハイブリッド検索を search_text に実装。フッタ・メタ情報を整理し、バージョンとコピーライトをサイドバーに集約。
ビジュアルに留まらず検索アルゴリズムを強化し、BM25 により Elasticsearch 級のキーワード検索をローカルで実現。UI は「道具としての美しさ」と操作性が融合した。
Qwen 等の LLM から MCP で search_text を実行した際に Tool call failed が発生する問題に対応するため。
content に返しており、MCP 仕様({type: "text", text: "..."} 形式)に準拠していなかった。isError: true を含む標準形式に統一。空 content の事前チェックを追加。mcp 内の全ツールの応答を MCP 仕様に適合させ、search_text は to_string_pretty でデコードし { type: "text", text: "..." } の配列で返却。旧 UI 用 lsa_search を search_text に統合・整理。
配列の直接返却がプロトコルレベルで拒絶されていた原因を解消し、多様な LLM から一貫して TelosDB 検索を利用可能にした。エラーハンドリングの標準化で不測時も LLM が状況を正しく伝えられるようになった。
src/backend/src/mcp.rs が 1100 行超・ネスト 13 階層となり、コード品質基準(600 行以内・7 階層以内)を大幅に超過していたため。
mcp.rs を src/backend/src/mcp/ 配下の複数モジュールに分割した。
AppState、JSON-RPC 構造体。JapaneseTokenizer::new() の Result 処理漏れでビルドエラー → unwrap() を追加。initialize ハンドラを mod.rs に復旧。127.0.0.1 に戻し、SSE セッション時は SSE ストリーム経由でレスポンスを返すよう復元。spawn_blocking に移譲し、起動時のレスポンス低下と初期化タイムアウトを防止。similarity 未定義時に toFixed で落ちる問題を修正。MCP 準拠の JSON 文字列レスポンスのパースを改善。JsonRpcResponse で null をシリアライズしないよう修正。session_id と sessionId のエイリアスをサポート。mcp/ ディレクトリ作成、機能ごとのファイル分割、mcp.rs 削除と lib.rs の参照を mcp/mod.rs に変更。cargo check、count_loc.cjs・nesting_depth.cjs で品質基準を確認。
graph TD
A[lib.rs] --> B[mcp/mod.rs]
B --> C[mcp/handlers.rs]
B --> D[mcp/tools/mod.rs]
B --> E[mcp/system.rs]
D --> F[mcp/tools/items.rs]
D --> G[mcp/tools/search.rs]
D --> H[mcp/tools/system.rs]
F -.-> I[AppState / types.rs]
G -.-> I
H -.-> I