From 4b6d9a8789f2dd2bd6b7ae0c708f631072234c35 Mon Sep 17 00:00:00 2001 From: gzkoala Date: Sun, 1 Mar 2026 18:39:42 +0800 Subject: [PATCH] =?UTF-8?q?docs(add):=E6=96=B0=E5=A2=9EProject=20Caffeine?= =?UTF-8?q?=E9=A1=B9=E7=9B=AEArabica=20Sprint1=E7=B3=BB=E7=BB=9F=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E6=9E=B6=E6=9E=84=E8=AE=BE=E8=AE=A1=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: gzkoala --- ...tegy-mcp-server-prototype-architecture.svg | 673 +++++++++--------- ...affeine-mvp-sprint1-architecture-design.md | 321 +++------ 2 files changed, 438 insertions(+), 556 deletions(-) diff --git a/docs/assets/images/prompt-strategy-mcp-server-prototype-architecture.svg b/docs/assets/images/prompt-strategy-mcp-server-prototype-architecture.svg index c93ab28..ade654c 100644 --- a/docs/assets/images/prompt-strategy-mcp-server-prototype-architecture.svg +++ b/docs/assets/images/prompt-strategy-mcp-server-prototype-architecture.svg @@ -4,396 +4,393 @@ 图表名称:提示词策略 MCP Server 原型架构图 (Prompt Strategy MVP Architecture) 文件命名:prompt-strategy-mcp-server-prototype-architecture.svg 用途:展示从 Client 请求到 5 Whys 策略引擎、资源层再到大模型推理的“上下层级”完整组件链及执行流。 -版本:v1.0.0 (Top-Down Layout with 50px Spacing Adjustment) +版本:v2.0.0 (Top-Down Layout with 50px Spacing Adjustment) 作者:Gitconomy Research-郭晧 SPDX-License-Identifier: MIT & CC-BY-SA-4.0 创建日期:2026-03-01 +更新日期:2026-03-1 +更新描述:根据更新的架构设计文件,重新设计整个开发组件架构与工作流示意图 ================================================================================ --> - - + + - - + /* 文本层级 */ + .card-title { font-size: 15px; font-weight: bold; fill: #FFFFFF; } + .card-text { font-size: 13px; fill: var(--c-neutral-gray); } + .text-code { font-size: 13px; font-weight: bold; fill: #0F172A; } + .label-text { font-size: 12px; font-weight: bold; fill: var(--c-neutral-gray); } + .step-text { font-size: 13px; font-weight: bold; fill: #FFFFFF; } + - - - - - - - - - + + + + + + + + + + + + + + + FIG-01 + 提示词策略 MCP Server 系统架构图 + 架构图 > Arabica Sprint1 > 系统开发组件架构与工作流 + + + + + - - FIG-01 - 提示词策略 MCP Server 系统组件工作流架构图 - 架构图 > MVP Sprint1 & 系统组件工作流 - + + + + + 📦 Node.js MCP Server Runtime - + + + + - - - - - - 📦 Node.js MCP Server Runtime (Express.js) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Input + Output + Reasoning + LLM Result + + + tools/call + Tool Result + + + stdio + + + fs.readFile + + + + + + + + + + + User / 用户 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Cherry Studio (MCP Client) + 大模型对话与调度宿主 + Initiates stdio subprocess - - - HTTP Request - Enquiry - Enhanced - Prompt - Context - Data - API Call - Response - Fetch / Sync + + + + LLM + (Remote) - - - - - - - - - Client Request - - - - /api/prompts/query - - /api/model/infer - - /api/resources/list - - Format: JSON-RPC 2.0 - - - - - - - - .env & config.js - API Keys & Configuration - - - - - - - - app.js - Main Gateway - - - - - - - - apiRoutes.js - API Router Node - - Express Router() - - - - - - - - promptsController.js - 查询与提示词请求分发 - - - - - - - - modelController.js - 多步推理请求分发 - - - - - - - - resourcesController.js - 资源获取与管理分发 - - - - - - - - promptService.js - - 核心: 5 Whys 模板分解引擎 - 输出: 增强合成提示词 - - - - - - - - inferenceService.js - 大语言模型交互管理 - 上下文注入与结果格式化 - - - - - - - - resourceService.js - 管理学术DB、PDF等 - 提供推理上下文数据 - - - - - - LLM API - (Model) - - - - - - - - - 资源与知识库 (Resources) - 学术DB / PDF / Obsidian - + + + + .vscode/launch.json + Attach 断点源码联调 - - + + + + + + app.js + McpServer 初始化 + stdio transport + - - - - 1 - + + + + + + promptsController.js + 处理 tools/call 调度分发 + - - - - 2 - + + + + + + resourcesController.js + 处理 resources 请求分发 + - - - - 3 - + + + + schemas.js + Zod 强校验 + - - - - 4 - + + + + + + promptService.js + + 纯本地核心算法引擎 + 5 Whys 模板分解与合成 + - - - - 5 - + + + + + + resourceService.js + 文件系统 I/O 交互 + 读取本地知识库/Markdown + - - - - 6 - - - - - - MVP 核心执行步骤流 - - - - - - 1 - 接收初始查询与资源请求 - - - - 2 - 5 Whys 深度模板分解 - - - - 3 - 提取外部资源与本地知识 - - - - 4 - 注入上下文生成合成提示词 - - - - 5 - 发起大模型多步推理 - - - - 6 - 组装并返回深度研究结果 - - + + + + + Local Vault + Obsidian / PDF - - + - - 组件与语义对照: + + + + 1 + - - - 基础架构与路由网关 + + + + 2 + + + + + + 3 + + + + + + 4 + + + + + + 5 + + + + + + 6 + + + + + + 7 + + + + + + MVP 核心执行步骤流 + + + + + + 1 + 用户在 Cherry Studio 输入查询意图 - - - - 请求分发与控制器 + + + 2 + 大模型判断需要调用 5 Whys 工具 - - - - 核心策略与业务逻辑 + + + 3 + 通过 stdio 向 Server 发起调用请求 - - - - 远端第三方 AI 与资源 + + + 4 + Server 执行纯本地策略逻辑并分解 + + + + 5 + 将生成的 5 个递进问题返回给客户端 + + + + 6 + Client 结合增强提示词重新发起推理 + + + + 7 + 向用户渲染最终深度研究洞察报告 + - - - 本作品采用 CC-BY-SA 4.0 进行许可,© 2025-2026 Gitconomy Research社区 - + + + + + + 组件与语义对照: + + + + 宿主客户端架构 + + + + + 请求分发控制器 (Controllers) + + + + + 本地执行引擎与资源层 + + + + + 云端远端 AI 模型 (Remote) + + + + + + + 本作品采用 CC-BY-SA 4.0 进行许可,© 2025-2026 Gitconomy Research社区 + diff --git a/docs/design/project-caffeine-mvp-sprint1-architecture-design.md b/docs/design/project-caffeine-mvp-sprint1-architecture-design.md index fe0a348..3849423 100644 --- a/docs/design/project-caffeine-mvp-sprint1-architecture-design.md +++ b/docs/design/project-caffeine-mvp-sprint1-architecture-design.md @@ -1,12 +1,14 @@ # Project Caffeine最小可行功能原型设计 —— 提示词策略MCP Server @@ -27,39 +29,28 @@ status: "Active" **关键功能**: -- **接收查询请求**:用户输入查询主题(如:“LLM在医疗中的应用瓶颈”),并发送请求到 **提示词策略MCP Server**。 -- **5 Whys 模板**:通过 **5 Whys** 提示词模板分解查询,生成多层次的推理问题。 -- **增强提示词生成**:根据查询主题和 **5 Whys** 的分解结果,生成增强的合成提示词。 -- **推理请求**:将生成的提示词发送到大语言模型(如 **OpenAI GPT** 或类似模型)进行推理。 -- **返回推理结果**:返回推理结果给用户,并展示深度的研究洞察。 +- **工具注册 **:向 Cherry Studio 注册 `generate_5_whys` 能力。 +- **接收工具调用请求**:通过 `stdio` 接收 Cherry Studio 传来的用户查询主题。 +- **5 Whys 模板分解**:利用本地逻辑对查询进行分解,生成多层次的追问提示词。 +- **资源暴露**:将本地的文档库、PDF 或特定数据以 MCP Resource 的形式暴露给 Client(Sprint2)。 --- ### 2. 功能实现步骤说明 -#### 2.1 接收查询请求 +#### 2.1 客户端请求与工具分发 -- 用户通过客户端向 **提示词策略MCP Server** 发送查询请求。 +- 用户在 **Cherry Studio** 中输入查询意图(如:“分析LLM在医疗中的应用瓶颈”)。 +- Cherry Studio 内部的大模型判断需要更深度的思考框架,主动向本 **MCP Server** 发起 `generate_5_whys` 的工具调用。 -#### 2.2 生成 5 Whys 提示词 +#### 2.2 生成 5 Whys 增强提示词 -- **提示词策略MCP Server** 接收到查询后,利用 **5 Whys** 模板对查询进行分解。 +- **MCP Server** 接收到参数后,执行本地 `promptService.js`,根据查询主题自动生成 5 个逐层递进的问题(5 Whys)。 -- **5 Whys** 模板根据查询主题,自动生成多个深度的问题,逐步追溯问题的根本原因。 +#### 2.3 结果返回与最终推理 -#### 2.3 增强提示词生成 - -- 在 **5 Whys** 的基础上,系统生成增强的提示词,将其送入下游的大语言模型进行推理。 - -#### 2.4 推理请求与推理结果 - -- 将增强后的提示词发送给大语言模型,进行深度推理和分析。 - -- 大语言模型根据提示词生成分析结果,并将结果返回给 **提示词策略MCP Server**。 - -#### 2.5 返回推理结果 - -- **提示词策略MCP Server** 返回推理结果给用户,并展示生成的研究洞察。 +- **MCP Server** 将生成的 5 Whys 数组作为工具执行结果,通过标准协议返回给 Cherry Studio。 +- Cherry Studio 携带这些增强提示词再次请求大模型,生成最终的深度研究洞察,并展示给用户。 --- @@ -72,245 +63,139 @@ project-caffeine/ │ ├── node_modules/ # 存放项目的依赖包 ├── src/ # 源代码文件夹 -│ ├── controllers/ # API 逻辑处理 -│ │ ├── promptsController.js # 处理提示词策略相关请求 -│ │ ├── modelController.js # 处理与大模型的推理请求 -│ │ ├── resourcesController.js # 处理资源请求(新的资源部分) -│ ├── services/ # 业务逻辑层 -│ │ ├── promptService.js # 处理 5 Whys 提示词生成 -│ │ ├── inferenceService.js # 处理推理请求和结果 -│ │ ├── resourceService.js # 处理资源数据交互(新的资源服务) -│ ├── models/ # 数据模型 -│ │ └── queryModel.js # 用于表示请求体的数据模型 -│ ├── routes/ # API 路由文件夹 -│ │ └── apiRoutes.js # API 路由配置 -│ ├── utils/ # 工具类函数 -│ │ └── responseHandler.js # 处理API响应的工具函数 -│ └── app.js # 主应用入口文件 +│ ├── controllers/ # 逻辑路由分发层 +│ │ ├── promptsController.js # 处理提示词 Tool 相关请求 +│ │ └── resourcesController.js # 处理资源 Resource 请求 +│ ├── services/ # 核心业务逻辑层 +│ │ ├── promptService.js # 处理 5 Whys 提示词模板的生成算法 +│ │ └── resourceService.js # 处理本地文件、知识库等资源读取逻辑 +│ ├── models/ # 数据模型与校验 +│ │ └── schemas.js # 基于 Zod 的参数校验定义 +│ └── app.js # 主应用入口,初始化 MCP Server (stdio) │ +├── .vscode/ # IDE 调试配置 +│ └── launch.json # 配置 Cherry Studio 联调附加(Attach)环境 ├── config/ # 配置文件 -│ ├── config.js # 项目配置文件,如环境变量等 -│ └── apiConfig.js # 与API相关的配置 -│ -├── .env # 环境变量配置文件 -├── package.json # 项目依赖和启动配置 +│ └── config.js # 项目配置 +├── .env # 环境变量配置 (不再需要 LLM API Key) +├── package.json # 项目依赖 (@modelcontextprotocol/sdk) └── README.md # 项目说明文档 ``` **各文件和文件夹的功能说明**: -- `src/`:包含项目的源代码,核心功能逻辑,包括控制器、服务、路由、模型等。 -- `src/controllers/`:控制器负责接收请求并调用相应的服务,执行具体的业务逻辑。 -- `src/services/`:服务层处理具体的业务逻辑,例如生成提示词、推理请求和资源访问等。 -- `src/models/`:定义数据模型,用于标准化请求体和数据结构。 -- `src/utils/`:工具类函数,帮助简化代码实现,例如统一响应格式的处理。 -- `config/`:存放配置信息,包括环境变量配置和外部服务的 API 配置。 -- **根目录**:包含项目的说明文档、环境配置文件等。 - -
- *表1-1:**Project Caffeine** 项目 MVP 系统文件和文件夹功能详细说明表格* -| **目录** | **文件名** | **作用** | **功能** | -| ---------------------- | ---------------------------- | ------------- | ------------------------------------------------------ | -| **`src/`** | **`app.js`** | 主应用程序入口文件 | 初始化 Express 应用,设置中间件,配置 API 路由并启动服务器。 | -| **`src/`** | **`apiRoutes.js`** | API 路由配置文件 | 定义项目的 API 路由,将请求分发到不同的控制器进行处理。 | -| **`src/controllers/`** | **`promptsController.js`** | 处理查询请求,生成提示词 | 接收查询请求,调用 **promptService.js** 生成提示词(如 **5 Whys** 模板)。 | -| **`src/controllers/`** | **`modelController.js`** | 处理推理请求,调用推理服务 | 将增强的提示词发送到大语言模型进行推理,获取推理结果并返回。 | -| **`src/controllers/`** | **`resourcesController.js`** | 处理与资源相关的请求 | 获取资源列表并返回(如学术数据库、PDF 文件、本地知识库)。 | -| **`src/services/`** | **`promptService.js`** | 提示词生成服务 | 根据查询生成 **5 Whys** 模板的提示词,增强查询深度。 | -| **`src/services/`** | **`inferenceService.js`** | 推理服务 | 与大语言模型交互,处理增强提示词并获取推理结果。 | -| **`src/services/`** | **`resourceService.js`** | 资源服务 | 管理外部资源,如学术数据库、PDF 文件、本地知识库等。 | -| **`src/models/`** | **`queryModel.js`** | 数据模型 | 用于表示请求体的数据模型,确保请求的格式和字段一致。 | -| **`src/utils/`** | **`responseHandler.js`** | 响应处理工具 | 处理 API 响应格式,标准化响应数据。 | -| **`config/`** | **`config.js`** | 项目配置文件 | 存储端口、API 密钥等项目的环境变量配置。 | -| **`config/`** | **`apiConfig.js`** | API 配置文件 | 存储与外部 API(如大语言模型和学术资源接口)相关的配置。 | -| **`public/`** | **`index.html`** | 静态资源文件 | 提供项目的主页或其他静态页面文件。 | -| **`config/`** | **`.env`** | 环境变量配置文件 | 存储敏感数据(如端口号、API 密钥)和配置项,确保应用正常运行。 | -| **`config/`** | **`package.json`** | 项目依赖配置 | 管理项目的依赖包、脚本命令和开发环境设置。 | -| **根目录** | **`README.md`** | 项目说明文档 | 提供项目的背景、功能、安装步骤和使用方法等信息。 | +| **目录** | **文件名** | **功能说明** | +| --- | --- | --- | +| **`src/`** | **`app.js`** | 实例化官方 `McpServer`,配置 `stdio` 传输层,向 Client 注册 Tools 和 Resources。 | +| **`src/controllers/`** | **`promptsController.js`** | 接收 `tools/call` 请求,调用 `promptService` 并格式化输出返回给 Client。 | +| **`src/controllers/`** | **`resourcesController.js`** | 处理 `resources/list` 和 `resources/read` 请求,返回资源数据。 | +| **`src/services/`** | **`promptService.js`** | 纯本地业务逻辑:根据入参字符串生成 **5 Whys** 数组结构。 | +| **`src/services/`** | **`resourceService.js`** | 本地文件系统交互:读取本地知识库(如 Obsidian)或指定目录文档。 | +| **`.vscode/`** | **`launch.json`** | 极其关键:配置 Node.js 的 `--inspect` 端口,实现基于 Cherry Studio 唤起时的断点联调。 | ### 3.2 系统模块架构说明 -原型系统的主要模块包括: - -- **Client Request** 发起请求,经过 **HTTP Request** 传递给后端。 -- **app.js** 作为主控制器,分发请求到不同的路由处理器(**apiRoutes.js**)。 -- **promptsController.js** 处理查询请求,生成提示词,调用 **promptService.js**。 -- **modelController.js** 处理推理请求,将增强的提示词发送到大语言模型。 -- **inferenceService.js** 负责与大语言模型交互,获取推理结果并返回。 -- 配置信息存储在 **.env** 和 **config.js** 中,确保系统配置与环境的适配。 -- **resourceService.js**:管理外部资源的获取和存储,如学术数据库、PDF 文档和本地知识库。这些资源将为推理模块提供必要的数据支持。 - -
- -这些组件通过 **MCP 协议** 和 **JSON-RPC 2.0** 格式进行通信,确保系统的各个部分能够高效地协作,共同完成从查询处理到推理结果输出的全过程。 - -### 3.3 系统数据流示意 - *图1-1:提示词策略 MCP Server 系统组件工作流架构图* ![提示词策略工作流](./../assets/images/prompt-strategy-mcp-server-prototype-architecture.svg) -通过 **MCP 协议**,整个系统模块能够协同工作,从用户输入的查询请求到最终的推理结果输出,确保整个流程的高效性与准确性。 -1. **用户发起请求**:用户通过 **Client Request** 发起查询或推理请求。 -2. **HTTP 请求传输**:请求通过 **HTTP Request** 传递到后端。 -3. **请求路由**:**app.js** 将请求转发到 **apiRoutes.js**,并进一步分发到相应的控制器(如 **promptsController.js** 和 **modelController.js**)。 -4. **提示词生成**:在 **promptsController.js** 中,查询请求被转交到 **promptService.js**,生成符合 **5 Whys** 模板的增强提示词。 -5. **推理请求**:增强的提示词通过 **modelController.js** 传递给 **inferenceService.js**,与大语言模型交互。 -6. **推理结果返回**:大语言模型返回推理结果,**inferenceService.js** 将结果传回 **modelController.js**,并最终返回给用户。 -7. **资源获取**:在整个过程中,**resourceService.js** 提供外部资源(如学术文献、PDF 文件等)的访问,支持推理和查询过程的数据需求。 +基于 Cherry Studio 和 MCP (Model Context Protocol) 架构的工作流分为七个关键步骤: + +1. **用户发起提问**:用户首先在前端(Cherry Studio)输入自己的问题或查询需求。 +2. **大模型决策调用工具**:Cherry Studio 作为 MCP 客户端,接收到用户提问后,其连接的大模型会对问题进行分析,并判断出需要调用系统注册的外部工具(如 5 Whys 分析法)来获取更好的提示词策略,而不是直接回答。 +3. **发起工具调用请求 tools/call**:Cherry Studio 通过标准输入输出流(`stdio`)协议,向后端的 Project Caffeine MCP Server(基于 Node.js 构建)发送一个名为 `generate_5_whys` 的工具调用指令。 +4. **本地生成 5 Whys 文本**:Project Caffeine MCP Server 接收到指令后,触发其内部的业务逻辑模块 `promptService.js`。该模块完全在本地运行,不依赖外部大模型,根据用户的初始问题自动生成 5 个逐层深入的追问(即 5 Whys 文本)。 +5. **返回工具执行结果**:MCP Server 将生成的 5 Whys 文本打包成标准的结果格式,通过协议传回给 Cherry Studio。 +6. **结合工具结果发起最终推理**:Cherry Studio 拿到这 5 个问题后,将其作为增强的上下文提示词,再次向大语言模型发起最终的深度推理请求,要求模型基于这些追问给出详尽的分析。 +7. **渲染并呈现结果**:大模型完成最终推理后,Cherry Studio 将这部分内容进行界面渲染,最终向用户呈现一份高质量的“深度洞察报告”。 + +简单来说,这是一个“用户提问 -> 客户端大模型决定求助 -> 本地服务端生成分析框架 -> 客户端大模型根据框架给出深度回答”的完整闭环。 --- -## 4. API 接口设计 +## 4. MCP 标准通信接口设计 (协议级) -### 4.1 用户查询请求 +基于 `@modelcontextprotocol/sdk`,底层的 JSON-RPC 通信由 SDK 接管。以下为逻辑层面的输入输出规约。 -用户向 **提示词策略MCP Server** 发送查询请求,请求体包括查询主题。 +### 4.1 Tool 注册声明 (`tools/list`) -##### 请求示例(`prompts.query`) +向 Client 声明具备的能力。 ```json { - "method": "prompts.query", - "params": { - "query": "中国开源人才的现状分析" - }, - "id": "12345" + "name": "generate_5_whys", + "description": "使用 5 Whys 模板对用户查询进行深度分解,生成增强的提示词策略", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "用户需要分析的原始查询主题,例如:中国开源人才的现状分析" + } + }, + "required": ["query"] + } } + ``` -### 4.2 5 Whys 提示词模板生成 +### 4.2 Tool 调用响应 (`tools/call`) -**提示词策略MCP Server** 将查询通过 **5 Whys** 模板进行处理,逐步分解问题,并生成增强的提示词。 - -##### 响应示例(`prompts.query`) +当 Client 传入 `query: "中国开源人才的现状分析"` 时,Server 返回的执行结果。 ```json { - "result": { - "enhanced_prompt": [ - "为什么中国开源人才的培养面临困难?", - "为什么中国开源人才缺乏足够的行业经验?", - "为什么开源社区对中国人才的支持力度不足?", - "为什么中国开源人才的市场需求与供给不平衡?", - "为什么政策支持不足导致中国开源人才流失?" - ] - }, - "id": "12345" + "content": [ + { + "type": "text", + "text": "[\n \"为什么中国开源人才的培养面临困难?\",\n \"为什么中国开源人才缺乏足够的行业经验?\",\n \"为什么开源社区对中国人才的支持力度不足?\",\n \"为什么中国开源人才的市场需求与供给不平衡?\",\n \"为什么政策支持不足导致中国开源人才流失?\"\n]" + } + ] } + ``` -### 4.3 推理请求 +### 4.3 存储资源访问 (`resources/list` & `resources/read`) -生成的提示词将发送到大语言模型进行推理。推理请求会将增强的提示词作为输入。 +允许 Cherry Studio 查阅本地文件上下文。 -##### 请求示例(`model.infer`) +**资源列表响应示例 (`resources/list`):** ```json { - "method": "model.infer", - "params": { - "prompts": [ - "为什么中国开源人才的培养面临困难?", - "为什么中国开源人才缺乏足够的行业经验?", - "为什么开源社区对中国人才的支持力度不足?", - "为什么中国开源人才的市场需求与供给不平衡?", - "为什么政策支持不足导致中国开源人才流失?" - ] - }, - "id": "12345" -} -``` - -### 4.4 推理结果返回 - -大语言模型根据提示词生成推理结果,并将其返回给 **提示词策略MCP Server**,然后将结果发送回用户。 - -##### 响应示例(`model.infer`) - -```json -{ - "result": { - "analysis": [ - "中国开源人才的培养面临困难,主要是由于缺乏行业经验和实践机会。", - "开源社区支持不足,导致中国开源人才的成长空间受限。", - "中国开源人才的市场需求与供给不平衡,缺乏足够的职业发展机会。", - "政策支持不足,导致许多开源人才选择离开或转向其他行业。", - "开源人才流失的原因之一是对本土开发环境和项目缺乏信任。" - ] - }, - "id": "12345" -} -``` - -### 4.5 存储资源访问 - -在 **MCP Server** 中,**Resource API** 用于提供系统需要访问的资源,允许 **MCP Client** 通过 **MCP Server** 获取和管理这些资源。 -#### **请求示例(`resources/list`)** - -获取可用资源列表的请求。 - -```json -{ - "method": "resources.list", - "params": {}, - "id": "1234" -} -``` - -#### **响应示例(`resources.list`)** - -返回资源信息,包括学术数据库、PDF 文件、互联网资源等。 - -```json -{ - "result": [ - { - "resource_id": "academic_database", - "description": "学术数据库资源", - "type": "API", - "endpoint": "https://api.academicdb.com/v1/query" - }, - { - "resource_id": "pdf_document", - "description": "PDF 文档资源", - "type": "File", - "file_path": "/path/to/document.pdf" - }, - { - "resource_id": "local_kb", - "description": "本地知识库资源", - "type": "Directory", - "directory_path": "/path/to/obsidian/vault" - } - ], - "id": "1234" + "resources": [ + { + "uri": "file:///path/to/obsidian/vault/开源行业报告.md", + "name": "开源行业研究报告", + "mimeType": "text/markdown", + "description": "本地知识库中的开源行业深度分析文档" + } + ] } ``` --- -## 5. **最小可行产品(MVP)开发环境** +## 5. 最小可行产品(MVP)开发环境 -为了验证这一最小可行功能(MVP),开发环境应包括以下组件: +本阶段的开发环境高度依赖实际的 Client 联调: -- **Node.js**:用于后端服务开发,处理 API 请求和响应。 -- **MCP 协议实现**:实现任务调度、数据传输和组件间通讯。 -- **大语言模型**:可以使用开源模型(如 GPT-3、GPT-4)进行推理。 -- **Express.js**:搭建一个轻量级的 Node.js 服务,处理请求和响应。 -- **Postman 或 Curl**:用于模拟 API 请求和响应,进行接口测试。 +* **Node.js (v18+)**:提供运行环境。 +* **@modelcontextprotocol/sdk**:官方依赖,提供 `stdio` 传输支持。 +* **Cherry Studio**:作为唯一指定测试 Client,配置为以 `command: node` 的方式启动 Server。 +* **VS Code Attach 调试**:利用 `--inspect=9229` 参数,在 Cherry Studio 唤起 Server 后,通过 VS Code 附加到该进程实现源码级断点调试。 --- -## 6. **部署与验证** +## 6. 部署与验证 -1. **部署 API 服务**:使用 **Node.js** 和 **Express.js** 部署 **提示词策略MCP Server**。 -2. **模拟查询请求**:使用 **Postman** 或 **Curl** 向服务发送模拟的查询请求,验证提示词生成是否正确。 -3. **测试推理功能**:集成大语言模型的推理 API,确保生成的增强提示词能够正确传递并获得推理结果。 -4. **返回结果验证**:确保推理结果能够返回,并符合预期的研究洞察。 +1. **环境初始化**:安装 Node.js 依赖及 Zod 校验库。 +2. **Client 配置**:在 Cherry Studio 的 MCP 设置中,添加名为 `ProjectCaffeine` 的 Server,指向本地的 `app.js` 绝对路径,并添加 `--inspect` 参数。 +3. **断点监听**:在 VS Code 中启动 Attach 调试任务,等待 Cherry Studio 握手。 +4. **触发验证**:在 Cherry Studio 对话框中要求模型“调用工具分析某问题”,观察 VS Code 是否成功捕获断点,并最终在 Cherry Studio 界面输出基于 5 Whys 增强的回答。 ---