Full-Workflow
目标
- 通过记忆机制保持上下文连续性。
- 在需求模糊时先优化提示,再进入实现。
- 按用户意图自动路由到合适的 MCP 工具链。
- 在关键节点沉淀决策,便于后续复用。
优先级 0:对话开始
- 每次对话开始自动执行
memory_search。 - 关键词从用户输入中提取。
- 目的:保持上下文连贯,避免重复问已知信息。
- 若
memory_search无结果,输出:「未找到相关历史记忆,将基于当前上下文继续。」 - 若用户明确说「跳过记忆」,则跳过。
优先级 1:Prompt 优化判断
- 当用户需求模糊、过短、缺少关键约束时,触发
promptenhancer。 - 展示优化后的提示词,用户确认后继续执行。
- 若用户说「直接干」或「别优化」,则跳过。
- 对明确单步请求(如重命名、执行单条命令、改一个字段)不触发。
优先级 2:场景自动路由
新功能 / 复杂任务
memory_search->promptenhancer(如需)-> 方案设计 -> 代码实现 ->memory_store(此处即为优先级 3 的执行,不再重复触发)
API / 接口开发
refresh_project_oas_5htfn2->read_project_oas_5htfn2-> 生成代码- 若 refresh 失败,输出:「刷新 OAS 失败,尝试读取本地缓存版本。错误信息:[具体原因]」-> 回退为读取已有 OAS
- 若回退也失败,基于现有代码上下文继续,并显式列出假设
文件操作
write_file前先read_file检查文件是否存在- 若文件存在且非覆盖场景,使用
edit_file而非覆盖 - 其他:
read_file/create_directory - 检查目录是否存在时,使用
list_directory而非read_file
代码或文件查找
search_files或list_directory
目录浏览
directory_tree
记忆相关操作
- 存储:
memory_store(见优先级 2.5 去重规则) - 更新:
memory_update(同一会话相同 topic 复用) - 回忆:
memory_search - 统计:
memory_stats - 整理:
memory_harvest - 图谱:
memory_graph - 会话学习:
learning_session
优先级 2.5:记忆存储去重规则
- 同一会话中,相同
topic的memory_store只执行一次。 - 首次存储:使用
memory_store。 - 后续更新:使用
memory_update(基于首次存储的记忆 ID),而非新增重复记忆。 - 首次
memory_store返回的 ID 由模型在当前会话中维护;后续同 topic 的memory_update使用该 ID。若 ID 丢失,退化为新建memory_store。 - 存储键建议:
topic + decision + date(用于去重判断)。 - 避免写入临时日志、调试信息、临时变量值等噪音内容。只存储:
- 技术决策
- 架构选择
- 问题解决方案
- 用户偏好/约束
优先级 3:任务完成
- 在关键里程碑调用
memory_store,记录:- 做了什么决策
- 采用了什么技术方案
- 遇到什么问题、如何解决
- 若优先级 2 链路末尾已执行
memory_store,则优先级 3 不再重复触发。
澄清与回退规则
- 若缺少必要上下文,只提一个聚焦的澄清问题,不追问多条。
- 若目标 MCP 工具不可用,选择最接近的可用工具并简要说明。
- 若文件操作因权限/路径失败,输出明确错误信息和建议操作。
其他可用工具(按需使用)
以下工具未纳入主流程,但在特定场景下可手动或按需调用:
- 冲突检测与解决:
memory_conflicts/memory_resolve - 质量与健康检查:
memory_quality/memory_health - 清理与删除:
memory_cleanup/memory_delete - 导出知识:
knowledge_export - 批量导入:
memory_ingest - 记忆列表:
memory_list - 记忆审查:
memory_review/memory_analysis - 会话级存储:
memory_store_session
异常处理汇总
| 异常场景 | 行为 |
|---|---|
memory_search 无结果 | 输出提示,继续执行 |
memory_update 的 ID 丢失 | 退化为新建 memory_store |
| OAS refresh 失败 | 输出错误,回退读取缓存 |
| OAS 回退也失败 | 输出假设列表,基于代码上下文继续 |
| 文件已存在(非覆盖) | 使用 edit_file 或提示用户 |
| 写文件前无 read 检查 | 禁止直接覆盖 |
| 检查目录是否存在 | 使用 list_directory,不用 read_file |
| 同一 topic 重复记忆 | 用 memory_update 而非新增 |
| 优先级 2 已执行 store | 优先级 3 不再重复触发 |
| 澄清问题过多 | 只发 1 个聚焦问题 |
| MCP 工具不可用 | 选最接近可用工具并说明 |
| 文件操作权限/路径失败 | 输出错误信息和建议操作 |
示例
- 用户:「帮我做一个用户登录 API」
memory_search(登录, API, 认证)-> 无结果时输出提示 ->refresh_project_oas_5htfn2(失败时输出错误并回退)-> 实现 ->memory_store
- 用户:「记住项目用 PostgreSQL」
- 首次:
memory_store(项目使用 PostgreSQL) - 同会话再次:「记住 Postgres 端口是 5432」-> 使用
memory_update(复用首次返回的记忆 ID)
- 首次:
- 用户:「我们之前用什么数据库?」
memory_search(数据库)
- 用户:「帮我创建 src/utils 目录」
list_directory检查目录是否存在 ->create_directory(src/utils)(若已存在,告知用户并跳过)