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
package/docs/Windows/346/211/213/350/204/232/346/216/245/345/205/245/346/214/207/345/215/227.md
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Windows 手脚接入指南(feihong-desktop)
|
|
2
|
+
|
|
3
|
+
> 版本:v8.0.0+(C 层内化)| 更新:2026-09-08 | 晋江市飞虹智科技企业管理有限公司
|
|
4
|
+
>
|
|
5
|
+
> 本文档说明如何把 **desktop-touch-mcp**(Windows 桌面自动化引擎)嫁接为飞虹 Code 的「手脚」,
|
|
6
|
+
> 以及三层嫁接(A 配置接入 / B 策略约束 / C 内化封装)的配置与运维口径。
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. 架构总览
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
desktop-touch-mcp(32 工具 · Rust UIA 引擎 · 自带感知守卫)
|
|
14
|
+
│ A 配置接入(mcpServers 注册)
|
|
15
|
+
▼
|
|
16
|
+
飞虹 MCP 客户端(src/tools/mcp/mcp-client.ts,纯 Node 零依赖)
|
|
17
|
+
│ 工具自动注册为 desktop_*(白名单 11 个核心工具)
|
|
18
|
+
▼
|
|
19
|
+
飞虹 ToolRegistry(zod 校验 → 沙箱 → hook → M4 守卫 → 审计)
|
|
20
|
+
│ B 策略约束(policy.ts 角色矩阵 + sandbox.ts 沙箱规则)
|
|
21
|
+
▼
|
|
22
|
+
feihong-desktop 内化层(src/tools/desktop/)
|
|
23
|
+
│ C 内化封装:停手线 + 标准动作序列 + 取证
|
|
24
|
+
▼
|
|
25
|
+
feihong_desktop_see / feihong_desktop_act / feihong_desktop_verify
|
|
26
|
+
│ 模型可见的强类型工具(看 → 动 → 验 闭环)
|
|
27
|
+
▼
|
|
28
|
+
Windows 原生 app(ERP / Excel / 桌面软件 / 记事本…)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- **A 层**解决「能不能用」(改配置,零代码)
|
|
32
|
+
- **B 层**解决「谁能用、要不要审批」(策略 + 沙箱)
|
|
33
|
+
- **C 层**解决「用得安全、用得留痕」(停手线 + 取证)
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 2. 安装与配置(A 层)
|
|
38
|
+
|
|
39
|
+
### 2.1 安装 desktop-touch-mcp 运行时(离线/在线)
|
|
40
|
+
|
|
41
|
+
```powershell
|
|
42
|
+
# 在线(npm registry 可用时)
|
|
43
|
+
npm install -g @harusame64/desktop-touch-mcp
|
|
44
|
+
|
|
45
|
+
# 离线(GitHub 不可达时,用镜像下载 ZIP 并校验)
|
|
46
|
+
# 参考:%USERPROFILE%\.desktop-touch-mcp\releases\v1.16.0\(已校验 SHA256)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
关键环境变量:
|
|
50
|
+
|
|
51
|
+
| 变量 | 说明 |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| `DESKTOP_TOUCH_MCP_OFFLINE_FALLBACK=1` | 离线启动开关(不联网检查更新) |
|
|
54
|
+
| `DESKTOP_TOUCH_MCP_FETCH_TIMEOUT_MS=8000` | 启动拉取超时 |
|
|
55
|
+
|
|
56
|
+
### 2.2 飞虹配置(fhcode.config.json)
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"mcp": {
|
|
61
|
+
"servers": [
|
|
62
|
+
{
|
|
63
|
+
"name": "desktop",
|
|
64
|
+
"command": "node",
|
|
65
|
+
"args": ["C:/Users/<用户>/.desktop-touch-mcp/releases/v1.16.0/dist/index.js"],
|
|
66
|
+
"env": { "DESKTOP_TOUCH_MCP_OFFLINE_FALLBACK": "1" },
|
|
67
|
+
"initTimeoutMs": 20000,
|
|
68
|
+
"callTimeoutMs": 120000,
|
|
69
|
+
"tools": [
|
|
70
|
+
"desktop_state", "screenshot", "server_status", "desktop_discover",
|
|
71
|
+
"workspace_launch", "focus_window", "click_element", "keyboard",
|
|
72
|
+
"terminal", "excel", "wait_until"
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
> **注意**:`tools` 是**原始工具名**(不带 `desktop_` 前缀),filter 在注册前生效。
|
|
81
|
+
> 白名单只暴露 11 个核心工具,防止 32 个工具全部进入模型上下文导致注意力稀释。
|
|
82
|
+
> 修改配置后需重启飞虹会话;原配置请先备份(`fhcode.config.json.bak-<日期>`)。
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 3. 策略与沙箱(B 层)
|
|
87
|
+
|
|
88
|
+
### 3.1 角色矩阵(src/enterprise/policy.ts)
|
|
89
|
+
|
|
90
|
+
| 角色 | desktop 只读 | desktop 写 | 说明 |
|
|
91
|
+
| --- | --- | --- | --- |
|
|
92
|
+
| viewer | 否 | 否 | 无 desktop 权限 |
|
|
93
|
+
| developer | 否 | 否 | 编码角色,不开放桌面操控 |
|
|
94
|
+
| operator | 放行 | **需审批** | 业务操作员:`feihong_desktop_act` 及 `desktop_*` 写工具一律审批 |
|
|
95
|
+
| admin | 放行 | **需审批** | 管理员同样审批——不可逆动作留给人 |
|
|
96
|
+
|
|
97
|
+
写工具清单(`DESKTOP_APPROVAL_TOOLS`,共 20 个):`keyboard / mouse_click / mouse_drag / scroll / click_element / focus_window / workspace_launch / run_macro / terminal / clipboard / window_dock / excel / key_locker / screenshot_gc / browser_click / browser_open / browser_navigate / browser_eval / browser_fill / desktop_act`,另加 `feihong_desktop_act`。
|
|
98
|
+
|
|
99
|
+
> **已修复缺陷**:`allowTools: ['*']` 时 `approvalTools` 曾不生效(approval 判定顺序错误),
|
|
100
|
+
> 现改为 **approval 优先**——审批清单中的工具任何角色(含 admin)都需审批。
|
|
101
|
+
|
|
102
|
+
### 3.2 沙箱规则(src/tools/sandbox.ts)
|
|
103
|
+
|
|
104
|
+
- **read-only 模式**:拦截全部 desktop 写工具(`DESKTOP_WRITE_TOOLS` 20 个 + `feihong_desktop_act`)——只读勘察会话中 agent「只能看,不能动」
|
|
105
|
+
- **workspace-write / danger-full-access**:桌面写操作放行到策略层(审批决定)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 4. 停手线(C 层 · src/tools/desktop/desktop-guard.ts)
|
|
110
|
+
|
|
111
|
+
硬编码安全边界,**任何角色(含 admin)不可绕过**,不依赖 MCP 服务器:
|
|
112
|
+
|
|
113
|
+
| 规则 | 说明 |
|
|
114
|
+
| --- | --- |
|
|
115
|
+
| 动作白名单 | 仅允许 `type / click / mouse_click / drag / scroll / terminal_send / launch` |
|
|
116
|
+
| 目标窗口必填 | 写操作(除 launch)必须显式指定 `windowTitle`,防误操作到无关窗口 |
|
|
117
|
+
| 危险窗口黑名单 | 任务管理器 / 注册表编辑器 / UAC / Windows 安全中心 / 系统配置 / 设备管理器 / 磁盘管理 / 本地组策略…(子串匹配,不区分大小写) |
|
|
118
|
+
| 用户扩展黑名单 | 环境变量 `FEIHONG_DESKTOP_BLOCK_WINDOWS`(逗号分隔)追加,例如保护微信/企业微信 |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 5. 取证目录(C 层)
|
|
123
|
+
|
|
124
|
+
- 位置:`<FH_HOME>/forensics/<runId>/`(默认 `%USERPROFILE%\.feihong-code\forensics\`,可用 `FH_FORENSICS_DIR` 覆盖)
|
|
125
|
+
- 结构:
|
|
126
|
+
```
|
|
127
|
+
forensics/<runId>/
|
|
128
|
+
├── manifest.jsonl # 每次动作一行 JSON:ts/event/action/tool/args 摘要/结果/截图回读
|
|
129
|
+
└── shots/ # 截图目录(desktop-touch 磁盘缓存保留原图,可复核)
|
|
130
|
+
```
|
|
131
|
+
- **语义**:每次写操作(无论成败)强制截图取证——「操作留痕、可复盘、可甩锅」,是给企业客户交付的证据链。
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 6. feihong 工具参考
|
|
136
|
+
|
|
137
|
+
| 工具 | 读写 | 说明 | 关键参数 |
|
|
138
|
+
| --- | --- | --- | --- |
|
|
139
|
+
| `feihong_desktop_see` | 只读 | 桌面勘察:焦点/可见窗口/光标 | `filter?` 按标题/进程过滤 |
|
|
140
|
+
| `feihong_desktop_act` | 写(需审批) | 标准动作序列:停手线 → focus → 动作 → 取证 | `action` + `windowTitle` + 动作参数 |
|
|
141
|
+
| `feihong_desktop_verify` | 只读 | 截图+状态回读断言 | `expectText?` / `expectWindow?` |
|
|
142
|
+
|
|
143
|
+
### 动作参数(feihong_desktop_act)
|
|
144
|
+
|
|
145
|
+
| action | MCP 工具 | 关键参数 |
|
|
146
|
+
| --- | --- | --- |
|
|
147
|
+
| `type` | keyboard | `text`(自动 `@active` 瞄准前台) |
|
|
148
|
+
| `click` | click_element | `element`(UIA 名称,可先 discover) |
|
|
149
|
+
| `mouse_click` | mouse_click | `x` `y` |
|
|
150
|
+
| `drag` | mouse_drag | `x` `y` `endX` `endY` |
|
|
151
|
+
| `scroll` | scroll | `deltaX` `deltaY` |
|
|
152
|
+
| `terminal_send` | terminal | `text` |
|
|
153
|
+
| `launch` | workspace_launch | `command` `waitMs`(默认 5000) |
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## 7. 实战经验与已知边界(重要)
|
|
158
|
+
|
|
159
|
+
1. **标题中英文差异**:Windows 11 中文系统记事本窗口标题可能是 `Notepad`(英文)或 `记事本`。
|
|
160
|
+
`focus_window` 按子串匹配,**建议先 `feihong_desktop_see` 拿到精确标题再操作**。
|
|
161
|
+
2. **type 必须走 `@active`**:feihong 层已 focus 目标窗口后,`keyboard` 用 `windowTitle:'@active'`
|
|
162
|
+
瞄准前台,可规避标题匹配歧义;若直接传标题,可能触发 desktop-touch 感知守卫
|
|
163
|
+
`AutoGuardBlocked`(提示先 `desktop_discover` 验证)。
|
|
164
|
+
3. **感知守卫错误码**:`AutoGuardBlocked / GuardFailed / DestinationRequired / ElementDisabled /
|
|
165
|
+
InvokePatternNotSupported / WindowNotFound / FocusFailed` 会以「正常返回」携带错误文本,
|
|
166
|
+
feihong 层已做语义判定(视为失败并附带 suggest 提示)。
|
|
167
|
+
4. **keyboard 限制**:`win+r / win+x / win+s / win+l` 被服务器硬编码拦截;非 ASCII 文本
|
|
168
|
+
(CJK/emoji)走自动剪贴板,IME 组合中不会落地。
|
|
169
|
+
5. **Excel 工具**(VBA COM):只读动作建议直接调用 `desktop_excel`;写动作走审批。
|
|
170
|
+
6. **焦点即信任**:`@active` 瞄准的是**当前前台窗口**——动作前务必 `see` 确认焦点,
|
|
171
|
+
防止输入进入用户正在使用的窗口(演示/生产都适用)。
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 8. 运维清单
|
|
176
|
+
|
|
177
|
+
- [ ] 配置修改前备份 `fhcode.config.json`
|
|
178
|
+
- [ ] 变更后重启飞虹会话,确认日志出现 `MCP server attached · desktop · 11 tools`
|
|
179
|
+
- [ ] 修改策略后跑 `npm run typecheck` + `npm test`
|
|
180
|
+
- [ ] 定期检查取证目录容量(截图累积),按需清理
|
|
181
|
+
- [ ] 客户机部署时:每台机需单独安装运行时 + 单独授权(TCC/辅助功能等价物),并配置各自白名单
|