From 64b6b20247f9922fa128917f7c0775984dd62c77 Mon Sep 17 00:00:00 2001 From: sean Date: Wed, 11 Jun 2025 00:00:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=B5=84=E6=BA=90=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=99=A8=E5=92=8C=E5=8D=8F=E8=AE=AE=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=9A=E4=BC=98=E5=8C=96=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=9A=84=E5=90=88=E5=B9=B6=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E7=9B=B4=E6=8E=A5=E5=A4=84=E7=90=86?= =?UTF-8?q?thought=E5=92=8Cexecution=E7=9A=84=E8=B7=AF=E5=BE=84=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=EF=BC=8C=E5=90=8C=E6=97=B6=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=E5=AF=B9@project://=E5=89=8D=E7=BC=80=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86=EF=BC=8C=E6=8F=90=E5=8D=87=E8=B7=AF=E5=BE=84=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E7=9A=84=E7=81=B5=E6=B4=BB=E6=80=A7=E5=92=8C=E5=87=86?= =?UTF-8?q?=E7=A1=AE=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resource/protocols/ExecutionProtocol.js | 4 +++ .../resource/protocols/ThoughtProtocol.js | 4 +++ src/lib/core/resource/resourceManager.js | 25 ++++++++++++++----- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/lib/core/resource/protocols/ExecutionProtocol.js b/src/lib/core/resource/protocols/ExecutionProtocol.js index d74e6b2..7ad9d19 100644 --- a/src/lib/core/resource/protocols/ExecutionProtocol.js +++ b/src/lib/core/resource/protocols/ExecutionProtocol.js @@ -50,6 +50,10 @@ class ExecutionProtocol extends ResourceProtocol { // 处理 @package:// 前缀 if (resolvedPath.startsWith('@package://')) { resolvedPath = resolvedPath.replace('@package://', '') + } else if (resolvedPath.startsWith('@project://')) { + // 处理 @project:// 前缀,转换为绝对路径 + const relativePath = resolvedPath.replace('@project://', '') + resolvedPath = path.join(process.cwd(), relativePath) } return resolvedPath diff --git a/src/lib/core/resource/protocols/ThoughtProtocol.js b/src/lib/core/resource/protocols/ThoughtProtocol.js index 2fb97eb..9b550de 100644 --- a/src/lib/core/resource/protocols/ThoughtProtocol.js +++ b/src/lib/core/resource/protocols/ThoughtProtocol.js @@ -49,6 +49,10 @@ class ThoughtProtocol extends ResourceProtocol { // 处理 @package:// 前缀 if (resolvedPath.startsWith('@package://')) { resolvedPath = resolvedPath.replace('@package://', '') + } else if (resolvedPath.startsWith('@project://')) { + // 处理 @project:// 前缀,转换为绝对路径 + const relativePath = resolvedPath.replace('@project://', '') + resolvedPath = path.join(process.cwd(), relativePath) } return resolvedPath diff --git a/src/lib/core/resource/resourceManager.js b/src/lib/core/resource/resourceManager.js index 8f2b0c5..395b9e9 100644 --- a/src/lib/core/resource/resourceManager.js +++ b/src/lib/core/resource/resourceManager.js @@ -90,9 +90,15 @@ class ResourceManager { if (extractedSystemResources[resourceType]) { if (!mergedRegistry[resourceType]) mergedRegistry[resourceType] = {} for (const [id, resourceInfo] of Object.entries(extractedSystemResources[resourceType])) { - mergedRegistry[resourceType][id] = { - ...resourceInfo, - source: 'system' + // 对于role资源,resourceInfo是对象;对于thought/execution,resourceInfo是字符串 + if (resourceType === 'role') { + mergedRegistry[resourceType][id] = { + ...resourceInfo, + source: 'system' + } + } else { + // 对于thought和execution,resourceInfo直接是路径字符串 + mergedRegistry[resourceType][id] = resourceInfo } } } @@ -161,9 +167,16 @@ class ResourceManager { const protocolHandler = new ProtocolClass() // 从统一注册表获取协议配置 - const protocolConfig = this.registry.protocols[protocolName] - if (protocolConfig && protocolConfig.registry) { - protocolHandler.setRegistry(protocolConfig.registry) + // 对于基础协议(thought, execution等),直接从registry中获取 + const protocolRegistry = this.registry[protocolName] + if (protocolRegistry) { + protocolHandler.setRegistry(protocolRegistry) + } else { + // 对于复杂协议配置,从protocols配置中获取 + const protocolConfig = this.registry.protocols && this.registry.protocols[protocolName] + if (protocolConfig && protocolConfig.registry) { + protocolHandler.setRegistry(protocolConfig.registry) + } } handlers.set(protocolName, protocolHandler)