docs: trim safety constraints from mcp roadmap
This commit is contained in:
@@ -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。
|
||||
|
||||
Reference in New Issue
Block a user