小七AI助手从零到十八的成长历程
🤖 小七智能管家 · 演进全程记录
从零开始构建一个具备自我反思、长期记忆、多工具调用、任务自动化能力的本地 AI Agent。
---
📅 版本演进时间线总览
阶段 核心主题 新增能力 V0 环境清理与基础对话 Python 环境、API 调用 V1 工具系统 终端命令、文件读写 V2 Agent 循环 ReAct 模式、Function Calling V3 长期记忆 对话历史持久化 V4 可视化界面 Gradio WebUI V5 反思闭环 逐次反思、反思注入 V6 偏好记忆 知识库、remember 工具 V7 模型切换 云端/本地双模型 V8 批量反思 时间范围选择、深度反思 V9 界面优化 侧边栏、主题美化、状态栏 V10 扩展工具包 OCR、网页抓取、文件上传 V11 多格式文档 PDF/Word/Excel 解析 V12 代码沙箱 安全执行 Python 代码 V13 向量记忆 ChromaDB 语义检索 V14 联网搜索 DuckDuckGo 实时搜索 V15 会话总结 关机前结构化总结 V16 定时任务 任务调度管理 V17 工作流引擎 多步骤自动执行 V18 蒸馏数据导出 训练数据自动筛选导出
---
V0:环境清理与基础对话
目标:清除旧项目的残留,建立纯净的开发环境,实现第一次 API 调用。
遇到的问题:
· 电脑上有之前研究 OpenClaw 和 Hermes 时安装的各种包和项目文件夹。 · 不确定哪些能删、哪些不能删。
解决方案:
· 使用 pip list 查看所有已安装包,逐一卸载 openclaw、hermes-agent 等相关包。 · 删除对应的项目文件夹和环境变量。 · 在 D 盘新建 xiaoqiAIAgent 文件夹,创建 Python 虚拟环境,安装 openai 库。 · 编写 chat.py,调用 DeepSeek API,实现第一次对话。
代码文件:chat.py
---
V1:工具系统
目标:让 AI 拥有“手”,能够执行终端命令、读写文件。
新增功能:
· run_shell(command):执行 Windows 终端命令,带超时和异常处理。 · read_file(path):读取文本文件,带安全限制(禁止系统目录)。 · write_file(path, content):写入文件,自动备份旧文件(.bak)。
设计要点:
· 每个工具都有安全防护(路径黑名单、文件大小限制)。 · 工具描述(TOOLS JSON)采用 OpenAI Function Calling 规范。
代码文件:tools.py
---
V2:Agent 循环
目标:实现 ReAct 模式,让 AI 能自主决定何时使用工具、何时回答。
核心逻辑:
· 用户输入 → LLM 分析 → 如果返回 tool_calls 则执行工具 → 将结果送回 LLM → 循环直到 LLM 生成最终文本。 · 内部 while 循环支持连续调用多个工具。
代码文件:agent.py
---
V3:长期记忆
目标:Agent 重启后仍记得之前的对话。
实现方式:
· 引入 agent_history.json,每次对话后自动保存。 · 启动时加载历史,拼接到对话上下文中。 · 限制保存最近 30 条消息,防止文件过大。
遇到的问题:
· 历史保存时出现 'ChatCompletionMessage' object has no attribute 'get' 错误。
解决方案:
· 修改 save_history 函数,先用 isinstance 判断是字典还是对象,分别处理。
---
V4:可视化界面
目标:告别终端,通过浏览器与 Agent 交互。
实现方式:
· 使用 Gradio 搭建 Web 界面。 · gr.Blocks + gr.Chatbot + gr.Textbox。
遇到的问题:
· Gradio 版本兼容问题:新版要求 Chatbot 数据为字典格式 {"role":"...", "content":"..."},旧版元组格式 [[user, assistant]] 报错。
解决方案:
· 统一使用字典格式的消息列表。 · 用 gr.State 管理状态,chatbot.value 渲染历史。
---
V5:反思闭环
目标:每次对话后自动复盘,生成改进建议,并反向影响后续对话。
新增文件:self_reflection.py
核心逻辑:
· 每次助手回复后,调用 reflect() 函数。 · 反思模型分析对话,输出 JSON 格式的评分和建议。 · 结果存入 reflections.jsonl。
遇到的问题:
· 反思模型返回的 JSON 前后会有多余文字或 Markdown 代码块标记,导致解析失败。
解决方案:
· 实现 extract_json() 函数,从返回内容中提取第一个 { 到最后一个 } 之间的内容。 · 改用纯 user 消息方式构造 prompt,避免模型的 System Role 人设干扰。 · 强制 temperature=0 保证输出稳定性。
---
V6:偏好记忆
目标:让 Agent 能记住用户的姓名、偏好、习惯等个人信息。
新增功能:
· remember(key, value):将偏好存入 knowledge_base.json。 · 每次对话时自动加载偏好,注入 system prompt。
---
V7:模型切换
目标:支持云端模型(DeepSeek)和本地模型(Ollama/Qwen)自由切换。
新增文件:model_manager.py
核心逻辑:
· 创建统一的客户端工厂函数 create_client(model_choice)。 · 界面增加下拉框,绑定模型选择参数。
---
V8:批量深度反思
目标:支持按时间段(1天/7天/15天/30天)对历史对话进行深度分析。
新增功能:
· deep_reflect(days):读取指定天数内的对话,提炼用户思维模式、AI 不足、改进策略、可复用规则。 · 结果存入 deep_reflections.json。
---
V9:界面优化
目标:借鉴 QwenPaw 的侧边栏布局,让对话区域更大更清爽。
改动内容:
· 左侧固定导航栏:包含简报、模型切换、反思设置、操作按钮、文件上传、状态信息。 · 右侧超大对话区:聊天窗口占主视口。 · 使用 gr.themes.Soft() 主题。
---
V10:扩展工具包
新增功能:
· fetch_webpage(url):网页抓取,提取正文内容。 · ocr_image(image_path):图片文字识别(Tesseract OCR)。 · 文件上传组件:支持拖拽上传,自动解析文本文件内容。
遇到的问题:
· Tesseract OCR 安装后 tesseract 命令无法识别。
解决方案:
· 手动添加 Tesseract 安装路径到系统环境变量 Path。 · 在 tools.py 中通过 pytesseract.pytesseract.tesseract_cmd 指定路径。
---
V11:多格式文档解析
新增功能:
· read_pdf(file_path):读取 PDF 文件。 · read_docx(file_path):读取 Word 文档。 · read_excel(file_path):读取 Excel 表格。
依赖:pymupdf、python-docx、openpyxl
---
V12:代码沙箱
目标:安全执行 Python 代码。
实现方式:
· 优先检测 Docker,如果有则用容器隔离执行。 · 否则用临时目录 + subprocess 执行。 · 关键词黑名单过滤危险操作。
---
V13:向量记忆
目标:支持语义搜索,从海量历史记忆中检索相关内容。
新增依赖:chromadb
核心逻辑:
· add_to_memory(content):将文本存入向量数据库。 · search_memory(query):语义检索最相关的记忆片段。 · 每次对话前自动检索相关记忆,注入 system prompt。
首次启动现象:
· 终端显示下载 all-MiniLM-L6-v2 模型的进度条(约 80MB)。 · 这是 ChromaDB 的嵌入模型,完全免费,仅首次下载。
---
V14:联网搜索
新增功能:
· web_search(query):使用 DuckDuckGo 搜索实时信息。
依赖:ddgs(原 duckduckgo_search 已改名)
遇到的问题:
· 旧包 duckduckgo_search 被重命名为 ddgs,终端出现警告。
解决方案:
· 卸载旧包,安装新包 ddgs,更新 import 语句。
---
V15:会话总结
目标:关机前生成结构化总结,自动存入向量记忆。
新增功能:
· session_summary():提取思维脉络、关键决策、待办事项、重要偏好。 · 总结自动存入向量记忆和本地 JSON 文件。
使用方式:
· 点击「📋 会话总结」按钮,或说“帮我总结一下今天聊了什么”。
---
V16:定时任务
目标:支持后台定时任务管理。
新增功能:
· manage_scheduled_task(action, task_name, task_config):增删查定时任务。 · 在 auto_tasks.py 中实现后台调度器。
---
V17:工作流引擎
目标:多步骤任务自动连续执行,无需人工逐步骤确认。
新增文件:workflow_engine.py
核心逻辑:
· 维护任务步骤列表和当前步骤指针。 · Agent 循环中检测工作流状态,自动推进执行。 · 左侧面板显示任务进度。
---
V18:蒸馏数据导出
目标:自动筛选高质量对话,导出为微调训练数据集。
新增功能:
· export_training_data(days, min_reflection_score):根据反思评分筛选对话,生成 JSONL 训练文件。
---
📊 当前能力总览
类别 能力 基础操作 执行终端命令、读写文件、文件整理 记忆系统 偏好记忆、向量语义记忆、自动归档 反思系统 逐次反思、批量反思、规则注入 知识管理 会话总结、知识库搜索、自动简报 网络能力 网页抓取、联网搜索 文档处理 PDF/Word/Excel 读取、OCR 代码能力 沙箱执行 任务管理 任务规划、工作流自动执行、定时任务 界面 侧边栏、模型切换、任务停止、状态栏 数据积累 对话历史、反思日志、训练数据导出
---
📁 数据文件说明
文件 内容 agent_history.json 全部对话历史 reflections.jsonl 每次对话的反思记录 deep_reflections.json 批量深度反思结果 knowledge_base.json 手动记录的偏好 memory_db/ ChromaDB 向量记忆库 training_data/ 蒸馏微调训练数据