@voyager-0x/agent-mcp
Version:
Voyager MCP Agent - A powerful Model Context Protocol agent
93 lines (68 loc) • 2.84 kB
text/typescript
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;
}
}