@becrafter/prompt-manager 0.1.1 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +304 -121
- package/app/cli/commands/start.js +28 -4
- package/app/cli/support/argv.js +6 -0
- package/env.example +32 -0
- package/package.json +36 -6
- package/packages/server/api/admin.routes.js +409 -1
- package/packages/server/api/open.routes.js +7 -2
- package/packages/server/api/tool.routes.js +479 -0
- package/packages/server/app.js +97 -25
- package/packages/server/configs/models/built-in/bigmodel.yaml +6 -0
- package/packages/server/configs/models/providers.yaml +50 -0
- package/packages/server/configs/templates/built-in/general-iteration.yaml +60 -0
- package/packages/server/configs/templates/built-in/general-optimize.yaml +63 -0
- package/packages/server/configs/templates/built-in/output-format-optimize.yaml +95 -0
- package/packages/server/mcp/heartbeat-patch.js +73 -0
- package/packages/server/mcp/mcp.server.js +63 -314
- package/packages/server/mcp/prompt.handler.js +26 -0
- package/packages/server/mcp/thinking-toolkit.handler.js +380 -0
- package/packages/server/package.json +35 -3
- package/packages/server/server.js +114 -12
- package/packages/server/services/TerminalService.js +498 -0
- package/packages/server/services/WebSocketService.js +484 -0
- package/packages/server/services/manager.js +38 -7
- package/packages/server/services/model.service.js +473 -0
- package/packages/server/services/optimization.service.js +457 -0
- package/packages/server/services/template.service.js +333 -0
- package/packages/server/toolm/tool-description-generator-optimized.service.js +5 -2
- package/packages/server/toolm/tool-sync.service.js +47 -3
- package/packages/server/utils/config.js +8 -1
- package/packages/server/utils/port-checker.js +63 -0
- package/packages/server/utils/util.js +27 -0
- package/IFLOW.md +0 -175
- package/app/desktop/assets/app.1.png +0 -0
- package/app/desktop/assets/app.png +0 -0
- package/app/desktop/assets/icons/icon.icns +0 -0
- package/app/desktop/assets/icons/icon.ico +0 -0
- package/app/desktop/assets/icons/icon.png +0 -0
- package/app/desktop/assets/icons/tray.png +0 -0
- package/app/desktop/assets/templates/about.html +0 -147
- package/app/desktop/assets/tray.1.png +0 -0
- package/app/desktop/assets/tray.png +0 -0
- package/app/desktop/main.js +0 -241
- package/app/desktop/package-lock.json +0 -4997
- package/app/desktop/package.json +0 -100
- package/app/desktop/preload.js +0 -7
- package/app/desktop/src/core/error-handler.js +0 -108
- package/app/desktop/src/core/event-emitter.js +0 -84
- package/app/desktop/src/core/logger.js +0 -108
- package/app/desktop/src/core/state-manager.js +0 -125
- package/app/desktop/src/services/module-loader.js +0 -214
- package/app/desktop/src/services/runtime-manager.js +0 -301
- package/app/desktop/src/services/service-manager.js +0 -169
- package/app/desktop/src/services/update-manager.js +0 -268
- package/app/desktop/src/ui/about-dialog-manager.js +0 -208
- package/app/desktop/src/ui/admin-window-manager.js +0 -757
- package/app/desktop/src/ui/splash-manager.js +0 -253
- package/app/desktop/src/ui/tray-manager.js +0 -186
- package/app/desktop/src/utils/icon-manager.js +0 -133
- package/app/desktop/src/utils/path-utils.js +0 -58
- package/app/desktop/src/utils/resource-paths.js +0 -49
- package/app/desktop/src/utils/resource-sync.js +0 -260
- package/app/desktop/src/utils/runtime-sync.js +0 -241
- package/app/desktop/src/utils/template-renderer.js +0 -284
- package/app/desktop/src/utils/version-utils.js +0 -59
- package/examples/prompts/developer/code-review.yaml +0 -32
- package/examples/prompts/developer/code_refactoring.yaml +0 -31
- package/examples/prompts/developer/doc-generator.yaml +0 -36
- package/examples/prompts/developer/error-code-fixer.yaml +0 -35
- package/examples/prompts/engineer/engineer-professional.yaml +0 -92
- package/examples/prompts/engineer/laowang-engineer.yaml +0 -132
- package/examples/prompts/engineer/nekomata-engineer.yaml +0 -123
- package/examples/prompts/engineer/ojousama-engineer.yaml +0 -124
- package/examples/prompts/generator/gen_3d_edu_webpage_html.yaml +0 -117
- package/examples/prompts/generator/gen_3d_webpage_html.yaml +0 -75
- package/examples/prompts/generator/gen_bento_grid_html.yaml +0 -112
- package/examples/prompts/generator/gen_html_web_page.yaml +0 -88
- package/examples/prompts/generator/gen_knowledge_card_html.yaml +0 -83
- package/examples/prompts/generator/gen_magazine_card_html.yaml +0 -82
- package/examples/prompts/generator/gen_mimeng_headline_title.yaml +0 -71
- package/examples/prompts/generator/gen_podcast_script.yaml +0 -69
- package/examples/prompts/generator/gen_prd_prototype_html.yaml +0 -175
- package/examples/prompts/generator/gen_summarize.yaml +0 -157
- package/examples/prompts/generator/gen_title.yaml +0 -119
- package/examples/prompts/generator/others/api_documentation.yaml +0 -32
- package/examples/prompts/generator/others/build_mcp_server.yaml +0 -26
- package/examples/prompts/generator/others/project_architecture.yaml +0 -31
- package/examples/prompts/generator/others/test_case_generator.yaml +0 -30
- package/examples/prompts/generator/others/writing_assistant.yaml +0 -72
- package/examples/prompts/recommend/human_3-0_growth_diagnostic_coach_prompt.yaml +0 -105
- package/examples/prompts/workflow/sixstep-workflow.yaml +0 -192
- package/packages/admin-ui/.babelrc +0 -3
- package/packages/admin-ui/admin.html +0 -412
- package/packages/admin-ui/css/codemirror-theme_xq-light.css +0 -43
- package/packages/admin-ui/css/codemirror.css +0 -344
- package/packages/admin-ui/css/main.css +0 -2592
- package/packages/admin-ui/css/recommended-prompts.css +0 -610
- package/packages/admin-ui/package-lock.json +0 -6981
- package/packages/admin-ui/package.json +0 -36
- package/packages/admin-ui/src/codemirror.js +0 -53
- package/packages/admin-ui/src/index.js +0 -3188
- package/packages/admin-ui/webpack.config.js +0 -76
- package/packages/server/toolm/test-tools.js +0 -264
- package/scripts/build-icons.js +0 -135
- package/scripts/build.sh +0 -57
- package/scripts/postinstall.js +0 -34
- package/scripts/surge/CNAME +0 -1
- package/scripts/surge/README.md +0 -47
- package/scripts/surge/package-lock.json +0 -34
- package/scripts/surge/package.json +0 -20
- package/scripts/surge/sync-to-surge.js +0 -151
|
@@ -4,15 +4,66 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
4
4
|
import {
|
|
5
5
|
handleGetPrompt,
|
|
6
6
|
handleSearchPrompts,
|
|
7
|
-
handleReloadPrompts
|
|
7
|
+
handleReloadPrompts,
|
|
8
|
+
handlePrompts
|
|
8
9
|
} from './prompt.handler.js';
|
|
9
10
|
import { handleToolM } from '../toolm/index.js';
|
|
10
|
-
import {
|
|
11
|
-
import { handleThinkPlan } from './think-plan.handler.js';
|
|
11
|
+
import { handleThinkingToolkit, THINKING_SCENARIOS } from './thinking-toolkit.handler.js';
|
|
12
12
|
// import { generateToolmDescription } from '../toolm/tool-description-generator.service.js';
|
|
13
13
|
import { generateToolmDescription } from '../toolm/tool-description-generator-optimized.service.js';
|
|
14
14
|
import { toolLoaderService } from '../toolm/tool-loader.service.js';
|
|
15
15
|
|
|
16
|
+
const sequentialThinkingPayloadSchema = z.object({
|
|
17
|
+
thought: z.string().describe('当前思考内容,是顺序思考步骤的主体'),
|
|
18
|
+
nextThoughtNeeded: z.boolean().optional().describe('是否继续向下一个思考步骤推进'),
|
|
19
|
+
thoughtNumber: z.number().int().min(1).optional().describe('显式指定此次思考的编号'),
|
|
20
|
+
totalThoughts: z.number().int().min(1).optional().describe('预计需要的总思考步数'),
|
|
21
|
+
isRevision: z.boolean().optional().describe('该思考是否用于修订之前的结果'),
|
|
22
|
+
revisesThought: z.number().int().min(1).optional().describe('若为修订,指向被修订的思考编号'),
|
|
23
|
+
branchFromThought: z.number().int().min(1).optional().describe('创建分支时,来源的思考编号'),
|
|
24
|
+
branchId: z.string().optional().describe('为新的思考分支设置的标识'),
|
|
25
|
+
needsMoreThoughts: z.boolean().optional().describe('终点后发现仍需更多思考时标记为 true')
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const thinkPlanPayloadSchema = z.object({
|
|
29
|
+
thought: z.string().describe('对当前任务的分析、假设或洞见'),
|
|
30
|
+
plan: z.string().describe('将任务拆分为可执行步骤的计划文本'),
|
|
31
|
+
action: z.string().describe('下一步需要执行的具体行动'),
|
|
32
|
+
thoughtNumber: z.string().describe('思考步骤编号,用于追踪整个规划过程'),
|
|
33
|
+
sessionId: z.string().optional().describe('可选的会话标识,区分并行任务')
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const metaSchema = z.object({
|
|
37
|
+
scenario: z.string().describe('思考场景:exploratory(顺序思考)或 execution(思考规划)').optional(),
|
|
38
|
+
progressToken: z.any().optional()
|
|
39
|
+
}).catchall(z.any());
|
|
40
|
+
|
|
41
|
+
const thinkingToolkitPayloadSchema = z.object({
|
|
42
|
+
thought: z.string().optional().describe('思考内容(两种场景都依赖)'),
|
|
43
|
+
thoughtNumber: z.union([z.string(), z.number()]).optional().describe('思考编号;execution 场景必填,可使用字符串或数字'),
|
|
44
|
+
plan: z.string().optional().describe('execution 场景:将任务拆分成可执行步骤'),
|
|
45
|
+
action: z.string().optional().describe('execution 场景:下一步可验证的行动'),
|
|
46
|
+
sessionId: z.string().optional().describe('execution 场景:可选会话标识'),
|
|
47
|
+
nextThoughtNeeded: z.boolean().optional().describe('exploratory 场景:是否继续下一步'),
|
|
48
|
+
totalThoughts: z.number().int().min(1).optional().describe('exploratory 场景:预计总步数'),
|
|
49
|
+
isRevision: z.boolean().optional().describe('exploratory 场景:是否为修订'),
|
|
50
|
+
revisesThought: z.number().int().min(1).optional().describe('exploratory 场景:被修订的编号'),
|
|
51
|
+
branchFromThought: z.number().int().min(1).optional().describe('exploratory 场景:分支起点编号'),
|
|
52
|
+
branchId: z.string().optional().describe('exploratory 场景:分支 ID'),
|
|
53
|
+
needsMoreThoughts: z.boolean().optional().describe('exploratory 场景:终点后仍需继续时标记')
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const thinkingToolkitInputSchema = {
|
|
57
|
+
scenario: z.enum(
|
|
58
|
+
[THINKING_SCENARIOS.EXPLORATORY, THINKING_SCENARIOS.EXECUTION],
|
|
59
|
+
{
|
|
60
|
+
description: '思考场景:exploratory(顺序思考)或 execution(思考规划)'
|
|
61
|
+
}
|
|
62
|
+
).optional(),
|
|
63
|
+
payload: thinkingToolkitPayloadSchema.optional().describe('根据场景填写对应字段;缺省或 null 时仅返回说明'),
|
|
64
|
+
_meta: metaSchema.optional()
|
|
65
|
+
};
|
|
66
|
+
|
|
16
67
|
class Server {
|
|
17
68
|
constructor() {
|
|
18
69
|
this.server = new McpServer(
|
|
@@ -59,23 +110,14 @@ export const getMcpServer = async () => {
|
|
|
59
110
|
|
|
60
111
|
mcpServer.registerTools([
|
|
61
112
|
{
|
|
62
|
-
name: '
|
|
63
|
-
description:
|
|
64
|
-
inputSchema: {
|
|
65
|
-
name: z.string().optional().describe('提示词名称或关键词,用于搜索匹配提示词'),
|
|
66
|
-
},
|
|
67
|
-
handler: async (args) => {
|
|
68
|
-
return handleSearchPrompts(args);
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
name: 'get_prompt',
|
|
73
|
-
description: `功能:精准获取并应用提示词详情\n描述:根据提示词 ID 或名称 调用具体内容,自动将其嵌入当前对话上下文,无需用户手动复制。支持通过 search_prompts 返回的 ID/名称直接获取。\n\n示例:\n- 用户:"使用 ID 001" → 工具自动加载诗歌创作提示词并生成内容\n- 用户:"调用'营销文案生成'" → 工具匹配名称后应用对应提示词`,
|
|
113
|
+
name: 'prompts',
|
|
114
|
+
description: `🤖 **提示词助手** - 你的AI提示词管家\n\n【规范名称】promptmanager_prompts\n【调用说明】在提示词中使用 promptmanager_prompts,实际调用时自动映射到 mcp__[server]__action\n\n我可以帮你找到并使用各种专业的提示词,让AI变得更聪明、更专业。\n\n## 我能做什么\n- 🔍 **找提示词** - 告诉我你想要什么功能,我帮你搜索匹配的提示词\n- 📋 **用提示词** - 帮你加载并应用专业的提示词到对话中\n- 📚 **逛提示词库** - 带你浏览所有可用的提示词,了解有什么可以用的\n\n## 在对话中怎么和我说\n\n**想找提示词时可以说:**\n- "帮我找找代码审查相关的提示词"\n- "有什么标题生成的提示词可以用吗?"\n- "我想看看所有可用的提示词"\n\n**想用某个提示词时可以说:**\n- "用代码审查的提示词帮我看看这段代码"\n- "加载标题生成器,我要写文章标题"\n- "用文档生成提示词帮我写API文档"\n\n## 实际使用示例\n\n\`\`\`json\n// 对话中的自然表达:\n// "我想找个代码审查的提示词"\n{"action": "search", "query": "代码审查"}\n\n// "帮我用标题生成器"\n{"action": "get", "query": "examples-prompts-generator-gen_title"}\n\n// "看看有什么提示词可以用"\n{"action": "search"}\n\`\`\`\n\n**提示:** 先搜索找到合适的提示词ID,然后用"get"加载它,就能直接在对话中使用啦!`,
|
|
74
115
|
inputSchema: {
|
|
75
|
-
|
|
116
|
+
action: z.enum(['search', 'get']).describe('操作类型:search(搜索提示词) 或 get(获取提示词详情)'),
|
|
117
|
+
query: z.string().optional().describe('搜索关键词(用于search) 或 提示词ID/名称(用于get)'),
|
|
76
118
|
},
|
|
77
119
|
handler: async (args) => {
|
|
78
|
-
return
|
|
120
|
+
return handlePrompts(args);
|
|
79
121
|
}
|
|
80
122
|
},
|
|
81
123
|
{
|
|
@@ -89,303 +131,10 @@ export const getMcpServer = async () => {
|
|
|
89
131
|
}
|
|
90
132
|
},
|
|
91
133
|
{
|
|
92
|
-
name: '
|
|
93
|
-
description:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
这是一个用于**探索性、分析性、不确定性**问题的动态思考工具。支持非线性思维、修订和分支,适合需要深入分析和反复验证的场景。
|
|
97
|
-
|
|
98
|
-
**重要说明:** 此工具支持 MCP 工具协调功能。模型会分析可用工具及其描述,智能推荐合适的工具,并由服务器跟踪和组织这些推荐。
|
|
99
|
-
|
|
100
|
-
## 🔍 场景识别 - 何时使用此工具?
|
|
101
|
-
|
|
102
|
-
### ✅ 优先使用 sequentialthinking 的场景:
|
|
103
|
-
|
|
104
|
-
**1. 探索性问题(问题不明确)**
|
|
105
|
-
- ❓ "为什么系统性能下降?" → 需要分析原因
|
|
106
|
-
- ❓ "用户流失率高的原因是什么?" → 需要诊断问题
|
|
107
|
-
- ❓ "这个bug的根本原因是什么?" → 需要深入调查
|
|
108
|
-
|
|
109
|
-
**2. 分析性任务(需要假设验证)**
|
|
110
|
-
- 📊 复杂数据分析
|
|
111
|
-
- 🔬 问题诊断和根因分析
|
|
112
|
-
- 🧪 假设生成和验证
|
|
113
|
-
- 📈 趋势分析和预测
|
|
114
|
-
|
|
115
|
-
**3. 创意性工作(需要多路径探索)**
|
|
116
|
-
- 💡 产品功能设计
|
|
117
|
-
- 🎨 方案设计
|
|
118
|
-
- 🚀 创新思路探索
|
|
119
|
-
- 🔄 需要对比多个方案
|
|
120
|
-
|
|
121
|
-
**4. 需要修订和分支的场景**
|
|
122
|
-
- 发现之前的思考有误,需要修正
|
|
123
|
-
- 需要探索多个可能的解决方案
|
|
124
|
-
- 需要回溯和重新评估
|
|
125
|
-
|
|
126
|
-
**5. 需要工具指导的场景**
|
|
127
|
-
- 不确定应该使用哪些工具
|
|
128
|
-
- 需要了解工具的执行顺序
|
|
129
|
-
- 需要工具使用的参数建议
|
|
130
|
-
- 需要工具推荐的合理性说明
|
|
131
|
-
|
|
132
|
-
### ❌ 不适合使用 sequentialthinking 的场景:
|
|
133
|
-
- ✅ 目标明确,只需要执行 → 使用 think_and_plan
|
|
134
|
-
- ✅ 需要具体的行动步骤 → 使用 think_and_plan
|
|
135
|
-
- ✅ 任务分解和执行规划 → 使用 think_and_plan
|
|
136
|
-
|
|
137
|
-
## 🆚 工具对比决策树
|
|
138
|
-
|
|
139
|
-
决策流程:
|
|
140
|
-
问题是否明确?
|
|
141
|
-
- 不明确/需要探索 → sequentialthinking
|
|
142
|
-
- 明确 + 需要执行 → think_and_plan
|
|
143
|
-
- 明确 + 只需分析 → sequentialthinking
|
|
144
|
-
- 需要工具推荐和指导 → sequentialthinking
|
|
145
|
-
|
|
146
|
-
## ✨ 核心特性
|
|
147
|
-
|
|
148
|
-
**1. 非线性思维**
|
|
149
|
-
- 支持分支(branch):从某个思考点探索多个方向
|
|
150
|
-
- 支持修订(revision):修正之前的思考
|
|
151
|
-
- 支持回溯:重新评估之前的步骤
|
|
152
|
-
|
|
153
|
-
**2. 动态调整**
|
|
154
|
-
- 可以调整总思考步骤数(total_thoughts)
|
|
155
|
-
- 可以中途添加更多思考
|
|
156
|
-
- 可以表达不确定性
|
|
157
|
-
- 可以探索替代方案
|
|
158
|
-
|
|
159
|
-
**3. 进度追踪**
|
|
160
|
-
- 显示思考进度(当前/总数/百分比)
|
|
161
|
-
- 自动生成最终总结
|
|
162
|
-
- 提取关键洞察和结论
|
|
163
|
-
- 跟踪已推荐的步骤和剩余步骤
|
|
164
|
-
|
|
165
|
-
**4. 灵活性强**
|
|
166
|
-
- 单一 thought 字段,内容自由
|
|
167
|
-
- 支持假设生成和验证
|
|
168
|
-
- 支持问题分解和重构
|
|
169
|
-
- 支持工具推荐和参数建议
|
|
170
|
-
|
|
171
|
-
**5. MCP 工具协调(核心特性)**
|
|
172
|
-
- 🔧 为每个步骤推荐合适的工具
|
|
173
|
-
- 📝 提供工具推荐的合理性说明
|
|
174
|
-
- 📋 建议工具执行顺序和参数
|
|
175
|
-
- 📊 跟踪之前的推荐和剩余步骤
|
|
176
|
-
- 🎯 分析可用工具并做出智能推荐
|
|
177
|
-
|
|
178
|
-
## 📋 使用指南
|
|
179
|
-
|
|
180
|
-
**参数说明:**
|
|
181
|
-
|
|
182
|
-
**基础参数:**
|
|
183
|
-
- \`thought\`(必需):当前思考步骤,可以包括:
|
|
184
|
-
* 常规分析步骤
|
|
185
|
-
* 对之前思考的修订
|
|
186
|
-
* 对之前决策的质疑
|
|
187
|
-
* 意识到需要更多分析
|
|
188
|
-
* 方法的改变
|
|
189
|
-
* 假设生成
|
|
190
|
-
* 假设验证
|
|
191
|
-
* 工具推荐和合理性说明
|
|
192
|
-
- \`thoughtNumber\`(可选):当前思考编号(可以从初始总数继续增加)
|
|
193
|
-
- \`totalThoughts\`(可选):当前估计所需思考数(可动态调整)
|
|
194
|
-
- \`nextThoughtNeeded\`(可选):是否需要继续思考(即使看似已到终点)
|
|
195
|
-
|
|
196
|
-
**修订和分支参数:**
|
|
197
|
-
- \`isRevision\`(可选):布尔值,表示此思考是否修订了之前的思考
|
|
198
|
-
- \`revisesThought\`(可选):如果 isRevision 为 true,指定要重新考虑的思考编号
|
|
199
|
-
- \`branchFromThought\`(可选):如果创建分支,指定分支起点的思考编号
|
|
200
|
-
- \`branchId\`(可选):当前分支的标识符(如果有)
|
|
201
|
-
- \`needsMoreThoughts\`(可选):如果到达终点但意识到需要更多思考
|
|
202
|
-
|
|
203
|
-
**MCP 工具协调参数:**
|
|
204
|
-
- \`available_mcp_tools\`(可选):可用 MCP 工具名称数组(例如:["mcp-omnisearch", "mcp-turso-cloud"])
|
|
205
|
-
- \`current_step\`(可选):当前步骤推荐,包括:
|
|
206
|
-
* \`step_description\`:需要做什么
|
|
207
|
-
* \`recommended_tools\`:此步骤推荐的工具
|
|
208
|
-
* \`expected_outcome\`:此步骤的预期结果
|
|
209
|
-
* \`next_step_conditions\`:下一步需要考虑的条件
|
|
210
|
-
- \`previous_steps\`(可选):已推荐的步骤
|
|
211
|
-
- \`remaining_steps\`(可选):后续步骤的高级描述
|
|
212
|
-
|
|
213
|
-
**使用流程:**
|
|
214
|
-
1. 从初始估计开始,但准备随时调整
|
|
215
|
-
2. 自由质疑和修订之前的思考
|
|
216
|
-
3. 即使到达"终点"也可以继续添加思考
|
|
217
|
-
4. 表达不确定性,探索替代方案
|
|
218
|
-
5. 标记修订和分支
|
|
219
|
-
6. 生成假设并验证
|
|
220
|
-
7. **考虑可用工具,为当前步骤推荐合适的工具**
|
|
221
|
-
8. **提供工具推荐的清晰合理性说明**
|
|
222
|
-
9. **在适当时建议具体的工具参数**
|
|
223
|
-
10. **考虑每个步骤的替代工具**
|
|
224
|
-
11. **跟踪推荐步骤的进度**
|
|
225
|
-
12. 忽略与当前步骤无关的信息
|
|
226
|
-
13. 重复直到满意
|
|
227
|
-
14. 只在真正完成且得到满意答案时设置 nextThoughtNeeded=false
|
|
228
|
-
15. 提供单一、理想情况下正确的答案作为最终输出
|
|
229
|
-
|
|
230
|
-
## 💡 典型使用示例
|
|
231
|
-
|
|
232
|
-
**示例1:问题诊断(带工具推荐)**
|
|
233
|
-
- Thought 1: "分析系统性能下降的可能原因"
|
|
234
|
-
- current_step: { step_description: "检查系统日志", recommended_tools: ["mcp-log-reader"], expected_outcome: "发现错误模式" }
|
|
235
|
-
- Thought 2: "检查数据库查询性能"
|
|
236
|
-
- current_step: { step_description: "分析慢查询", recommended_tools: ["mcp-db-profiler"], expected_outcome: "识别性能瓶颈" }
|
|
237
|
-
- Thought 3: "发现查询慢,需要进一步分析"(可能需要修订或分支)
|
|
238
|
-
|
|
239
|
-
**示例2:方案设计(带工具协调)**
|
|
240
|
-
- Thought 1: "设计用户登录功能"
|
|
241
|
-
- current_step: { step_description: "设计认证流程", recommended_tools: ["mcp-diagram-tool"], expected_outcome: "流程图" }
|
|
242
|
-
- Thought 2: "考虑安全性要求"
|
|
243
|
-
- Thought 3: "修订:需要添加双因素认证"(revision)
|
|
244
|
-
- current_step: { step_description: "实现2FA", recommended_tools: ["mcp-auth-library"], expected_outcome: "安全登录方案" }
|
|
245
|
-
|
|
246
|
-
**示例3:多方案探索(带工具推荐)**
|
|
247
|
-
- Thought 1: "评估三种架构方案"
|
|
248
|
-
- Branch A: "方案A:微服务架构"
|
|
249
|
-
- current_step: { step_description: "评估微服务方案", recommended_tools: ["mcp-architecture-analyzer"], expected_outcome: "方案A评估报告" }
|
|
250
|
-
- Branch B: "方案B:单体架构"
|
|
251
|
-
- current_step: { step_description: "评估单体方案", recommended_tools: ["mcp-architecture-analyzer"], expected_outcome: "方案B评估报告" }`,
|
|
252
|
-
inputSchema: {
|
|
253
|
-
thought: z.string().describe('Your current thinking step'),
|
|
254
|
-
nextThoughtNeeded: z.boolean().optional().describe('Whether another thought step is needed'),
|
|
255
|
-
thoughtNumber: z.number().int().min(1).optional().describe('Current thought number'),
|
|
256
|
-
totalThoughts: z.number().int().min(1).optional().describe('Estimated total thoughts needed'),
|
|
257
|
-
isRevision: z.boolean().optional().describe('Whether this revises previous thinking'),
|
|
258
|
-
revisesThought: z.number().int().min(1).optional().describe('Which thought is being reconsidered'),
|
|
259
|
-
branchFromThought: z.number().int().min(1).optional().describe('Branching point thought number'),
|
|
260
|
-
branchId: z.string().optional().describe('Branch identifier'),
|
|
261
|
-
needsMoreThoughts: z.boolean().optional().describe('If more thoughts are needed')
|
|
262
|
-
},
|
|
263
|
-
handler: async (args) => {
|
|
264
|
-
return handleSequentialThinking(args);
|
|
265
|
-
}
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
name: 'think_and_plan',
|
|
269
|
-
description: `📋 **思考规划工具 (Think & Plan)** - 结构化执行导向工具
|
|
270
|
-
|
|
271
|
-
## 🎯 工具定位
|
|
272
|
-
这是一个用于**目标明确、需要执行**的结构化规划工具。强调思考-计划-行动的三元结构,适合将复杂任务分解为可执行步骤并追踪执行过程。
|
|
273
|
-
|
|
274
|
-
## 🔍 场景识别 - 何时使用此工具?
|
|
275
|
-
|
|
276
|
-
### ✅ 优先使用 think_and_plan 的场景:
|
|
277
|
-
|
|
278
|
-
**1. 任务执行(目标明确)**
|
|
279
|
-
- ✅ "实现用户登录功能" → 需要具体实现步骤
|
|
280
|
-
- ✅ "部署新版本到生产环境" → 需要执行计划
|
|
281
|
-
- ✅ "完成月度报告" → 需要任务分解
|
|
282
|
-
- ✅ "重构某个模块" → 需要实施步骤
|
|
283
|
-
|
|
284
|
-
**2. 项目管理(需要行动追踪)**
|
|
285
|
-
- 📝 任务分解和步骤规划
|
|
286
|
-
- 📅 项目里程碑规划
|
|
287
|
-
- ✅ 行动项追踪
|
|
288
|
-
- 🎯 目标达成路径
|
|
289
|
-
|
|
290
|
-
**3. 结构化问题(需要明确步骤)**
|
|
291
|
-
- 🔧 流程设计和实施
|
|
292
|
-
- 📊 方案执行计划
|
|
293
|
-
- 🚀 功能开发规划
|
|
294
|
-
- 🔄 系统迁移计划
|
|
295
|
-
|
|
296
|
-
**4. 需要可执行行动的场景**
|
|
297
|
-
- 每个步骤都需要明确的下一步行动
|
|
298
|
-
- 需要调用具体工具或执行具体操作
|
|
299
|
-
- 需要验证和检查点
|
|
300
|
-
|
|
301
|
-
### ❌ 不适合使用 think_and_plan 的场景:
|
|
302
|
-
- ❓ 问题不明确,需要探索 → 使用 sequentialthinking
|
|
303
|
-
- ❓ 需要分析原因或诊断问题 → 使用 sequentialthinking
|
|
304
|
-
- ❓ 需要多方案对比或修订 → 使用 sequentialthinking
|
|
305
|
-
- ❓ 创意性工作,需要发散思维 → 使用 sequentialthinking
|
|
306
|
-
|
|
307
|
-
## 🆚 工具对比决策树
|
|
308
|
-
|
|
309
|
-
决策流程:
|
|
310
|
-
问题是否明确?
|
|
311
|
-
- 明确 + 需要执行 → think_and_plan (优先选择)
|
|
312
|
-
- 明确 + 只需分析 → sequentialthinking
|
|
313
|
-
- 不明确/需要探索 → sequentialthinking
|
|
314
|
-
|
|
315
|
-
## ✨ 核心特性
|
|
316
|
-
|
|
317
|
-
**1. 三元结构(思考-计划-行动)**
|
|
318
|
-
- 🤔 Thought(思考):分析、假设、洞见
|
|
319
|
-
- 📋 Plan(计划):分解为可执行步骤
|
|
320
|
-
- 🎯 Action(行动):具体、可执行、可验证的下一步
|
|
321
|
-
|
|
322
|
-
**2. 执行导向**
|
|
323
|
-
- 强制要求 action 字段
|
|
324
|
-
- 每个步骤都有明确的下一步
|
|
325
|
-
- 支持工具调用建议
|
|
326
|
-
|
|
327
|
-
**3. 会话隔离**
|
|
328
|
-
- 支持 sessionId 区分不同会话
|
|
329
|
-
- 多任务并行管理
|
|
330
|
-
- 独立记录和追踪
|
|
331
|
-
|
|
332
|
-
**4. 结构化强**
|
|
333
|
-
- 固定结构,使用简单
|
|
334
|
-
- 便于复盘和优化
|
|
335
|
-
- 适合团队协作
|
|
336
|
-
|
|
337
|
-
## 📋 使用指南
|
|
338
|
-
|
|
339
|
-
**参数说明:**
|
|
340
|
-
- thought(必需):当前思考内容,分析、假设、洞见、反思
|
|
341
|
-
- plan(必需):针对当前任务的计划或方案,分解为可执行步骤
|
|
342
|
-
- action(必需):下一步行动,必须具体、可执行、可验证,可以是工具调用
|
|
343
|
-
- thoughtNumber(必需):思考步骤编号,用于追踪和回溯
|
|
344
|
-
- sessionId(可选):会话标识符,默认为 'default'
|
|
345
|
-
|
|
346
|
-
**使用流程:**
|
|
347
|
-
1. 明确任务目标
|
|
348
|
-
2. 思考当前步骤的核心问题
|
|
349
|
-
3. 制定具体的执行计划
|
|
350
|
-
4. 定义明确的下一步行动(可包含工具调用)
|
|
351
|
-
5. 按编号顺序记录每个步骤
|
|
352
|
-
6. 完成后可获取摘要和回顾
|
|
353
|
-
|
|
354
|
-
## 💡 典型使用示例
|
|
355
|
-
|
|
356
|
-
**示例1:功能开发**
|
|
357
|
-
- Thought: "需要实现用户登录功能,考虑安全性和用户体验"
|
|
358
|
-
- Plan: "1. 设计登录接口 2. 实现密码加密 3. 添加验证码 4. 编写测试"
|
|
359
|
-
- Action: "调用代码生成工具创建登录接口框架"
|
|
360
|
-
|
|
361
|
-
**示例2:部署任务**
|
|
362
|
-
- Thought: "需要将新版本安全部署到生产环境"
|
|
363
|
-
- Plan: "1. 备份当前版本 2. 执行数据库迁移 3. 部署新代码 4. 验证功能"
|
|
364
|
-
- Action: "执行备份脚本,检查备份是否成功"
|
|
365
|
-
|
|
366
|
-
**示例3:报告编写**
|
|
367
|
-
- Thought: "需要完成月度业务分析报告"
|
|
368
|
-
- Plan: "1. 收集数据 2. 分析趋势 3. 编写报告 4. 审核发布"
|
|
369
|
-
- Action: "调用数据分析工具提取本月业务数据"
|
|
370
|
-
|
|
371
|
-
## 🔄 与 sequentialthinking 的配合使用
|
|
372
|
-
|
|
373
|
-
**推荐工作流:**
|
|
374
|
-
1. **探索阶段** → 使用 sequentialthinking
|
|
375
|
-
- 分析问题、探索方案、验证假设
|
|
376
|
-
2. **执行阶段** → 使用 think_and_plan
|
|
377
|
-
- 将确定的方案转化为可执行步骤
|
|
378
|
-
- 追踪执行进度和结果`,
|
|
379
|
-
inputSchema: {
|
|
380
|
-
thought: z.string().describe('当前的思考内容,可以是对问题的分析、假设、洞见、反思或对前一步骤的总结。强调深度思考和逻辑推演,是每一步的核心。'),
|
|
381
|
-
plan: z.string().describe('针对当前任务拟定的计划或方案,将复杂问题分解为多个可执行步骤。'),
|
|
382
|
-
action: z.string().describe('基于当前思考和计划,建议下一步采取的行动步骤,要求具体、可执行、可验证,可以是下一步需要调用的一个或多个工具。'),
|
|
383
|
-
thoughtNumber: z.string().describe('当前思考步骤的编号,用于追踪和回溯整个思考与规划过程,便于后续复盘与优化。'),
|
|
384
|
-
sessionId: z.string().optional().describe('会话标识符,用于区分不同会话的记录,默认为 \'default\'')
|
|
385
|
-
},
|
|
386
|
-
handler: async (args) => {
|
|
387
|
-
return handleThinkPlan(args);
|
|
388
|
-
}
|
|
134
|
+
name: 'thinking',
|
|
135
|
+
description: `🧭 **智能思考工具箱**\n\n【规范名称】promptmanager_thinking\n【调用说明】在提示词中使用 promptmanager_thinking,实际调用时自动映射到 mcp__[server]__action\n\n⚠️ **务必先读说明**:每次首次使用某个 scenario 时,先发送仅包含 \`{"scenario":"..."}\` 的请求获取完整描述,确认理解适用场景与参数要求后,再携带 payload 调用。跳过此步骤易导致字段缺失或流程误用。\n\n## 核心特性\n\n- **双模式思考** - 提供顺序思考(exploratory)和思考规划(execution)两种模式\n- **智能引导** - 通过场景参数自动匹配合适的思考策略\n- **结构化流程** - 支持多轮思考追踪和分支管理\n- **错误预防** - 强制预读说明,避免参数配置错误\n- **灵活扩展** - 支持修订、分支和会话管理\n\n## 何时使用 Thinking Toolkit\n\n### 快速决策(IF-THEN 规则):\n- IF 需要探索性思考、诊断问题、发散推理 → 使用 scenario: "exploratory"\n- IF 需要结构化规划、制定执行步骤 → 使用 scenario: "execution"\n- IF 看到 scenario 参数 → 使用 thinking_toolkit 调用\n- IF 不确定场景用法 → 先用仅包含 scenario 的请求查看说明\n\n### 首次使用任何场景\n⚠️ **必须先发送仅包含 scenario 的请求** 阅读场景完整描述\n⚠️ 示例:thinking_toolkit with scenario: "exploratory" (无payload)\n\n## 如何使用 Thinking Toolkit\n\n### 模式 1:查看场景说明(首次使用)\n\n\`\`\`javascript\nmcp_mcp-router_thinking_toolkit({\n scenario: "exploratory"\n})\n\`\`\`\n\n**重要**:每次使用新场景前必须先执行此步骤,了解场景的具体参数要求和使用方法。\n\n### 模式 2:执行顺序思考\n\n\`\`\`javascript\nmcp_mcp-router_thinking_toolkit({\n scenario: "exploratory",\n payload: {\n thought: "分析性能下降的可能原因",\n totalThoughts: 5,\n nextThoughtNeeded: true\n }\n})\n\`\`\`\n\n### 模式 3:执行思考规划\n\n\`\`\`javascript\nmcp_mcp-router_thinking_toolkit({\n scenario: "execution",\n payload: {\n thought: "需要上线新版本",\n plan: "1. 备份 2. 部署 3. 验证",\n action: "先执行备份脚本",\n thoughtNumber: "TP-001"\n }\n})\n\`\`\`\n\n## 关键规则\n\n### ✅ 正确格式\n- 先发送 \`{"scenario": "..."}\` 获取场景说明\n- 根据说明确认参数要求后,再携带 payload 调用\n- scenario 必填:exploratory(顺序思考)或 execution(思考规划)\n- payload 根据场景填写对应字段\n\n### ❌ 常见错误\n- 不要跳过场景说明,直接携带 payload 调用(易导致参数错误)\n- 不要混用不同场景的参数字段\n- 不要在首次使用场景时直接执行 payload\n\n## 支持的思考场景\n\n### Exploratory(顺序思考)\n适合探索、诊断、发散推理场景,支持多轮思考追踪和分支管理。\n\n### Execution(思考规划)\n适合结构化计划制定和行动追踪,按步骤执行任务规划。\n\n更多场景正在开发中...`,
|
|
136
|
+
inputSchema: thinkingToolkitInputSchema,
|
|
137
|
+
handler: async (args) => handleThinkingToolkit(args)
|
|
389
138
|
}
|
|
390
139
|
// {
|
|
391
140
|
// name: 'reload_prompts',
|
|
@@ -263,3 +263,29 @@ function convertToText(result, format) {
|
|
|
263
263
|
]
|
|
264
264
|
};
|
|
265
265
|
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* 处理融合的 prompts 工具调用
|
|
269
|
+
* 支持搜索和获取提示词两种操作
|
|
270
|
+
*/
|
|
271
|
+
export async function handlePrompts(args) {
|
|
272
|
+
const { action, query } = args;
|
|
273
|
+
|
|
274
|
+
if (!action) {
|
|
275
|
+
throw new Error("缺少必需参数: action (search 或 get)");
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
switch (action) {
|
|
279
|
+
case 'search':
|
|
280
|
+
return handleSearchPrompts({ name: query });
|
|
281
|
+
|
|
282
|
+
case 'get':
|
|
283
|
+
if (!query) {
|
|
284
|
+
throw new Error("get操作需要提供query参数指定提示词ID或名称");
|
|
285
|
+
}
|
|
286
|
+
return handleGetPrompt({ prompt_id: query });
|
|
287
|
+
|
|
288
|
+
default:
|
|
289
|
+
throw new Error(`不支持的操作类型: ${action}。支持的操作: search, get`);
|
|
290
|
+
}
|
|
291
|
+
}
|