新增: u-claw 集成

This commit is contained in:
lxy
2026-10-05 14:59:11 +08:00
parent d4d3a8deaf
commit 7c76ee6a60
21 changed files with 835 additions and 4 deletions
+22 -2
View File
@@ -1,4 +1,5 @@
//! AI 工具注册表构建 + 文件路径校验
//! AI 工具注册表构建 + 文件路径校验
use std::collections::HashMap;
use std::path::{Path, PathBuf};
@@ -556,9 +557,20 @@ pub fn build_ai_tool_registry(
register_local_proxy_tools(&mut registry, local_proxy_ctx);
register_read_skill_tool(&mut registry);
register_spawn_agent_tool(&mut registry, spawn_agent_ctx);
register_uclaw_tool(&mut registry, db);
registry
}
/// ask_uclaw AI 工具注册(1 个:委托 u-claw 常驻 Claude Code 网关,u-relay commander 协议)。
///
/// 工具职责:LLM 调 ask_uclaw(prompt) 把任务下发给 u-claw(channel 级单链粘性会话),
/// 经 u-relay /ws/commander 路由,agent_progress 块级流式回传 + agent_result 全文交付。
/// 风险 Medium(委托外部 agent 执行,与 spawn_agent 同档)。持 db:Arc<Database>(配置 KV 读)。
/// 声明式注册在 tools/uclaw.rs。
fn register_uclaw_tool(registry: &mut AiToolRegistry, db: &Arc<Database>) {
super::tools::uclaw::register(registry, db);
}
/// spawn_agent AI 工具注册(1 个:派发子代理,隔离上下文执行专项任务)。
///
/// 工具职责:LLM 调 spawn_agent(task, tools?, max_rounds?, model?) 派发子代理,
@@ -1494,10 +1506,14 @@ mod tests {
// Medium 审批档;独立 agentic 循环在 agentic/sub_agent.rs,报告经返回值交付。
// SpawnAgentCtx 绕 AppState 自引用同 GetAppConfigCtx 先例,注册表自引用走进程级 OnceLock)。
// 78 = 45 data + 15 file + 1 http + 1 fetch_url + 1 fetch_search + 1 generate_image + 1 get_app_config + 11 local_proxy + 1 read_skill + 1 spawn_agent。
// ask_uclaw(2026-10-05): uclaw 层 0→1(委托 u-claw 常驻 Claude Code 网关,
// u-relay commander 协议,Medium 审批档同 spawn_agent;配置 KV 三键读,
// 声明式注册 tools/uclaw.rs)。
// 79 = 45 data + 15 file + 1 http + 1 fetch_url + 1 fetch_search + 1 generate_image + 1 get_app_config + 11 local_proxy + 1 read_skill + 1 spawn_agent + 1 uclaw。
assert_eq!(
registry.len(),
78,
"工具总数应为 78(45 data + 15 file + 1 http + 1 fetch_url + 1 fetch_search + 1 generate_image + 1 get_app_config + 11 local_proxy + 1 read_skill + 1 spawn_agent),实际 {}", registry.len()
79,
"工具总数应为 79(45 data + 15 file + 1 http + 1 fetch_url + 1 fetch_search + 1 generate_image + 1 get_app_config + 11 local_proxy + 1 read_skill + 1 spawn_agent + 1 uclaw),实际 {}", registry.len()
);
// 工具名集合基线:防 rename / 漏注册 / 误删除。
@@ -1568,6 +1584,9 @@ mod tests {
// ── spawn_agent 层 (1) ──(派发子代理隔离上下文执行专项任务,Medium 审批档,
// 独立 agentic 循环 agentic/sub_agent.rs,声明式注册 tools/spawn_agent.rs)
"spawn_agent",
// ── uclaw 层 (1) ──(委托 u-claw 常驻 Claude Code 网关,u-relay commander 协议,
// Medium 审批档,声明式注册 tools/uclaw.rs)
"ask_uclaw",
];
expected.sort_unstable();
@@ -2405,6 +2424,7 @@ mod tests {
idea_id: None,
path: None,
stack: None,
archived: false,
created_at: now_millis(),
updated_at: now_millis(),
})