feihong-code 7.6.0 → 8.0.1
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.
- package/.github/ISSUE_TEMPLATE/bug_report.md +36 -22
- package/.github/ISSUE_TEMPLATE/config.yml +10 -13
- package/.github/ISSUE_TEMPLATE/feature_request.md +38 -13
- package/.github/PULL_REQUEST_TEMPLATE.md +65 -30
- package/.github/workflows/ci.yml +2 -2
- package/.github/workflows/release.yml +5 -5
- package/.github/workflows/swebench-real.yml +2 -2
- package/CONTRIBUTING.md +52 -3
- package/README.md +656 -636
- package/agent-team/.env.example +13 -0
- package/agent-team/README.md +42 -0
- package/agent-team/agents/__init__.py +0 -0
- package/agent-team/agents/l1_acquisition.py +207 -0
- package/agent-team/agents/l2_content.py +237 -0
- package/agent-team/agents/l3_conversion.py +148 -0
- package/agent-team/agents/l4_analysis.py +118 -0
- package/agent-team/agents/l5_management.py +52 -0
- package/agent-team/agents/registry.py +60 -0
- package/agent-team/config.py +39 -0
- package/agent-team/core/__init__.py +0 -0
- package/agent-team/core/agent.py +73 -0
- package/agent-team/core/models.py +347 -0
- package/agent-team/core/scheduler.py +150 -0
- package/agent-team/core/task.py +121 -0
- package/agent-team/feihongzhi.db +0 -0
- package/agent-team/llm/__init__.py +12 -0
- package/agent-team/llm/base.py +22 -0
- package/agent-team/llm/doubao_llm.py +52 -0
- package/agent-team/llm/mock_llm.py +42 -0
- package/agent-team/main.py +235 -0
- package/agent-team/requirements.txt +2 -0
- package/agent-team/skill_packager.py +248 -0
- package/agent-team/skills/01_AI/350/216/267/345/256/242/347/272/277/347/264/242/351/233/267/350/276/276/SKILL.md +40 -0
- package/agent-team/skills/01_AI/350/216/267/345/256/242/347/272/277/347/264/242/351/233/267/350/276/276/run.py +111 -0
- package/agent-team/skills/02_AI/351/224/200/345/224/256/350/267/237/350/277/233/351/224/200/345/206/240/SKILL.md +38 -0
- package/agent-team/skills/02_AI/351/224/200/345/224/256/350/267/237/350/277/233/351/224/200/345/206/240/run.py +108 -0
- package/agent-team/skills/03_/350/257/204/350/256/272/345/214/272/345/225/206/346/234/272/350/257/206/345/210/253/345/256/230/SKILL.md +38 -0
- package/agent-team/skills/03_/350/257/204/350/256/272/345/214/272/345/225/206/346/234/272/350/257/206/345/210/253/345/256/230/run.py +106 -0
- package/agent-team/skills/04_/345/256/242/346/210/267/350/201/212/345/244/251/346/210/220/344/272/244/345/210/206/346/236/220/345/256/230/SKILL.md +37 -0
- package/agent-team/skills/04_/345/256/242/346/210/267/350/201/212/345/244/251/346/210/220/344/272/244/345/210/206/346/236/220/345/256/230/run.py +107 -0
- package/agent-team/skills/05_/345/220/214/350/241/214/347/210/206/346/254/276/351/233/267/350/276/276/SKILL.md +38 -0
- package/agent-team/skills/05_/345/220/214/350/241/214/347/210/206/346/254/276/351/233/267/350/276/276/run.py +99 -0
- package/agent-team/skills/06_/346/257/217/346/227/245/347/262/276/345/207/206/350/216/267/345/256/242/351/200/211/351/242/230/345/256/230/SKILL.md +39 -0
- package/agent-team/skills/06_/346/257/217/346/227/245/347/262/276/345/207/206/350/216/267/345/256/242/351/200/211/351/242/230/345/256/230/run.py +103 -0
- package/agent-team/skills/07_AI/345/244/226/350/264/270/345/274/200/345/217/221/345/256/242/346/210/267/345/221/230/345/267/245/SKILL.md +39 -0
- package/agent-team/skills/07_AI/345/244/226/350/264/270/345/274/200/345/217/221/345/256/242/346/210/267/345/221/230/345/267/245/run.py +103 -0
- package/agent-team/skills/08_/345/260/217/347/272/242/344/271/246/347/262/276/345/207/206/350/216/267/345/256/242/345/221/230/345/267/245/SKILL.md +40 -0
- package/agent-team/skills/08_/345/260/217/347/272/242/344/271/246/347/262/276/345/207/206/350/216/267/345/256/242/345/221/230/345/267/245/run.py +97 -0
- package/agent-team/skills/09_/347/247/201/345/237/237/345/256/242/346/210/267/345/210/206/345/261/202/350/267/237/350/277/233/345/256/230/SKILL.md +38 -0
- package/agent-team/skills/09_/347/247/201/345/237/237/345/256/242/346/210/267/345/210/206/345/261/202/350/267/237/350/277/233/345/256/230/run.py +106 -0
- package/agent-team/skills/10_GEO/345/225/206/346/234/272/350/257/212/346/226/255/345/256/230/SKILL.md +38 -0
- package/agent-team/skills/10_GEO/345/225/206/346/234/272/350/257/212/346/226/255/345/256/230/run.py +108 -0
- package/agent-team/skills/11_/344/270/200/344/272/272/345/205/254/345/217/270AI/345/221/230/345/267/245/350/260/203/345/272/246/345/256/230/SKILL.md +37 -0
- package/agent-team/skills/11_/344/270/200/344/272/272/345/205/254/345/217/270AI/345/221/230/345/267/245/350/260/203/345/272/246/345/256/230/run.py +111 -0
- package/agent-team/skills/12_/350/200/201/346/235/277/347/237/255/350/247/206/351/242/221/350/216/267/345/256/242/350/204/232/346/234/254/345/256/230/SKILL.md +39 -0
- package/agent-team/skills/12_/350/200/201/346/235/277/347/237/255/350/247/206/351/242/221/350/216/267/345/256/242/350/204/232/346/234/254/345/256/230/run.py +104 -0
- package/agent-team/skills/13_/345/215/232/344/270/273/350/264/246/345/217/267/346/267/261/345/272/246/346/213/206/350/247/243/345/256/230/SKILL.md +37 -0
- package/agent-team/skills/13_/345/215/232/344/270/273/350/264/246/345/217/267/346/267/261/345/272/246/346/213/206/350/247/243/345/256/230/run.py +105 -0
- package/agent-team/skills/14_AI/347/237/255/350/247/206/351/242/221/350/207/252/345/212/250/345/211/252/350/276/221/345/270/210/SKILL.md +39 -0
- package/agent-team/skills/14_AI/347/237/255/350/247/206/351/242/221/350/207/252/345/212/250/345/211/252/350/276/221/345/270/210/run.py +108 -0
- package/agent-team/skills/15_/345/205/254/344/274/227/345/217/267/350/207/252/345/212/250/350/277/220/350/220/245/345/217/221/345/270/203/345/256/230/SKILL.md +38 -0
- package/agent-team/skills/15_/345/205/254/344/274/227/345/217/267/350/207/252/345/212/250/350/277/220/350/220/245/345/217/221/345/270/203/345/256/230/run.py +105 -0
- package/agent-team/skills/16_/350/241/214/344/270/232/346/267/261/345/272/246/345/210/206/346/236/220/345/270/210/SKILL.md +38 -0
- package/agent-team/skills/16_/350/241/214/344/270/232/346/267/261/345/272/246/345/210/206/346/236/220/345/270/210/run.py +108 -0
- package/agent-team/skills/17_/346/212/225/350/265/204/347/240/224/347/251/266/345/222/250/350/257/242/345/256/230/SKILL.md +38 -0
- package/agent-team/skills/17_/346/212/225/350/265/204/347/240/224/347/251/266/345/222/250/350/257/242/345/256/230/run.py +106 -0
- package/agent-team/tests/__init__.py +0 -0
- package/agent-team/tests/test_core.py +156 -0
- package/dist/agent/agent-session.js +103 -0
- package/dist/agent/agent-session.js.map +1 -0
- package/dist/agent/orchestrator.js +8 -0
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/steer.js +52 -0
- package/dist/agent/steer.js.map +1 -0
- package/dist/cli/run.js +2 -0
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/enterprise/policy.js +40 -17
- package/dist/enterprise/policy.js.map +1 -1
- package/dist/memory/honcho-store.js +231 -0
- package/dist/memory/honcho-store.js.map +1 -0
- package/dist/shared/log-rotator.js +238 -0
- package/dist/shared/log-rotator.js.map +1 -0
- package/dist/shared/sqlite-store.js +512 -0
- package/dist/shared/sqlite-store.js.map +1 -0
- package/dist/tools/agents/agents-bridge.js +144 -0
- package/dist/tools/agents/agents-bridge.js.map +1 -0
- package/dist/tools/desktop/desktop-guard.js +81 -0
- package/dist/tools/desktop/desktop-guard.js.map +1 -0
- package/dist/tools/desktop/desktop.tool.js +201 -0
- package/dist/tools/desktop/desktop.tool.js.map +1 -0
- package/dist/tools/desktop/feihong-win.js +163 -0
- package/dist/tools/desktop/feihong-win.js.map +1 -0
- package/dist/tools/desktop/index.js +37 -0
- package/dist/tools/desktop/index.js.map +1 -0
- package/dist/tools/docker-sandbox.js +212 -0
- package/dist/tools/docker-sandbox.js.map +1 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp/index.js +10 -2
- package/dist/tools/mcp/index.js.map +1 -1
- package/dist/tools/mcp/mcp-client.js +4 -0
- package/dist/tools/mcp/mcp-client.js.map +1 -1
- package/dist/tools/sandbox.js +28 -0
- package/dist/tools/sandbox.js.map +1 -1
- package/dist/web/public/favicon.svg +11 -0
- package/dist/web/public/index.html +4 -1
- package/dist/web/public/public/css/style.css +1756 -0
- package/dist/web/public/public/favicon.svg +11 -0
- package/dist/web/public/public/index.html +1246 -0
- package/dist/web/public/public/js/api.js +558 -0
- package/dist/web/public/public/js/app.js +2233 -0
- package/dist/web/public/public/js/mock-api.js +259 -0
- package/dist/web/public/public/js/monaco-editor.js +363 -0
- package/dist/web/public/public/js/ui.js +2217 -0
- package/dist/web/public/public/js/utils.js +214 -0
- package/dist/web/public/public/manifest.json +59 -0
- package/dist/web/public/public/robots.txt +14 -0
- package/dist/web/public/public/service-worker.js +149 -0
- package/dist/web/public/robots.txt +14 -0
- package/dist/web/server.js +70 -0
- package/dist/web/server.js.map +1 -1
- package/docs/AI/345/221/230/345/267/245/345/206/233/345/233/242-/346/225/264/345/220/210/350/257/264/346/230/216.md +68 -0
- package/docs/API.md +827 -0
- package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +3 -3
- package/docs/P1.1-P3-P5/345/267/245/347/250/213/345/256/236/346/226/275/346/200/273/347/273/223.md +328 -0
- package/docs/P5-Pi/345/257/271/347/205/247/350/257/204/346/265/213/346/212/245/345/221/212-mock/346/250/241/345/274/217.json +125 -0
- package/docs/P5-Pi/345/257/271/347/205/247/350/257/204/346/265/213/346/212/245/345/221/212-/347/234/237/345/256/236/346/250/241/345/236/213.json +138 -0
- package/docs/P5-pi-compare-real-report.json +138 -0
- package/docs/P5-pi-compare-report.json +125 -0
- package/docs/PROJECT-ANALYSIS-AND-TEST.md +721 -0
- package/docs/Pi-Agent/346/216/245/345/205/245/351/243/236/350/231/271Code-MVP/351/233/206/346/210/220/344/272/244/344/273/230/347/211/251.md +355 -0
- package/docs/Pi-Agent/346/216/245/345/205/245/351/243/236/350/231/271Code/344/273/267/345/200/274/345/210/206/346/236/220-/345/274/200/345/217/221/346/226/207/346/241/243.md +291 -0
- package/docs/Pi-Agent/346/216/245/345/205/245/351/243/236/350/231/271Code/344/273/267/345/200/274/351/207/215/344/274/260-/345/217/257/350/247/206/345/214/226.html +84 -0
- package/docs/SWE-bench-300-agnes-2.5-flash-/346/234/200/347/273/210/346/212/245/345/221/212.json +2012 -0
- package/docs/SWE-bench-300-agnes-2.5-flash-/350/267/221/345/210/206/346/212/245/345/221/212.md +74 -0
- package/docs/SWE-bench-Lite-DeepSeek-V4-Flash-/350/267/221/345/210/206/346/212/245/345/221/212.md +102 -0
- package/docs/TECHNICAL-SPECIFICATION.md +812 -0
- package/docs/TECHNICAL-SPECIFICATION.pdf +0 -0
- package/docs/UPGRADE-v7.9.0.md +291 -0
- package/docs/UPGRADE-v8.0.0.md +237 -0
- package/docs/Windows/346/211/213/350/204/232-POC/346/274/224/347/244/272/350/204/232/346/234/254.md +131 -0
- package/docs/Windows/346/211/213/350/204/232/346/216/245/345/205/245/346/214/207/345/215/227.md +181 -0
- package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246-v8.0.0.md +922 -0
- package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246-v8.0.1.md +146 -0
- package/package.json +7 -6
|
Binary file
|
|
@@ -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
|
+
*本文档由飞扬企源研发中心编制,随代码同步更新。*
|
package/docs/Windows/346/211/213/350/204/232-POC/346/274/224/347/244/272/350/204/232/346/234/254.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# 客户 POC 演示脚本:AI 操控 Windows 桌面(端到端闭环)
|
|
2
|
+
|
|
3
|
+
> 用途:给企业客户演示「飞虹 Code 指挥中心 → AI 手脚 → 操控 Windows 原生应用 → 全程留痕」
|
|
4
|
+
> 时长:约 3 分钟 | 前置:已完成《Windows 手脚接入指南》安装配置 | 更新:2026-09-08
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 0. 演示前检查(30 秒 · 安全第一)
|
|
9
|
+
|
|
10
|
+
```powershell
|
|
11
|
+
# 1. 确认 desktop MCP 已挂载(启动飞虹时日志出现)
|
|
12
|
+
# MCP server attached · desktop · 11 tools / feihong-desktop 已挂载
|
|
13
|
+
|
|
14
|
+
# 2. 确认取证目录可写
|
|
15
|
+
dir %USERPROFILE%\.feihong-code\forensics
|
|
16
|
+
|
|
17
|
+
# 3. 【关键】确认当前桌面没有用户正在使用的敏感窗口(尤其输入类)
|
|
18
|
+
# 演示的 type 动作瞄准「当前前台窗口」——先确认前台是演示目标
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
> ⚠️ **安全红线**:演示全程遵循「先 see 确认焦点 → 再 act」。
|
|
22
|
+
> 输入动作瞄准的是前台窗口,若前台是客户的微信/文档,输入会进入客户窗口!
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 1. 开场(30 秒 · 讲价值)
|
|
27
|
+
|
|
28
|
+
> 客户您好,接下来 3 分钟您会看到:**AI 不只是聊天,它能直接操作您电脑里的软件**——
|
|
29
|
+
> 打开程序、输入内容、验证结果,而且每一步都有留痕记录,出了问题可以复盘、可以追责。
|
|
30
|
+
> 这就是飞虹企业 AI 底座的「手脚」能力。
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 2. 演示动作(90 秒 · 对话即操作)
|
|
35
|
+
|
|
36
|
+
### 2.1 勘察桌面(看)
|
|
37
|
+
|
|
38
|
+
**对话**:「看看当前桌面有哪些窗口」
|
|
39
|
+
|
|
40
|
+
**预期**:AI 调用 `feihong_desktop_see`,返回焦点窗口/可见窗口列表。
|
|
41
|
+
|
|
42
|
+
**给客户讲**:这是「眼睛」——AI 先看清楚环境,不盲目操作。
|
|
43
|
+
|
|
44
|
+
### 2.2 打开记事本(动)
|
|
45
|
+
|
|
46
|
+
**对话**:「打开记事本」
|
|
47
|
+
|
|
48
|
+
**预期**:AI 调用 `feihong_desktop_act { action: 'launch', command: 'notepad.exe' }`,
|
|
49
|
+
返回启动结果 + 取证记录。
|
|
50
|
+
|
|
51
|
+
### 2.3 确认窗口(看 · 二次确认)
|
|
52
|
+
|
|
53
|
+
**对话**:「确认记事本窗口出现了」
|
|
54
|
+
|
|
55
|
+
**预期**:`feihong_desktop_see { filter: 'Notepad' }` 返回窗口标题。
|
|
56
|
+
|
|
57
|
+
> **给客户讲**:AI 操作前会先确认目标窗口存在——这是「先瞄准,再开枪」。
|
|
58
|
+
|
|
59
|
+
### 2.4 输入内容(动)
|
|
60
|
+
|
|
61
|
+
**对话**:「在记事本里输入:飞虹 Code 企业 AI 底座演示 2026-09-08」
|
|
62
|
+
|
|
63
|
+
**预期**:`feihong_desktop_act { action: 'type', windowTitle: 'Notepad', text: '...' }`,
|
|
64
|
+
返回 `typed: N` 成功。
|
|
65
|
+
|
|
66
|
+
### 2.5 验证结果(验)
|
|
67
|
+
|
|
68
|
+
**对话**:「验证一下输入是否成功」
|
|
69
|
+
|
|
70
|
+
**预期**:`feihong_desktop_verify { expectWindow: 'Notepad' }` 返回「验证通过:窗口焦点命中」。
|
|
71
|
+
|
|
72
|
+
**给客户讲**:AI 会截图回读、核对焦点——**做完了还自己检查**,不是"做完就完事"。
|
|
73
|
+
|
|
74
|
+
### 2.6 展示取证(留痕)
|
|
75
|
+
|
|
76
|
+
**对话**:「把这次操作的留痕记录给我看」
|
|
77
|
+
|
|
78
|
+
**预期**:展示 `%USERPROFILE%\.feihong-code\forensics\<runId>\manifest.jsonl`,
|
|
79
|
+
逐条显示 launch / type / snapshot 记录。
|
|
80
|
+
|
|
81
|
+
**给客户讲**:**每一步都有时间戳、动作、结果、截图**——这就是企业合规要的「可审计、可复盘」。
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 3. 安全护栏演示(60 秒 · 讲信任)
|
|
86
|
+
|
|
87
|
+
| 演示 | 对话 | 预期 |
|
|
88
|
+
| --- | --- | --- |
|
|
89
|
+
| 审批拦截 | 「用记事本输入文字」配合审批流 | 写操作弹审批 → 拒绝 → 审计记录 `rejected` |
|
|
90
|
+
| 停手线 | 「操作任务管理器」 | `停手线:目标窗口命中危险窗口黑名单` |
|
|
91
|
+
| 只读沙箱 | 切换 read-only 会话后尝试输入 | `read-only 模式禁止写类操作` |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 4. 演示后清理(30 秒)
|
|
96
|
+
|
|
97
|
+
```powershell
|
|
98
|
+
# 关闭演示打开的记事本(只关本次新增进程,不动客户原有窗口)
|
|
99
|
+
powershell -Command "Get-Process notepad | Where-Object { $_.Id -notin @(<演示前进程ID>) } | Stop-Process -Force"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
> 若演示前无 notepad 进程,直接:`Stop-Process -Name notepad -Force`
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 5. 常见问题(给客户的答疑口径)
|
|
107
|
+
|
|
108
|
+
- **Q:AI 会不会乱动我的电脑?**
|
|
109
|
+
A:三层防护——① 写操作全部需人工审批;② 危险窗口(任务管理器/系统设置等)硬编码拦截;
|
|
110
|
+
③ 每一步截图取证,随时可复盘。
|
|
111
|
+
- **Q:能操作我们公司的 ERP / Excel 吗?**
|
|
112
|
+
A:能。Excel 内置 VBA 直连(可读写单元格/宏);ERP 等桌面软件通过 UIA 语义点击,
|
|
113
|
+
不需要对方开放 API。
|
|
114
|
+
- **Q:部署在我们公司电脑上安全吗?**
|
|
115
|
+
A:飞虹离线私有化部署,运行时装在本机,不依赖外网;权限按角色划分(operator/admin),
|
|
116
|
+
审计全量留痕。
|
|
117
|
+
- **Q:中文软件能操作吗?**
|
|
118
|
+
A:能。UIA 引擎支持中文界面元素定位;键盘输入支持 CJK(自动剪贴板)。
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 6. 演示脚本(可复制)
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
看看当前桌面有哪些窗口
|
|
126
|
+
打开记事本
|
|
127
|
+
确认记事本窗口出现了
|
|
128
|
+
在记事本里输入:飞虹 Code 企业 AI 底座演示 2026-09-08
|
|
129
|
+
验证一下输入是否成功
|
|
130
|
+
把这次操作的留痕记录给我看
|
|
131
|
+
```
|