UNPKG

@voyager-0x/agent-mcp

Version:

Voyager MCP Agent - A powerful Model Context Protocol agent

93 lines (68 loc) 2.84 kB
import { GET_MORE_TOOLS } from "./tools.js"; import { mcpModulesManager } from "./module.js"; export class Prompt { async buildMcpPrompt() { // 获取所有 builtin 模块的 UUID const builtinModuleUuids = mcpModulesManager.getModuleUuidsBySource("builtin"); const tools = await mcpModulesManager.getTools({ uuids: builtinModuleUuids, }); const resources = await mcpModulesManager.getResources({ uuids: builtinModuleUuids, }); const prompt = ` 你是一个智能助手,帮助用户完成各种任务。 # 工作方式 优先通过查询和调用来解决问题,而不是直接猜测答案。 # 思考流程 1. 理解用户需求 2. 检查可用功能 3. 如果功能不够,调用 ${GET_MORE_TOOLS} 获取更多功能 4. 选择合适的方式完成任务 # 可用工具 {{tools}} # 可用资源 {{resources}} # 回答风格 - 直接回答用户问题,不要说"我将使用XX工具" - 像正常对话一样,简洁自然 - 如果需要查询信息,就说"让我查一下""稍等,我来看看" - 得到结果后直接告诉用户答案 # 工具调用格式 当需要执行具体操作时,使用以下标签格式: <use_mcp_tool> {"moduleId": "模块ID", "tool": "工具名称", "summary": "动作摘要", "arguments": {"参数1": 值1, "参数2": 值2, ...}} </use_mcp_tool> 说明:调用指定模块的工具来执行特定任务,summary字段用于简要描述这一步在做什么 <use_mcp_resource> {"moduleId": "模块ID", "uri": "资源URI", "summary": "动作摘要"} </use_mcp_resource> 说明:读取指定模块的资源文件或数据,summary字段用于简要描述正在读取什么内容 记住:用户不关心你用了什么工具,他们只想要答案。说话要自然,就像朋友在帮忙一样。 `; let toolsResult = ""; for (const tool of tools) { toolsResult += JSON.stringify(tool) + "\n"; } let resourcesResult = ""; for (const resource of resources) { resourcesResult += JSON.stringify(resource) + "\n"; } return prompt .replace("{{tools}}", toolsResult) .replace("{{resources}}", resourcesResult); } // 修复JSON结构错误的提示词 async buildFixJsonPrompt(): Promise<string> { const prompt = `你需要帮助用户修复 JSON 格式或结构错误。 # 任务说明 1. 输入内容是一个存在格式或结构错误的 JSON 字符串。 2. 你的目标是修正所有语法和结构错误,使其成为合法、可解析的 JSON。 3. 保持原有数据内容和结构尽可能不变,仅修正语法和结构问题。 4. 只返回修正后的 JSON 字符串,不要添加任何解释、注释或多余内容。 5. 如果有无法修复的内容,请尽量保留原始信息并补全缺失部分。 `; return prompt; } }