feat: 强化系统提示词 — 所有工具调用前必须先 tool_search 查询用法
This commit is contained in:
1 parent
7362021447
commit
c51fe6accc
1 file changed
+51
-12
+51
-12
@@ -84,6 +84,11 @@ class AICLI(BaseAICLI, ClawliMixin, ToolMixin, CodeExecMixin, DisplayMixin, Hist
|
||||
3. **Git 版本控制** - 使用 git_tools 工具管理代码版本
|
||||
4. **Shell 命令执行** - 使用 cmd_executor 执行系统命令
|
||||
5. **文件管理** - 使用 file_manager 管理文件和目录
|
||||
6. **浏览器自动化** - 使用 browser_auto 工具操控浏览器
|
||||
7. **子 Agent 协作** - 使用 sub_agent 创建子 Agent 并行处理任务
|
||||
8. **工程化自动化** - 使用 auto_engineer 进行 lint/test/build
|
||||
9. **网络工具** - 使用 network_tools 进行 HTTP 请求和网络诊断
|
||||
10. **AI 联网搜索** - 使用 ai_search 搜索实时信息
|
||||
|
||||
你在说话时可以适当加上'nyan'来表现可爱性格,但不要过度使用。"""
|
||||
|
||||
@@ -91,10 +96,37 @@ class AICLI(BaseAICLI, ClawliMixin, ToolMixin, CodeExecMixin, DisplayMixin, Hist
|
||||
|
||||
tool_search_rule = ""
|
||||
if has_tool_search:
|
||||
tool_search_rule = """【工具查询规则】
|
||||
调用不熟悉的工具前,先用 tool_search 查询用法:
|
||||
{"action": "use_tool", "tool": "tool_search", "args": "工具名"}
|
||||
例外:ai_search、code_editor、code_search、git_tools 可以直接使用。"""
|
||||
tool_search_rule = """【⚠️ 强制工具查询规则 — 必须遵守】
|
||||
在调用任何工具之前,你必须先使用 tool_search 查询该工具的详细用法、参数格式和示例。
|
||||
这是硬性要求,没有例外。即使你认为自己知道工具的用法,也必须先查询确认。
|
||||
|
||||
执行流程:
|
||||
第一步:用 tool_search 查询工具用法
|
||||
{"action": "use_tool", "tool": "tool_search", "args": "你要用的工具名"}
|
||||
第二步:阅读 tool_search 返回的详细说明(包括参数格式、操作列表、示例)
|
||||
第三步:根据返回的说明,正确构造工具调用指令
|
||||
|
||||
为什么要这样做:
|
||||
- 工具的参数格式可能已更新,你的记忆可能过时
|
||||
- 先查询可以避免参数格式错误导致的调用失败
|
||||
- 确保你使用的是最优的操作和参数组合
|
||||
- 减少因格式不对而反复重试的浪费
|
||||
|
||||
示例流程(修改代码):
|
||||
用户: "帮我修复 src/app.py 第 10 行的 bug"
|
||||
你的思考过程:
|
||||
1. 需要先查看代码 → 先查 code_editor 怎么读取文件
|
||||
2. tool_search "code_editor" → 发现 read_range 操作
|
||||
3. 调用 code_editor read_range src/app.py 5 15 → 拿到代码
|
||||
4. 需要修改代码 → 已经在第一步查过 code_editor,知道 edit 格式
|
||||
5. 调用 code_editor edit src/app.py 旧代码 <<<>>> 新代码
|
||||
|
||||
示例流程(Git 操作):
|
||||
用户: "帮我提交代码"
|
||||
你的思考过程:
|
||||
1. 需要 git 操作 → 先查 git_tools 怎么用
|
||||
2. tool_search "git_tools" → 发现 smart-commit 操作
|
||||
3. 调用 git_tools smart-commit → 自动提交"""
|
||||
|
||||
if liugin_prompts:
|
||||
prompt = f"""{base_prompt}
|
||||
@@ -109,13 +141,13 @@ class AICLI(BaseAICLI, ClawliMixin, ToolMixin, CodeExecMixin, DisplayMixin, Hist
|
||||
1. 纯 JSON: {{"action": "use_tool", "tool": "code_editor", "args": "edit file.py old <<<>>> new"}}
|
||||
2. 文本+JSON: 好的,我来修改。{{"action": "use_tool", "tool": "code_editor", "args": "edit file.py old <<<>>> new"}}
|
||||
|
||||
【编程工作流】
|
||||
1. 理解需求 → 用 code_search.structure 查看项目结构
|
||||
2. 定位代码 → 用 code_search.find 或 code_search.regex 搜索
|
||||
3. 查看上下文 → 用 code_editor.read_range 查看相关代码
|
||||
4. 精准修改 → 用 code_editor.edit 替换代码(old <<<>>> new 分隔)
|
||||
5. 验证变更 → 用 git_tools.diff 查看变更
|
||||
6. 提交代码 → 用 git_tools.commit 提交
|
||||
【编程工作流 — 每一步都必须先查询工具】
|
||||
1. 理解需求 → 先 tool_search "code_editor",再用 structure 查看项目结构
|
||||
2. 定位代码 → 已查询过,直接用 find 或 regex 搜索
|
||||
3. 查看上下文 → 用 read_range 查看相关代码
|
||||
4. 精准修改 → 用 edit 替换代码(old <<<>>> new 分隔)
|
||||
5. 验证变更 → 先 tool_search "git_tools",再用 diff 查看变更
|
||||
6. 提交代码 → 已查询过,用 commit 提交
|
||||
|
||||
【code_editor 编辑格式】
|
||||
edit 操作使用 <<<>>> 分隔旧代码和新代码:
|
||||
@@ -142,7 +174,8 @@ multi 操作支持一次修改多处:
|
||||
- 提交代码: {{"action": "use_tool", "tool": "git_tools", "args": "commit 描述信息"}}
|
||||
- 查看历史: {{"action": "use_tool", "tool": "git_tools", "args": "log --oneline 10"}}
|
||||
|
||||
【注意事项】
|
||||
【重要提醒】
|
||||
- 调用任何不熟悉的工具前,必须先 tool_search 查询
|
||||
- code_editor.edit 的 old_text 必须与文件中的内容完全匹配(包括缩进)
|
||||
- 如果 edit 失败,先用 read_range 查看实际内容再重试
|
||||
- args 必须是字符串
|
||||
@@ -156,7 +189,13 @@ multi 操作支持一次修改多处:
|
||||
【工具调用格式】
|
||||
{{"action": "use_tool", "tool": "工具名", "args": "参数"}}
|
||||
|
||||
【⚠️ 核心规则:调用任何工具前必须先查询】
|
||||
1. 先调用 tool_search 查询工具用法
|
||||
2. 阅读返回的参数说明和示例
|
||||
3. 再根据说明正确调用工具
|
||||
|
||||
【核心工具】
|
||||
- tool_search: 查询任何工具的用法(必须先调用这个)
|
||||
- code_editor: edit/search/diff/insert/create/write/read_range
|
||||
- code_search: find/regex/symbols/imports/structure/stats
|
||||
- git_tools: status/diff/log/add/commit/branch
|
||||
|
||||
Reference in new issue
Block a user