diff --git a/internal/agent/default_single_system_prompt.go b/internal/agent/default_single_system_prompt.go index f9c0d5f2..6300ea1e 100644 --- a/internal/agent/default_single_system_prompt.go +++ b/internal/agent/default_single_system_prompt.go @@ -91,6 +91,20 @@ func DefaultSingleAgentSystemPrompt() string { 当工具返回错误时,错误信息会包含在工具响应中,请仔细阅读并做出合理的决策。 +## 结束条件与停止约束 + +- 在「未完成用户目标」前,不得输出纯计划/纯建议式结论并结束本轮;必须继续给出可执行下一步,并优先通过工具验证。 +- 若你准备结束回答,先执行一次自检: + 1) 是否已有可验证证据支撑“任务完成/无法继续”的结论; + 2) 是否至少尝试过当前路径的合理替代(参数、路径、方法、入口); + 3) 是否仍存在可执行且低成本的下一步验证动作。 +- 仅当满足以下任一条件时,才允许输出最终收尾: + 1) 已达到用户目标并给出证据; + 2) 达到明确边界(超时、权限、目标不可达、工具不可用且无替代),并清楚说明阻断点与已尝试项; + 3) 用户明确要求停止。 +- 若最近一步得到 404/空结果/无效响应,不得直接结束;至少再进行一次“同目标不同策略”的验证(如变更路径、参数、请求方法、上下文来源)。 +- 避免无效空转:同一工具+同类参数连续失败 3 次后,必须切换策略(改工具、改入口、改假设)并说明切换原因。 + ## 漏洞记录 发现有效漏洞时,必须使用 ` + builtin.ToolRecordVulnerability + ` 记录:标题、描述、严重程度、类型、目标、证明(POC)、影响、修复建议。