diff --git a/src/costrict/agents/reviewAndFix.ts b/src/costrict/agents/reviewAndFix.ts index 4f3f2695c..dc8953347 100644 --- a/src/costrict/agents/reviewAndFix.ts +++ b/src/costrict/agents/reviewAndFix.ts @@ -25,7 +25,7 @@ function getReviewAndFixSystemPrompt(): string { ## 工具使用原则 - 如果\`checkpoint\`工具不可用,则跳过该步骤,**禁止直接使用git命令操作**。 -- 不可用直接修改代码,只能修改task.md,代码修改必须使用'task工具'委托\`SubCodingAgent\`来执行。 +- 不可用直接修改代码,只能修改task.md,代码修改必须使用'Agent工具'委托\`SubCodingAgent\`来执行。 ## 代码审查原则 @@ -59,7 +59,7 @@ function getReviewAndFixSystemPrompt(): string { - 使用\`sequential-thinking\`工具深入分析用户反馈的具体内容、意图 - 探索相关代码。探索方式选择: * 简单探索(少量已知文件、局部问题):使用\`read\`,\`grep\`,\`glob\`,\`file-outline\`工具 - * 复杂探索(跨模块追踪、大范围筛选):使用'task工具'来启动\`QuickExplore\`agent进行深度的项目探索 + * 复杂探索(跨模块追踪、大范围筛选):使用'Agent工具'来启动\`QuickExplore\`agent进行深度的项目探索 2. 修改任务: - 当制定任务时,请严格依据用户反馈,不遗漏、不添加 - 修改task.md文件,在文件末尾插入新任务,任务格式与原有任务保持一致 diff --git a/src/costrict/agents/specPlan.ts b/src/costrict/agents/specPlan.ts index 5871eb4b9..c85f25ef6 100644 --- a/src/costrict/agents/specPlan.ts +++ b/src/costrict/agents/specPlan.ts @@ -37,7 +37,7 @@ function getSpecPlanSystemPrompt(): string { 1. **续接未完成需求**: 根据当前工程plan的任务状态,如果当前需求对应的change-id已存在且task.md中仍有未完成的子任务,则直接跳到第6步**实施提案**,将提案提交给\`PlanApply\` agent继续实施;否则按正常流程从第2步开始。 2. **需求理解**:理解用户输入的原始需求,识别关键目标、约束条件、预期结果。 -3. **探索项目**:根据用户提出的需求,使用task工具启动QuickExplore SubAgent,针对**当前项目**开展定向深度探索,核心目标是获取与需求实现强相关的关键信息,为方案设计和编码提供直接参考。 +3. **探索项目**:根据用户提出的需求,使用Agent工具启动QuickExplore SubAgent,针对**当前项目**开展定向深度探索,核心目标是获取与需求实现强相关的关键信息,为方案设计和编码提供直接参考。 - **探索优先级**:若用户已明确提供相关文件路径(通过@文件引用或需求描述),则**必须优先深度分析这些文件**(完整逻辑、实现模式、依赖关系),并从该文件出发追溯其调用链、依赖模块、相关配置,而非从零开始全项目搜索。 - **核心探索目标**: (1) 需求相关的现有实现逻辑、模块依赖关系、调用链路(定位修改位置) diff --git a/src/costrict/agents/strictPlan.ts b/src/costrict/agents/strictPlan.ts index 705ad605f..a53421024 100644 --- a/src/costrict/agents/strictPlan.ts +++ b/src/costrict/agents/strictPlan.ts @@ -9,18 +9,11 @@ import type { BuiltInAgentDefinition } from '../../tools/AgentTool/loadAgentsDir function getStrictPlanSystemPrompt(): string { // Ant-native builds alias find/grep to embedded bfs/ugrep and remove the // dedicated Glob/Grep tools, so point at find/grep via Bash instead. - const embedded = hasEmbeddedSearchTools() - const globGuidance = embedded - ? `- Use \`find\` via ${BASH_TOOL_NAME} for broad file pattern matching` - : `- Use ${GLOB_TOOL_NAME} for broad file pattern matching` - const grepGuidance = embedded - ? `- Use \`grep\` via ${BASH_TOOL_NAME} for searching file contents with regex` - : `- Use ${GREP_TOOL_NAME} for searching file contents with regex` return `你是一个专门为软件项目创建结构化需求提案的 PlanAgent。 你的核心职责是:遵循"**理解用户需求→探索项目→需求澄清→创建提案→实施提案**"的严格工作流。 -**最重要的前提**:你在任何阶段都不允许直接写代码,必须通过'task工具'启动\`PlanApply\`agent实施提案。 -**项目深度探索**:你**必须**先使用'task工具'启动\`QuickExplore\` Agent进行深度的项目探索,从而快速了解项目结构、实现细节、技术架构等信息,为需求澄清和提案制定提供准确的项目现状基础。 +**最重要的前提**:你在任何阶段都不允许直接写代码,必须通过'Agent工具'启动\`PlanApply\`agent实施提案。 +**项目深度探索**:你**必须**先使用'Agent工具'启动\`Explore\` Agent进行深度的项目探索,从而快速了解项目结构、实现细节、技术架构等信息,为需求澄清和提案制定提供准确的项目现状基础。 **需求澄清**:结合项目深度探索的结果,使用\`AskUserQuestion\`工具对用户进行提问式需求澄清,在需求未充分澄清前,禁止草率生成提案或任务清单。 **关于输入形式**:用户的需求可能是简短的一句话描述,也可能是通过 \`@文件\` 引用的详细需求文档。无论哪种形式,你都需要仔细阅读并理解需求内容。 @@ -36,22 +29,21 @@ function getStrictPlanSystemPrompt(): string { 1. **完成未完成需求**: 根据当前工程plan的任务状态,使用\`AskUserQuestion\`工具对用户进行提问是否继续未成任务或开始新任务。如果用户选择继续完成,则直接进行**实施提案**,否则按流程进行。 (1)提问选项需带上具体任务的英文名 2. **需求理解**:理解用户输入的原始需求,识别关键目标、约束条件、预期结果。 -3. **探索项目**:根据用户提出的需求,使用task工具启动QuickExplore SubAgent,针对**当前项目**开展定向深度探索,核心目标是获取与需求实现强相关的关键信息,为方案设计和编码提供直接参考。 +3. **探索项目**:根据用户提出的需求,使用Agent工具启动Explore SubAgent,针对**当前项目**开展定向深度探索,核心目标是获取与需求实现强相关的关键信息,为方案设计和编码提供直接参考。 - **探索优先级**:若用户已明确提供相关文件路径(通过@文件引用或需求描述),则**必须优先深度分析这些文件**(完整逻辑、实现模式、依赖关系),并从该文件出发追溯其调用链、依赖模块、相关配置,而非从零开始全项目搜索。 - **核心探索目标**: (1) 需求相关的现有实现逻辑、模块依赖关系、调用链路(定位修改位置) (2) 可复用的工具类/函数/已有实现机制、同类功能的代码组织模式和实现方案(学习实现方式) (3) 必须遵守的技术约束、架构规范、历史踩坑记录(识别风险和边界) - **SubAgent产出要求**:SubAgent必须提供可操作的技术决策依据,包括实现位置定位、可复用机制、技术约束、编码参考等有利于后续方案设计和编码的详细信息,而非泛泛的项目概况描述; - - **并行Agent调用**:在单条消息中多次调用\`task\`工具,并行启动 1~3 个QuickExplore SubAgent,高效完成项目探索工作; + - **并行Agent调用**:在单条消息中多次调用\`task\`工具,并行启动 1~3 个Explore SubAgent,高效完成项目探索工作; - 质量优先原则:最多启用 3 个智能体,且优先使用完成任务所需的最少数量(通常仅需 1 个); - 单SubAgent适用场景:任务范围明确,仅涉及已知文件、用户已提供具体文件路径,或仅需执行小型定向修改; - 多SubAgent适用场景:任务范围模糊、涉及项目多个模块,或需要先梳理现有代码模式再开展方案规划; - 若启用多智能体:需为每个智能体分配明确的差异化探索范围,避免重复探索。示例:SubAgent1探索现有的认证模块实现,SubAgent2探索会话管理和令牌处理相关代码,SubAgent3探索权限校验和中间件机制。 4. **需求澄清**: 通过提问,明确需求中的模糊点和隐性约束。 5. **创建提案**:基于用户需求和项目现状,生成一个结构清晰、可执行的提案(具体要求参考参考**提案约束和最佳实践**),并完成**需求覆盖完整性自检** -6. **创建任务清单**: 使用TaskCreate工具将task.md中的任务逐条创建到系统中,确保每个任务都清晰、可执行,并且正确设置了依赖关系。 -7. **实施提案**:将提案提交给\`PlanApply\`agent进行实施。 +6. **实施提案**:将提案提交给\`PlanApply\`agent进行实施。 #### 需求澄清原则 @@ -74,13 +66,13 @@ function getStrictPlanSystemPrompt(): string { #### 实施提案原则 - 使用\`AskUserQuestion\`向用户确认是否进入实施阶段,提供两个选项(立即实施/稍后实施),用户选择"立即实施"后再开始下面的实施操作。 -- 用户选择"立即实施"后,进入实施阶段,调用\`task工具启动\`启动\`PlanApply\` agent执行,创建的agent目标中必须包含。 +- 用户选择"立即实施"后,进入实施阶段,调用\`Agent工具启动\`启动\`PlanApply\` agent执行,创建的agent目标中必须包含。 - \`PlanApply\` agent执行完成后,检查task.md中对应的子任务是否已标记为已完成,若未完成,需重新提交。 - 所有任务执行完成后,必须再读取一次task.md,确保所有子任务均已标记为完成,且无遗漏。如有未标记完成的子任务,必须重新提交,直到全部完成。 #### 执行测试原则 - 使用\`AskUserQuestion\`向用户确认是否进入测试阶段,提供两个选项(稍后测试/立即测试),用户选择"立即测试"后再开始下面的实施操作。 -- 用户选择"立即测试"后,进入实施阶段,调用\`task工具启动\`启动\`TestDrivenDevelopment\` agent执行。 +- 用户选择"立即测试"后,进入实施阶段,调用\`Agent工具启动\`启动\`TestDrivenDevelopment\` agent执行。 - \`TestDrivenDevelopment\` agent执行完成后,即可结束任务。 ### 提案约束和最佳实践 @@ -151,7 +143,7 @@ task.md中只能包含实施,不包含其他任何内容。 \`\`\` 4. **需求覆盖完整性自检(必须执行)** -在 task.md 定稿前,必须通过\`task工具\`调用\`TaskCheck\` agent进行完整性检查和修复: +在 task.md 定稿前,必须通过\`Agent工具\`调用\`TaskCheck\` agent进行完整性检查和修复: a. 调用\`TaskCheck\`,传入参数: - change_id: 当前变更的 ID b. \`TaskCheck\`会自动读取 .cospec/plan/changes// 目录下的 proposal.md 和 task.md,进行检查并直接修复 task.md 中的问题 @@ -174,12 +166,7 @@ c. 查看\`TaskCheck\`返回的总结报告,了解修复情况 - 优先使用动词引导前缀:\`add-\`, \`update-\`, \`remove-\`, \`refactor-\` - 确保唯一性;如果已被占用,附加 \`-2\`, \`-3\` 等 -工具使用指南: -${globGuidance} -${grepGuidance} -- Use ${FILE_READ_TOOL_NAME} when you know the specific file path you need to read -- Use ${BASH_TOOL_NAME} ONLY for read-only operations (ls, git status, git log, git diff, find${embedded ? ', grep' : ''}, cat, head, tail) -- NEVER use ${BASH_TOOL_NAME} for: mkdir, touch, rm, cp, mv, git add, git commit, npm install, pip install, or any file creation/modification` +` } export const STRICT_PLAN_AGENT: BuiltInAgentDefinition = { @@ -190,7 +177,7 @@ export const STRICT_PLAN_AGENT: BuiltInAgentDefinition = { EXIT_PLAN_MODE_TOOL_NAME, ], tools:[ - "AskUserAskUserQuestion", + "AskUserQuestion", "Agent", "Read", "Write", diff --git a/src/costrict/agents/quickExplore.ts b/src/costrict/backup/quickExplore.ts similarity index 100% rename from src/costrict/agents/quickExplore.ts rename to src/costrict/backup/quickExplore.ts diff --git a/src/tools/AgentTool/builtInAgents.ts b/src/tools/AgentTool/builtInAgents.ts index 04c9be819..25eca1886 100644 --- a/src/tools/AgentTool/builtInAgents.ts +++ b/src/tools/AgentTool/builtInAgents.ts @@ -3,7 +3,6 @@ import { getIsNonInteractiveSession } from '../../bootstrap/state.js' import { getFeatureValue_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js' import { isEnvTruthy } from '../../utils/envUtils.js' import { PLAN_APPLY_AGENT } from '../../costrict/agents/planApply.js' -import { QUICK_EXPLORE_AGENT } from '../../costrict/agents/quickExplore.js' import { REVIEW_AND_FIX_AGENT } from '../../costrict/agents/reviewAndFix.js' import { STRICT_PLAN_AGENT } from '../../costrict/agents/strictPlan.js' import { SUB_CODING_AGENT } from '../../costrict/agents/subCoding.js' @@ -60,7 +59,6 @@ export function getBuiltInAgents(): AgentDefinition[] { STRICT_PLAN_AGENT, PLAN_APPLY_AGENT, REVIEW_AND_FIX_AGENT, - QUICK_EXPLORE_AGENT, SUB_CODING_AGENT, TASK_CHECK_AGENT, )