@caoxupei/ai-agent-cli 1.0.0
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/LICENSE +21 -0
- package/README.md +350 -0
- package/bin/ai-agent-cli.js +14 -0
- package/dist/adapters/anthropic.d.ts +15 -0
- package/dist/adapters/anthropic.d.ts.map +1 -0
- package/dist/adapters/anthropic.js +83 -0
- package/dist/adapters/anthropic.js.map +1 -0
- package/dist/adapters/base.d.ts +45 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +27 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/factory.d.ts +17 -0
- package/dist/adapters/factory.d.ts.map +1 -0
- package/dist/adapters/factory.js +34 -0
- package/dist/adapters/factory.js.map +1 -0
- package/dist/adapters/gemini.d.ts +16 -0
- package/dist/adapters/gemini.d.ts.map +1 -0
- package/dist/adapters/gemini.js +164 -0
- package/dist/adapters/gemini.js.map +1 -0
- package/dist/adapters/openai.d.ts +15 -0
- package/dist/adapters/openai.d.ts.map +1 -0
- package/dist/adapters/openai.js +175 -0
- package/dist/adapters/openai.js.map +1 -0
- package/dist/commands/skillCommands.d.ts +21 -0
- package/dist/commands/skillCommands.d.ts.map +1 -0
- package/dist/commands/skillCommands.js +320 -0
- package/dist/commands/skillCommands.js.map +1 -0
- package/dist/config/Config.d.ts +35 -0
- package/dist/config/Config.d.ts.map +1 -0
- package/dist/config/Config.js +108 -0
- package/dist/config/Config.js.map +1 -0
- package/dist/config/types.d.ts +48 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +32 -0
- package/dist/config/types.js.map +1 -0
- package/dist/core/agents.d.ts +32 -0
- package/dist/core/agents.d.ts.map +1 -0
- package/dist/core/agents.js +93 -0
- package/dist/core/agents.js.map +1 -0
- package/dist/core/constants.d.ts +97 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +119 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/loop.d.ts +33 -0
- package/dist/core/loop.d.ts.map +1 -0
- package/dist/core/loop.js +134 -0
- package/dist/core/loop.js.map +1 -0
- package/dist/core/outputStyles.d.ts +50 -0
- package/dist/core/outputStyles.d.ts.map +1 -0
- package/dist/core/outputStyles.js +165 -0
- package/dist/core/outputStyles.js.map +1 -0
- package/dist/core/planMode.d.ts +40 -0
- package/dist/core/planMode.d.ts.map +1 -0
- package/dist/core/planMode.js +143 -0
- package/dist/core/planMode.js.map +1 -0
- package/dist/core/projectContext.d.ts +68 -0
- package/dist/core/projectContext.d.ts.map +1 -0
- package/dist/core/projectContext.js +183 -0
- package/dist/core/projectContext.js.map +1 -0
- package/dist/core/prompts.d.ts +26 -0
- package/dist/core/prompts.d.ts.map +1 -0
- package/dist/core/prompts.js +267 -0
- package/dist/core/prompts.js.map +1 -0
- package/dist/core/reminder.d.ts +72 -0
- package/dist/core/reminder.d.ts.map +1 -0
- package/dist/core/reminder.js +152 -0
- package/dist/core/reminder.js.map +1 -0
- package/dist/core/theme.d.ts +35 -0
- package/dist/core/theme.d.ts.map +1 -0
- package/dist/core/theme.js +56 -0
- package/dist/core/theme.js.map +1 -0
- package/dist/core/types.d.ts +55 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/ui/Banner.d.ts +47 -0
- package/dist/core/ui/Banner.d.ts.map +1 -0
- package/dist/core/ui/Banner.js +122 -0
- package/dist/core/ui/Banner.js.map +1 -0
- package/dist/core/ui/Input.d.ts +51 -0
- package/dist/core/ui/Input.d.ts.map +1 -0
- package/dist/core/ui/Input.js +322 -0
- package/dist/core/ui/Input.js.map +1 -0
- package/dist/core/ui/Logo.d.ts +21 -0
- package/dist/core/ui/Logo.d.ts.map +1 -0
- package/dist/core/ui/Logo.js +31 -0
- package/dist/core/ui/Logo.js.map +1 -0
- package/dist/core/ui/Messages.d.ts +45 -0
- package/dist/core/ui/Messages.d.ts.map +1 -0
- package/dist/core/ui/Messages.js +76 -0
- package/dist/core/ui/Messages.js.map +1 -0
- package/dist/core/ui/Spinner.d.ts +29 -0
- package/dist/core/ui/Spinner.d.ts.map +1 -0
- package/dist/core/ui/Spinner.js +64 -0
- package/dist/core/ui/Spinner.js.map +1 -0
- package/dist/core/ui/ToolDisplay.d.ts +49 -0
- package/dist/core/ui/ToolDisplay.d.ts.map +1 -0
- package/dist/core/ui/ToolDisplay.js +99 -0
- package/dist/core/ui/ToolDisplay.js.map +1 -0
- package/dist/core/ui/index.d.ts +16 -0
- package/dist/core/ui/index.d.ts.map +1 -0
- package/dist/core/ui/index.js +17 -0
- package/dist/core/ui/index.js.map +1 -0
- package/dist/core/ui/utils.d.ts +28 -0
- package/dist/core/ui/utils.d.ts.map +1 -0
- package/dist/core/ui/utils.js +76 -0
- package/dist/core/ui/utils.js.map +1 -0
- package/dist/entrypoints/cli.d.ts +5 -0
- package/dist/entrypoints/cli.d.ts.map +1 -0
- package/dist/entrypoints/cli.js +199 -0
- package/dist/entrypoints/cli.js.map +1 -0
- package/dist/entrypoints/index.d.ts +18 -0
- package/dist/entrypoints/index.d.ts.map +1 -0
- package/dist/entrypoints/index.js +21 -0
- package/dist/entrypoints/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/services/ai/adapters/anthropic.d.ts +15 -0
- package/dist/services/ai/adapters/anthropic.d.ts.map +1 -0
- package/dist/services/ai/adapters/anthropic.js +83 -0
- package/dist/services/ai/adapters/anthropic.js.map +1 -0
- package/dist/services/ai/adapters/base.d.ts +47 -0
- package/dist/services/ai/adapters/base.d.ts.map +1 -0
- package/dist/services/ai/adapters/base.js +24 -0
- package/dist/services/ai/adapters/base.js.map +1 -0
- package/dist/services/ai/adapters/factory.d.ts +17 -0
- package/dist/services/ai/adapters/factory.d.ts.map +1 -0
- package/dist/services/ai/adapters/factory.js +34 -0
- package/dist/services/ai/adapters/factory.js.map +1 -0
- package/dist/services/ai/adapters/gemini.d.ts +16 -0
- package/dist/services/ai/adapters/gemini.d.ts.map +1 -0
- package/dist/services/ai/adapters/gemini.js +164 -0
- package/dist/services/ai/adapters/gemini.js.map +1 -0
- package/dist/services/ai/adapters/openai.d.ts +15 -0
- package/dist/services/ai/adapters/openai.d.ts.map +1 -0
- package/dist/services/ai/adapters/openai.js +175 -0
- package/dist/services/ai/adapters/openai.js.map +1 -0
- package/dist/services/ai/index.d.ts +10 -0
- package/dist/services/ai/index.d.ts.map +1 -0
- package/dist/services/ai/index.js +11 -0
- package/dist/services/ai/index.js.map +1 -0
- package/dist/services/config/Config.d.ts +41 -0
- package/dist/services/config/Config.d.ts.map +1 -0
- package/dist/services/config/Config.js +131 -0
- package/dist/services/config/Config.js.map +1 -0
- package/dist/services/config/configStore.d.ts +42 -0
- package/dist/services/config/configStore.d.ts.map +1 -0
- package/dist/services/config/configStore.js +77 -0
- package/dist/services/config/configStore.js.map +1 -0
- package/dist/services/config/index.d.ts +7 -0
- package/dist/services/config/index.d.ts.map +1 -0
- package/dist/services/config/index.js +6 -0
- package/dist/services/config/index.js.map +1 -0
- package/dist/services/config/setup.d.ts +13 -0
- package/dist/services/config/setup.d.ts.map +1 -0
- package/dist/services/config/setup.js +157 -0
- package/dist/services/config/setup.js.map +1 -0
- package/dist/services/config/types.d.ts +56 -0
- package/dist/services/config/types.d.ts.map +1 -0
- package/dist/services/config/types.js +32 -0
- package/dist/services/config/types.js.map +1 -0
- package/dist/services/customCommands.d.ts +37 -0
- package/dist/services/customCommands.d.ts.map +1 -0
- package/dist/services/customCommands.js +453 -0
- package/dist/services/customCommands.js.map +1 -0
- package/dist/services/index.d.ts +7 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +10 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/skillMarketplace.d.ts +74 -0
- package/dist/services/skillMarketplace.d.ts.map +1 -0
- package/dist/services/skillMarketplace.js +486 -0
- package/dist/services/skillMarketplace.js.map +1 -0
- package/dist/services/system/index.d.ts +6 -0
- package/dist/services/system/index.d.ts.map +1 -0
- package/dist/services/system/index.js +6 -0
- package/dist/services/system/index.js.map +1 -0
- package/dist/services/system/security.d.ts +30 -0
- package/dist/services/system/security.d.ts.map +1 -0
- package/dist/services/system/security.js +124 -0
- package/dist/services/system/security.js.map +1 -0
- package/dist/tools/agent/index.d.ts +6 -0
- package/dist/tools/agent/index.d.ts.map +1 -0
- package/dist/tools/agent/index.js +6 -0
- package/dist/tools/agent/index.js.map +1 -0
- package/dist/tools/agent/planMode.d.ts +12 -0
- package/dist/tools/agent/planMode.d.ts.map +1 -0
- package/dist/tools/agent/planMode.js +23 -0
- package/dist/tools/agent/planMode.js.map +1 -0
- package/dist/tools/agent/task.d.ts +10 -0
- package/dist/tools/agent/task.d.ts.map +1 -0
- package/dist/tools/agent/task.js +127 -0
- package/dist/tools/agent/task.js.map +1 -0
- package/dist/tools/ai/index.d.ts +5 -0
- package/dist/tools/ai/index.d.ts.map +1 -0
- package/dist/tools/ai/index.js +5 -0
- package/dist/tools/ai/index.js.map +1 -0
- package/dist/tools/ai/skill.d.ts +78 -0
- package/dist/tools/ai/skill.d.ts.map +1 -0
- package/dist/tools/ai/skill.js +315 -0
- package/dist/tools/ai/skill.js.map +1 -0
- package/dist/tools/askQuestion.d.ts +25 -0
- package/dist/tools/askQuestion.d.ts.map +1 -0
- package/dist/tools/askQuestion.js +99 -0
- package/dist/tools/askQuestion.js.map +1 -0
- package/dist/tools/bash.d.ts +11 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +58 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/definitions.d.ts +26 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +599 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/dispatcher.d.ts +38 -0
- package/dist/tools/dispatcher.d.ts.map +1 -0
- package/dist/tools/dispatcher.js +75 -0
- package/dist/tools/dispatcher.js.map +1 -0
- package/dist/tools/fileOps.d.ts +16 -0
- package/dist/tools/fileOps.d.ts.map +1 -0
- package/dist/tools/fileOps.js +115 -0
- package/dist/tools/fileOps.js.map +1 -0
- package/dist/tools/filesystem/bash.d.ts +11 -0
- package/dist/tools/filesystem/bash.d.ts.map +1 -0
- package/dist/tools/filesystem/bash.js +58 -0
- package/dist/tools/filesystem/bash.js.map +1 -0
- package/dist/tools/filesystem/fileOps.d.ts +16 -0
- package/dist/tools/filesystem/fileOps.d.ts.map +1 -0
- package/dist/tools/filesystem/fileOps.js +115 -0
- package/dist/tools/filesystem/fileOps.js.map +1 -0
- package/dist/tools/filesystem/index.d.ts +1 -0
- package/dist/tools/filesystem/index.d.ts.map +1 -0
- package/dist/tools/filesystem/index.js +2 -0
- package/dist/tools/filesystem/index.js.map +1 -0
- package/dist/tools/glob.d.ts +18 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +63 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +26 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +137 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +13 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +14 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/interaction/askQuestion.d.ts +25 -0
- package/dist/tools/interaction/askQuestion.d.ts.map +1 -0
- package/dist/tools/interaction/askQuestion.js +99 -0
- package/dist/tools/interaction/askQuestion.js.map +1 -0
- package/dist/tools/interaction/index.d.ts +6 -0
- package/dist/tools/interaction/index.d.ts.map +1 -0
- package/dist/tools/interaction/index.js +6 -0
- package/dist/tools/interaction/index.js.map +1 -0
- package/dist/tools/interaction/todo.d.ts +36 -0
- package/dist/tools/interaction/todo.d.ts.map +1 -0
- package/dist/tools/interaction/todo.js +137 -0
- package/dist/tools/interaction/todo.js.map +1 -0
- package/dist/tools/network/index.d.ts +6 -0
- package/dist/tools/network/index.d.ts.map +1 -0
- package/dist/tools/network/index.js +6 -0
- package/dist/tools/network/index.js.map +1 -0
- package/dist/tools/network/webFetch.d.ts +8 -0
- package/dist/tools/network/webFetch.d.ts.map +1 -0
- package/dist/tools/network/webFetch.js +87 -0
- package/dist/tools/network/webFetch.js.map +1 -0
- package/dist/tools/network/webSearch.d.ts +8 -0
- package/dist/tools/network/webSearch.d.ts.map +1 -0
- package/dist/tools/network/webSearch.js +84 -0
- package/dist/tools/network/webSearch.js.map +1 -0
- package/dist/tools/planMode.d.ts +12 -0
- package/dist/tools/planMode.d.ts.map +1 -0
- package/dist/tools/planMode.js +23 -0
- package/dist/tools/planMode.js.map +1 -0
- package/dist/tools/search/glob.d.ts +18 -0
- package/dist/tools/search/glob.d.ts.map +1 -0
- package/dist/tools/search/glob.js +63 -0
- package/dist/tools/search/glob.js.map +1 -0
- package/dist/tools/search/grep.d.ts +26 -0
- package/dist/tools/search/grep.d.ts.map +1 -0
- package/dist/tools/search/grep.js +137 -0
- package/dist/tools/search/grep.js.map +1 -0
- package/dist/tools/search/index.d.ts +6 -0
- package/dist/tools/search/index.d.ts.map +1 -0
- package/dist/tools/search/index.js +6 -0
- package/dist/tools/search/index.js.map +1 -0
- package/dist/tools/skill.d.ts +41 -0
- package/dist/tools/skill.d.ts.map +1 -0
- package/dist/tools/skill.js +149 -0
- package/dist/tools/skill.js.map +1 -0
- package/dist/tools/system/index.d.ts +6 -0
- package/dist/tools/system/index.d.ts.map +1 -0
- package/dist/tools/system/index.js +6 -0
- package/dist/tools/system/index.js.map +1 -0
- package/dist/tools/task.d.ts +10 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +127 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/todo.d.ts +36 -0
- package/dist/tools/todo.d.ts.map +1 -0
- package/dist/tools/todo.js +137 -0
- package/dist/tools/todo.js.map +1 -0
- package/dist/tools/types.d.ts +139 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/webFetch.d.ts +8 -0
- package/dist/tools/webFetch.d.ts.map +1 -0
- package/dist/tools/webFetch.js +87 -0
- package/dist/tools/webFetch.js.map +1 -0
- package/dist/tools/webSearch.d.ts +8 -0
- package/dist/tools/webSearch.d.ts.map +1 -0
- package/dist/tools/webSearch.js +84 -0
- package/dist/tools/webSearch.js.map +1 -0
- package/dist/ui/Banner.d.ts +47 -0
- package/dist/ui/Banner.d.ts.map +1 -0
- package/dist/ui/Banner.js +122 -0
- package/dist/ui/Banner.js.map +1 -0
- package/dist/ui/Input.d.ts +42 -0
- package/dist/ui/Input.d.ts.map +1 -0
- package/dist/ui/Input.js +270 -0
- package/dist/ui/Input.js.map +1 -0
- package/dist/ui/Logo.d.ts +21 -0
- package/dist/ui/Logo.d.ts.map +1 -0
- package/dist/ui/Logo.js +31 -0
- package/dist/ui/Logo.js.map +1 -0
- package/dist/ui/Messages.d.ts +45 -0
- package/dist/ui/Messages.d.ts.map +1 -0
- package/dist/ui/Messages.js +76 -0
- package/dist/ui/Messages.js.map +1 -0
- package/dist/ui/Spinner.d.ts +29 -0
- package/dist/ui/Spinner.d.ts.map +1 -0
- package/dist/ui/Spinner.js +64 -0
- package/dist/ui/Spinner.js.map +1 -0
- package/dist/ui/ToolDisplay.d.ts +49 -0
- package/dist/ui/ToolDisplay.d.ts.map +1 -0
- package/dist/ui/ToolDisplay.js +99 -0
- package/dist/ui/ToolDisplay.js.map +1 -0
- package/dist/ui/components/Banner.d.ts +46 -0
- package/dist/ui/components/Banner.d.ts.map +1 -0
- package/dist/ui/components/Banner.js +121 -0
- package/dist/ui/components/Banner.js.map +1 -0
- package/dist/ui/components/Input.d.ts +51 -0
- package/dist/ui/components/Input.d.ts.map +1 -0
- package/dist/ui/components/Input.js +322 -0
- package/dist/ui/components/Input.js.map +1 -0
- package/dist/ui/components/Logo.d.ts +21 -0
- package/dist/ui/components/Logo.d.ts.map +1 -0
- package/dist/ui/components/Logo.js +31 -0
- package/dist/ui/components/Logo.js.map +1 -0
- package/dist/ui/components/Messages.d.ts +45 -0
- package/dist/ui/components/Messages.d.ts.map +1 -0
- package/dist/ui/components/Messages.js +76 -0
- package/dist/ui/components/Messages.js.map +1 -0
- package/dist/ui/components/Spinner.d.ts +29 -0
- package/dist/ui/components/Spinner.d.ts.map +1 -0
- package/dist/ui/components/Spinner.js +64 -0
- package/dist/ui/components/Spinner.js.map +1 -0
- package/dist/ui/components/ToolDisplay.d.ts +49 -0
- package/dist/ui/components/ToolDisplay.d.ts.map +1 -0
- package/dist/ui/components/ToolDisplay.js +99 -0
- package/dist/ui/components/ToolDisplay.js.map +1 -0
- package/dist/ui/index.d.ts +16 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +17 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/theme.d.ts +34 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +55 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/utils.d.ts +28 -0
- package/dist/ui/utils.d.ts.map +1 -0
- package/dist/ui/utils.js +76 -0
- package/dist/ui/utils.js.map +1 -0
- package/dist/utils/fs/index.d.ts +24 -0
- package/dist/utils/fs/index.d.ts.map +1 -0
- package/dist/utils/fs/index.js +50 -0
- package/dist/utils/fs/index.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/security.d.ts +26 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +123 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/utils/text/index.d.ts +28 -0
- package/dist/utils/text/index.d.ts.map +1 -0
- package/dist/utils/text/index.js +51 -0
- package/dist/utils/text/index.js.map +1 -0
- package/package.json +84 -0
- package/skills/web-dev/SKILL.md +91 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 系统提示词生成 - 模块化设计
|
|
3
|
+
* 将提示词拆分为可组合的模块,支持动态组装
|
|
4
|
+
*/
|
|
5
|
+
import { getAgentTypeDescriptions, getAgentConfig } from './agents.js';
|
|
6
|
+
import { PROJECT_FILE, PRODUCT_NAME } from './constants.js';
|
|
7
|
+
let currentOutputStyle = 'default';
|
|
8
|
+
export function getCurrentOutputStyle() {
|
|
9
|
+
return currentOutputStyle;
|
|
10
|
+
}
|
|
11
|
+
export function setOutputStyle(style) {
|
|
12
|
+
currentOutputStyle = style;
|
|
13
|
+
}
|
|
14
|
+
function getOutputStylePrompt() {
|
|
15
|
+
if (currentOutputStyle === 'default') {
|
|
16
|
+
return '';
|
|
17
|
+
}
|
|
18
|
+
if (currentOutputStyle === 'explanatory') {
|
|
19
|
+
return `# 输出风格: 解释型
|
|
20
|
+
|
|
21
|
+
你是一个帮助用户完成软件工程任务的交互式 CLI 工具。除了软件工程任务,你还应该在过程中提供关于代码库的教育性见解。
|
|
22
|
+
|
|
23
|
+
你应该清晰且具有教育性,在保持专注于任务的同时提供有用的解释。
|
|
24
|
+
|
|
25
|
+
## 见解格式
|
|
26
|
+
|
|
27
|
+
\`💡 见解 ─────────────────────────────────────\`
|
|
28
|
+
[2-3 个关键教育要点]
|
|
29
|
+
\`─────────────────────────────────────────────────\``;
|
|
30
|
+
}
|
|
31
|
+
if (currentOutputStyle === 'learning') {
|
|
32
|
+
return `# 输出风格: 学习型
|
|
33
|
+
|
|
34
|
+
你是一个帮助用户完成软件工程任务的交互式 CLI 工具。你还应该通过实践帮助用户学习。
|
|
35
|
+
|
|
36
|
+
## 请求用户贡献
|
|
37
|
+
|
|
38
|
+
当生成 20+ 行涉及设计决策的代码时,请用户贡献 2-10 行代码:
|
|
39
|
+
|
|
40
|
+
\`\`\`
|
|
41
|
+
📝 **动手学习**
|
|
42
|
+
**背景:** [已构建的内容]
|
|
43
|
+
**你的任务:** [具体函数/部分]
|
|
44
|
+
**指导:** [需要考虑的权衡]
|
|
45
|
+
\`\`\`
|
|
46
|
+
|
|
47
|
+
在代码中添加 TODO(human) 标记,然后等待用户实现。`;
|
|
48
|
+
}
|
|
49
|
+
return '';
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 获取环境信息
|
|
53
|
+
*/
|
|
54
|
+
export function getEnvInfo(workdir) {
|
|
55
|
+
return `<env>
|
|
56
|
+
工作目录: ${workdir}
|
|
57
|
+
操作系统: ${process.platform}
|
|
58
|
+
Node版本: ${process.version}
|
|
59
|
+
当前日期: ${new Date().toLocaleDateString('zh-CN')}
|
|
60
|
+
</env>`;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 获取身份定义
|
|
64
|
+
*/
|
|
65
|
+
function getIdentityPrompt() {
|
|
66
|
+
return `你是 ${PRODUCT_NAME},一个强大的 AI 编程助手 CLI 工具。`;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 获取安全约束提示词
|
|
70
|
+
*/
|
|
71
|
+
function getSecurityPrompt() {
|
|
72
|
+
return `
|
|
73
|
+
## 安全约束
|
|
74
|
+
|
|
75
|
+
重要: 拒绝编写或解释可能被恶意使用的代码,即使用户声称是出于教育目的。
|
|
76
|
+
重要: 在开始工作前,根据文件名和目录结构思考代码的用途。如果看起来是恶意的,拒绝处理。
|
|
77
|
+
- 不执行危险操作,避免删除重要文件
|
|
78
|
+
- 不暴露或记录敏感信息(密钥、密码等)
|
|
79
|
+
- 遵循安全最佳实践`;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 获取任务管理提示词
|
|
83
|
+
*/
|
|
84
|
+
function getTaskManagementPrompt() {
|
|
85
|
+
return `
|
|
86
|
+
## 任务管理
|
|
87
|
+
|
|
88
|
+
你可以使用 TodoWrite 工具来管理和规划任务。**频繁使用**这个工具来确保跟踪任务进度并让用户了解你的进展。
|
|
89
|
+
|
|
90
|
+
这个工具对于规划任务和将复杂任务分解为小步骤非常有帮助。如果不使用这个工具进行规划,你可能会忘记重要的任务。
|
|
91
|
+
|
|
92
|
+
关键: 完成任务后**立即**标记为已完成,不要批量处理多个任务后再标记。`;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 获取记忆系统提示词
|
|
96
|
+
*/
|
|
97
|
+
function getMemoryPrompt() {
|
|
98
|
+
return `
|
|
99
|
+
## 记忆系统
|
|
100
|
+
|
|
101
|
+
如果当前工作目录包含 ${PROJECT_FILE} 文件,它会自动添加到你的上下文中。这个文件用于:
|
|
102
|
+
1. 存储常用命令(构建、测试、lint 等),这样你不用每次都搜索
|
|
103
|
+
2. 记录用户的代码风格偏好(命名约定、首选库等)
|
|
104
|
+
3. 保存代码库结构和组织的有用信息
|
|
105
|
+
|
|
106
|
+
当你花时间搜索 typecheck、lint、build 或 test 命令时,应该询问用户是否可以将这些命令添加到 ${PROJECT_FILE}。
|
|
107
|
+
同样,当了解到代码风格偏好或重要的代码库信息时,询问是否可以添加到 ${PROJECT_FILE} 以便下次记住。`;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 获取语气风格提示词(根据输出风格动态调整)
|
|
111
|
+
*/
|
|
112
|
+
function getTonePrompt() {
|
|
113
|
+
const style = getCurrentOutputStyle();
|
|
114
|
+
if (style !== 'default') {
|
|
115
|
+
return ''; // 非默认风格有自己的语气定义
|
|
116
|
+
}
|
|
117
|
+
return `
|
|
118
|
+
## 语气和风格
|
|
119
|
+
|
|
120
|
+
你应该简洁、直接、切中要点。当运行非平凡的命令时,应该解释命令的作用和运行原因。
|
|
121
|
+
|
|
122
|
+
输出文本与用户交流;所有工具使用之外的文本都会显示给用户。只使用工具来完成任务,不要用 bash 或代码注释作为与用户交流的方式。
|
|
123
|
+
|
|
124
|
+
重要: 尽可能减少输出 token,同时保持有用性、质量和准确性。只处理当前的具体查询或任务,避免无关信息。
|
|
125
|
+
重要: 不要添加不必要的前言或后语(如解释代码或总结操作),除非用户要求。
|
|
126
|
+
重要: 保持回复简短,因为它们会显示在命令行界面上。除非用户要求详细信息,否则回复必须少于 4 行(不包括工具使用或代码生成)。
|
|
127
|
+
|
|
128
|
+
示例:
|
|
129
|
+
<example>
|
|
130
|
+
用户: 2 + 2
|
|
131
|
+
助手: 4
|
|
132
|
+
</example>
|
|
133
|
+
|
|
134
|
+
<example>
|
|
135
|
+
用户: 列出当前目录的文件
|
|
136
|
+
助手: [使用 bash 工具运行 ls]
|
|
137
|
+
</example>
|
|
138
|
+
|
|
139
|
+
<example>
|
|
140
|
+
用户: 11 是质数吗?
|
|
141
|
+
助手: 是
|
|
142
|
+
</example>`;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 获取主动性控制提示词
|
|
146
|
+
*/
|
|
147
|
+
function getProactivenessPrompt() {
|
|
148
|
+
return `
|
|
149
|
+
## 主动性控制
|
|
150
|
+
|
|
151
|
+
你可以主动行动,但只在用户要求你做某事时。你应该在以下两者之间取得平衡:
|
|
152
|
+
1. 被要求时做正确的事,包括采取行动和后续行动
|
|
153
|
+
2. 不要用未经询问的行动让用户感到惊讶
|
|
154
|
+
|
|
155
|
+
例如,如果用户问你如何处理某事,你应该先尽力回答他们的问题,而不是立即开始行动。
|
|
156
|
+
|
|
157
|
+
不要自动提交更改,除非用户明确要求。这非常重要。`;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* 获取代码规范提示词
|
|
161
|
+
*/
|
|
162
|
+
function getCodeConventionsPrompt() {
|
|
163
|
+
return `
|
|
164
|
+
## 遵循规范
|
|
165
|
+
|
|
166
|
+
修改文件时,首先了解文件的代码规范。模仿代码风格,使用现有的库和工具,遵循现有模式。
|
|
167
|
+
|
|
168
|
+
- 永远不要假设某个库可用,即使它很知名。每当编写使用库或框架的代码时,首先检查代码库是否已经使用该库。例如,查看相邻文件或检查 package.json。
|
|
169
|
+
- 创建新组件时,先查看现有组件的写法;考虑框架选择、命名约定、类型定义和其他约定。
|
|
170
|
+
- 编辑代码时,先查看代码的上下文(特别是导入)以了解框架和库的选择。然后考虑如何以最符合习惯的方式进行更改。
|
|
171
|
+
- 始终遵循安全最佳实践。
|
|
172
|
+
|
|
173
|
+
## 代码风格
|
|
174
|
+
|
|
175
|
+
- 不要给代码添加注释,除非用户要求或代码复杂需要额外说明。`;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* 获取工具使用策略提示词
|
|
179
|
+
*/
|
|
180
|
+
function getToolUsagePrompt() {
|
|
181
|
+
return `
|
|
182
|
+
## 工具使用策略
|
|
183
|
+
|
|
184
|
+
- 进行文件搜索时,优先使用 Task 工具以减少上下文使用。
|
|
185
|
+
- 你可以在单个响应中调用多个工具。如果要调用多个工具且它们之间没有依赖关系,请并行调用所有独立的工具。尽可能最大化并行工具调用以提高效率。
|
|
186
|
+
- 但是,如果某些工具调用依赖于之前的调用结果,不要并行调用这些工具,而是按顺序调用。
|
|
187
|
+
- 永远不要在工具调用中使用占位符或猜测缺失的参数。
|
|
188
|
+
- 批量推测性读取多个可能有用的文件总是更好的。
|
|
189
|
+
- 批量执行多个可能有用的搜索总是更好的。`;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* 获取工作流程提示词
|
|
193
|
+
*/
|
|
194
|
+
function getWorkflowPrompt() {
|
|
195
|
+
return `
|
|
196
|
+
## 执行任务
|
|
197
|
+
|
|
198
|
+
用户主要会请求你执行软件工程任务。这包括解决 bug、添加新功能、重构代码、解释代码等。对于这些任务,建议以下步骤:
|
|
199
|
+
|
|
200
|
+
1. 如果需要,使用 TodoWrite 工具规划任务
|
|
201
|
+
2. 使用可用的搜索工具了解代码库和用户的查询。鼓励广泛使用搜索工具,可以并行和顺序使用。
|
|
202
|
+
3. 使用所有可用工具实现解决方案
|
|
203
|
+
4. 如果可能,用测试验证解决方案。永远不要假设特定的测试框架或测试脚本。检查 README 或搜索代码库以确定测试方法。
|
|
204
|
+
5. 非常重要: 完成任务后,如果提供了 lint 和 typecheck 命令,必须运行它们以确保代码正确。
|
|
205
|
+
|
|
206
|
+
永远不要提交更改,除非用户明确要求。`;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* 创建系统提示词(模块化组合)
|
|
210
|
+
*/
|
|
211
|
+
export function createSystemPrompt(workdir, skillDescriptions, agentDescriptions) {
|
|
212
|
+
const outputStyle = getCurrentOutputStyle();
|
|
213
|
+
const outputStylePrompt = getOutputStylePrompt();
|
|
214
|
+
const includeCodingInstructions = outputStyle === 'default' || outputStyle === 'explanatory';
|
|
215
|
+
const sections = [
|
|
216
|
+
getIdentityPrompt(),
|
|
217
|
+
'',
|
|
218
|
+
getSecurityPrompt(),
|
|
219
|
+
'',
|
|
220
|
+
getTaskManagementPrompt(),
|
|
221
|
+
'',
|
|
222
|
+
getMemoryPrompt(),
|
|
223
|
+
'',
|
|
224
|
+
getTonePrompt(),
|
|
225
|
+
'',
|
|
226
|
+
getProactivenessPrompt(),
|
|
227
|
+
'',
|
|
228
|
+
getCodeConventionsPrompt(),
|
|
229
|
+
'',
|
|
230
|
+
...(includeCodingInstructions ? [getWorkflowPrompt(), ''] : []),
|
|
231
|
+
getToolUsagePrompt(),
|
|
232
|
+
'',
|
|
233
|
+
`## 可用技能\n\n${skillDescriptions}`,
|
|
234
|
+
'',
|
|
235
|
+
`## 子代理类型\n\n${agentDescriptions}`,
|
|
236
|
+
'',
|
|
237
|
+
getEnvInfo(workdir),
|
|
238
|
+
];
|
|
239
|
+
// 如果有输出风格,添加到末尾
|
|
240
|
+
if (outputStylePrompt) {
|
|
241
|
+
sections.push('', outputStylePrompt);
|
|
242
|
+
}
|
|
243
|
+
// 添加最终的安全提醒
|
|
244
|
+
sections.push('', getSecurityPrompt());
|
|
245
|
+
return sections.join('\n');
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* 创建子代理的系统提示词
|
|
249
|
+
*/
|
|
250
|
+
export function createSubagentSystemPrompt(workdir, agentType, taskDescription) {
|
|
251
|
+
const config = getAgentConfig(agentType);
|
|
252
|
+
return `${config.systemPrompt}
|
|
253
|
+
|
|
254
|
+
**任务**: ${taskDescription}
|
|
255
|
+
|
|
256
|
+
${getEnvInfo(workdir)}
|
|
257
|
+
|
|
258
|
+
重要: 保持回复简洁。完成后提供简短的总结。
|
|
259
|
+
重要: 拒绝处理任何看起来恶意的代码。`;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* 获取代理类型描述(用于系统提示词)
|
|
263
|
+
*/
|
|
264
|
+
export function getAgentDescriptions() {
|
|
265
|
+
return getAgentTypeDescriptions();
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/core/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Reminder 机制
|
|
3
|
+
* 多类型提醒系统,支持优先级排序和上下文感知
|
|
4
|
+
* 用于提醒模型使用 Todo 工具进行结构化规划
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 提醒消息类型
|
|
8
|
+
*/
|
|
9
|
+
export interface ReminderMessage {
|
|
10
|
+
type: 'initial' | 'nag' | 'context' | 'security';
|
|
11
|
+
content: string;
|
|
12
|
+
priority: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 提醒消息模板
|
|
16
|
+
*/
|
|
17
|
+
export declare const REMINDERS: Record<string, ReminderMessage>;
|
|
18
|
+
/**
|
|
19
|
+
* Reminder 管理器
|
|
20
|
+
* 增强版:支持多种提醒类型和上下文感知
|
|
21
|
+
*/
|
|
22
|
+
export declare class ReminderManager {
|
|
23
|
+
private roundsWithoutTodo;
|
|
24
|
+
private isFirstMessage;
|
|
25
|
+
private readonly nagThreshold;
|
|
26
|
+
private hasContext;
|
|
27
|
+
private suspiciousFileDetected;
|
|
28
|
+
constructor(nagThreshold?: number);
|
|
29
|
+
/**
|
|
30
|
+
* 获取当前应该注入的所有 reminders
|
|
31
|
+
*/
|
|
32
|
+
getReminders(): ReminderMessage[];
|
|
33
|
+
/**
|
|
34
|
+
* 获取格式化的提醒字符串
|
|
35
|
+
*/
|
|
36
|
+
getFormattedReminders(): string;
|
|
37
|
+
/**
|
|
38
|
+
* 获取单个提醒(向后兼容)
|
|
39
|
+
*/
|
|
40
|
+
getReminder(): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* 标记第一条消息已发送
|
|
43
|
+
*/
|
|
44
|
+
markFirstMessageSent(): void;
|
|
45
|
+
/**
|
|
46
|
+
* 记录一轮工具调用(检查是否使用了 Todo)
|
|
47
|
+
*/
|
|
48
|
+
recordToolCalls(toolNames: string[]): void;
|
|
49
|
+
/**
|
|
50
|
+
* 设置是否有项目上下文
|
|
51
|
+
*/
|
|
52
|
+
setHasContext(hasContext: boolean): void;
|
|
53
|
+
/**
|
|
54
|
+
* 标记检测到可疑文件
|
|
55
|
+
*/
|
|
56
|
+
markSuspiciousFile(): void;
|
|
57
|
+
/**
|
|
58
|
+
* 清除可疑文件标记
|
|
59
|
+
*/
|
|
60
|
+
clearSuspiciousFile(): void;
|
|
61
|
+
/**
|
|
62
|
+
* 重置计数器
|
|
63
|
+
*/
|
|
64
|
+
reset(): void;
|
|
65
|
+
/**
|
|
66
|
+
* 获取当前轮数
|
|
67
|
+
*/
|
|
68
|
+
getRoundsWithoutTodo(): number;
|
|
69
|
+
}
|
|
70
|
+
export declare function getReminderManager(): ReminderManager;
|
|
71
|
+
export declare function resetReminderManager(): void;
|
|
72
|
+
//# sourceMappingURL=reminder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminder.d.ts","sourceRoot":"","sources":["../../src/core/reminder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAqBrD,CAAC;AAEF;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,sBAAsB,CAAS;gBAE3B,YAAY,SAA4B;IAIpD;;OAEG;IACH,YAAY,IAAI,eAAe,EAAE;IA2BjC;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAQ/B;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAI5B;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAc1C;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAIxC;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,oBAAoB,IAAI,MAAM;CAG/B;AAKD,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Reminder 机制
|
|
3
|
+
* 多类型提醒系统,支持优先级排序和上下文感知
|
|
4
|
+
* 用于提醒模型使用 Todo 工具进行结构化规划
|
|
5
|
+
*/
|
|
6
|
+
import { DEFAULTS } from './constants.js';
|
|
7
|
+
/**
|
|
8
|
+
* 提醒消息模板
|
|
9
|
+
*/
|
|
10
|
+
export const REMINDERS = {
|
|
11
|
+
initial: {
|
|
12
|
+
type: 'initial',
|
|
13
|
+
content: '<system-reminder>对于多步骤任务,请使用 TodoWrite 工具来跟踪进度。这有助于你保持组织性并让用户了解你的进展。</system-reminder>',
|
|
14
|
+
priority: 1,
|
|
15
|
+
},
|
|
16
|
+
nag: {
|
|
17
|
+
type: 'nag',
|
|
18
|
+
content: '<system-reminder>已经多轮没有更新 Todo 了。如果当前任务有多个步骤,请更新 Todo 列表以保持跟踪。</system-reminder>',
|
|
19
|
+
priority: 2,
|
|
20
|
+
},
|
|
21
|
+
security: {
|
|
22
|
+
type: 'security',
|
|
23
|
+
content: '<system-reminder>重要: 在处理代码前,请确认它不是恶意代码。如果文件看起来与恶意软件相关,请拒绝处理。</system-reminder>',
|
|
24
|
+
priority: 0,
|
|
25
|
+
},
|
|
26
|
+
context: {
|
|
27
|
+
type: 'context',
|
|
28
|
+
content: '<system-reminder>记住检查项目的 .ai-agent/project.md 文件以获取常用命令和代码风格偏好。</system-reminder>',
|
|
29
|
+
priority: 3,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Reminder 管理器
|
|
34
|
+
* 增强版:支持多种提醒类型和上下文感知
|
|
35
|
+
*/
|
|
36
|
+
export class ReminderManager {
|
|
37
|
+
roundsWithoutTodo = 0;
|
|
38
|
+
isFirstMessage = true;
|
|
39
|
+
nagThreshold;
|
|
40
|
+
hasContext = false;
|
|
41
|
+
suspiciousFileDetected = false;
|
|
42
|
+
constructor(nagThreshold = DEFAULTS.todoNagThreshold) {
|
|
43
|
+
this.nagThreshold = nagThreshold;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 获取当前应该注入的所有 reminders
|
|
47
|
+
*/
|
|
48
|
+
getReminders() {
|
|
49
|
+
const reminders = [];
|
|
50
|
+
// 安全提醒(如果检测到可疑文件)
|
|
51
|
+
if (this.suspiciousFileDetected) {
|
|
52
|
+
reminders.push(REMINDERS.security);
|
|
53
|
+
}
|
|
54
|
+
// 首条消息提醒
|
|
55
|
+
if (this.isFirstMessage) {
|
|
56
|
+
reminders.push(REMINDERS.initial);
|
|
57
|
+
}
|
|
58
|
+
// Todo 使用提醒
|
|
59
|
+
if (this.roundsWithoutTodo >= this.nagThreshold) {
|
|
60
|
+
reminders.push(REMINDERS.nag);
|
|
61
|
+
}
|
|
62
|
+
// 上下文提醒
|
|
63
|
+
if (this.hasContext && this.isFirstMessage) {
|
|
64
|
+
reminders.push(REMINDERS.context);
|
|
65
|
+
}
|
|
66
|
+
// 按优先级排序
|
|
67
|
+
return reminders.sort((a, b) => a.priority - b.priority);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 获取格式化的提醒字符串
|
|
71
|
+
*/
|
|
72
|
+
getFormattedReminders() {
|
|
73
|
+
const reminders = this.getReminders();
|
|
74
|
+
if (reminders.length === 0) {
|
|
75
|
+
return '';
|
|
76
|
+
}
|
|
77
|
+
return reminders.map(r => r.content).join('\n');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 获取单个提醒(向后兼容)
|
|
81
|
+
*/
|
|
82
|
+
getReminder() {
|
|
83
|
+
const formatted = this.getFormattedReminders();
|
|
84
|
+
return formatted || null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 标记第一条消息已发送
|
|
88
|
+
*/
|
|
89
|
+
markFirstMessageSent() {
|
|
90
|
+
this.isFirstMessage = false;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 记录一轮工具调用(检查是否使用了 Todo)
|
|
94
|
+
*/
|
|
95
|
+
recordToolCalls(toolNames) {
|
|
96
|
+
const usedTodo = toolNames.includes('TodoWrite');
|
|
97
|
+
if (usedTodo) {
|
|
98
|
+
this.roundsWithoutTodo = 0;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
this.roundsWithoutTodo++;
|
|
102
|
+
}
|
|
103
|
+
// 检查是否读取了可疑文件
|
|
104
|
+
if (toolNames.includes('read_file')) {
|
|
105
|
+
// 这里可以添加更复杂的检测逻辑
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 设置是否有项目上下文
|
|
110
|
+
*/
|
|
111
|
+
setHasContext(hasContext) {
|
|
112
|
+
this.hasContext = hasContext;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* 标记检测到可疑文件
|
|
116
|
+
*/
|
|
117
|
+
markSuspiciousFile() {
|
|
118
|
+
this.suspiciousFileDetected = true;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 清除可疑文件标记
|
|
122
|
+
*/
|
|
123
|
+
clearSuspiciousFile() {
|
|
124
|
+
this.suspiciousFileDetected = false;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 重置计数器
|
|
128
|
+
*/
|
|
129
|
+
reset() {
|
|
130
|
+
this.roundsWithoutTodo = 0;
|
|
131
|
+
this.isFirstMessage = true;
|
|
132
|
+
this.suspiciousFileDetected = false;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 获取当前轮数
|
|
136
|
+
*/
|
|
137
|
+
getRoundsWithoutTodo() {
|
|
138
|
+
return this.roundsWithoutTodo;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// 单例
|
|
142
|
+
let reminderInstance = null;
|
|
143
|
+
export function getReminderManager() {
|
|
144
|
+
if (!reminderInstance) {
|
|
145
|
+
reminderInstance = new ReminderManager();
|
|
146
|
+
}
|
|
147
|
+
return reminderInstance;
|
|
148
|
+
}
|
|
149
|
+
export function resetReminderManager() {
|
|
150
|
+
reminderInstance = null;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=reminder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminder.js","sourceRoot":"","sources":["../../src/core/reminder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 主题系统 - 集中管理颜色和样式
|
|
3
|
+
* 参考 Kode-cli 的主题设计
|
|
4
|
+
*/
|
|
5
|
+
import { ChalkInstance } from 'chalk';
|
|
6
|
+
/**
|
|
7
|
+
* 主题接口定义
|
|
8
|
+
*/
|
|
9
|
+
export interface Theme {
|
|
10
|
+
primary: ChalkInstance;
|
|
11
|
+
secondary: ChalkInstance;
|
|
12
|
+
success: ChalkInstance;
|
|
13
|
+
error: ChalkInstance;
|
|
14
|
+
warning: ChalkInstance;
|
|
15
|
+
info: ChalkInstance;
|
|
16
|
+
text: ChalkInstance;
|
|
17
|
+
textDim: ChalkInstance;
|
|
18
|
+
textBold: ChalkInstance;
|
|
19
|
+
border: ChalkInstance;
|
|
20
|
+
borderDim: ChalkInstance;
|
|
21
|
+
provider: ChalkInstance;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 获取当前主题
|
|
25
|
+
*/
|
|
26
|
+
export declare function getTheme(): Theme;
|
|
27
|
+
/**
|
|
28
|
+
* 根据 provider 设置主题
|
|
29
|
+
*/
|
|
30
|
+
export declare function setThemeByProvider(provider: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* 重置为默认主题
|
|
33
|
+
*/
|
|
34
|
+
export declare function resetTheme(): void;
|
|
35
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/core/theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,KAAK;IAEpB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC;IAGzB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC;IAGpB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IAGxB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,aAAa,CAAC;IAGzB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAsCD;;GAEG;AACH,wBAAgB,QAAQ,IAAI,KAAK,CAEhC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKzD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 主题系统 - 集中管理颜色和样式
|
|
3
|
+
* 参考 Kode-cli 的主题设计
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
/**
|
|
7
|
+
* Provider 颜色映射
|
|
8
|
+
*/
|
|
9
|
+
const PROVIDER_COLORS = {
|
|
10
|
+
anthropic: chalk.magenta,
|
|
11
|
+
openai: chalk.green,
|
|
12
|
+
gemini: chalk.blue,
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* 默认主题
|
|
16
|
+
*/
|
|
17
|
+
const defaultTheme = {
|
|
18
|
+
primary: chalk.hex('#FFC233'),
|
|
19
|
+
secondary: chalk.cyan,
|
|
20
|
+
success: chalk.green,
|
|
21
|
+
error: chalk.red,
|
|
22
|
+
warning: chalk.yellow,
|
|
23
|
+
info: chalk.blue,
|
|
24
|
+
text: chalk.white,
|
|
25
|
+
textDim: chalk.dim,
|
|
26
|
+
textBold: chalk.bold,
|
|
27
|
+
border: chalk.gray,
|
|
28
|
+
borderDim: chalk.dim.gray,
|
|
29
|
+
provider: chalk.cyan,
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* 当前主题实例
|
|
33
|
+
*/
|
|
34
|
+
let currentTheme = { ...defaultTheme };
|
|
35
|
+
/**
|
|
36
|
+
* 获取当前主题
|
|
37
|
+
*/
|
|
38
|
+
export function getTheme() {
|
|
39
|
+
return currentTheme;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 根据 provider 设置主题
|
|
43
|
+
*/
|
|
44
|
+
export function setThemeByProvider(provider) {
|
|
45
|
+
currentTheme = {
|
|
46
|
+
...defaultTheme,
|
|
47
|
+
provider: PROVIDER_COLORS[provider] || chalk.cyan,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 重置为默认主题
|
|
52
|
+
*/
|
|
53
|
+
export function resetTheme() {
|
|
54
|
+
currentTheme = { ...defaultTheme };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/core/theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAwB,MAAM,OAAO,CAAC;AA6B7C;;GAEG;AACH,MAAM,eAAe,GAAkC;IACrD,SAAS,EAAE,KAAK,CAAC,OAAO;IACxB,MAAM,EAAE,KAAK,CAAC,KAAK;IACnB,MAAM,EAAE,KAAK,CAAC,IAAI;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,YAAY,GAAU;IAC1B,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC,IAAI;IAErB,OAAO,EAAE,KAAK,CAAC,KAAK;IACpB,KAAK,EAAE,KAAK,CAAC,GAAG;IAChB,OAAO,EAAE,KAAK,CAAC,MAAM;IACrB,IAAI,EAAE,KAAK,CAAC,IAAI;IAEhB,IAAI,EAAE,KAAK,CAAC,KAAK;IACjB,OAAO,EAAE,KAAK,CAAC,GAAG;IAClB,QAAQ,EAAE,KAAK,CAAC,IAAI;IAEpB,MAAM,EAAE,KAAK,CAAC,IAAI;IAClB,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI;IAEzB,QAAQ,EAAE,KAAK,CAAC,IAAI;CACrB,CAAC;AAEF;;GAEG;AACH,IAAI,YAAY,GAAU,EAAE,GAAG,YAAY,EAAE,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,YAAY,GAAG;QACb,GAAG,YAAY;QACf,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI;KAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Agent 核心类型定义
|
|
3
|
+
*/
|
|
4
|
+
export type MessageContent = string | ContentBlock[];
|
|
5
|
+
export interface TextBlock {
|
|
6
|
+
type: 'text';
|
|
7
|
+
text: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ToolUseBlock {
|
|
10
|
+
type: 'tool_use';
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
input: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export interface ToolResultBlock {
|
|
16
|
+
type: 'tool_result';
|
|
17
|
+
tool_use_id: string;
|
|
18
|
+
content: string;
|
|
19
|
+
is_error?: boolean;
|
|
20
|
+
name?: string;
|
|
21
|
+
}
|
|
22
|
+
export type ContentBlock = TextBlock | ToolUseBlock | ToolResultBlock;
|
|
23
|
+
export interface Message {
|
|
24
|
+
role: 'user' | 'assistant';
|
|
25
|
+
content: MessageContent;
|
|
26
|
+
}
|
|
27
|
+
export interface ToolCall {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
input: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
export interface ToolDefinition {
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
input_schema: {
|
|
36
|
+
type: 'object';
|
|
37
|
+
properties: Record<string, unknown>;
|
|
38
|
+
required: string[];
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export interface ToolResult {
|
|
42
|
+
tool_use_id: string;
|
|
43
|
+
content: string;
|
|
44
|
+
is_error?: boolean;
|
|
45
|
+
name?: string;
|
|
46
|
+
}
|
|
47
|
+
export type ExecuteToolFunc = (toolName: string, input: Record<string, unknown>) => Promise<string>;
|
|
48
|
+
export interface LLMResponse {
|
|
49
|
+
textBlocks: string[];
|
|
50
|
+
toolCalls: ToolCall[];
|
|
51
|
+
stopReason: string;
|
|
52
|
+
}
|
|
53
|
+
export type Provider = 'anthropic' | 'openai' | 'gemini';
|
|
54
|
+
export type AgentType = 'explore' | 'code' | 'plan';
|
|
55
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,YAAY,EAAE,CAAC;AAGrD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,eAAe,CAAC;AAGtE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,cAAc,CAAC;CACzB;AAGD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAGD,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,MAAM,eAAe,GAAG,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;AAGrB,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAGzD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|