docs: trim safety constraints from mcp roadmap

This commit is contained in:
zhaoyilun
2026-07-09 22:02:26 +08:00
parent cfc7787cdd
commit e993ce15fb
8 changed files with 172 additions and 262 deletions

View File

@@ -11,25 +11,14 @@ MCP Client
-> 已登录的 iSphere / IMPlatformClient 窗口
```
当前阶段提前固定 Go 与 C# 之间的边界,不实现 Go MCP 主程序,也不实现真实搜索、发送、文件操作。
当前阶段提前固定 Go 与 C# 之间的边界Go MCP 主程序真实搜索、发送、文件操作进入后续节点
第一阶段的实际目标是:用 C# helper 只读探测已登录客户端窗口,并把窗口和 UI Automation 控件树以稳定 JSON 返回给未来 Go MCP 服务。
第一阶段的实际目标是:用 C# helper 探测已登录客户端窗口结构,并把窗口和 UI Automation 控件树以稳定 JSON 返回给未来 Go MCP 服务。
## 2. 不做什么
## 2. 当前阶段范围
当前阶段不做以下内容:
当前阶段只定义 Go 与 C# helper 的分工Go 负责 MCP 服务层C# helper 负责 Windows 桌面/UIA 执行层。真实联系人、群组、消息、文件能力进入 `docs/mcp-core-tools-contract.md` 的核心工具路线。
- 不写 Go MCP 实现代码。
- 不做 C# 常驻后台进程。
- 不做 Windows Service。
- 不做 named pipe、gRPC、HTTP 本地服务。
- 不做插件框架。
- 不做 selector 自动学习系统。
- 不执行搜索联系人、发消息、发文件、收文件。
- 不自动登录。
- 不读取密码、token、cookie、私钥。
- 不注入进程、不 hook、不读目标进程内存、不提权。
- 不加壳、不混淆、不伪装系统进程。
## 3. 分工原则
@@ -42,11 +31,11 @@ Go 是对外服务层,负责:
- 调用 C# helper。
- 控制超时。
- 解析 helper JSON 输出。
- 审批校验
- 审计记录。
- 工具执行策略
- 执行审计记录。
- 把 helper 结果整理成 MCP 返回值。
Go 不直接操作窗口,不直接使用 UIA不点击按钮不保存 iSphere 控件细节
Go 通过 helper 获取窗口结构和执行结果iSphere 控件细节由 C# helper 封装
### 3.2 C# Windows Helper
@@ -57,7 +46,7 @@ C# 是 Windows 执行层,负责:
- 读取指定窗口的 UI Automation 控件树。
- 后续在 selector 稳定后执行少量受控窗口动作。
C# 不做 MCP不做审批策略中心不做业务状态中心不联网不常驻
C# 保持 Windows helper 定位,只返回 Go 请求的 helper 结果
## 4. 进程模型
@@ -75,9 +64,9 @@ C# 退出
- 简单。
- 易测试。
- 不常驻后台,减少安防误报和运维复杂度
- 不把联系人、消息、文件路径暴露在命令行参数
- 后续如果确实需要提速,再评估长连接,不提前设计
- 默认一次一进程,便于调试和替换
- 联系人、消息、文件路径通过 stdin JSON 传入,命令行参数保持简单
- 后续需要提速,再评估长连接。
标准约束:
@@ -165,7 +154,7 @@ UIA_DUMP_FAILED
SELECTOR_NOT_FOUND
APP_NOT_LOGGED_IN
APP_BUSY
APPROVAL_REQUIRED
WRITE_NOT_READY
VERIFY_FAILED
```
@@ -283,7 +272,7 @@ args 示例:
runs/real-loggedin-lab/uia-dumps/
```
C# helper 默认不主动写文件,除非未来明确加入 `out_path` 参数。
C# helper 文件输出通过未来 `out_path` 参数控制
## 7. 后续 op 扩展顺序
@@ -296,67 +285,28 @@ search_contacts
open_conversation
read_latest_messages
write_draft
send_after_approval
send_file_after_approval
receive_file_after_approval
send_message
send_file
receive_file
```
其中:
- `search_contacts``open_conversation``read_latest_messages` 可先做只读或低风险动作
- `write_draft` 只能写入草稿,不点击发送
- `send_after_approval` 必须带 `approval_id`
- 文件发送、文件接收也必须带 `approval_id`
- `search_contacts``open_conversation``read_latest_messages` 是后续核心工具候选 op
- `write_draft` 用于构造待发送内容
- `send_message``send_file``receive_file` 归入核心 MCP 工具路线
## 8. 审批和审计边界
## 8. 写入与审计接口
审批主逻辑放在 Go
Go 负责把业务工具请求转换成 helper op并记录目标、内容摘要、文件摘要、时间、连接器和执行结果。C# helper 只执行 Go 发来的单次 op并返回可核验结果
Go 负责:
## 9. 部署形态
- 生成审批记录
- 校验 `approval_id`
- 记录操作者、目标联系人、消息摘要、文件路径摘要、时间、结果。
C# 负责二次保护:
- 对真实发送和文件类 op如果没有 `approval_id`,直接返回 `APPROVAL_REQUIRED`
- 执行前确认当前窗口和目标会话仍然匹配。
- 执行后返回可核验结果。
第一阶段没有真实发送类 op因此不实现审批逻辑只在协议里预留字段。
## 9. 安防低误报约束
helper 必须保持普通企业辅助工具形态:
- 普通命令行程序。
- 不需要管理员权限。
- 不注入目标进程。
- 不 hook 全局键盘鼠标。
- 不读目标进程内存。
- 不修改目标程序文件。
- 不自启动。
- 不隐藏进程。
- 不联网。
- 不加壳、不混淆。
- 不伪装系统进程名。
- 默认不写日志文件。
- 只在 Go 指定输出路径时保存证据文件。
正式部署时依靠:
- 明确程序名。
- 固定安装路径。
- 代码签名。
- 企业白名单。
- 可审计日志。
不依靠规避、隐藏或绕过安防。
helper 保持普通企业辅助工具形态:普通命令行程序、普通安装路径、固定名称、可构建、可签名、可替换。正式部署关注安装路径、版本、日志和运维可见性
## 10. 建议目录结构
当前只需要规划,不需要一次性全部创建。
当前以规划为主,目录按节点逐步创建。
Go 侧未来结构:
@@ -375,8 +325,8 @@ go/
contract.go
audit/
audit.go
approval/
approval.go
execution/
execution.go
```
C# 侧第一阶段结构:
@@ -390,7 +340,7 @@ native/
UiaDumper.cs
```
第一阶段不要再拆更多目录。
第一阶段目录保持最小
## 11. 验收标准
@@ -403,7 +353,7 @@ native/
5. 打开记事本后,`dump_uia` 能导出记事本控件树。
6. 用户手动登录 iSphere 后,`scan_windows` 能找到候选窗口。
7. 对 iSphere 候选窗口执行 `dump_uia` 能返回控件树。
8. 全流程不点击、不输入、不发送、不修改目标客户端
8. 第一阶段验收聚焦窗口扫描和 UIA dump 结果
## 12. 下一步
@@ -416,4 +366,4 @@ scan_windows
dump_uia
```
Go MCP 代码暂不写。等 C# helper 稳定拿到真实 iSphere 窗口结构后,再实现 Go 的 `helperclient` 和 MCP tools。
Go MCP 代码在后续节点实现;C# helper 稳定拿到真实 iSphere 窗口结构后,再实现 Go 的 `helperclient` 和 MCP tools。