feat(agent): 添加强制刷新智能体详情的功能 Fixes #396

修改 fetchAgentDetail 方法支持强制刷新参数
更新上下文配置选项为动态获取
调整工具和MCP服务器列表为实时获取
This commit is contained in:
Wenjie Zhang 2025-12-24 18:52:14 +08:00
parent 313f386c56
commit 606afc99ee
4 changed files with 18 additions and 6 deletions

View File

@ -13,12 +13,16 @@ class Context(BaseContext):
default_factory=list,
metadata={
"name": "工具",
"options": gen_tool_info(get_tools()), # 这里的选择是所有的工具
"options": lambda: gen_tool_info(get_tools()), # 这里的选择是所有的工具
"description": "工具列表",
},
)
mcps: list[str] = field(
default_factory=list,
metadata={"name": "MCP服务器", "options": list(MCP_SERVERS.keys()), "description": "MCP服务器列表"},
metadata={
"name": "MCP服务器",
"options": lambda: list(MCP_SERVERS.keys()),
"description": "MCP服务器列表",
},
)

View File

@ -107,10 +107,14 @@ class BaseContext:
# 提取 Annotated 的元数据
template_metadata = cls._extract_template_metadata(field_type)
options = f.metadata.get("options", [])
if callable(options):
options = options()
configurable_items[f.name] = {
"type": type_name,
"name": f.metadata.get("name", f.name),
"options": f.metadata.get("options", []),
"options": options,
"default": f.default
if f.default is not MISSING
else f.default_factory()

View File

@ -424,6 +424,10 @@ const getToolNameById = (toolId) => {
const openToolsModal = async () => {
console.log("availableTools.value", availableTools.value)
try {
//
if (selectedAgentId.value) {
await agentStore.fetchAgentDetail(selectedAgentId.value, true);
}
selectedTools.value = [...(agentConfig.value?.tools || [])];
toolsModalOpen.value = true;
} catch (error) {

View File

@ -146,11 +146,11 @@ export const useAgentStore = defineStore('agent', () => {
* 获取单个智能体的详细信息包含配置选项
* @param {string} agentId - 智能体ID
*/
async function fetchAgentDetail(agentId) {
async function fetchAgentDetail(agentId, forceRefresh = false) {
if (!agentId) return
// 如果已经缓存了详细信息,直接返回
if (agentDetails.value[agentId]) {
// 如果已经缓存了详细信息且不强制刷新,直接返回
if (!forceRefresh && agentDetails.value[agentId]) {
return agentDetails.value[agentId]
}