Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
dec5758
refactor(mcp): complete trait-ization of remaining MCP tool layer
juice094 May 11, 2026
4faeca5
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 11, 2026
8a36e72
refactor(knowledge_engine): extract Config load + prepare_repos, elim…
juice094 May 11, 2026
83663ba
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 11, 2026
a9bea88
perf(knowledge_engine): reuse Tantivy writer across daemon batch inde…
juice094 May 11, 2026
abe30c1
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 11, 2026
507fc44
docs: module rustdoc + ADR-004/005 + i18n dead_code clarification
juice094 May 11, 2026
d0d2297
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 11, 2026
a3fef4c
docs: update project facade files (README ecosystem)
juice094 May 11, 2026
8bea167
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 11, 2026
3b7446b
test(knowledge_engine): 补齐 index.rs 与 index_state.rs 单元测试
juice094 May 11, 2026
69eb364
chore: ignore coverage_report.txt
juice094 May 11, 2026
ed51994
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 11, 2026
195f648
ci: upgrade actions/checkout v4 → v6 (Node.js 24)
juice094 May 12, 2026
3c2f2a9
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 12, 2026
fabba96
test(vault): 补齐 indexer.rs 单元测试,修复 id field 分词导致删除失效
juice094 May 12, 2026
9bc8017
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 12, 2026
2d62826
test(semantic_index): 补齐 persist.rs 单元测试
juice094 May 12, 2026
a0fd872
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 12, 2026
122fcbf
test(discovery_engine): 补齐 package_json、go_mod、similar_projects 测试
juice094 May 12, 2026
3118425
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 12, 2026
55ed67e
chore(deps): patch upgrade assert_cmd/blake3/tantivy/tokio
juice094 May 12, 2026
e8d0fe4
docs: 对齐 README Tool 矩阵与实际代码(48 tools)
juice094 May 12, 2026
afee7c4
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 12, 2026
5b008d4
feat(mcp): add devkit_evaluate — AI self-evaluation tool (Claude Comp…
juice094 May 12, 2026
324e662
Merge branch 'main' of https://github.com/juice094/devbase
juice094 May 12, 2026
7e96947
feat(agent-contexts): v0.16.0 P1 — persistent AI sessions with typed …
juice094 May 12, 2026
60bb8ed
feat(agent-contexts): v0.16.0 P2/P2 — context-aware execution + memor…
juice094 May 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Skill Runtime 全生命周期已落地(含依赖管理 Schema v15),Schema
- **Workspace**:`%LOCALAPPDATA%\devbase\workspace/` —— 文件系统 = source of truth
- `vault/` —— PARA 结构:00-Inbox, 01-Projects, 02-Areas, 03-Resources, 04-Archives, 99-Meta
- `assets/` —— 二进制资源
- **MCP Server**:stdio only,**49 个 tools**(含 5 个 vault tools + 8 个代码分析工具 + 4 个 embedding/搜索工具 + 4 个 Skill Runtime tools + 3 个 Workflow/评分 tools + 1 个报告工具 + 1 个 arXiv 工具 + 2 个 KnownLimit tools + 3 个 Relation tools + 2 个 Agent 状态工具 + 1 个 streaming index 工具 + 1 个 oplog 工具);配置见 `mcp.json`
- **MCP Server**:stdio only,**57 个 tools**(含 5 个 vault tools + 8 个代码分析工具 + 4 个 embedding/搜索工具 + 4 个 Skill Runtime tools + 3 个 Workflow/评分 tools + 1 个报告工具 + 1 个 arXiv 工具 + 2 个 KnownLimit tools + 3 个 Relation tools + 2 个 Agent 状态工具 + 8 个 Agent Context tools + 1 个 streaming index 工具 + 1 个 oplog 工具);配置见 `mcp.json`
- **Kimi CLI 集成**:MCP server 已通过 `kimi mcp add` 注册,端到端验证通过(`kimi --print` 成功调用 `devkit_health`);项目级 skill 位于 `.kimi/skills/devbase-project/SKILL.md`
- **统一节点模型**:`core::node::{Node, NodeType, Edge}` —— GitRepo / VaultNote / Asset / ExternalLink
- **当前测试**:490+ workspace passed / 0 failed / 4 ignored(主 crate 390 + symbol-links 4 + sync-protocol 12 + core-types 3 + syncthing-client 2 + vault-frontmatter 5 + vault-wikilink 5 + workflow-interpolate 9 + workflow-model 2 + registry-health 3 + registry-metrics 4 + registry-workspace 5 + embedding 5 + skill-runtime-types 7 + skill-runtime-parser 3 + 其他 crates ~30);11/11 passed(integration `tests/cli.rs`)
Expand Down
3 changes: 3 additions & 0 deletions crates/devbase-registry-workspace/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ pub enum OplogEventType {
Index,
HealthCheck,
KnownLimit,
AgentContext,
}

impl OplogEventType {
Expand All @@ -28,6 +29,7 @@ impl OplogEventType {
OplogEventType::Index => "index",
OplogEventType::HealthCheck => "health_check",
OplogEventType::KnownLimit => "known_limit",
OplogEventType::AgentContext => "agent_context",
}
}
}
Expand All @@ -42,6 +44,7 @@ impl std::str::FromStr for OplogEventType {
"health_check" => Ok(OplogEventType::HealthCheck),
"health" => Ok(OplogEventType::HealthCheck),
"known_limit" => Ok(OplogEventType::KnownLimit),
"agent_context" => Ok(OplogEventType::AgentContext),
_ => Err(()),
}
}
Expand Down
48 changes: 48 additions & 0 deletions src/mcp/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,14 @@ pub enum McpToolEnum {
RelationStore(DevkitRelationStoreTool),
RelationQuery(DevkitRelationQueryTool),
RelationDelete(DevkitRelationDeleteTool),
SessionSave(DevkitSessionSaveTool),
SessionList(DevkitSessionListTool),
SessionResume(DevkitSessionResumeTool),
SessionAttach(DevkitSessionAttachTool),
SessionDetach(DevkitSessionDetachTool),
SessionActivate(DevkitSessionActivateTool),
SessionSearch(DevkitSessionSearchTool),
SessionCapture(DevkitSessionCaptureTool),
WorkflowList(DevkitWorkflowListTool),
WorkflowRun(DevkitWorkflowRunTool),
WorkflowStatus(DevkitWorkflowStatusTool),
Expand Down Expand Up @@ -177,6 +185,14 @@ impl McpToolEnum {
McpToolEnum::RelationStore(_) => ToolTier::Beta,
McpToolEnum::RelationQuery(_) => ToolTier::Beta,
McpToolEnum::RelationDelete(_) => ToolTier::Beta,
McpToolEnum::SessionSave(_) => ToolTier::Beta,
McpToolEnum::SessionList(_) => ToolTier::Beta,
McpToolEnum::SessionResume(_) => ToolTier::Beta,
McpToolEnum::SessionAttach(_) => ToolTier::Beta,
McpToolEnum::SessionDetach(_) => ToolTier::Beta,
McpToolEnum::SessionActivate(_) => ToolTier::Beta,
McpToolEnum::SessionSearch(_) => ToolTier::Beta,
McpToolEnum::SessionCapture(_) => ToolTier::Beta,
McpToolEnum::WorkflowList(_) => ToolTier::Beta,
McpToolEnum::WorkflowRun(_) => ToolTier::Beta,
McpToolEnum::WorkflowStatus(_) => ToolTier::Beta,
Expand Down Expand Up @@ -233,6 +249,14 @@ impl McpTool for McpToolEnum {
McpToolEnum::RelationStore(t) => t.name(),
McpToolEnum::RelationQuery(t) => t.name(),
McpToolEnum::RelationDelete(t) => t.name(),
McpToolEnum::SessionSave(t) => t.name(),
McpToolEnum::SessionList(t) => t.name(),
McpToolEnum::SessionResume(t) => t.name(),
McpToolEnum::SessionAttach(t) => t.name(),
McpToolEnum::SessionDetach(t) => t.name(),
McpToolEnum::SessionActivate(t) => t.name(),
McpToolEnum::SessionSearch(t) => t.name(),
McpToolEnum::SessionCapture(t) => t.name(),
McpToolEnum::WorkflowList(t) => t.name(),
McpToolEnum::WorkflowRun(t) => t.name(),
McpToolEnum::WorkflowStatus(t) => t.name(),
Expand Down Expand Up @@ -287,6 +311,14 @@ impl McpTool for McpToolEnum {
McpToolEnum::RelationStore(t) => t.schema(),
McpToolEnum::RelationQuery(t) => t.schema(),
McpToolEnum::RelationDelete(t) => t.schema(),
McpToolEnum::SessionSave(t) => t.schema(),
McpToolEnum::SessionList(t) => t.schema(),
McpToolEnum::SessionResume(t) => t.schema(),
McpToolEnum::SessionAttach(t) => t.schema(),
McpToolEnum::SessionDetach(t) => t.schema(),
McpToolEnum::SessionActivate(t) => t.schema(),
McpToolEnum::SessionSearch(t) => t.schema(),
McpToolEnum::SessionCapture(t) => t.schema(),
McpToolEnum::WorkflowList(t) => t.schema(),
McpToolEnum::WorkflowRun(t) => t.schema(),
McpToolEnum::WorkflowStatus(t) => t.schema(),
Expand Down Expand Up @@ -345,6 +377,14 @@ impl McpTool for McpToolEnum {
McpToolEnum::RelationStore(t) => t.invoke(args, ctx).await,
McpToolEnum::RelationQuery(t) => t.invoke(args, ctx).await,
McpToolEnum::RelationDelete(t) => t.invoke(args, ctx).await,
McpToolEnum::SessionSave(t) => t.invoke(args, ctx).await,
McpToolEnum::SessionList(t) => t.invoke(args, ctx).await,
McpToolEnum::SessionResume(t) => t.invoke(args, ctx).await,
McpToolEnum::SessionAttach(t) => t.invoke(args, ctx).await,
McpToolEnum::SessionDetach(t) => t.invoke(args, ctx).await,
McpToolEnum::SessionActivate(t) => t.invoke(args, ctx).await,
McpToolEnum::SessionSearch(t) => t.invoke(args, ctx).await,
McpToolEnum::SessionCapture(t) => t.invoke(args, ctx).await,
McpToolEnum::WorkflowList(t) => t.invoke(args, ctx).await,
McpToolEnum::WorkflowRun(t) => t.invoke(args, ctx).await,
McpToolEnum::WorkflowStatus(t) => t.invoke(args, ctx).await,
Expand Down Expand Up @@ -593,6 +633,14 @@ pub fn build_server_with_tiers(tiers: Option<&HashSet<ToolTier>>) -> McpServer {
McpToolEnum::RelationStore(DevkitRelationStoreTool),
McpToolEnum::RelationQuery(DevkitRelationQueryTool),
McpToolEnum::RelationDelete(DevkitRelationDeleteTool),
McpToolEnum::SessionSave(DevkitSessionSaveTool),
McpToolEnum::SessionList(DevkitSessionListTool),
McpToolEnum::SessionResume(DevkitSessionResumeTool),
McpToolEnum::SessionAttach(DevkitSessionAttachTool),
McpToolEnum::SessionDetach(DevkitSessionDetachTool),
McpToolEnum::SessionActivate(DevkitSessionActivateTool),
McpToolEnum::SessionSearch(DevkitSessionSearchTool),
McpToolEnum::SessionCapture(DevkitSessionCaptureTool),
McpToolEnum::WorkflowList(DevkitWorkflowListTool),
McpToolEnum::WorkflowRun(DevkitWorkflowRunTool),
McpToolEnum::WorkflowStatus(DevkitWorkflowStatusTool),
Expand Down
5 changes: 4 additions & 1 deletion src/mcp/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,11 @@ async fn test_tools_list() {
let (mut ctx, _tmp) = test_ctx();
let resp = server.handle_request(req, &mut ctx).await.unwrap();
let tools = resp.get("result").unwrap().get("tools").unwrap().as_array().unwrap();
assert_eq!(tools.len(), 49);
assert_eq!(tools.len(), 57);
let names: Vec<&str> = tools.iter().map(|t| t.get("name").unwrap().as_str().unwrap()).collect();
assert!(names.contains(&"devkit_session_save"));
assert!(names.contains(&"devkit_session_list"));
assert!(names.contains(&"devkit_session_resume"));
assert!(names.contains(&"devkit_evaluate"));
assert!(names.contains(&"devkit_scan"));
assert!(names.contains(&"devkit_health"));
Expand Down
10 changes: 10 additions & 0 deletions src/mcp/tools/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ pub mod oplog;
pub mod query;
pub mod relations;
pub mod repo;
pub mod session;
pub mod skill;
pub mod status;
pub mod vault;
Expand All @@ -23,6 +24,7 @@ pub use oplog::*;
pub use query::*;
pub use relations::*;
pub use repo::*;
pub use session::*;
pub use skill::*;
pub use status::*;
pub use vault::*;
Expand Down Expand Up @@ -50,5 +52,13 @@ mod tests {
let _ = super::vault::DevkitVaultDailyTool;
let _ = super::vault::DevkitVaultGraphTool;
let _ = super::workflow::DevkitWorkflowListTool;
let _ = super::session::DevkitSessionSaveTool;
let _ = super::session::DevkitSessionListTool;
let _ = super::session::DevkitSessionResumeTool;
let _ = super::session::DevkitSessionAttachTool;
let _ = super::session::DevkitSessionDetachTool;
let _ = super::session::DevkitSessionActivateTool;
let _ = super::session::DevkitSessionSearchTool;
let _ = super::session::DevkitSessionCaptureTool;
}
}
Loading
Loading