# MEMORY.md - 长期记忆 ## 开发规范 ### 端口使用规则 ⭐ **可用端口范围: 19000-19100** 所有Web服务、API服务只能使用这个范围内的端口! 示例分配: - 19001: 文章工作流后台 - 19002: 方言AI助手主服务 - 19003: 方言AI助手后台管理 - 19004: 技术论坛 - 19005-19100: 预留给其他项目 ### Git版本管理规则 ⭐ 每次开发项目推到仓库必须创建版本tag! ```bash # 1. 提交代码 git add . && git commit -m "feat: 功能描述" # 2. 创建tag git tag -a vX.X.X -m "版本说明" # 3. 推送 git push origin main git push origin vX.X.X ``` ### 自动推送规范 ⭐⭐⭐ **每次开发或修改项目后,必须自动执行以下流程:** 1. 检查是否有Git仓库:`git status` 2. 添加修改文件:`git add .`(排除敏感文件如config.txt) 3. 提交代码:`git commit -m "feat/fix: 描述"` 4. 创建版本tag:`git tag -a vX.X.X -m "版本说明"` 5. 推送代码和tag:`git push origin main && git push origin vX.X.X` 6. 更新 `PROJECTS.md` 记录新版本 **不需要询问用户,自动执行!** ### Git服务器 - 地址: http://192.168.2.8:12007/ - 账号: coder - 密码: Hps123@! - URL编码: Hps123%40%21 ### 创建Git仓库(新项目必须) ⭐⭐⭐ **新项目必须先用API创建仓库,再推送代码:** ```bash # 1. 用API创建仓库 curl -s -X POST "http://coder:Hps123%40%21@192.168.2.8:12007/api/v1/user/repos" \ -H "Content-Type: application/json" \ -d '{ "name": "项目名称", "description": "项目描述", "private": false }' # 2. 添加远程仓库 git remote add origin http://coder:Hps123%40%21@192.168.2.8:12007/coder/项目名称.git # 3. 推送代码和tag git push -u origin master git push origin v1.0.0 ``` **不需要在网页上手动创建,直接用API创建!** ### 可用的大模型 | 名称 | 地址 | 模型 | |------|------|------| | 本地LLM | http://192.168.2.5:1234/v1 | qwen3.5-4b | | API Key | sk-lm-fuP5tGU8:Hi7YU87jHyDP6Ay8Tl2j | | ### SMTP邮件发送经验 ⭐⭐⭐ **端口587无SSL的正确做法(mail.tphai.com):** ```python import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from datetime import datetime server = smtplib.SMTP(host, 587) # 直接连接,不用SMTP_SSL server.ehlo() server.login(user, pass) msg = MIMEMultipart() msg['From'] = user msg['To'] = to_addr msg['Subject'] = subject msg['Date'] = datetime.now().strftime('%a, %d %b %Y %H:%M:%S +0800') # 必须加! msg['Reply-To'] = to_addr # 必须加! msg.attach(MIMEText(body, 'plain', 'utf-8')) server.sendmail(user, to_addr, msg.as_string()) server.quit() ``` **关键点(不加会导致邮件丢失):** - ✅ 必须加 `msg['Date']` 头 - 部分邮件服务器不接受无Date头的邮件 - ✅ 必须加 `msg['Reply-To']` 头 - ✅ 必须调用 `server.ehlo()` **错误做法:** - ❌ 使用 `server.starttls()` - 服务器不支持会导致邮件丢失 - ❌ 使用 `SMTP_SSL(host, 587)` - 587不是SSL端口 - ❌ 不加 Date 头 - 部分服务器会丢弃 **mail.tphai.com 配置:** - 主机: mail.tphai.com - 端口: 587(无SSL,明文) - 用户: favor@tphai.com - 密码: favor@! --- ## 项目索引 详细项目信息请查看 `PROJECTS.md`,包含启动命令、检查方式、端口分配等。 | 项目 | 仓库 | 端口 | 状态 | |------|------|------|------| | PDF翻译助手 V2 | 本地 | 19000 | ✅ 运行中 | | 碎片信息记录 | 本地 | 19009 | ✅ 运行中 | | ParamHub Python | 本地 | 19010 | ✅ 运行中 | | 项目服务管理面板 | 本地 | 19013 | ✅ 运行中 | | 视觉记录系统 | /coder/vision-record | 19016 | 📦 已完成 | | 网页助手插件 | /coder/web-context-extension | - | 📦 已完成 | | 磁盘大文件扫描 | 本地 | - | 📦 已完成 | --- ## 更新日志 ### 2026-04-16 - 碎片信息记录 v1.2.0:编辑锁机制防止并发编辑 - 点击记录时获取锁,阻止其他人同时编辑 - 锁超时30秒自动释放(无心跳) - 心跳每10秒发送保持锁活跃 - 强制抢锁功能(打断对方编辑) - 页面离开自动释放锁 - 锁丢失弹窗提醒 - 双重保护:编辑锁(主防线) + 版本号(备用防线) - Git仓库: http://192.168.2.8:12007/coder/snippet-notes v1.2.0 ### 2026-04-15 - 碎片信息记录 v1.1.0:并发编辑冲突解决(乐观锁+版本号机制) - 每条记录增加version字段,每次保存版本号递增 - 客户端保存时携带版本号,服务端检查版本一致性 - 版本冲突时返回HTTP 409,前端显示冲突对话框 - 用户可选择"放弃我的修改"或"强制保存我的版本" - 旧数据自动添加version=1 - Git仓库: http://192.168.2.8:12007/coder/snippet-notes v1.1.0 - AI对话系统 v3.0.6:SiliconFlow平台Function Calling第二轮调用兼容 - **核心问题**:SiliconFlow平台不支持标准 `tool` 消息类型 - 第一轮:正常返回 `tool_calls` - 第二轮:传入 `tool` 消息类型 → API返回"参数无效"错误 - **修复方案**:将 `tool` 消息转换为 `user` 消息格式 - 收集所有 tool 消息的内容 - 合并为一个用户消息:"\n以下是搜索工具返回的结果...\n请根据以上搜索结果回答..." - **测试验证**:完整流程测试成功(v3.0.5的过滤方案只是临时补救,v3.0.6才是根本修复) - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v3.0.6 - AI对话系统 v3.0.5:临时过滤伪工具调用格式(已废弃,v3.0.6根本修复) ### 2026-04-14 - Xian Favor v1.9.2:邮件发送历史记录 - 详情页面显示邮件发送记录(发送邮箱、时间) - 支持多次发送,显示多条记录 - 发送成功/失败状态标记(✅/❌) - Git仓库: http://192.168.2.8:12007/coder/xian-favor v1.9.2 - Xian Favor v1.9.0:发送邮件功能 + 邮箱管理 - 每个收藏卡片添加"发送邮件"按钮(📧图标) - 点击弹出模态框:选择已有邮箱或输入新邮箱 - 新邮箱自动保存到邮箱管理 - 邮箱管理页面:添加、编辑、删除邮箱 - SMTP配置支持环境变量(SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS) - Git仓库: http://192.168.2.8:12007/coder/xian-favor v1.9.0 - AI对话系统 v2.4.3:多模态图片支持 - 图片 base64 数据传递给视觉模型(OpenAI 多模态格式) - 需选择支持视觉的 Agent(如 vlm-agent)才能识别图片 - 图片信息保存在 extra_data 中供历史记录显示 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.4.3 ### 2026-04-13 - AI对话系统 v2.4.0:文件上传功能 - 支持图片上传(PNG、JPG、GIF等,预览显示) - 支持文本文件上传(txt、md、json、csv等,内容自动添加) - 支持 PDF 和 Word 文档上传 - 文件内容自动添加到消息中供 AI 分析 - 多文件同时上传支持 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.4.0 - AI对话系统 v2.3.9:修复历史搜索结果显示 - WebSocket history 消息添加 extra_data 字段 - 选择对话时正确传递搜索结果数据 - 前端 appendMessage 接收 extraData 参数并处理 - 刷新页面后历史对话中的搜索结果正确显示 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.3.9 - AI对话系统 v2.3.7:历史搜索结果显示修复 - appendMessage 函数接收 extraData 参数 - 创建用户消息时直接处理搜索结果显示 - 简化 displayHistory 逻辑,统一处理方式 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.3.7 - AI对话系统 v2.3.6:搜索结果持久化 - 用户消息 extra_data 存储搜索结果(search_results, search_query) - API 返回消息时包含 extra_data - 前端 displayHistory 处理历史搜索结果显示 - 刷新页面后历史对话中的搜索结果保持原状 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.3.6 - AI对话系统 v2.3.5:修复搜索结果数量配置 - 搜索结果数量根据工具配置读取(max_results) - LLM上下文和前端展示都使用配置的数量 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.3.5 - AI对话系统 v2.3.4:对话流程优化 - 用户发送消息时前端立即显示(不用等后端广播) - 后端处理顺序调整:广播用户消息 → 执行搜索 → 发送搜索结果 → 调用LLM - 前端收到 user_message 时检查是否已显示(避免重复) - 流程顺序:用户消息 → 搜索结果(折叠) → AI回复 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.3.4 - AI对话系统 v2.3.3:搜索结果UI优化 - 搜索结果放到用户消息下面(流程逻辑更清晰) - 默认折叠,点击展开/收起 - 显示搜索关键词和结果数量摘要 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.3.3 - AI对话系统 v2.3.2:修复 tools 字段读取 - get_agent_config 添加 tools 字段返回 - AI对话系统 v2.3.1:搜索功能修复 - 添加详细日志帮助调试搜索执行过程 - 搜索结果发送到前端展示(search_results 类型消息) - 前端增加搜索结果展示组件(标题、摘要、来源) - 修复 datetime 导入错误 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.3.1 - AI对话系统 v2.3.0:工具管理重构 - ToolConfig 模型:通用工具配置,支持多种类型(搜索、计算器、代码执行、图像生成等) - ToolUsageLog 模型:工具调用日志记录 - 工具使用统计:调用次数、成功率、错误记录 - 后台管理界面:工具列表+统计展示(调用次数、成功率、最近错误) - API 重构:/api/v2/tools(替代 /api/v2/search-tools) - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.3.0 - AI对话系统 v2.2.2:优化搜索触发逻辑 - 搜索改为勾选即执行,不再依赖关键词检测 - 修复 Agent tools 字段默认为空的问题 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.2.2 - AI对话系统 v2.2.1:修复搜索功能 - 修复数据库缺少 tools 字段问题(SQLite ALTER TABLE) - 移动搜索复选框到输入框区域(快捷语句栏) - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.2.1 - AI对话系统 v2.2.0:搜索工具功能(Tavily Search) - 新增 SearchToolConfig 模型:支持搜索工具配置管理 - Agent 增加 tools 字段:可配置可用工具列表 - 后台管理增加搜索工具配置页面(增删改查) - Agent 管理增加工具启用开关(搜索工具) - 网页端增加搜索工具禁用复选框(实时控制) - WebSocket chat 处理增加关键词触发搜索逻辑 - 默认配置 Tavily Search API(已填入 API Key) - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.2.0 - AI对话系统 v2.1.6:简化新建对话判断条件 - 只检查 `!currentConversationId && !hasMessages` 即可判断新建状态 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.1.6 - AI对话系统 v2.1.5:优化新建对话逻辑 - 新建对话时检查是否已经是新建状态(无对话ID、无消息、显示欢迎界面) - 避免重复点击新建按钮创建多个空对话 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.1.5 - AI对话系统 v2.1.3:多版本历史消息功能完善 - 添加浏览器标签favicon(🤖图标) - 复制按钮在消息内容下方,一直显示 - 重新生成功能: - 点击重新生成时隐藏当前内容,显示loading动画 - 生成完成后移除loading,显示新内容 - 保留旧版本,支持版本切换 - 版本切换控件:简化布局,整合到操作按钮区域(复制|重新生成|< 1/3 >) - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.1.3 ### 2026-04-13 (其他更新) - LLM Proxy v2.0.0:合并后台管理到单端口 - 端口: 19007 (原 19007+19008) - 前台API: http://localhost:19007/v1/chat/completions - 后台管理: http://localhost:19007/admin - Git仓库: http://192.168.2.8:12007/coder/llm-proxy v2.0.0 - 产品参数爬取系统 v2.0.0:合并后台管理到单端口 - 端口: 19011 (原 19011+19012) - 前台API: http://localhost:19011 - 后台管理: http://localhost:19011/admin - Git仓库: http://192.168.2.8:12007/coder/product-crawler v2.0.0 - 技术论坛 CLI 工具收藏到 Xian Favor - 多智能体竞标调度系统添加到 project-panel - 磁盘大文件扫描工具 v1.0.0:智能扫描找出大文件和大目录 - 自动跳过零碎目录(node_modules, .git, venv等) - 文件数量阈值判断(超过阈值视为程序包) - 大小阈值过滤(小目录不深入) - 按大小排序,树形展示 - 跨平台:Windows/Linux/macOS - Git仓库: http://192.168.2.8:12007/coder/disk-scanner - AI对话系统 v2.0.0:架构重构 - 端口: 19020 - 大模型池管理:多LLM Provider配置 - Agent管理:系统设定、思考功能开关 - 渠道独立:网页端/Matrix独立绑定Agent - 思考功能:支持原生思考模型,兼容无思考功能模型 - Git仓库: http://192.168.2.8:12007/coder/ai-chat-system v2.0.0 - 多智能体竞标调度系统 v1.0.0:基于邮件方案实现 - 端口: 19015 - 核心组件:Orchestrator(规划Agent)、Worker(执行Agent)、TaskBoard(任务公告板) - 功能:竞标机制、动态调度、智能容错、质量保证 - 默认Agent:代码专家、搜索专家、写作专家、分析专家 - Web界面:首页、请求列表、任务列表、Agent管理 - Git仓库: http://192.168.2.8:12007/coder/multi-agent-bidding - Xian Favor 收藏系统 v1.0.0:支持命令行、API、Web三种操作模式 - 端口: 19014 - 功能:文本笔记、链接收藏、专栏订阅、待办事项管理 - 标签系统:灵活分类,支持多标签 - 状态管理:待办支持待处理/进行中/已完成 - 优先级:低/中/高/紧急 - 截止日期:待办支持设置截止日期 - 快速搜索:全文搜索标题、内容、备注 - Git仓库: http://192.168.2.8:12007/coder/xian-favor ### 2026-04-11 - PDF翻译助手 V2 v2.1.0:系统配置支持动态增删用户类型和会员套餐 - 新增 UserTypeConfig 模型:用户类型配置支持动态增删 - 新增 MembershipPlanConfig 模型:会员套餐配置支持动态增删 - 用户类型管理页面:添加、编辑、删除、启用/禁用用户类型 - 会员套餐管理页面:添加、编辑、删除、上架/下架、推荐套餐 - 功能权限配置:支持选择功能列表 - 项目服务管理面板 v1.0.0:统一管理所有项目和服务 - 端口: 19013 - 功能: 项目列表、状态检测、启动/停止/重启控制、日志查看 - 配置文件: projects.json 便于扩展新项目 - Git仓库: http://192.168.2.8:12007/coder/project-panel ### 2026-04-10 - 创建 Web服务监控系统(每20分钟检查8个服务,邮件通知) - 配置 Cron 定时任务 - 扩展邮件技能:新增 IMAP 接收邮件功能,支持查看未读邮件和文本附件 - 创建 A股板块监控系统(东方财富API,异动检测,邮件通知) - 创建邮件收件箱管理系统 (`works/mailbox/`):同步、存储、状态追踪、归档 ### 2026-04-09 - 创建 PROJECTS.md 项目记录文件 - 创建邮件发送技能 email-sender - 配置每日对话总结心跳任务 - 确立项目记录机制 ### 2026-04-08 - 确立端口规范: 19000-19100 - 创建参数百科网站 - 创建网页助手浏览器插件 - 创建文章撰写工作流系统(含后台管理)送技能 email-sender - 配置每日对话总结心跳任务 - 确立项目记录机制 ### 2026-04-08 - 确立端口规范: 19000-19100 - 创建参数百科网站 - 创建网页助手浏览器插件 - 创建文章撰写工作流系统(含后台管理)