All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- FTS5 技能全文搜索 (Schema v35) —
skills_fts虚拟表 + 触发器,search_skills_text()使用 BM25 排序(name=1.0, desc=0.8, tags=0.4, category=0.2),LIKE 降级 fallback - 可插拔外部技能源 (Schema v36) —
SkillSourcetrait +GitHubSource/LocalFileSource,sync_sources/sync_log审计表,devkit_skill_syncMCP 工具(Beta tier),devbase skill importCLI 子命令 - Vault 多根目录 + symlink 跟随 —
VaultConfig(roots + follow_symlinks),多根目录扫描scan_vault_with_options,resolve_vault_write_path实体回溯路径解析,devbase vault syncCLI - Ontology 导入 —
devkit_ontology_importMCP 工具(Beta tier),devbase ontologyCLI(--dry-run预览),支持 OpenClaw workspaceontology/entities/*.json+ontology/relations/*.jsonl批量导入 - MCP 工具数: 69 → 71(5 stable / 58 beta / 8 experimental)
devkit_document_convert— Experimental tier MCP tool,PDF/PPTX → Markdown 转换(pdftotext/python-pptx流水线),含 frontmatter 质量标注- Vault Tantivy 全文搜索 —
devkit_vault_search优先使用 BM25(search_vault_at),空结果/失败时回退到内存扫描;run_index_with_progress在索引仓库时同步reindex_vault_with_writer写入同一 Tantivy 段 - Criterion vault benchmark 基线 — 新增
benches/vault_bench.rs(reindex_vault50/200 笔记,search_vault单/多关键词 50/200 笔记),保存 baselinev0.20.1 - 跨客户端 Skill Sync 基础设施 —
SkillSyncAdaptertrait +ClarityJsonAdapter/KimiCliAdapter/ClaudeCodeAdapter/CodexAdapter/ClawAdapter;devbase skill sync <OUTPUT_DIR> --target <TARGET>...支持all同时输出 clarity/kimicli/claude-code/codex/claw 格式 - Stable 工具 invocation 测试补全:
devkit_query_repos、devkit_vault_search(覆盖 Tantivy 路径)、devkit_vault_read、devkit_status、devkit_workflow_list、devkit_index seed_repo()轻量测试 helper(仅插入entities表,无副作用)- 新增 Vault 集成记录:
workspace/vault/99-Meta/skillopt-devbase-integration.md
mcp/tools/document_convert.rs原始字符串定界符修复(r###"避免与 Python f-string"##冲突)cleanup_extracted_text单元测试期望值与实现语义对齐(保留最多 2 个连续空行)skill import在 async runtime 中调用tokio::block_on导致的嵌套 runtime panic:改为std::thread::spawn+ 新建tokio::runtime::Runtime执行SkillSource::fetch()
- Workspace crate 架构重组 — 消除机械提取造成的微 crate 碎片
- 合并 8 个
devbase-registry-*微 crate(100–300 行/个)为统一devbase-registry,含 8 个语义子模块(entity,health,metrics,relation,call_graph,code_symbols,dead_code,workspace) - 拆分 10+ 个 monolithic
lib.rs为域驱动子模块:devbase-embedding(candle/ollama),devbase-workflow-model(definition/execution/step_type),devbase-symbol-links(similarity/co_located),devbase-sync-protocol(index/version_vector),devbase-skill-runtime-types(skill_type/execution/params),devbase-skill-runtime-parser(frontmatter/field_parsers),devbase-workflow-interpolate(resolver),devbase-vault-frontmatter(parser),devbase-vault-wikilink(parser),devbase-core-types(node_type/node/edge) - 全 workspace
Cargo.toml统一使用[workspace.package]继承(version,edition,authors,license,repository)
- 合并 8 个
KNOWN_ISSUES.md更新:document_convert 从 P3 债务移至已解决归档;测试计数 485→494docs/reference/mcp-tools.md修正为 69 个工具,补充 Index / Workflow / Relation / KnownLimit / Session 分类docs/reference/stable-tools/README.md修正为 5 个 Stable 工具(删除过时的project_brief.md/hybrid_search.md/session_recall.md)
0.20.1 - 2026-05-17
- Phase 1 Production Hardening
- Workflow E2E 测试 —
src/mcp/tools/workflow.rs:DAG 成功执行、失败传播验证 - RF-7 路径隐私脱敏 —
sanitize_path()自动掩码 home 目录为~ - Tantivy 一致性修复 —
repair_tantivy_consistency_at()启动时自动检测 orphan/missing 文档 - 性能回归基线 —
test_keyword_search_latency_regression_1k/_10k(profile-aware 阈值) TempStorageBackend— 测试隔离后端,消除DEVBASE_DATA_DIR竞态
- Workflow E2E 测试 —
- Architecture Invariants CI 自动化 —
scripts/invariant-checks/run-checks.ps1- G5 (RF-6):diff-only 检测新增生产代码
unwrap/expect/panic(排除#[cfg(test)]) - T11:
mcp/tools禁止直接调用rusqlite::Connection - T12:
tui/render纯消费检查(禁止写入操作)
- G5 (RF-6):diff-only 检测新增生产代码
AppContext::with_storage()使用实际 storage backend 的index_path()而非硬编码默认值- G5 invariant checker 正则修复:
tests.rs文件正确跳过 Cargo.lock同步版本 bump(修复--lockedrelease 构建失败)- 平台相关测试隔离:
C:\路径断言加#[cfg(windows)],Linuxpython3断言适配 - HuggingFace 网络依赖测试加
#[ignore](避免 CI TLS 证书失败)
0.20.0 - 2026-05-16
- 知识完备性:Vault 双向链接图遍历(BFS depth 1-3)+
[[note#heading]]block 引用 - Vault 笔记历史追踪 — Git-based blob diff,
devkit_vault_historytool - 混合检索质量监控 —
HybridSearchMetrics(latency/recall/overlap/keyword_source) - 性能回归基线 — Criterion benchmarks:
index_repo_full、cosine_similarity、extract_symbols - 客户端无关原则 —
StorageBackendtrait 完整实现,解耦dirs::data_local_dir()硬编码 - MCP Tools +4 (68 total)
devkit_vault_history,devkit_vault_export,devkit_vault_graph,devkit_vault_daily
- 20+ 独立 crate 零循环依赖,workspace 拆分完成
entities表成为唯一真相源,repos表彻底删除- Tantivy / SQLite 补偿扫描:启动时自动同步 orphan 文档
0.19.0 - 2026-05-14
- SQLite WAL 模式 —
r2d2连接池 + WAL journal,并发安全与增量备份 - Tantivy 健康评分 —
devkit_index_health:损坏检测、自动重建、孤儿文档清理 - Vault 导出 —
devkit_vault_export:Obsidian-compatible Markdown 批量导出 - Redis ADR 决策 —
docs/architecture/adr-003-redis.md:评估后决定保持 SQLite 优先 - OpLog 审计追踪 — 结构化事件类型
OplogEventType,全操作不可变日志
- Schema 迁移前自动生成
backup-YYYYMMDD-HHMMSS.db快照 - 索引层反向一致性扫描与自动修复能力
0.18.0 - 2026-05-13
- ClaudeCode 工作流集成 —
docs/RFC/claudecode-workflow-integration.mddevkit_project_brief— 生成项目 Markdown 简报(架构 + 模块 + 近期提交 + 已知约束),用于.claude/CLAUDE.md注入devkit_impact_analysis— 符号级变更影响半径分析(BFS 调用图遍历 + 相关符号发现 + 测试启发式 + 历史 oplog)scripts/devbase-claude.ps1— PowerShell 一键启动器:自动检测 repo → 生成简报 → 注入.claude/CLAUDE.md→ 启动claude→ 可选捕获退出 diff
- Session 导入/导出工具
devkit_session_export— 导出会话为 Markdown / JSON;支持记忆类型图标与元数据devkit_session_import— 从 bulk text 批量导入记忆([type]前缀解析)
- MCP Tools +4 (64 total)
devkit_project_brief,devkit_impact_analysis,devkit_session_export,devkit_session_import
- TUI Session 视图硬化
- 三态 MainView 切换:
RepoList → VaultList → Session(Tab键循环) - Session 列表:状态图标(● active / ◌ archived)+ 高亮样式
- Session 详情:记忆类型图标(◆ decision / ▪ constraint / ★ discovery / ✗ error)+ embedding model 标签 + indexed 状态
- 三态 MainView 切换:
- AGENTS.md 同步至 v0.18.0-dev 基线(64 Tools / 437 tests)
src/mcp/mod.rsTool 注册表扩展至 64 工具(稳定 + Beta)src/mcp/tests.rs工具计数断言同步- TUI
render_session.rs/state/mod.rs适配 Schema v34 记忆字段(embedding_model,indexed_at)
- Agent Memory 向量存储 — Schema v34
agent_memories新增embedding BLOB,embedding_model TEXT,indexed_at DATETIME- Partial index
idx_agent_memories_embedding仅索引含向量的行 AgentMemory结构体扩展向量元数据字段
- SQLite UDF:
cosine_similarity—src/registry/agent_context.rs- 输入: 两个 little-endian f32 BLOB
- 输出: REAL ∈ [-1.0, 1.0]
- 注册时机:
WorkspaceRegistry::init_db_at迁移完成后自动注册
- 语义记忆搜索 —
search_memories_semantic(context_id, query_embedding, limit)- 纯 SQL
ORDER BY cosine_similarity(embedding, ?) DESC - 零 LLM 运行时依赖;仅执行向量比对
- 纯 SQL
- MCP Tools +2 (60 total)
devkit_session_recall— 外部向量查询 + 语义召回 top-k memoriesdevkit_session_index— 为已有 memory 注入外部生成 embedding
- Skill Runtime Auto-Recall —
src/skill_runtime/executor.rs- Tier 1: Semantic recall (本地 Candle/Ollama 或外部 HTTP endpoint)
- Tier 2: Keyword fallback (
LIKEsearch oncontent) - 新环境变量:
DEVBASE_CONTEXT_MEMORY_COUNT,DEVBASE_CONTEXT_RECALL_METHOD DEVBASE_CONTEXT_MEMORIES升级为 top-k 相关 memories(含score+model)
- 外部 Embedding Provider 集成
call_external_embedding_endpoint—reqwest::blockingPOST/api/embeddings- 配置驱动:
config.toml [embedding](enabled/provider/model/base_url/timeout) - 端到端测试: mock TCP server 验证 Ollama 格式解析 + 错误码处理
- RFC 文档 —
docs/RFC/agent-memory-vector-storage.md- 架构决策: devbase = 向量数据库层,不做 embedding 生成
- 参照 pgvector 边界设计
- Feature Flags:
embedding从default移除- Candle/Ollama 依赖变为 opt-in:
--features embedding - 默认构建零 ML 依赖,编译时间减少 30~50%
- Candle/Ollama 依赖变为 opt-in:
insert_memory签名扩展: 新增可选embedding: Option<&[f32]>和embedding_model: Option<&str>list_memories/search_memoriesSELECT 语句扩展为 8 列(兼容新增字段)- AGENTS.md 同步至 v0.17.0-dev 基线
- 默认构建不再包含
devbase-embeddingcrate;需要语义生成能力的用户须显式启用--features embedding generate_query_embedding在默认构建下返回错误(提示启用 feature 或配置外部 endpoint)
- Workflow-Session Binding — Schema v33
workflow_executions新增context_id列 + 索引create_execution自动绑定resolve_active_context()- MCP
devkit_workflow_run与 CLIworkflow run均支持自动绑定 devkit_session_workflowstool: 列出指定 context 的 workflow 执行历史
context_entity_links表 (Schema v32): context 与任意 entity 的多对多关联
- Agent Contexts (AI Agent OS) — Schema v31
agent_contexts表: 持久化 AI session / project scopeagent_memories表: 结构化记忆(decision/constraint/note/discovery/error)- 9 个 Session MCP tools: save/list/resume/attach/detach/activate/search/capture/workflows
resolve_active_context(): 环境变量DEVBASE_ACTIVE_CONTEXT→ 文件.active_contextfallback- Context-aware Skill Runtime: 注入
DEVBASE_ACTIVE_CONTEXT+DEVBASE_CONTEXT_MEMORIES+DEVBASE_CONTEXT_LINKS - 所有 agent_context 操作自动写入 OpLog (
OplogEventType::AgentContext)
- P1: Tantivy BM25 代码符号搜索 —
search/symbol_index.rs- 独立 Schema (
repo_id,name,signature,file_path,line_start) keyword_search_symbols主路径走 Tantivy BM25,SQLite LIKE 回退- 索引流程
index.rs自动同步写入 symbol_index StorageBackend扩展symbol_index_path()(6 实现)
- 独立 Schema (
- P3: Embedding 多后端 — Candle (默认) + Ollama (配置切换)
- 新增
OllamaProvider(ureqHTTP/api/embed) create_provider(backend, model, base_url, timeout)配置化创建generate_query_embedding通过OnceLock懒加载配置化 provider- 默认模型改为
all-minilm(384-dim,与 Candle 维度兼容)
- 新增
- P4: Health 环境检测扩展 —
EnvVersionCache从 5 工具 → 9 工具- 新增:
python,bun,zig,java get_tool_version支持 stderr fallback (Java 输出到 stderr)fmt_version改进: Java 引号提取、Docker/Python 格式处理
- 新增:
- P5: 架构不变量自动化 CI —
scripts/invariant-checks/run-checks.ps1- G5: diff-only 检测新增生产代码 unwrap/expect/panic(排除
#[cfg(test)]) - T11: 检测
mcp/tools/*直接调用rusqlite::Connection - T12: 检测
tui/render/*写入操作 - CI job
invariant-check加入.github/workflows/ci.yml
- G5: diff-only 检测新增生产代码 unwrap/expect/panic(排除
- P2 Phase 1: AppContext 职责拆分 — 6 个 Client trait impl 迁出
storage.rsscan.rs/health.rs/sync.rs/digest.rs/knowledge_engine/mod.rs/registry.rsstorage.rs860 → 430 行 (-50%)- 删除冗余
conn_mut()
- P2 Phase 2: 内联 SQL 下沉 — 新增
registry/code_symbols.rs+registry/dead_code.rsCodeSymbolRow/DeadCodeRow+ 纯函数查询 (12 个单元测试)RegistryClient退化为纯代理层
EmbeddingConfig默认模型nomic-embed-text→all-minilm(384-dim)- AGENTS.md 阶段描述更新: v0.14.3 → v0.15.0 推进中 → v0.15.0 全部完成
- TTL 缓存负值 bug (
97172ec):elapsed < ttl_seconds→elapsed >= 0 && elapsed < ttl_seconds- 防止系统时间回溯导致缓存永不过期
crates/devbase-embedding/src/lib.rs遗留 unwrap 清零 (encode_with_candle→ok_or)
- Schema v30 —
code_symbols.attributes列,tree-sitter 提取#[test]/#[tokio::test]等属性devkit_dead_code自动过滤测试函数,消除假阳性rust_node_to_symbol支持prev_sibling()回溯收集属性节点
- Tantivy/SQLite 补偿扫描 — 启动时自动检测并清理 orphan 文档
- 新增
search::sync_index_to_db(conn),对比 Tantivylist_indexed_repo_ids()与 SQLiteentities AppContext初始化后自动调用,失败仅 warn 不阻塞启动
- 新增
- Feature flags —
mcp+embedding,支持--no-default-features最小化编译default = ["tui", "mcp", "embedding"]devbase-embedding设为optional = true- 新增
src/clients.rs提取 MCP client traits,避免 mcp feature 关闭时 trait 不可用
- Kimi CLI MCP 集成文档 — AGENTS.md 新增 Kimi CLI 集成状态,项目级 skill 位于
.kimi/skills/devbase-project/
- RF-1 架构红线 —
init_db()全局路径残留清零init_db()标记#[deprecated],新增init_db_with(backend: &dyn StorageBackend)workflow/executor.rs、workflow/state.rs、storage.rs全部改为注入式examples/+benches/中额外 5 处残留同步修复
index_repo_full合并用户scan.exclude_patterns与默认排除模式cargo fmt+cargo clippy --fix全量格式化(8 文件,6 处 warning 修复)CONTRIBUTING.md新增 sccache 构建加速指南
cargo clippy --all-targets -D warnings— 7 warnings → 0cargo fmt --check— 全量通过
- health dirty 检测修复(排除 ignored 文件)
- scan 路径规范化 + syncthing-rust 识别修复
- experiment_log / CodeMetrics / ModuleGraph / CallGraph / DeadCode 提升为 Beta tier
- 48 tools: Stable 5 / Beta 40 / Experimental 3
- CLI JSON 输出补全 (
--json/--recalc) - relations MCP 工具加固
- License headers 全量补录
- Vault Daily / Vault Graph MCP tools
- Workspace 拆分:6 个零耦合 crate 提取
- MCP trait 化:
mcp/tools/repo.rscrate::引用 68→41
- Registry God Object 拆解:10 子模块提取为 free function
WorkspaceRegistry退化为纯 facade
- Schema v22 — drop
vault_notes,papers,workflowsorphan tables;entitiesbecomes sole source of truth for all entity types - Managed-Gate Fail-Safe Defaults —
devbase syncdefaults to managed repos only- Management tags:
mirror,reference,third-party,collaborative,team,own-project,tool,active,managed - Untagged / non-management repos are registered but skipped by default sync
--filter-tagsbypasses the gate for explicit selection
- Management tags:
.devbase-ignore— directory-level opt-out exclusion during scanscan --registerno longer auto-tags repos with"discovered"- i18n hint for unmanaged repos
inspect_repo: remove"discovered"from default tags;-main/-masterrepos keepzip-snapshot+needs-migrationcollect_tasks: default mode filters by management tags- All
list_workflows/list_papers/list_vault_notesqueries migrated toentitiestable +json_extract - Generic
upsert_entityabstraction for entity dual-write ENTITY_TYPE_*constants extracted across 10 files (~25 replacements)cargo test --lib: 374 → 379 passed
- Existing repos tagged
"discovered"are no longer synced by default.
Usedevbase tag <repo> managed(or any management tag) to opt a repo into automatic sync.
- L3 Risk Layer MVP —
known_limits表 + Registry CRUD + MCP tools + CLI subcommand- Schema v18:
known_limits表(id, category, description, source, severity, first_seen_at, last_checked_at, mitigated) - Registry CRUD:
save/get/list/delete/resolve/seed_hard_vetoes - MCP tools:
devkit_known_limit_store/devkit_known_limit_list(Beta tier) - CLI:
devbase limit {add,list,resolve,delete,seed} - OpLog 集成: create/update/resolve/delete/seed 自动写入 oplog(event_type =
KnownLimit) - Hard Veto 种子: AGENTS.md 中的 5 条硬约束自动填充
- Schema v18:
- L4 元认知层 MVP —
knowledge_meta表 + L3-L4 联动- Schema v19:
knowledge_meta表(id, target_level, target_id, correction_type, correction_json, confidence, created_at) - Registry CRUD:
save/get/list/delete - CLI 联动:
devbase limit resolve <id> --reason "..."自动创建 L4 meta 记录
- Schema v19:
- Hard Veto 运行时守卫 — Skill 执行前自动检查未解决 hard veto
skill_runtime::executor::run_skill执行前查询known_limits- 未解决 hard veto 存在时,警告注入
stderr,同时写入 OpLog - 零破坏性:skill 仍执行成功,但输出中包含
[HARD-VETO-WARNING]
cargo test --all-targets: 279 → 288 passed- MCP tool 总数: 35 → 37
- Phase 1 主从表切换 — Stage 3 完成(
repos表删除)save_repo/update_repo_*/run_clean不再写入repos- Schema v21 迁移:重建 11 个子表(去 FK)→ 删除
repos表 test_helpers.rsSCHEMA_DDL 同步去repos+ 去 FKentities成为真正的读写唯一数据源
- Phase 1 主从表切换 — Stage 2 完成(读路径迁移)
list_repos/list_repos_stale_health/list_repos_need_index/list_workspaces_by_tier全部改为从entities读取(json_extract)digest.rs/health.rs/daemon.rs/backup.rs/knowledge_engine.rs/sync/*.rs/tui/state.rs/mcp/tools/repo.rs等所有list_repos()调用方自动迁移- 直接 SQL 查询迁移:
dependency_graph.rs,registry/links.rs,registry/knowledge.rs,query.rs,oplog_analytics.rs,commands/simple.rs update_entity_metadata_field修复json_set字符串引号问题:原始字符串直接传递,"null"时自动json_removerepo_tags/repo_remotes子表保留,通过repo_idJOIN 读取(FK 仍指向repos)
- Phase 1 主从表切换 — Stage 0 完成(entities 第一公民前置)
- Schema v20: Flat ID 命名空间迁移(
repo:devbase→devbase,skill:xxx→xxx) sync_repo_to_entities_by_id重构为upsert_entity_for_repo:直接由RepoEntry写入 entities,不再读取 reposupdate_repo_*改为先写 entities metadata(json_set),再写 repossave_repo写入顺序反转:entities → repos → repo_tags → repo_remotesrun_tag补全 entities 双写:sync_repo_tags_to_entityrun_clean改为先删 entities,再删 repos(保留 CASCADE 行为)- Skill entities 同步同理去除
skill:前缀
- Schema v20: Flat ID 命名空间迁移(
- AppContext Pool 化 — 全链路数据库连接池统一
AppContext持r2d2::Pool<SqliteConnectionManager>,替代单Connectionscan/health/sync/backup/daemon/query等深层模块全部迁移init_db()调用点从 89 处降至 5 处合法保留(Pool 前 schema 引导 ×2、migrate 定义 ×1、workflow 测试辅助 ×2)- 根治
spawn_blocking/thread::spawn闭包无法传递裸Connection的问题
- MCP 测试隔离 — 全部 MCP 集成测试改用临时目录
DEVBASE_DATA_DIR指向tempfile::TempDir+AppContext::with_defaults()- 多线程并发测试全部通过,无 flaky
- Search 测试竞态自愈 —
SEARCH_TEST_LOCK+ 临时目录隔离,多线程 (--test-threads=4) 稳定通过
cargo test --all-targets: 288 → 374 passed(+86 个新增/迁移测试)- CI 测试并行度:
--test-threads=1→--test-threads=4,回归测试耗时 ~13s → ~4s rusqlite0.34 +r2d2_sqlite0.27.0 版本锁定
- Workflow Loop Step 完整执行 — 5 种 step 类型全部可执行
StepType::Loop { for_each, body }:遍历集合,执行 body 子步骤- 变量插值:
${loop.item}/${loop.index} - 结果聚合:stdout 按迭代索引标记,outputs 合并
- 失败处理:单迭代失败按 body step 的
on_error策略处理
- 12 个新增单元测试 — model/interpolate/validator/executor 全覆盖
cargo test --all-targets:267 → 279 passed
- Workflow 子类型执行 — Subworkflow / Parallel / Condition 全部可执行
execute_subworkflow_step:递归调用execute_workflowexecute_parallel_step:子步骤串行执行 + 结果聚合execute_condition_step:字符串插值后 true/false 评估
- NLQ 自然语言查询结果可执行 — TUI
[:]搜索结果按 Enter 直接运行 skill - NLQ smoke test —
run_nlp_selected_skill空列表/无技能/执行管道测试 - TUI SkillPanel 拆分 —
SkillPanelState提取 7 个字段,App 51→44 字段
- 29 个生产代码 unwrap 全部清零
- 30 个 clippy 警告清零
- NLQ 自然语言查询 — TUI
[:]触发 embedding 语义搜索,fallback 降级文本搜索 - 智能同步建议 —
sync/policy.rs::recommend_sync_action基于 safety/ahead/behind 生成建议
- Mind Market 评分系统 —
skill_runtime::scoringsuccess_rate+usage_count+rating(0-5 分公式)- CLI:
skill recalc-scores/skill top/skill recommend
- TUI Workflow 执行 —
[w]详情页r/Enter运行 + 结果弹窗
- Workflow Engine v0.5.0 — YAML 编排多步骤自动化
- 5 种 step 类型:skill / subworkflow / parallel / condition / loop
- 拓扑调度(Kahn 算法)+ batch 并行执行
- 变量插值:
${inputs.x}/${steps.y.outputs.z} - 错误策略:Fail / Continue / Retry / Fallback
- Schema v17:
workflows+workflow_executions表
- CLI/TUI Workflow 集成 —
devbase workflow {list,show,register,run,delete}+[w]面板
- Schema v16 统一实体模型 —
entity_types+entities+relations表,渐进双写 - Skill 自动封装 —
devbase skill discover <path>自动分析项目 CLI/API,生成 SKILL.md - Git URL Discover —
devbase skill discover https://github.com/...克隆+分析+注册 - MCP
devkit_skill_discover— 35 tools 总数
- 34 MCP tools 全量通过 MCP Inspector
- README Quick Start 三步内跑通
- CI/CD —
.github/workflows/ci.yml(check / test / fmt / clippy on Windows) - GitHub Release 预编译二进制
- Outboard Brain Embedding Architecture — Embedding generation moved to external Skill/MCP Server
embedding.rsstripped of Ollama/OpenAI generation logic; storage protocol only (embedding_to_bytes,bytes_to_embedding,cosine_similarity)knowledge_engine.rsno longer generates embeddings during indexing- Aligns with "store + search in devbase, compute in Clarity/Skill" boundary
- Breaking —
devkit_semantic_searchnow acceptsquery_embedding: number[]instead ofquery: string- Embedding generation is the caller's responsibility (external MCP Server or Skill)
- Removed
config.embedding.enabledgate; search works as long as embeddings exist in DB
devkit_embedding_store— Store externally-generated embedding vectors into SQLite- Parameters:
repo_id,symbol_name,embedding: number[] - Upsert semantics (ON CONFLICT UPDATE)
- Parameters:
devkit_embedding_search— Alias fordevkit_semantic_searchwith vector-based interface- Same parameters and behavior, alternative name for workflow clarity
- MCP tool count: 25 → 31
devkit_hybrid_search— Hybrid vector + keyword search via RRF merge (Beta)search::hybrid.rs:rrf_merge()(Reciprocal Rank Fusion, k=60),keyword_search_symbols()(SQLite LIKE on name/signature),hybrid_search_symbols()(auto-fallback to keyword when embedding missing)registry::knowledge::hybrid_search_symbols()wrapper- Recommended default search tool for code concept discovery
devkit_cross_repo_search— Cross-repository symbol search filtered by tags (Beta)registry::knowledge::cross_repo_search_symbols(): INTERSECT-based tag filtering (AND semantics), per-repo hybrid search, global dedup+sort- Searches all repos matching ALL specified tags
devkit_knowledge_report— Workspace knowledge coverage report (Beta)src/oplog_analytics.rs:generate_report()with table-existence guards for resilient querying- Reports: repo_count, total_symbols, total_embeddings, total_calls, coverage_pct, per-repo breakdown, health_summary, recent_activity
devkit_related_symbols— Explicit symbol-to-symbol knowledge links (Experimental)- Schema v13:
code_symbol_linkstable (source_repo, source_symbol, target_repo, target_symbol, link_type, strength) src/symbol_links.rs:compute_similar_signature_links()(Jaccard token overlap),compute_co_located_links()(same-file clustering)generate_and_save_links(): persists links with ON CONFLICT IGNORE upsert
- Schema v13:
- External Embedding Provider — Reference Python implementation in
examples/embedding-provider/index.py: Ollama/api/embeddingsclient, batch generation, cross-platform registry DB path- Byte-compatible f32 little-endian serialization via
struct.pack - CLI:
--repo-id,--model,--ollama-url,--batch-size,--force
- Schema v13 —
code_symbol_linkstable for explicit conceptual relationships
- Context Safety Mechanism — Formalized as long-term architecture principle
- Sub-agent execution: serial + commit-isolated work directories (prevents compilation races)
- MCP tool idempotency: all state-mutating tools use ON CONFLICT UPDATE / transaction boundaries
- OpLog as immutable audit trail for all state transitions
- Semantic Vector Search (Wave 1) — Cosine-similarity code symbol search
code_embeddingstable (Schema v11):repo_id + symbol_namePK, BLOB embedding,generated_atembedding.rs: Ollama/OpenAI-compatible generation +cosine_similarity+ byte serializationdevkit_semantic_searchMCP tool (Beta): natural-language → embedding → top-K symbols
- Multi-Language Symbol Extraction (Wave 2) — tree-sitter AST parsing beyond Rust
tree-sitter-python,tree-sitter-typescript,tree-sitter-godependenciesSymbolTypeexpanded: Function, Struct, Enum, Trait, Impl, Module, Class, Interface, TypeAlias, Constant, Static- Per-language call-target resolvers for Call Graph construction
- Languages supported: Rust, Python, JavaScript, TypeScript, Go
- Call Graph Analysis — Intra-repo function call relationship extraction
code_call_graphtable (Schema v10): caller → callee edges with line numbersdevkit_call_graphMCP tool: "Who callsregister_tool?"
- Cross-Repo Dependency Graph expansion
CMakeLists.txtparsing:find_package,add_subdirectory,FetchContent_Declare,target_link_librariesManifestKind::CMakeadded to dependency graph builder
- Dead Code Detection —
devkit_dead_codeMCP tool (Experimental)- SQL
NOT EXISTSquery over call graph to find functions with zero incoming edges LIKE 'pub%fn%'heuristic to exclude non-public functions
- SQL
- arXiv Integration — Pure string-parsing Atom XML fetcher (zero heavy XML deps)
arxiv.rs:PaperMetadatawith title/authors/summary/published/categorydevkit_arxiv_fetchMCP tool (Beta): fetch by arXiv ID
- Performance Benchmarks — Criterion suite (
benches/semantic_index.rs)index_repo_full(small/medium/full parameterization)cosine_similarity(128/512/768 dims)extract_symbols(Rust/Python/Go comparison)parse_cmake_lists(CMake parsing)
- Structured OpLog (Schema v12) — Typed event system
OplogEventTypeenum replacing free-textoperationfield- JSON metadata +
duration_msfor observability - Migration:
CASEmapping from legacy strings to enum variants
scanasync panic —fetch_github_starsnow runs instd::thread::spawnisolation- Prevents
reqwest::blocking::Clientdrop inside tokio runtime from causing panic block_on_async()helper detects runtime context and usesmpscor temporary runtime
- Prevents
- Dead code false positives —
pub fn→pub%fn%SQL LIKE match coverspub async fn/pub(crate) fn/pub unsafe fn- Excludes
main()from dead code results
- Excludes
- Clippy warnings — 12+ lints resolved (
manual_strip,collapsible_if,FromStr,type_complexity,useless_format, etc.)
nl_filter_repos— Now uses Tantivy full-text search as primary path- Falls back to structured SQL filtering when Tantivy is unavailable
- Vault Backlinks — Find notes that link to a given note
vault::backlinks:<note_id>query prefix- TUI detail panel shows "被引用" section with backlink count and list
- MCP tool
devkit_vault_backlinks— AI can discover note relationships vault/backlinks.rswithbuild_backlink_index()andget_backlinks()
- Schema v8 —
vault_notestable no longer hascontentcolumn- Migration: auto-creates
vault_notes_v2, migrates data, drops old table save_vault_note/list_vault_notesSQL updated to 8 columns- Filesystem-first architecture now complete at the database level
- Migration: auto-creates
- Vault Watch — Filesystem watcher for
workspace/vault/- Auto-refresh TUI vault list when notes are edited externally
- 500ms debounce to avoid excessive reloads
- Vault Tantivy Search —
vault:queries now use Tantivy full-text index- Replaces slow SQLite LIKE + per-file reading
- Supports keyword scoring and ranking
- MCP Registry Manifest —
server.jsonfor official MCP Registry submission
query.rsvault branch: usessearch_vault()instead of in-memory filtering
- Vault System — Markdown note management with Obsidian-compatible PARA structure
vault/directory with PARA folders: 00-Inbox, 01-Projects, 02-Areas, 03-Resources, 04-Archives, 99-Meta- Filesystem-first architecture: note content lives in
.mdfiles, SQLite only indexes metadata - YAML frontmatter parsing (title, tags, aliases, date)
- WikiLink
[[...]]extraction and backlink index building
- TUI Vault View — Press
Tabto switch between Repo list and Vault note list- Vault list shows note titles with tag indicators
- Detail panel previews note content (first 20 lines), tags, and outgoing links
Enteropens selected note in VS Code
- MCP Vault Tools — 3 new tools for AI Agent vault interaction
devkit_vault_search— full-text search across vault notesdevkit_vault_read— read note content and frontmatter by pathdevkit_vault_write— write or append to vault notes
- P2-lite: repos.toml — Optional static configuration override for repositories
- Declare tags, tier, and workspace_type in
workspace/repos.toml - Overrides are applied on top of auto-discovered repo metadata
- Declare tags, tier, and workspace_type in
- Unified Node Model —
core::node::{Node, NodeType, Edge}abstractionNodeType::GitRepo | VaultNote | Asset | ExternalLink- Foundation for future Knowledge Graph unification
- Workspace Directory —
%LOCALAPPDATA%/devbase/workspace/withvault/andassets/ - MCP Client Config —
mcp.jsonfor Claude Desktop / Cursor integration
- Architecture principle: File system = source of truth; SQLite/Tantivy = derived index/cache
- Vault notes no longer store
contentin SQLite (read from disk on demand)
0.1.0 - 2026-04-20
- TUI Dashboard — Terminal UI for multi-repository workspace management
- Repository list with status icons, stars, and tag indicators
- Detail panel with Overview / Health / Insights tabs
- Stars Trend sparkline (30-day history)
- Help Overlay with categorized keyboard shortcuts
- Responsive layout: compact / standard / wide screen modes
- Cross-repository code search (ripgrep + Tantivy dual mode)
- One-key launch into gitui / lazygit
- MCP Server — 14 tools for AI Agent integration (stdio transport)
devkit_scan,devkit_health,devkit_sync,devkit_query_reposdevkit_code_metrics,devkit_module_graph,devkit_natural_language_querydevkit_index,devkit_query,devkit_note,devkit_digestdevkit_github_info,devkit_paper_index,devkit_experiment_log
- Safe Sync Engine — Four-tier sync policies: Mirror / Conservative / Rebase / Merge
- Pre-sync safety assessment (dirty, diverged, detached HEAD detection)
- Dry-run preview with per-repo recommendations
- Async batch sync with concurrency control and timeout
- Registry & Indexing — SQLite-backed workspace registry
- Automatic Git + non-Git workspace discovery
- Schema migrations with automatic backup snapshots
- GitHub Stars cache with TTL and historical tracking
- Tantivy full-text index for repository knowledge search
- Health Monitoring — Workspace-wide health checks
- Git status tracking (dirty / ahead / behind / diverged)
- Blake3 hash snapshots for non-Git workspaces
- Environment tool version detection
- i18n — Chinese and English bilingual support
- CI/CD — GitHub Actions workflow for check, test, fmt, clippy on Windows
- Modular architecture: 22 crates modules with clear separation of concerns
- Dual lib+bin mode:
lib.rsexports all modules for programmatic use - Theme system with semantic color tokens (dark/light ready)
- Render layer split from monolithic 1026-line file into 6 focused submodules
cargo auditclean (0 vulnerabilities in direct dependencies)