feat: add secure remote channel media

This commit is contained in:
lofyer
2026-08-09 20:33:35 +08:00
parent 6c891f3522
commit 66b098ae36
46 changed files with 4403 additions and 1594 deletions
@@ -5,10 +5,10 @@
| 项目 | 内容 |
| --- | --- |
| 状态 | 已实施,待真实微信账号联调 |
| 版本 | 1.0 |
| 版本 | 1.3 |
| 日期 | 2026-08-09 |
| 适用产品 | GoodBuddy 桌面端 |
| 首期范围 | 微信 ClawBot、企业微信、钉钉的通道项目;微信文字 Ask 与 Execute |
| 首期范围 | 微信 ClawBot、企业微信、钉钉的通道项目;微信文字、图片和文件 Ask 与 Execute |
## 1. 背景
@@ -17,16 +17,16 @@ GoodBuddy 已支持企业微信和钉钉远程消息通道,但目前通道仅
1. 消息来自哪个平台。
2. 当前正在与哪个发送者或群聊对话。
3. 远程执行任务使用哪个工作目录。
4. 执行请求、审批、工具调用和结果归属于哪个范围。
4. 执行请求、处理后端、工具调用和结果归属于哪个范围。
GoodBuddy 同时计划接入腾讯官方微信 ClawBot。微信 ClawBot 使用扫码授权,不使用 App ID 或 Secret,并需要在本机持续运行通信服务。微信消息既要支持只读对话,也要支持受控执行。
为避免把通道来源、发送者身份和执行范围混在一起,本功能使用“通道项目 + 远程会话”的两级结构:
- 通道项目标识平台并确定默认工作目录和默认模式。
- 通道项目标识平台并确定默认工作目录、处理后端和默认模式。
- 远程会话标识具体发送者或群聊。
- 消息记录具体发送者和本次实际使用的模式。
- 任务与活动记录执行、审批、工具调用和结果。
- 任务与活动记录执行、工具调用和结果。
## 2. 已确认的产品决策
@@ -35,13 +35,14 @@ GoodBuddy 同时计划接入腾讯官方微信 ClawBot。微信 ClawBot 使用
3. Renderer 不直接创建通道项目。Main 进程保证项目存在,设置卡片首次展示时即可引用对应项目。
4. 通道项目默认根目录为当前操作系统用户目录。
5. 同一通道中的不同私聊用户或群聊分别建立独立远程会话。
6. 微信 ClawBot 首期支持个人微信私聊和文字消息
6. 微信 ClawBot 首期支持个人微信私聊中的文字、图片和文件;语音和视频后续支持
7. 微信卡片可以配置默认“对话”或“执行”模式。
8. “对话”映射为 GoodBuddy `Ask`;“执行”映射为 `Execute`
9. 微信 Execute 请求必须先在本机进行请求级确认,不能通过同一个微信通道批准自身
10. 请求级确认通过后,任务仍受现有 Runtime、沙箱、能力开关、工具审批和活动审计约束
11. 停用或断开通道不得删除通道项目、远程会话、任务、活动或成果历史
12. 通道项目由系统管理,用户不能永久删除;用户可以修改其工作目录和默认模式
9. 每个通道项目默认使用“模型连接”中的默认直连文本模型,也可以显式选择其他直连文本模型、OpenCode 或 Continue
10. 远程 Execute 不显示通道专属请求级或逐工具确认;收到合法消息后立即按所选后端运行
11. 任务仍受工作目录、Runtime 能力、沙箱、能力开关、直连模型工具安全策略和活动审计约束
12. 停用或断开通道不得删除通道项目、远程会话、任务、活动或成果历史
13. 通道项目由系统管理,用户不能永久删除;用户可以修改其工作目录、处理后端和默认模式。
## 3. 目标
@@ -49,9 +50,9 @@ GoodBuddy 同时计划接入腾讯官方微信 ClawBot。微信 ClawBot 使用
- 在项目切换器中一眼识别微信、企业微信和钉钉来源。
- 在通道项目中区分不同发送者和群聊。
- 在设置卡片中完成连接、启停、模式和工作目录配置。
- 在设置卡片中完成连接、启停、处理后端、模式和工作目录配置。
- 通过微信进行只读问答或发起受控执行任务。
- 在本机明确确认远程 Execute 请求,并查看完整执行记录。
- 选择可信的执行后端,并查看完整执行记录。
- 保留通道关闭前后的历史上下文和审计记录。
### 3.2 产品目标
@@ -59,17 +60,16 @@ GoodBuddy 同时计划接入腾讯官方微信 ClawBot。微信 ClawBot 使用
- 将远程通道纳入 GoodBuddy 现有 Project、Conversation、Task、Activity 和 Artifact 信息架构。
- 复用现有 ChannelService 的白名单、去重、并发、取消、输出限制和错误脱敏能力。
- 保持 Electron Main、Preload、Renderer 和不可信子进程之间的安全边界。
- 为后续图片、语音、文件、多账号和更多通道提供稳定扩展点。
- 为后续语音、视频、多账号和更多通道提供稳定扩展点。
## 4. 非目标
首期不包含:
- 微信群聊。
- 微信图片、语音视频和文件收发。
- 微信语音视频收发。
- 多个个人微信账号同时绑定。
- 通过微信批准 Execute 请求或工具调用
- 无需本机确认的远程自主执行。
- 通过微信临时扩大工具权限或安全策略
- 主动群发、营销消息或任意联系人发现。
- 将微信会话自动合并进普通本地会话。
- 删除或迁移现有企业微信、钉钉历史数据。
@@ -116,10 +116,10 @@ GoodBuddy 同时计划接入腾讯官方微信 ClawBot。微信 ClawBot 使用
| 层级 | 负责内容 |
| --- | --- |
| 通道项目 | 平台、连接状态、默认根目录、默认模式 |
| 通道项目 | 平台、连接状态、默认根目录、处理后端、默认模式 |
| 远程会话 | 平台账号、私聊用户或群聊、连续上下文 |
| 消息 | 具体发送者、本次实际模式、正文、时间和处理状态 |
| 任务与活动 | 请求级确认、Runtime、工具审批、执行结果和错误 |
| 任务与活动 | Runtime、工具调用、执行结果和错误 |
### 5.3 会话命名
@@ -143,11 +143,11 @@ GoodBuddy 同时计划接入腾讯官方微信 ClawBot。微信 ClawBot 使用
默认值:
| 通道 | 项目名称 | 根目录 | 默认模式 |
| --- | --- | --- | --- |
| `weixin` | 微信 ClawBot | 用户目录 | Ask |
| `wecom` | 企业微信 | 用户目录 | Ask |
| `dingtalk` | 钉钉 | 用户目录 | Ask |
| 通道 | 项目名称 | 根目录 | 处理后端 | 默认模式 |
| --- | --- | --- | --- | --- |
| `weixin` | 微信 ClawBot | 用户目录 | 默认直连文本模型 | Ask |
| `wecom` | 企业微信 | 用户目录 | 默认直连文本模型 | Ask |
| `dingtalk` | 钉钉 | 用户目录 | 默认直连文本模型 | Ask |
### 6.2 系统管理约束
@@ -155,7 +155,7 @@ GoodBuddy 同时计划接入腾讯官方微信 ClawBot。微信 ClawBot 使用
- 停用通道不归档项目。
- 断开微信不删除项目和历史。
- 数据迁移或异常导致项目缺失时,下次初始化自动修复。
- 用户可以修改项目根目录、描述和默认模式。
- 用户可以修改项目根目录、描述、处理后端和默认模式。
- 项目名称首期由系统管理,避免来源名称被改到不可识别;后续如允许自定义,必须持续显示通道徽标。
### 6.3 默认用户目录
@@ -179,15 +179,20 @@ GoodBuddy 同时计划接入腾讯官方微信 ClawBot。微信 ClawBot 使用
### 7.2 卡片通用结构
个通道卡片包含:
个通道使用与模型设置一致的分段外观页签,并保留
`tablist``tab``tabpanel`、游标焦点和方向键语义。每次只显示一个
通道面板,窄窗口下页签单行横向滚动。
每个通道面板包含:
1. 通道名称和连接状态。
2. 启用开关。
3. 默认处理模式
4. 默认工作目录
5. 对应通道项目及“打开”操作
6. 平台特有的连接配置
7. 最近错误或最近连接时间
3. 默认工作目录
4. 消息处理后端
5. 默认处理模式
6. 对应通道项目
7. 平台特有的连接配置
8. 最近错误或连接状态。
示意:
@@ -205,8 +210,11 @@ GoodBuddy 同时计划接入腾讯官方微信 ClawBot。微信 ClawBot 使用
默认工作目录
C:\Users\用户名 [选择目录]
消息处理后端
[默认模型 · sonnet-5 v]
通道项目
微信 ClawBot [打开]
微信 ClawBot
[断开连接]
```
@@ -216,23 +224,45 @@ C:\Users\用户名 [选择目录]
### 7.3 模式说明
- 对话:只读回答,不调用工具或修改内容。
- 执行:允许发起工具任务,但需要本机请求级确认,并继续遵守现有审批规则
- 执行:收到合法消息后立即交给所选后端,可在工作目录内调用已启用工具
默认模式从 Ask 切换到 Execute 时显示风险确认:
每个通道面板持续显示风险说明,不弹出一次性确认。默认 Ask 时也要说明白名单
发送者仍可通过 `/execute` 临时执行:
```text
允许此通道默认发起执行任务?
远程消息可能要求 GoodBuddy 读取或修改默认工作目录中的内容。
每个执行请求仍需要在这台电脑上确认。
执行消息会立即交给所选后端,不再逐次弹窗确认。
请只连接可信账号,并将工作目录限制在必要范围。
默认工作目录:
C:\Users\用户名
[取消] [确认启用]
```
### 7.4 微信扫码绑定
### 7.4 消息处理后端
每个通道项目提供相同的后端选择,不提供含义不明确的“自动”选项:
- 直连模型:默认选择“模型连接”中的默认文本连接;列出已配置的文本模型连接,不列出仅支持图像生成的连接。
- OpenCode:使用当前 OpenCode Runtime 及其模型来源。
- Continue:使用当前 Continue Runtime 及其模型来源。
选择持久化在通道项目上。旧版本保存的 `auto` 选择在启动时迁移为当前默认
直连文本模型。模型连接删除、改为图片模型或凭据失效后,优先修复为默认或
首个可用文本模型;没有可用文本模型时,UI 明确提示用户完成模型配置或改选
Agent Runtime。远程会话每次收到新消息时记录本次项目选择。Execute 启动前
检查所选后端是否支持工具执行,并返回可处理的配置错误。
### 7.5 通道项目会话界面
通道项目是系统管理的远程消息范围,不允许创建普通本地会话:
- 切换到通道项目时,只显示由对应客户端消息创建的远程会话。
- 隐藏“新建对话”和 `Ctrl+N` 提示;收到全局新建会话命令时不创建记录。
- 尚无远程会话时显示等待首条客户端消息的空状态和设置入口。
- 旧版本误建在通道项目中的普通本地会话不参与通道会话列表,但保留其数据。
- 远程会话底部说明客户端联动方式,只显示历史、任务和执行结果,不再提及已移除的审批流程。
### 7.6 微信扫码绑定
未绑定时显示“绑定个人微信”。扫码对话框包含:
@@ -246,11 +276,12 @@ C:\Users\用户名
需要配对数字时,在同一对话框中显示验证码输入。验证码不得写入日志或持久化。
### 7.5 企业微信和钉钉
### 7.7 企业微信和钉钉
企业微信和钉钉继续使用现有凭据表单、环境变量只读覆盖和连接测试,但增加:
- 通道项目显示。
- 消息处理后端。
- 默认处理模式。
- 默认工作目录。
- 打开通道项目。
@@ -296,14 +327,11 @@ channel + accountId + externalConversationId
- Ask
- Execute
- 等待本机确认
- 已拒绝
- 执行中
- 等待工具审批
- 已完成
- 失败
收到普通远程消息时不得强制切换当前页面。应增加未读标记和全局通知。Execute 请求等待确认时显示高优先级全局入口。
收到普通远程消息时不得强制切换当前页面。应增加未读标记和全局通知。
## 9. Ask 与 Execute
@@ -324,53 +352,53 @@ channel + accountId + externalConversationId
- 不修改文件、数据库、系统状态或远程状态。
- 结果以有界文字返回原通道并写入远程会话。
### 9.3 Execute 请求级确认
### 9.3 Execute
Execute 消息通过身份、长度、去重和并发检查后:
1. 创建状态为“等待远程执行确认”的任务。
2. 向微信回复“执行请求已发送到电脑,等待确认”
3. 显示桌面通知和 GoodBuddy 全局确认对话框
4. 用户在 120 秒内选择“拒绝”或“仅允许此任务”
5. 超时、应用退出、通道停用或会话失效均自动拒绝。
6. 确认通过后才调用 Execute Runtime。
1. 创建并立即启动远程执行任务。
2. 使用通道项目当前保存的消息处理后端
3. 将项目根目录作为本次 Runtime 工作目录
4. 所选后端不支持工具执行时,不启动任务,并返回设置修复说明
请求级确认不得提供:
- 此会话永久允许
- 此发送者永久允许。
- 微信内确认
- 自动确认。
确认内容必须显示:
- 通道。
- 发送者。
- 完整有界任务正文。
- 通道项目。
- 默认工作目录。
- 超时时间。
- “具体工具仍受现有控制”的说明。
远程 Execute 不创建 GoodBuddy 通道专属请求确认或逐工具确认。安全边界由
发送者白名单、私聊限制、项目根目录、所选 Runtime、沙箱、能力开关和工具
安全策略共同提供。UI 必须持续说明该行为,不能让用户误以为仍会弹窗确认
通道只回传最终结果或可操作的失败信息,不发送“执行已开始”等无操作价值的
中间状态消息
### 9.4 工具控制
请求级确认不是工具授权替代品
不同后端按现有行为运行
- OpenCodeContinue 和直连模型仍执行各自现有能力检查
- OpenCodeContinue 使用各自的工具系统、能力检查和沙箱配置
- 直连模型只可调用已启用的内置工作区工具及已分配 MCP 工具。
- “Execute 自动授权已启用的工具”策略无需逐次确认;“禁止所有工具执行”策略拒绝所有直连模型工具调用。
- Runtime 沙箱模式继续有效。
- 禁止策略继续拒绝工具。
- 需要逐工具审批的 Runtime 继续发送本机审批事件。
- 远程来源不得扩大 `session``permanent` 授权范围。
- 任何工具结果都进入现有任务和活动审计。
### 9.5 结果回传
- 成功:回传有界文字结果。
- 当前任务生成的图片可以随最终结果回传;用户明确要求文件时,将当前任务的
有界文本结果生成为 Markdown 附件。
- 失败:回传经过脱敏、长度受限的用户可处理错误。
- 取消:回传“任务已取消”。
- 拒绝或超时:回传“电脑端未允许此次执行”。
- 结果投递失败时保留发件箱记录并显示通道错误,不重复执行任务。
### 9.6 媒体与文件
- 单条微信消息最多接收或发送 4 个附件,解密后合计不超过 12MB。
- 入站仅处理官方图片和文件消息项。Sidecar 下载腾讯 CDN 内容并完成
AES-128-ECB 解密,Main 只接收有界字节、文件名、MIME 和大小。
- 图片进入现有视觉上下文;文本、代码、PDF 和 Office 文件进入现有不可信
文档上下文。不支持的类型显示可处理提示,不把原始 CDN 地址或密钥传给 Runtime。
- 入站附件元数据和有界预览写入远程会话,原始字节作为任务处理期间的临时上下文。
- 出站生成图片必须来自当前任务的 `generated-image` 事件。
- 出站文件只能由 Main 根据当前任务的最终文本结果生成,不接受 Runtime 路径,
不读取或发送任意现有工作区文件。
- 媒体发件箱在成功投递或达到重试上限后清除二进制负载。
## 10. 微信 ClawBot 通信架构
### 10.1 进程边界
@@ -386,7 +414,7 @@ Main ChannelDriver
ChannelService
GoodBuddy Runtime 与审批
GoodBuddy Runtime 与工具安全策略
```
禁止:
@@ -397,14 +425,15 @@ GoodBuddy Runtime 与审批
- 运行 `openclaw-weixin-cli` 安装器。
- 仅为微信通道打包完整 OpenClaw。
### 10.2 首期 Sidecar 能力
### 10.2 Sidecar 能力
- 获取和刷新二维码。
- 轮询扫码状态。
- 提交一次性验证码。
- 加载内存中的加密解封凭据。
- 长轮询文字消息。
- 发送文字回复
- 长轮询文字、图片和文件消息。
- 从腾讯 CDN 有界下载并解密图片和文件
- 调用 `getuploadurl`,加密上传当前任务图片和文件,并发送媒体回复。
- 保持会话 `context_token` 和同步游标。
- 有界重试、退避、停止和异常退出。
@@ -418,7 +447,7 @@ Sidecar 到 Main
- `qr`
- `verification_required`
- `connected`
- `inbound_text`
- `inbound_message`,可包含有界图片或文件
- `reply_result`
- `fatal_error`
@@ -427,7 +456,8 @@ Main 到 Sidecar
- `start_login`
- `submit_verification`
- `start_account`
- `send_reply`
- `reply`,可包含有界图片或文件
- `cancel_reply`
- `disconnect`
- `shutdown`
@@ -449,7 +479,12 @@ Main 到 Sidecar
- 服务端返回的 API 主机和重定向主机必须通过腾讯主机允许列表验证后才能携带 Token 请求。
- 不允许明文 HTTP 发送微信凭据。
- 全局“内网兼容模式”不得放宽微信凭据端点的 HTTPS 和主机验证。
- Sidecar 使用独立环境允许列表并显式启用证书验证,不继承
`NODE_TLS_REJECT_UNAUTHORIZED=0`、代理变量、Node 加载钩子或提供商凭据。
- 日志中的 URL 移除查询字符串,响应体对 Token 和上下文令牌脱敏。
- 媒体下载和上传只允许腾讯微信 HTTPS 主机,所有重定向逐跳重新校验。
- CDN 响应按流读取并在解密前后分别执行硬字节限制,不信任 `Content-Length`
文件名、MIME、扩展名或服务端声明的原始大小。
### 11.3 断开与解绑
@@ -476,6 +511,7 @@ type ProjectChannel = 'weixin' | 'wecom' | 'dingtalk'
- `kind: 'channel'`
- `channel`
- `runtimeSelection`
- 稳定且唯一的通道绑定
现有项目迁移为 `kind: 'user'`。不得通过项目名称推断通道。
@@ -505,6 +541,7 @@ channel + accountId + externalConversationId
- `projectId`
- `defaultWorkMode`
- `runtimeSelection`
- `rootPath`
- `status`
@@ -526,9 +563,10 @@ Renderer 快照只返回是否已配置和脱敏标识。
- 通道。
- 脱敏发送者。
- 实际工作模式。
- 请求级确认结果
- 实际消息处理后端
不得把 Execute 任务伪装成普通本地任务或只读 delegation。
任务队列可以复用 delegation 调度分类,但 UI 和活动审计必须依据通道项目与
远程会话持续显示真实通道来源,不得呈现为普通本地任务。
## 13. IPC 与 Preload
@@ -541,7 +579,6 @@ Renderer 快照只返回是否已配置和脱敏标识。
- 提交微信验证码。
- 断开微信本地连接。
- 订阅微信连接状态。
- 响应远程 Execute 请求级确认。
- 打开对应通道项目。
所有 IPC
@@ -568,24 +605,25 @@ Renderer 快照只返回是否已配置和脱敏标识。
- 停止 Sidecar。
- 不保存未确认凭据。
### 14.4 执行确认期间断线
### 14.4 执行期间断线
本机确认仍可拒绝,但不得在通道断开后启动新的 Execute。已开始的任务按用户明确选择和现有取消策略处理,结果进入本地审计;恢复连接后不得自动重复执行。
通道断开后不得启动新的 Execute。已开始的任务按现有取消策略处理,结果进入本地审计;恢复连接后不得自动重复执行。
### 14.5 重复消息
使用稳定平台消息 ID 去重。平台消息 ID 缺失时,使用账号、会话、发送者、时间和内容摘要构造有界稳定键。确认、任务创建和回复必须共用同一个去重声明。
使用稳定平台消息 ID 去重。平台消息 ID 缺失时,使用账号、会话、发送者、时间和内容摘要构造有界稳定键。任务创建和回复必须共用同一个去重声明。
## 15. 可访问性与响应式
- 通道状态同时使用文字和图标。
- 三个通道使用共享 `PageTabs``segmented` 外观,保留页签语义和方向键切换。
- 模式选择使用语义化单选/分段控件和方向键。
- 消息处理后端使用持久标签和分组选项,并说明当前选择的实际行为。
- 二维码提供状态文字和备用刷新操作,但不把敏感二维码链接作为可复制文本。
- 验证码错误与输入框建立 `aria-describedby` 关联。
- Execute 风险确认初始焦点位于“取消”。
- 关闭对话框后焦点返回触发按钮。
- 窄窗口下卡片单列,二维码对话框保留 16px 外边距。
- 浅色、深色和 200% 文字缩放下可完成绑定和确认
- 浅色、深色和 200% 文字缩放下可完成绑定、后端选择和保存
## 16. 验收标准
@@ -602,9 +640,12 @@ Renderer 快照只返回是否已配置和脱敏标识。
### 16.2 设置卡片
- [ ] 设置标签显示为“消息通道”。
- [ ]张卡片均显示项目、根目录、默认模式和连接状态
- [ ]个通道使用与模型设置一致的分段外观页签,并保留完整页签键盘语义
- [ ] 三个面板均显示项目、根目录、消息处理后端、默认模式和连接状态。
- [ ] 微信卡片可以完成扫码、过期刷新、验证码和连接状态展示。
- [ ] 切换默认 Execute 前显示目录范围和风险确认
- [ ] 不显示“自动”后端;首次创建和旧版 `auto` 配置均落到默认直连文本模型
- [ ] 直连模型只列出文本连接,OpenCode 与 Continue 可直接选择。
- [ ] 默认 Execute 时持续显示目录范围和无逐次确认的风险说明。
- [ ] Renderer 无法读取任何微信 Token 或上下文令牌。
### 16.3 会话
@@ -614,6 +655,11 @@ Renderer 快照只返回是否已配置和脱敏标识。
- [ ] 重复平台事件不会创建重复会话、消息或任务。
- [ ] 最近对话、聊天标题和消息均能识别通道与发送者。
- [ ] 收到普通消息不会强制切换当前页面。
- [ ] 切换到通道项目不会创建普通本地会话。
- [ ] 通道项目隐藏“新建对话”和 `Ctrl+N`,全局快捷命令也不创建会话。
- [ ] 没有远程会话时显示等待客户端首条消息的空状态。
- [ ] 微信图片和文件显示在对应远程消息中,附件消息无需附带文字。
- [ ] 支持的附件进入所选后端现有图片或文档上下文;不支持和超限附件返回明确提示。
### 16.4 Ask
@@ -623,11 +669,12 @@ Renderer 快照只返回是否已配置和脱敏标识。
### 16.5 Execute
- [ ] 默认 Execute 或显式执行前缀会创建本机请求级确认
- [ ] 未确认、拒绝、超时、退出和停用均不会执行
- [ ] 微信消息不能批准自身的 Execute 请求
- [ ] 确认后任务使用对应通道项目根目录
- [ ] Runtime、沙箱、能力和工具审批规则继续生效
- [ ] 默认 Execute 或显式执行前缀会立即使用通道项目所选后端
- [ ] 不显示通道专属请求级或逐工具确认
- [ ] 直连模型、OpenCode 和 Continue 均按各自能力正确路由
- [ ] 通道不发送“执行已开始”等中间占位消息,只发送最终结果或可操作失败
- [ ] 任务使用对应通道项目根目录
- [ ] Runtime、沙箱、能力和直连模型工具安全策略继续生效。
- [ ] 任务、活动、工具、成果和最终结果关联到通道项目与远程会话。
### 16.6 生命周期与安全
@@ -637,6 +684,9 @@ Renderer 快照只返回是否已配置和脱敏标识。
- [ ] 微信凭据使用系统安全存储加密。
- [ ] 任何普通日志、IPC、错误和通知中不存在凭据。
- [ ] Token 只发送到已审核的腾讯 HTTPS 主机。
- [ ] CDN 下载、上传和每次重定向只访问腾讯微信 HTTPS 主机。
- [ ] 入站和出站媒体最多 4 个、合计不超过 12MB,AES 密钥和 CDN URL 不跨越 Sidecar 边界。
- [ ] 只有当前任务生成图片或 Main 从本次最终文本生成的文件可以作为出站附件。
## 17. 实施阶段
@@ -658,14 +708,20 @@ Renderer 快照只返回是否已配置和脱敏标识。
### 阶段三:受控 Execute
- 本机请求级确认
- 通道项目处理后端选择与失效修复
- Execute Runtime 接入。
- 工具审批和活动关联。
- 直连模型工具安全策略和活动关联。
- 结果回传、取消、超时和失败恢复。
### 阶段四:后续扩展
### 阶段四:微信媒体
- 有界图片、语音、文件和视频
- 图片和文件 CDN 下载、AES 解密与有界上下文
- 生成图片和 Main 生成的任务结果文件加密上传与回复。
- 远程会话附件展示和媒体发件箱清理。
### 阶段五:后续扩展
- 有界语音和视频。
- 多微信账号。
- 更细的项目路由。
- 已验证的微信端解除绑定。
@@ -680,12 +736,15 @@ Renderer 快照只返回是否已配置和脱敏标识。
- QR 状态机、过期、验证码和非法转换。
- Sidecar 双向协议未知字段、超长字段和凭据泄漏拒绝。
- 腾讯主机允许列表和重定向校验。
- CDN 媒体 AES 加解密、流式大小限制、声明大小校验和恶意重定向拒绝。
- 附件持久化展示、现有上下文接入、生成图片回传和任务成果目录隔离。
- 消息去重、会话映射、并发和取消。
- Ask 工具拒绝。
- Execute 请求级确认通过、拒绝、超时、退出和断线
- 工具审批不被远程来源绕过
- Execute 使用直连模型、OpenCode 和 Continue 的路由
- Execute 不创建通道专属审批,直连模型禁止工具策略仍然生效
- 模型连接删除后的通道后端选择修复。
- 发件箱投递失败不重复执行。
- 项目选择器、设置卡片、扫码对话框和确认对话框的键盘与无障碍行为。
- 项目选择器、分段页签、后端选择、设置面板和扫码对话框的键盘与无障碍行为。
- Windows、macOS、Linux 的默认用户目录和 Sidecar 关闭行为。
实现完成后运行:
@@ -702,10 +761,10 @@ npm run build
满足以下条件后才可默认向用户提供微信 Execute:
1. 微信文字 Ask 全流程稳定。
2. 请求级确认不能从远程通道绕过
2. UI 明确说明远程 Execute 会立即运行,且默认工作目录和处理后端始终可见
3. 凭据不会进入 Renderer、日志或普通子进程参数。
4. Sidecar 网络目标和重定向已实施严格允许列表。
5. 通道项目和远程会话的来源标识在所有入口持续可见。
6. 任务重复投递不会导致重复执行。
7. 应用退出、断线和更新过程中不会留下失控执行。
7. 应用退出、断线和更新过程中不会留下失控执行,直连模型禁止工具策略不能被远程来源绕过
8. 腾讯 iLink 独立宿主使用范围和本地断开语义已完成发布前确认。