From 5fb36a93e652a49dd14c38329c0dbac36ba166ec Mon Sep 17 00:00:00 2001 From: thzxx Date: Fri, 17 Apr 2026 10:44:56 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=A0=B9=E6=8D=AE=20v3.3.4=20=E5=AE=9E?= =?UTF-8?q?=E9=99=85=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0=20README=20?= =?UTF-8?q?=E5=92=8C=E5=BC=80=E5=8F=91=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README.md: Agent Loop 说明补充去重机制 - README.md: 记忆类型表增加检索方式列(规则/偏好始终注入) - README.md: 记忆工作流程更新(规则/偏好始终注入 + 事实关键词检索) - README.md: web_fetch 补充默认返回完整内容说明 - docs/DEVELOPMENT.md: Tool Calling 流程补充去重机制 - docs/DEVELOPMENT.md: 联网搜索联动补充 web_fetch 不截断说明 --- README.md | 16 ++++++++-------- docs/DEVELOPMENT.md | 2 ++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 459522c..d3e0ea0 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ AI 可以在对话中主动调用本地工具来完成任务,所有操作在 | 💻 `run_command` | 执行 Shell 命令(无超时,通过工作空间终端执行) | 自动/需确认/禁用 | | 📦 `move_file` | 移动/重命名文件或目录 | 自动 | | 📋 `copy_file` | 复制文件或目录 | 自动 | -| 🌐 `web_fetch` | 抓取网页内容(HTTP/HTTPS,自动提取文本) | 自动 | +| 🌐 `web_fetch` | 抓取网页内容(HTTP/HTTPS,自动提取文本,默认返回完整内容) | 自动 | | 🔍 `web_search` | 联网搜索(DuckDuckGo/Bing,返回标题+链接+摘要) | 自动 | | ➕ `append_file` | 追加内容到文件末尾 | 自动 | | ✂️ `edit_file` | 查找替换文件中的文本(比重写整个文件高效) | 自动 | @@ -49,7 +49,7 @@ AI 可以在对话中主动调用本地工具来完成任务,所有操作在 | 🔖 `git` | Git 操作(status/log/diff/add/commit/push/pull/branch/checkout/merge/stash 等 16 个子操作) | 自动 | | 🗜️ `compress` | 创建/解压归档(zip/tar.gz) | 自动 | -**Agent Loop**:用户请求 → 模型返回 tool_calls → 客户端执行 → 回传结果 → 循环直到无工具调用,支持流式 + 并行调用 + 最大 10 轮保护。 +**Agent Loop**:用户请求 → 模型返回 tool_calls → 客户端执行 → 回传结果 → 循环直到无工具调用,支持流式 + 并行调用 + 最大 10 轮保护。自动检测并跳过重复工具调用(相同工具+参数),连续两轮完全相同则终止循环。 > ⚠️ 需要模型支持 Tool Calling(推荐 Qwen3、Llama 3.1+、Mistral) @@ -86,17 +86,17 @@ AI 可以在对话中主动调用本地工具来完成任务,所有操作在 AI 会自动从对话中学习并记住关键信息,跨会话持续积累,无需手动配置: **记忆类型**: -| 类型 | 说明 | 示例 | -|------|------|------| -| 📌 事实 | 关于用户的事实 | "用户正在开发一个 Electron 应用" | -| ⚙️ 偏好 | 用户的偏好习惯 | "喜欢用中文回答,代码风格简洁" | -| 📏 规则 | 应遵守的规则 | "项目中使用 TypeScript 严格模式" | +| 类型 | 说明 | 检索方式 | 示例 | +|------|------|----------|------| +| 📌 事实 | 关于用户的事实 | 关键词匹配 | "用户正在开发一个 Electron 应用" | +| ⚙️ 偏好 | 用户的偏好习惯 | 始终注入 | "喜欢用中文回答,代码风格简洁" | +| 📏 规则 | 应遵守的规则 | 始终注入 | "项目中使用 TypeScript 严格模式" | **工作流程**: ``` 会话结束 → LLM 自动提取关键信息 → 去重检测 → 存入 IndexedDB ↓ -新消息发送 → 关键词+标签+重要性检索 → 注入 system prompt +新消息发送 → 规则/偏好始终注入 + 事实关键词检索 → 注入 system prompt ↓ AI 基于记忆提供个性化回答 ``` diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 14ea56e..1e212ab 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -172,12 +172,14 @@ import { - run_command 支持三模式:自动执行 / 需确认 / 禁用(通过工具面板下拉框切换) - run_command:无超时(通过 workspace IPC 执行) - 其他工具:30 秒超时 +- **去重机制**:工具调用缓存(`toolResultCache`)+ 同轮内重复检测 + 跨轮次重复检测(连续两轮相同则终止) ### 5.3 联网搜索与网页抓取联动 - web_search 返回搜索结果(标题、URL、摘要),默认 15 条 - TOOL_USAGE_GUIDE 要求模型在 web_search 后必须选择相关 URL 调用 web_fetch 抓取详情 - 模型被引导主动使用工具:不确定答案、信息过时、需实时数据时应调用工具而非猜测 +- web_fetch 默认返回完整内容(`max_chars=0`),不截断;仅用户显式指定 `max_chars` 时才截断 ### 5.4 工作空间与 AI 集成