Files
DevFlow/src-tauri/src/commands/ai/tools/get_app_config.rs
T
lxy b999f79fdf 新增: AI 工具(download_file + http output_file + grep 窗口 + fetch_search 搜索 + get_app_config + generate_image)
download_file 跨平台 URL 到文件流式下载;http_request output_file 落盘 + 截断可配;
grep context_chars 大单行窗口;fetch_search DuckDuckGo 免 key 搜索;get_app_config
只读返当前配置(治 AI 查配置绕 PowerShell);generate_image SenseNova 图像生成。
2026-08-02 02:21:32 +08:00

47 lines
2.9 KiB
Rust

//! get_app_config AI 工具声明式注册(查 DevFlow 自身当前 AI 配置,只读 + 脱敏)。
//!
//! 工具职责:返当前生效的 provider/default_provider/agent 配置/app_settings 概要 JSON,
//! 让 LLM 一调即得「现在用什么 provider/model/迭代上限」,根治 run_command PowerShell
//! 内联 node/python 脚本查 db(引号三重嵌套必失败)的绕行。
//!
//! 风险:Low(纯只读 list/load,无写副作用)。安全:api_key 经 mask_api_key 脱敏
//! (前 4 + `••••` + 后 4),绝不返明文;app_settings 走白名单不返敏感 KV。
//!
//! handler body 在 commands/ai/get_app_config.rs::execute_get_app_config,
//! 声明式注册收敛样板(对齐 fetch_url/generate_image 模式)。
//!
//! ## 捕获变量说明
//!
//! declare_tool! 宏单捕获限制:本工具需 db + 3 个 agent 配置 Arc + LlmConcurrency 共 5 项,
//! 包进 [`GetAppConfigCtx`] struct(各字段 Arc/Clone-廉价),闭包内不解构直接
//! `&ctx` 转调 handler。ctx 字段与 AppState 同名字段共享同一底层原子量(热改即反映)。
use df_ai::ai_tools::{AiToolRegistry, RiskLevel};
use df_ai::declare_tool;
use crate::commands::ai::get_app_config::GetAppConfigCtx;
/// 注册 get_app_config 工具到 `$registry`。
///
/// - name/desc/schema 面向 LLM 的工具说明(无参数,返全部当前配置)
/// - risk=Low(纯只读)
/// - handler 捕获 GetAppConfigCtx(共享 AppState 同名 Arc 字段),转调 get_app_config.rs
pub fn register(registry: &mut AiToolRegistry, ctx: GetAppConfigCtx) {
// schema:无参数(object_schema 空参返仅 type:object 无 required)。
// 不加可选 section 参数(provider/agent/settings 选返):返全部配置最简,LLM 自行读所需字段;
// 加 section 反增参数解析分支 + schema 复杂度,违背「简洁」约束。
let schema = df_ai::ai_tools::object_schema(vec![]);
declare_tool!(
registry,
ctx: GetAppConfigCtx,
"get_app_config",
"获取 DevFlow 自身当前生效的 AI 配置(只读,无参数)。返回 {default_provider, providers, agent, app_settings}:default_provider 含 name/provider_type/base_url/default_model/is_default/enabled/api_key_masked(api_key 脱敏,空串=未配置 key);providers 是全部 provider 概要列表(无 api_key);agent 含 max_iterations/max_retries/approval_timeout_minutes/concurrency.per_conv(当前热改生效值);app_settings 含知识库/审批超时等 AI 相关 KV(custom_prompt 只返长度不返原文)。查「现在用什么 provider/model」「agent 迭代上限多少」「key 是否配置」用本工具,不要 run_command 执行 PowerShell 内联脚本查 db(引号嵌套易失败)。",
RiskLevel::Low,
schema: schema,
_args => {
// 转调 get_app_config.rs handler(providers/settings/agent 配置读取 + 脱敏全在那)
crate::commands::ai::get_app_config::execute_get_app_config(&ctx).await
}
);
}