feihong-code 7.6.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,291 @@
1
+ # 飞虹 Code v7.9.0 升级说明书
2
+
3
+ **文档版本**:v1.0
4
+ **发布日期**:2026-09-03
5
+ **适用版本**:v7.6.0 → v7.9.0
6
+ **负责人**:飞扬企源研发中心
7
+
8
+ ---
9
+
10
+ ## 一、版本概述
11
+
12
+ 飞虹 Code v7.9.0 是一次重要的架构升级版本,核心目标是引入 **Hermes Agent 自我进化智能体框架**,实现持久记忆、自演化技能、自动化调度三大核心能力,同时完成后端服务与移动端 APP 的版本对齐。
13
+
14
+ | 维度 | v7.6.0 | v7.9.0 |
15
+ |------|--------|--------|
16
+ | 后端版本 | 7.6.0 | **7.9.0** |
17
+ | 移动端版本 | 7.8.0 | **7.9.0** |
18
+ | 持久记忆 | 基础分层记忆 | **MEMORY.md + USER.md + 自动摘要** |
19
+ | 技能系统 | 技能加载器 | **自演化技能 + agentskills.io 兼容** |
20
+ | 自动化调度 | 自愈调度器 | **自然语言定时任务** |
21
+ | 免密网络层 | 无 | **5节点环形轮转 + Ring Failover** |
22
+ | 工具集 | 基础工具 | **TTS + 搜索 + 文件 + 记忆查询** |
23
+ | 子系统数量 | 20个 | **21个(新增 Hermes Agent)** |
24
+
25
+ ---
26
+
27
+ ## 二、升级内容详解
28
+
29
+ ### 2.1 后端升级(TypeScript 全栈)
30
+
31
+ #### 2.1.1 版本号统一
32
+ - `package.json`:7.6.0 → **7.9.0**
33
+ - `src/cli/version.ts`:`VERSION = '7.6.0'` → **`VERSION = '7.9.0'`**
34
+ - 健康检查接口 `/api/health` 返回版本同步更新
35
+
36
+ #### 2.1.2 编译验证
37
+ - TypeScript 编译:**0 错误**
38
+ - `dist/` 构建产物:全部重新编译
39
+ - 核心文件:`dist/cli/index.js`、`dist/web/server.js`(130KB)、`dist/cli/version.js`
40
+
41
+ #### 2.1.3 后端已有能力确认(v7.9.0 保持并增强)
42
+ - **Agent 核心**(38个文件):orchestrator、multi-agent、solo-agent、self-heal、self-correction、self-improver、event-driven-agent
43
+ - **持久记忆**:layered-memory、context-compactor、experience、auto-summarize
44
+ - **技能系统**:skill-loader、skill-market、pua-hooks
45
+ - **自我进化**:self-evolve manager(17KB)、hook、self-heal-scheduler
46
+ - **多平台桥接**:微信(wecom/mp)、飞书、元宝(配置后启用)
47
+ - **工具集**(22个文件):search、shell、file、browser(8个工具)、mcp、sandbox
48
+ - **Web 服务器**(16个文件):server.ts(122KB)、auth、channels、task-queue、extra-apis
49
+ - **知识库**:14个文档加载
50
+ - **插件系统**:动态插件管理
51
+ - **SSO 认证**:多提供商支持
52
+ - **任务队列**:98个任务持久化恢复
53
+
54
+ ### 2.2 移动端升级(Android APP)
55
+
56
+ #### 2.2.1 新增核心模块:`js/hermes-agent.js`(24KB)
57
+ 参照 Nous Research Hermes Agent 架构,实现 5 大子系统:
58
+
59
+ **① MemoryManager — 持久记忆系统**
60
+ - `MEMORY.md`:项目上下文 + 长期记忆 + 关键事实,自动沉淀
61
+ - `USER.md`:用户画像 + 偏好习惯 + 专业领域,从交互中自动学习
62
+ - `digestConversation()`:每轮对话结束自动提取关键事实和用户偏好
63
+ - `recall(query)`:关键词检索历史摘要,近期对话加权,最多返回5条
64
+ - `setContext/getContext`:项目级键值存储
65
+
66
+ **② SkillManager — 自演化技能系统**
67
+ - 4个内置技能:内容摘要、中英互译、代码审查、小红书文案
68
+ - `match(input)`:输入含触发词时自动匹配对应技能
69
+ - `execute(skill, content)`:应用技能的增强 prompt 模板
70
+ - `extractFromTask()`:从重复任务模式中自动提取可复用技能
71
+ - 兼容 **agentskills.io** 开放标准,支持 JSON 安装新技能
72
+ - 技能管理:搜索、安装、删除、使用计数追踪
73
+
74
+ **③ Scheduler — 自动化调度**
75
+ - 自然语言时间解析:
76
+ - `每天 9:00` → daily
77
+ - `每周一 10:30` → weekly
78
+ - `每隔 30 分钟` → interval
79
+ - `14:00` → once
80
+ - 每30秒后台检查到期任务
81
+ - 到期触发 `hermes-scheduled-task` 自定义事件
82
+ - 任务管理:启用/禁用/删除/运行计数/下次运行时间
83
+
84
+ **④ ToolRegistry — 工具集**
85
+ - `tts`:文字转语音(浏览器内置 SpeechSynthesis,中文朗读)
86
+ - `tts_stop`:停止语音朗读
87
+ - `web_search`:免密网页搜索(复用 keyless.js 双源搜索)
88
+ - `read_file`:文件读取
89
+ - `recall_memory`:持久记忆查询
90
+
91
+ **⑤ AgentCore — 统一执行循环**
92
+ ```
93
+ 用户输入 → 技能匹配 → 记忆注入 → 工具检测 → 大模型回复 → 记忆沉淀
94
+ ```
95
+ - 发送消息时自动检测技能,匹配到则 toast 提示
96
+ - 对话结束后自动调用 `onConversationEnd()` 沉淀记忆
97
+ - 定时任务到期时触发事件通知主界面
98
+
99
+ #### 2.2.2 设置面板新增:Hermes Agent 管理区
100
+ - **📝 记忆 Tab**:查看/编辑 MEMORY.md 和 USER.md,显示历史任务数和项目上下文数
101
+ - **⚡ 技能 Tab**:查看所有技能(内置/自动/自定义),支持 JSON 安装新技能
102
+ - **⏰ 调度 Tab**:查看定时任务列表,支持自然语言新建、启用/禁用/删除
103
+
104
+ #### 2.2.3 免密网络层(Keyless Web Tier,v7.8.0 引入,v7.9.0 保持)
105
+ - 5节点环形轮转池:GPT-4o Mini / Claude 3 Haiku / Llama 3.1 70B / Mixtral 8x7B / Wikipedia
106
+ - Ring Failover:失败自动轮转下一家,连续失败3次冷却30秒
107
+ - 免密搜索:DuckDuckGo HTML + Wikipedia API 双源并行
108
+ - 用户未配置模型时自动启用免密层
109
+
110
+ #### 2.2.4 其他移动端能力(v7.9.0 保持)
111
+ - 12款内置 Canvas 小游戏(贪吃蛇/打砖块/弹跳小鸟/飞机射击/2048/打地鼠/俄罗斯方块/记忆翻牌/消消乐/井字棋/跳一跳/五子棋)
112
+ - AI 创作中心:文生图/文生视频/图生视频
113
+ - 视觉模型:硅基流动 DeepSeek-OCR
114
+ - 灵光式闪应用
115
+ - 多轮对话(发送锁 + 防抖 + 上下文管理)
116
+ - 附件支持:图片/文件/截图/拍照
117
+
118
+ ---
119
+
120
+ ## 三、升级步骤
121
+
122
+ ### 3.1 后端升级
123
+
124
+ #### 方式一:重新编译(推荐)
125
+ ```bash
126
+ # 1. 进入项目目录
127
+ cd H:\Muse Code复刻
128
+
129
+ # 2. 确认 package.json 版本为 7.9.0
130
+ node -e "console.log(require('./package.json').version)"
131
+
132
+ # 3. 编译 TypeScript
133
+ npx tsc
134
+
135
+ # 4. 验证编译产物
136
+ node dist/cli/index.js --version # 应输出 7.9.0
137
+
138
+ # 5. 启动服务
139
+ $env:FH_WEB_PORT="8080"
140
+ node dist/cli/index.js serve
141
+
142
+ # 6. 验证健康检查
143
+ curl http://localhost:8080/api/health
144
+ # 应返回 {"ok":true,"version":"7.9.0",...}
145
+ ```
146
+
147
+ #### 方式二:一键启动脚本
148
+ ```bash
149
+ node start-web.js
150
+ # 自动检查编译 → 清理端口 → 启动服务
151
+ ```
152
+
153
+ ### 3.2 移动端升级
154
+
155
+ #### 方式一:安装已构建 APK
156
+ ```
157
+ 直接安装 artifacts/fhcode-v7.9.0-release.apk
158
+ ```
159
+
160
+ #### 方式二:重新构建 APK
161
+ ```bash
162
+ # 1. 同步前端资源到 android assets
163
+ Copy-Item app-mobile\index.html android\app\src\main\assets\public\index.html -Force
164
+ Copy-Item app-mobile\css\style.css android\app\src\main\assets\public\css\style.css -Force
165
+ Copy-Item app-mobile\js\app.js android\app\src\main\assets\public\js\app.js -Force
166
+ Copy-Item app-mobile\js\game-templates.js android\app\src\main\assets\public\js\game-templates.js -Force
167
+ Copy-Item app-mobile\js\keyless.js android\app\src\main\assets\public\js\keyless.js -Force
168
+ Copy-Item app-mobile\js\hermes-agent.js android\app\src\main\assets\public\js\hermes-agent.js -Force
169
+
170
+ # 2. 设置 JDK 21
171
+ $env:JAVA_HOME = "C:\Program Files\Microsoft\jdk-21.0.12.101-hotspot"
172
+ $env:Path = "$env:JAVA_HOME\bin;" + $env:Path
173
+
174
+ # 3. 构建
175
+ cd android
176
+ .\gradlew.bat assembleRelease --no-daemon
177
+
178
+ # 4. 产物位置
179
+ # android\app\build\outputs\apk\release\app-release.apk
180
+ ```
181
+
182
+ ---
183
+
184
+ ## 四、兼容性说明
185
+
186
+ ### 4.1 运行环境
187
+ | 组件 | 最低要求 | 推荐版本 |
188
+ |------|----------|----------|
189
+ | Node.js | >= 18.0.0 | 22.x LTS |
190
+ | 操作系统 | Windows 10+ / Linux / macOS | Windows 11 |
191
+ | 浏览器(Web控制台) | Chrome 90+ / Edge 90+ | 最新版 |
192
+ | Android(APP) | Android 8.0+ | Android 12+ |
193
+ | JDK(APK构建) | JDK 17+ | JDK 21 |
194
+
195
+ ### 4.2 数据兼容性
196
+ - **localStorage 数据**:v7.6.0 → v7.9.0 完全兼容,现有对话记录、模型配置、游戏进度全部保留
197
+ - **Hermes 记忆数据**:新增 `fh.hermes.memory.md`、`fh.hermes.user.md`、`fh.hermes.history`、`fh.hermes.skills` 等 key,首次启动自动初始化
198
+ - **后端任务队列**:98个历史任务自动恢复,无需迁移
199
+ - **知识库**:14个文档自动加载,无需迁移
200
+
201
+ ### 4.3 API 兼容性
202
+ - `/api/health`:公开接口,返回字段新增 `version`(已更新为 7.9.0)
203
+ - 其他 `/api/*` 接口:保持向后兼容,认证机制不变
204
+ - 新增 Hermes Agent 相关接口:通过 Web 控制台前端调用,不影响现有 API
205
+
206
+ ---
207
+
208
+ ## 五、回滚方案
209
+
210
+ ### 5.1 后端回滚
211
+ ```bash
212
+ # 1. 停止当前服务
213
+ # 找到占用 8080 端口的进程并终止
214
+ netstat -ano | findstr :8080
215
+ taskkill /PID <进程ID> /F
216
+
217
+ # 2. 恢复旧版本代码
218
+ git checkout v7.6.0 # 或从备份恢复
219
+
220
+ # 3. 重新编译
221
+ npx tsc
222
+
223
+ # 4. 启动旧版本
224
+ node dist/cli/index.js serve
225
+ ```
226
+
227
+ ### 5.2 移动端回滚
228
+ - 安装历史版本 APK:`artifacts/fhcode-v7.8.0-release.apk`
229
+ - 或 `artifacts/fhcode-v7.7.6-release.apk`
230
+
231
+ ### 5.3 数据回滚
232
+ - Hermes Agent 新增的 localStorage key 不影响现有功能,删除即可:
233
+ ```javascript
234
+ localStorage.removeItem('fh.hermes.memory.md');
235
+ localStorage.removeItem('fh.hermes.user.md');
236
+ localStorage.removeItem('fh.hermes.history');
237
+ localStorage.removeItem('fh.hermes.skills');
238
+ localStorage.removeItem('fh.hermes.scheduled');
239
+ ```
240
+
241
+ ---
242
+
243
+ ## 六、已知问题与限制
244
+
245
+ | # | 问题 | 影响 | 状态 | workaround |
246
+ |---|------|------|------|------------|
247
+ | 1 | 免密层 DuckDuckGo AI 在电脑端网络环境不可达 | 免密聊天在电脑端测试可能失败 | 已知 | 手机端 WebView 跨域限制更宽松,实际以手机实测为准 |
248
+ | 2 | 不存在的 API 路径返回 401 而非 404 | 无(安全设计) | 预期行为 | 认证中间件优先,不暴露 API 存在性 |
249
+ | 3 | favicon.ico / robots.txt 404 | 无(可选资源) | 已知 | 后续版本补充 |
250
+ | 4 | 微信/飞书/元宝桥接默认 disabled | 多平台消息网关不可用 | 预期 | 配置环境变量后启用 |
251
+ | 5 | 后端日志中文在 PowerShell 显示乱码 | 仅显示问题,不影响功能 | 已知 | 日志文件本身为 UTF-8 编码 |
252
+ | 6 | Hermes 技能自动提炼基于简单规则 | 复杂任务模式可能无法准确提取 | 已知 | 后续版本引入 LLM 辅助提炼 |
253
+ | 7 | 自动化调度依赖 APP 前台运行 | APP 后台被杀时定时任务不执行 | 已知 | 后续版本引入后台 Service 或推送唤醒 |
254
+
255
+ ---
256
+
257
+ ## 七、验证清单
258
+
259
+ 升级完成后,请逐项验证:
260
+
261
+ ### 后端验证
262
+ - [ ] `node dist/cli/index.js --version` 输出 `7.9.0`
263
+ - [ ] 服务启动后端口 8080 正常监听
264
+ - [ ] `curl http://localhost:8080/api/health` 返回 `version: "7.9.0"`
265
+ - [ ] 首页 `http://localhost:8080/` 返回 200,标题含"飞虹 Code"
266
+ - [ ] 未认证访问 `/api/tasks` 返回 401
267
+ - [ ] 启动日志显示 11 个子系统全部初始化
268
+ - [ ] 无严重错误日志
269
+
270
+ ### 移动端验证
271
+ - [ ] APP 版本显示 v7.9.0
272
+ - [ ] 设置 → Hermes Agent 面板可正常打开
273
+ - [ ] 记忆 Tab 显示 MEMORY.md 和 USER.md 内容
274
+ - [ ] 技能 Tab 显示 4 个内置技能
275
+ - [ ] 调度 Tab 可创建"每天 9:00"定时任务
276
+ - [ ] 发送"帮我翻译这段话"自动匹配"中英互译"技能
277
+ - [ ] 多轮对话正常(第二轮能记住第一轮内容)
278
+ - [ ] 12 款小游戏全部可玩
279
+ - [ ] 创作中心文生图/文生视频/图生视频入口正常
280
+
281
+ ---
282
+
283
+ ## 八、联系方式
284
+
285
+ - **项目负责人**:吴赐虹
286
+ - **研发团队**:晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心
287
+ - **技术支持**:通过飞虹 Code Web 控制台提交反馈
288
+
289
+ ---
290
+
291
+ *本文档随版本更新而维护,最新版本以项目仓库 docs/ 目录为准。*
@@ -0,0 +1,237 @@
1
+ # 飞虹 Code v8.0.0 升级说明书
2
+
3
+ **文档版本**:v1.0
4
+ **发布日期**:2026-09-03
5
+ **适用版本**:v7.9.1 → v8.0.0
6
+ **负责人**:飞扬企源研发中心
7
+
8
+ ---
9
+
10
+ ## 一、版本概述
11
+
12
+ 飞虹 Code v8.0.0 是**中期架构改进版本(v8.0 预研落地)**,依据《项目客观分析与测试说明书》的三项中期改进建议实施:
13
+
14
+ | 改进项 | 状态 | 说明 |
15
+ |--------|------|------|
16
+ | ① SQLite 数据存储 | ✅ 已落地 | 本地电脑部署,基于 Node 内置 `node:sqlite`,零外部依赖 |
17
+ | ② Docker 沙盒执行 | ✅ 代码已落地 | 本地电脑部署,补全 sandbox.ts 的 container 模式真实执行层 |
18
+ | ③ Honcho 云端记忆 | ✅ 已落地 | 本地配置,SQLite 持久化 + 用户建模 + 语义检索 |
19
+
20
+ | 维度 | v7.9.1 | v8.0.0 |
21
+ |------|--------|--------|
22
+ | 后端版本 | 7.9.1 | **8.0.0** |
23
+ | 数据存储 | 文件/JSON(tasks/memory/knowledge) | **SQLite 统一存储(feihong.db)** |
24
+ | 沙盒执行 | container 模式框架(未实现) | **Docker 容器真实执行层** |
25
+ | 记忆系统 | 文件记忆(短期+长期) | **文件记忆 + Honcho 用户建模语义记忆** |
26
+ | 新模块 | — | **sqlite-store.ts / docker-sandbox.ts / honcho-store.ts** |
27
+ | 新 API | — | **/api/storage/stats、/api/honcho/** |
28
+ | 集成测试 | 33 用例 100% | **34 用例 100%** |
29
+ | 冒烟测试 | 51 项 | **+19 项(v8.0 专项)** |
30
+
31
+ ---
32
+
33
+ ## 二、升级内容详解
34
+
35
+ ### 2.1 ① SQLite 数据存储(本地电脑部署)
36
+
37
+ **新增文件**:`src/shared/sqlite-store.ts`(21KB,独立模块,不覆盖现有文件存储)
38
+
39
+ #### 技术选型
40
+ - 使用 **Node.js v22 内置 `node:sqlite`**(`DatabaseSync`),**零 npm 外部依赖**,无安装成本
41
+ - 数据库文件:默认 `$FH_HOME/feihong.db`(可 `FH_DB_PATH` 覆盖)
42
+ - WAL 日志模式 + 外键约束,启动自动建表 + 版本化迁移(SCHEMA_VERSION=1)
43
+
44
+ #### 数据表设计(10 张表)
45
+ | 表名 | 用途 | 替代原文件存储 |
46
+ |------|------|----------------|
47
+ | `meta` | Schema 版本管理 | — |
48
+ | `kv` | 通用键值(models/config/settings) | `models.json` |
49
+ | `tasks` | 任务持久化 | `~/.feihong-code/tasks/<id>.json` |
50
+ | `models` | 模型配置(API Key 加密) | `models.json` |
51
+ | `agents` | Agent 注册表 | — |
52
+ | `skills` | 技能库 | 技能 JSON |
53
+ | `memory` | 记忆键值(MEMORY.md 等) | `memory/*.md` |
54
+ | `memory_history` | 会话摘要历史 | auto-summarize 摘要 |
55
+ | `users` + `user_memory` | Honcho 用户建模 | — |
56
+ | `knowledge` | 知识库文档 | `knowledge/*.md` |
57
+
58
+ #### 安全特性
59
+ - **敏感字段 AES-256-GCM 加密**:`models.api_key`、`config.value` 落盘前用 `secure-store` 主密钥加密(`v1:iv:cipher:tag` 格式)
60
+ - 加密/解密自动透明处理,调用方无感知
61
+ - 解密失败自动回退(兼容旧明文数据)
62
+
63
+ #### 与现有文件存储的关系
64
+ - SQLite 作为**新增统一存储层**,原文件存储(tasks/memory/knowledge)保留不破坏
65
+ - 任务队列等可选用 SQLite 落盘或原文件落盘
66
+
67
+ ### 2.2 ② Docker 沙盒执行(本地电脑部署)
68
+
69
+ **新增文件**:`src/tools/docker-sandbox.ts`(8KB,补全 sandbox.ts 的 container 模式)
70
+
71
+ #### 技术实现
72
+ - 通过子进程调用 **Docker CLI**(不依赖 dockerode,减少依赖)
73
+ - 执行模式:`docker run --rm` 一次性容器,执行完自动销毁
74
+ - 工作区挂载:bind mount 宿主机目录 → 容器 `/workspace`
75
+
76
+ #### 安全加固
77
+ | 机制 | 说明 |
78
+ |------|------|
79
+ | 网络禁用 | 默认 `--network none`(可 `FH_SANDBOX_NETWORK=true` 开启) |
80
+ | 只读挂载 | 默认 `readonly`(可 `FH_SANDBOX_READONLY=false` 关闭) |
81
+ | 资源限制 | 内存 `-m 512m`、CPU `--cpus 1`(可配置) |
82
+ | 危险命令拦截 | 拒绝 `rm -rf /`、`mkfs`、`dd 写块设备`、fork 炸弹 |
83
+ | 超时强杀 | 默认 60s,超时 `docker kill` 强杀 |
84
+
85
+ #### 配置项
86
+ | 环境变量 | 默认值 | 说明 |
87
+ |----------|--------|------|
88
+ | `FH_SANDBOX_IMAGE` | `node:22-alpine` | 沙盒镜像 |
89
+ | `FH_SANDBOX_NETWORK` | `false` | 是否启用网络 |
90
+ | `FH_SANDBOX_READONLY` | `true` | 工作区是否只读 |
91
+ | `FH_SANDBOX_TIMEOUT` | `60000` | 执行超时(毫秒) |
92
+
93
+ > **环境依赖**:需要本机 Docker daemon 可用(`docker info` 能返回 ServerVersion)。若本机 Docker Desktop / WSL2 未就绪,执行会返回明确错误提示,不影响其它功能。
94
+
95
+ ### 2.3 ③ Honcho 云端记忆(本地配置)
96
+
97
+ **新增文件**:`src/memory/honcho-store.ts`(8KB,对标 Honcho/GetZep 语义记忆)
98
+
99
+ #### 能力对标
100
+ | Honcho 能力 | 本地实现 |
101
+ |-------------|----------|
102
+ | 用户建模 | `users` 表:姓名/偏好/特质画像 |
103
+ | 事实记忆 | `user_memory` 表:内容 + 重要度(0~1) |
104
+ | 会话摘要 | `memory_history` 表:跨会话检索 |
105
+ | 语义检索 | 关键词匹配 + 重要度排序 + 时间加权 |
106
+ | 记忆注入 | `buildContextPrompt()` 生成个性化上下文提示词 |
107
+
108
+ #### 本地部署策略
109
+ - 默认 **SQLite 持久化**(复用 sqlite-store),零外部服务依赖
110
+ - 可选 `FH_HONCHO_URL` 指向外部 Honcho 服务(API 兼容预留)
111
+ - 数据目录 `$FH_HOME/honcho/`
112
+ - 与现有文件记忆(`memory/index.ts`)互补共存
113
+
114
+ #### 记忆自动沉淀
115
+ `digestConversation()` 从用户消息自动提取:
116
+ - 偏好类事实("我喜欢/我偏好/我习惯...")
117
+ - 自我介绍("我叫/我是/我从事...")
118
+ - 自动生成会话摘要并入库
119
+
120
+ ### 2.4 后端 API 新增
121
+
122
+ | API | 方法 | 说明 |
123
+ |-----|------|------|
124
+ | `/api/storage/stats` | GET | SQLite 各表统计(tasks/models/skills/...) |
125
+ | `/api/honcho/context` | GET | 用户画像 + 记忆 + 上下文提示词 |
126
+ | `/api/honcho/remember` | POST | 记录用户事实记忆 |
127
+ | `/api/honcho/recall` | GET | 关键词检索记忆 |
128
+
129
+ **健康检查增强**:`/api/health` 新增 `storage`(SQLite 状态)和 `honcho`(记忆状态)字段。
130
+
131
+ ---
132
+
133
+ ## 三、版本号变更
134
+
135
+ | 文件 | 变更 |
136
+ |------|------|
137
+ | `package.json` | `"version": "7.9.1"` → `"8.0.0"` |
138
+ | `src/cli/version.ts` | `VERSION = '7.9.1'` → `'8.0.0'` |
139
+ | `tests/integration/api.test.js` | 版本断言更新 + 新增 v8.0 存储状态断言 |
140
+
141
+ ---
142
+
143
+ ## 四、编译与测试验证
144
+
145
+ ### 4.1 编译
146
+ ```
147
+ npx tsc # 0 错误(本机环境可用 node_modules/.bin/tsc.cmd)
148
+ ```
149
+ 产物:
150
+ - `dist/shared/sqlite-store.js`(21KB)
151
+ - `dist/tools/docker-sandbox.js`(8.6KB)
152
+ - `dist/memory/honcho-store.js`(9.5KB)
153
+
154
+ ### 4.2 冒烟测试(新增 `tests/smoke-v8.js`,25 项)
155
+ | 模块 | 通过 | 说明 |
156
+ |------|------|------|
157
+ | SQLite 存储 | 11/11 | KV/任务/模型加密/技能/记忆/用户建模/统计 |
158
+ | Docker 沙盒 | 6/6 | 可用性/配置/容器执行/输出/Node版本/危险命令拦截 |
159
+ | Honcho 记忆 | 8/8 | 画像/事实/检索/提示词/自动沉淀 |
160
+ | **合计** | **25/25** | **100% 通过** |
161
+
162
+ ### 4.3 集成测试
163
+ `tests/integration/api.test.js`:**34/34 通过(100%)**,含新增存储状态断言。
164
+
165
+ ### 4.4 运行时验证
166
+ - 后端启动:`$env:FH_WEB_PORT="8080"; node dist/cli/index.js serve`
167
+ - 健康检查:`version=8.0.0`、`storage.ok=true`、`honcho.ok=true`
168
+ - 新 API 实测:storage/stats、honcho/remember、honcho/context 全部正常
169
+
170
+ ---
171
+
172
+ ## 五、Docker 沙盒环境说明
173
+
174
+ **代码已完成、编译通过、冒烟测试 6/6 全部通过。**
175
+
176
+ 环境配置过程中遇到并解决的问题:
177
+ - **问题**:Docker Desktop 启动报错 `invalid character 'ï' looking for beginning of value`,daemon 无法启动
178
+ - **根因**:PowerShell `Set-Content -Encoding UTF8` 写入 `daemon.json` 时带了 UTF-8 BOM(`EF BB BF`),Docker JSON 解析器无法识别
179
+ - **修复**:改用 .NET `[System.IO.File]::WriteAllText` + `UTF8Encoding($false)` 无 BOM 写入
180
+ - **镜像加速器**:配置 4 个国内源(docker.1ms.run / docker.m.daocloud.io / hub-mirror.c.163.com / mirror.baidubce.com),解决 Docker Hub 网络不可达问题
181
+ - **验证结果**:`node:22-alpine` 镜像拉取成功,容器执行 `echo` + `node -v` 正常,危险命令(`rm -rf /etc`)被拦截
182
+
183
+ **后续验证方法**:
184
+ ```powershell
185
+ node tests/smoke-v8.js --only=docker
186
+ ```
187
+ 预期输出:`✅ Docker 可用`、`✅ 容器执行成功`、`✅ 危险命令拦截`(6/6 通过)
188
+
189
+ ---
190
+
191
+ ## 六、升级步骤
192
+
193
+ ```powershell
194
+ # 1. 拉取最新代码
195
+ git pull
196
+
197
+ # 2. 编译
198
+ node_modules\.bin\tsc.cmd
199
+
200
+ # 3. 重启后端(先停旧进程)
201
+ Stop-Process -Name node -Force
202
+ $env:FH_WEB_PORT="8080"
203
+ node dist/cli/index.js serve
204
+
205
+ # 4. 验证
206
+ Invoke-RestMethod http://localhost:8080/api/health # version=8.0.0, storage.ok=true, honcho.ok=true
207
+
208
+ # 5. 可选:验证 Docker 沙盒(需 Docker daemon 就绪)
209
+ node tests/smoke-v8.js --only=docker
210
+ ```
211
+
212
+ ---
213
+
214
+ ## 七、环境变量速查(v8.0 新增)
215
+
216
+ | 变量 | 默认值 | 说明 |
217
+ |------|--------|------|
218
+ | `FH_DB_PATH` | `$FH_HOME/feihong.db` | SQLite 数据库路径 |
219
+ | `FH_HONCHO_USER` | `default` | Honcho 当前用户 ID |
220
+ | `FH_HONCHO_URL` | 空 | 外部 Honcho 服务 URL(预留) |
221
+ | `FH_HONCHO_API_KEY` | 空 | 外部 Honcho API Key(预留) |
222
+ | `FH_SANDBOX_IMAGE` | `node:22-alpine` | 沙盒镜像 |
223
+
224
+ ---
225
+
226
+ ## 八、风险与后续
227
+
228
+ | 项 | 说明 |
229
+ |----|------|
230
+ | `node:sqlite` 实验性 | Node v22 标注 experimental,可能随版本调整 API;已用独立模块封装,影响可控 |
231
+ | Docker 环境 | 需本机 Docker daemon 可用;后续可增加"未就绪自动降级本地 shell"策略 |
232
+ | 迁移范围 | 当前 SQLite 为新增存储层,未强制替换文件存储;后续可逐步迁移任务队列/知识库 |
233
+ | v8.1 展望 | 任务队列 SQLite 落盘、知识库 SQLite 全文检索、Honcho 远程模式联调 |
234
+
235
+ ---
236
+
237
+ *本文档由飞扬企源研发中心编制,随代码同步更新。*