{
.resource-logger .output-content {
border-radius: .5em;
padding: 15px;
- min-height: 300px;
+ min-height: 600px;
height: fit-content;
font-family: var(--code-font-family);
white-space: pre-wrap;
diff --git a/renderer/src/components/main-panel/tool/tool-executor.vue b/renderer/src/components/main-panel/tool/tool-executor.vue
index 2c1b025..97e3d1e 100644
--- a/renderer/src/components/main-panel/tool/tool-executor.vue
+++ b/renderer/src/components/main-panel/tool/tool-executor.vue
@@ -167,9 +167,6 @@ watch(() => tabStorage.currentToolName, () => {
margin-bottom: 15px;
}
-.tool-executor-container {
-
-}
.tool-executor-container .el-switch .el-switch__action {
background-color: var(--main-color);
diff --git a/renderer/src/components/sidebar/connected.vue b/renderer/src/components/sidebar/connected.vue
index 1c4ccd6..681aa65 100644
--- a/renderer/src/components/sidebar/connected.vue
+++ b/renderer/src/components/sidebar/connected.vue
@@ -149,7 +149,9 @@ function toggleConnectionPanel() {
display: flex;
align-items: center;
justify-content: center;
- white-space: wrap;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
background-color: #f39a6d;
padding: 5px 12px;
border-radius: .5em;
diff --git a/renderer/src/hook/type.ts b/renderer/src/hook/type.ts
index 74a5069..1967de9 100644
--- a/renderer/src/hook/type.ts
+++ b/renderer/src/hook/type.ts
@@ -65,6 +65,9 @@ export interface Resources {
uri: string;
name: string;
mimeType: string;
+ text?: string;
+ blob?: string;
+ [key: string]: any;
}
export interface ResourceTemplatesListResponse {
diff --git a/renderer/src/hook/util.ts b/renderer/src/hook/util.ts
index 78a8bda..584121b 100644
--- a/renderer/src/hook/util.ts
+++ b/renderer/src/hook/util.ts
@@ -70,6 +70,12 @@ export async function getBlobUrlByFilename(filename: string) {
}
export function getImageBlobUrlByBase64(base64String: string, mimeType: string, cacheKey?: string) {
+
+ // 检查缓存中是否存在该文件
+ if (cacheKey && blobUrlCache.has(cacheKey)) {
+ return blobUrlCache.get(cacheKey);
+ }
+
const byteCharacters = atob(base64String);
const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
diff --git a/renderer/src/views/setting/api.ts b/renderer/src/views/setting/api.ts
index aedde22..dcc075c 100644
--- a/renderer/src/views/setting/api.ts
+++ b/renderer/src/views/setting/api.ts
@@ -1,5 +1,5 @@
-import { ChatStorage } from '@/components/main-panel/chat/chat';
-import { TaskLoop } from '@/components/main-panel/chat/task-loop';
+import { ChatStorage } from '@/components/main-panel/chat/chat-box/chat';
+import { TaskLoop } from '@/components/main-panel/chat/core/task-loop';
import { llmManager } from './llm';
import { reactive, ref } from 'vue';
diff --git a/renderer/src/views/setting/llm.ts b/renderer/src/views/setting/llm.ts
index 44269ba..925caf4 100644
--- a/renderer/src/views/setting/llm.ts
+++ b/renderer/src/views/setting/llm.ts
@@ -1,7 +1,7 @@
import { markRaw, reactive } from 'vue';
import { createTab, debugModes, tabs } from '@/components/main-panel/panel';
import { ToolStorage } from '@/components/main-panel/tool/tools';
-import { ToolCall } from '@/components/main-panel/chat/chat';
+import { ToolCall } from '@/components/main-panel/chat/chat-box/chat';
import I18n from '@/i18n';
const { t } = I18n.global;
diff --git a/servers/main.py b/servers/main.py
index 2e7f168..b8fc811 100644
--- a/servers/main.py
+++ b/servers/main.py
@@ -9,6 +9,16 @@ mcp = FastMCP('锦恢的 MCP Server', version="11.45.14")
def add(a: int, b: int) -> int:
return a + b
+@mcp.resource(
+ uri="network://log",
+ name='network_log',
+ description='用于演示的一个无参数资源协议'
+)
+def network_log() -> str:
+ # 访问处理 greeting://{name} 资源访问协议,然后返回
+ # 此处方便起见,直接返回一个 Hello,balabala 了
+ return f"Response from ..."
+
@mcp.resource(
uri="greeting://{name}",
name='greeting',
diff --git a/service/src/mcp/ocr.controller.ts b/service/src/mcp/ocr.controller.ts
index 6fb6671..83341ba 100644
--- a/service/src/mcp/ocr.controller.ts
+++ b/service/src/mcp/ocr.controller.ts
@@ -1,6 +1,7 @@
import { Controller, RequestClientType } from "../common";
import { PostMessageble } from "../hook/adapter";
import { diskStorage } from "../hook/db";
+import { createOcrWorker, saveBase64ImageData } from "./ocr.service";
export class OcrController {
@Controller('ocr/get-ocr-image')
@@ -15,4 +16,21 @@ export class OcrController {
}
}
}
+
+ @Controller('ocr/start-ocr')
+ async startOcr(client: RequestClientType, data: any, webview: PostMessageble) {
+ const { base64String, mimeType } = data;
+
+ const filename = saveBase64ImageData(base64String, mimeType);
+ const worker = createOcrWorker(filename, webview);
+
+ return {
+ code: 200,
+ msg: {
+ filename,
+ workerId: worker.id
+ }
+ }
+ }
+
}
\ No newline at end of file
diff --git a/service/tabs.锦恢的 MCP Server.json b/service/tabs.锦恢的 MCP Server.json
index 4afd09e..29778b9 100644
--- a/service/tabs.锦恢的 MCP Server.json
+++ b/service/tabs.锦恢的 MCP Server.json
@@ -2,47 +2,37 @@
"currentIndex": 0,
"tabs": [
{
- "name": "交互测试",
- "icon": "icon-robot",
+ "name": "资源",
+ "icon": "icon-file",
"type": "blank",
- "componentIndex": 3,
+ "componentIndex": 0,
"storage": {
- "messages": [],
- "settings": {
- "modelIndex": 0,
- "enableTools": [
+ "formData": {},
+ "currentType": "resource",
+ "currentResourceName": "network_log",
+ "lastResourceReadResponse": {
+ "contents": [
{
- "name": "add",
- "description": "对两个数字进行实数域的加法",
- "enabled": true
- },
- {
- "name": "multiply",
- "description": "对两个数字进行实数域的乘法运算",
- "enabled": true
- },
- {
- "name": "is_even",
- "description": "判断一个整数是否为偶数",
- "enabled": true
- },
- {
- "name": "capitalize",
- "description": "将字符串首字母大写",
- "enabled": true
- },
- {
- "name": "get_weather_by_city_code",
- "description": "根据城市天气预报的城市编码 (int),获取指定城市的天气信息",
- "enabled": true
+ "uri": "network://log",
+ "mimeType": "text/plain",
+ "text": "Response from ..."
}
- ],
- "enableWebSearch": false,
- "temperature": 0.7,
- "contextLength": 20,
- "systemPrompt": ""
+ ]
}
}
+ },
+ {
+ "name": "工具",
+ "icon": "icon-tool",
+ "type": "blank",
+ "componentIndex": 2,
+ "storage": {
+ "formData": {
+ "a": 0,
+ "b": 0
+ },
+ "currentToolName": "add"
+ }
}
]
}
\ No newline at end of file