| Crates.io | miyabi-knowledge |
| lib.rs | miyabi-knowledge |
| version | 0.1.2 |
| created_at | 2025-11-03 13:50:28.534482+00 |
| updated_at | 2025-11-22 06:58:41.310501+00 |
| description | Knowledge management system for Miyabi - Vector database, embeddings, and search |
| homepage | |
| repository | https://github.com/ShunsukeHayashi/Miyabi |
| max_upload_size | |
| id | 1914667 |
| size | 420,670 |
Knowledge management system for Miyabi - Vector database, embeddings, and search
Miyabiの実行履歴(ログファイル、成果物、Agent実行情報、ツール使用状況)をベクトルデータベース化し、ナレッジ検索可能な状態にします。
.ai/logs/, Worktree実行ログ、LDDLogを自動収集miyabi knowledge コマンド(計画中)[dependencies]
miyabi-knowledge = { version = "1.0.0", path = "../miyabi-knowledge" }
use miyabi_knowledge::{KnowledgeManager, KnowledgeConfig};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// 設定ロード
let config = KnowledgeConfig::default();
// マネージャー初期化
let manager = KnowledgeManager::new(config).await?;
// ログ収集
let entries = manager.collect(".ai/logs").await?;
println!("Collected {} entries", entries.len());
// インデックス化
let stats = manager.index_batch(&entries).await?;
println!("Indexed {} entries", stats.total);
// 検索
let results = manager.search("cargo build エラー").await?;
for result in results {
println!("Score: {:.2}, Content: {}", result.score, result.content);
}
Ok(())
}
miyabi-agents (実行)
↓ ログ出力
.ai/logs/ (ログファイル)
↓ 収集
KnowledgeCollector (構造化)
↓ ベクトル化
KnowledgeIndexer (Qdrant挿入)
↓ 検索
KnowledgeSearcher (類似性検索)
↓ 結果
ユーザー
use miyabi_knowledge::{LogCollector, KnowledgeConfig};
let config = KnowledgeConfig::default();
let collector = LogCollector::new(config)?;
// ディレクトリから収集
let entries = collector.collect(".ai/logs").await?;
// Worktreeから収集
let entries = collector.collect_worktree("issue-270").await?;
// Agentから収集
let entries = collector.collect_agent("CodeGenAgent").await?;
use miyabi_knowledge::{QdrantIndexer, KnowledgeConfig};
let config = KnowledgeConfig::default();
let indexer = QdrantIndexer::new(config).await?;
// 単一エントリをインデックス化
let id = indexer.index(&entry).await?;
// バッチインデックス化
let stats = indexer.index_batch(&entries).await?;
println!("Success: {}, Failed: {}", stats.success, stats.failed);
// ワークスペース全体をインデックス化
let stats = indexer.index_workspace("miyabi-private").await?;
use miyabi_knowledge::{QdrantSearcher, SearchFilter, KnowledgeConfig};
let config = KnowledgeConfig::default();
let searcher = QdrantSearcher::new(config).await?;
// 基本検索
let results = searcher.search("Rust lifetime エラー").await?;
// フィルタ付き検索
let filter = SearchFilter::new()
.with_agent("CodeGenAgent")
.with_task_type("feature");
let results = searcher.search_filtered("認証機能の実装", filter).await?;
// 類似エントリ検索
let results = searcher.find_similar(&entry_id, 5).await?;
.miyabi.yml:
knowledge:
vector_db:
type: "qdrant"
host: "localhost"
port: 6333
collection: "miyabi-knowledge"
embeddings:
provider: "ollama"
model: "all-MiniLM-L6-v2"
dimension: 384
workspace:
name: "miyabi-private"
hierarchy: "project > worktree > agent"
collection:
log_dir: ".ai/logs"
worktree_dir: ".worktrees"
auto_index: true
batch_size: 100
search:
default_limit: 10
min_score: 0.7
# テスト実行
cargo test --package miyabi-knowledge
# 詳細出力
cargo test --package miyabi-knowledge -- --nocapture
# 特定のテスト実行
cargo test --package miyabi-knowledge test_collect_empty_directory
miyabi-knowledge includes a built-in web dashboard for knowledge base visualization, search, and statistics.
# Start Qdrant (required)
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
# Run the server
cargo run --package miyabi-knowledge --features server --bin miyabi-knowledge-server
# Or with custom port
PORT=3000 cargo run --package miyabi-knowledge --features server --bin miyabi-knowledge-server
Open your browser to: http://localhost:8080
q, agent, workspace, issue, task_type, outcome, limit# Search
curl "http://localhost:8080/api/search?q=cargo+build&limit=10"
# Get stats
curl http://localhost:8080/api/stats
# List agents
curl http://localhost:8080/api/agents
# Timeline
curl "http://localhost:8080/api/timeline?days=7"
miyabi knowledge command)The Potpie AI integration is now part of this crate as a submodule:
use miyabi_knowledge::potpie::{PotpieClient, PotpieConfig};
let config = PotpieConfig::default();
let client = PotpieClient::new(config)?;
// Use 8 Potpie tools: search_nodes, get_code_graph, detect_changes, etc.
let nodes = client.search_nodes("function", None).await?;
See potpie module documentation for details.
Apache-2.0
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Status: Phase 3 Implementation Complete ✅ → Phase 4 (Vectorization) Next 🚀