云电脑克隆镜像操作手册

饭粒(一筑)夏夏(小星/零星) 现在这两台无影云电脑, 通过自定义镜像 + 镜像分享码各克隆一份,跨阿里云账号开成 2 台新云电脑, 环境原样搬过去、不用重新部署一遍。
版本 无影个人版 EDSP 场景 跨账号(靠镜像分享码) 操作入口 小程序 或 客户端(流程不同) 整理日期 2026-07-28
一句话流程:我方(饭粒号 + 夏夏号都在我们手上)各做一个自定义镜像 → 各生成一个镜像分享码把 2 个码点对点交给接收方 → 接收方通过分享码导入镜像并开出新云电脑 → 新机核对 .env 账号 ID 并验活 → 我方回去关掉分享开关让码失效 + 轮换 key → 旧机关机保留 7 天。
本次交付物 = 2 个镜像分享码(饭粒一个、夏夏一个)。两个号都是同一个人操作,走两遍即可。
具体点哪里取决于你用小程序还是客户端,见下面 ① 的对照表 —— 别把两套步骤混着照做。

1开工前必须知道的三件事

① 小程序和客户端都能做镜像,但流程不一样 —— 先定你用哪个

个人版(EDSP)的镜像管理,支付宝/微信小程序Windows/macOS/Web 客户端上都有, 但两边的界面路径、前置条件都不同,照错平台的步骤会找不到按钮。下表是官方两套流程的对照:

平台做镜像拿分享码用分享码导入删镜像
小程序
支付宝/微信
云资源 → 卡片「管理」→ 镜像页签 → 新建镜像
先手动关机,按钮是「确认关机并创建」
同一个镜像页签 → 打开分享开关 → 选生成方式 通过分享码导入」→ 输码 → 确定
没有「选择镜像」这一步
❌ 不支持
客户端
Windows/macOS/Web
云电脑列表界面左下角「镜像管理」→ 立即创建
官方步骤里没有「先关机」这一步
左侧「镜像管理」→「我的镜像」→「云电脑」页签 → 找到镜像 → 打开卡片左下角「镜像码」开关,码即刻显示 镜像管理页右上角「通过镜像码收藏」 → 输入镜像码 ✅ 支持
两个容易卡住的地方:每个账号最多只能有 5 个自定义镜像,反复做/覆盖镜像会撞上限; ② 删镜像只能在客户端做 —— 官方明确「暂不支持在支付宝与微信小程序中删除镜像」。 所以撞了上限又只用小程序的话,会卡在「建不了新的、也删不掉旧的」。建议直接用客户端操作全程。

② 一个镜像只能有一台在跑

绝对不要拿同一个镜像开出两台、然后同时开着跑。 2026-06-23 就是这么出事的:小文 / 文哥 / 小胡三台从同一个镜像克隆, 抖音客户端的设备指纹(%APPDATA%\douyin%LOCALAPPDATA%\douyin、 注册表 HKCU\Software\ByteDance)被一起复制过去 → 抖音判定「同一台设备挂 3 个号、从 3 个 IP 同时活动」→ 三台搜人集体软封 (搜索结果为空、但联想下拉有结果、浏览器能搜)。 更重的一层是:多个号「出现在同一台设备」会形成账号关联,某个号违规有连坐封号风险。
但我们这次是搬家,不是复制 —— 只要旧机停掉,这个坑就不存在。 风控看的是「同一个指纹的多台机器同时活跃」。 饭粒的镜像只开饭粒那一台、夏夏的只开夏夏那一台,旧机克隆完就关掉, 任何时刻同一份指纹都只有一台在线 —— 不构成设备聚集。 所以这次不需要清指纹、不需要重登抖音,登录态可以直接跟着镜像搬过去。
但上面这段只反驳了「设备聚集」这一种风险,不覆盖「IP/地域突变」。 这次是跨阿里云账号,新云电脑很可能落在另一个地域/出口 IP 段。 「设备指纹一模一样、但访问 IP 突然跳到不相关的网段」这个组合, 在风控眼里比"老实换一台新设备"更像盗号异地登录(新设备至少是个诚实的新指纹,有成熟的验证流程可走)。 06-23 那次事故里三台机全程在同一账号、同一网络出口下,从没验证过 IP 变了会怎样 —— 这块我们没有数据。
怎么办:新机第一批发送盯紧点。如果出现要求短信/滑块验证、会话被强制登出、 或日志显示 sent 但对方根本没收到别按「搜索软封」那套排查(方向完全不同), 优先怀疑异地登录风控,先停发观察。

③ 镜像分享码:跨账号就靠它

个人版支持把自定义镜像分享给别的阿里云账号,靠的就是镜像分享码。 两端具体点哪里按平台不同,见上面 ① 的对照表。分享码本身的规则:

⚠️ 分享码要当密码管,因为镜像里带着全套凭据。 这台机的 C:\akke-wuying\wuying-dm\.env 里有 Supabase 数据库 keyOpenRouter API keyC:\akke-edge-debug 里有抖音登录态。分享码流出去 = 别人导入镜像就拿到这些。 所以:①码只在私聊里点对点发给目标账号的操作人,别发群、别截图; ②对方导入成功后立刻回去把「分享镜像」开关关掉,让码失效; ③迁完必须找 Claude 轮换 .env 里的 Supabase key 和 OpenRouter key —— 这是收尾必做项,不是"怀疑泄露才做"。
⚠️ 关掉分享开关不等于收回镜像。对方账号已经导入落地的那份副本不会因此消失, 关开关只挡住"以后还有谁能再用这个码导入"。换句话说:码被用过一次, 对方账号就长期持有一份含你全部 key 和登录态的完整镜像,直到你把这些凭据轮换掉为止。 这就是 ③ 必做的原因。
注意:官方文档从头到尾没有定义「协助清理个人数据」到底清哪些范围 (只说"分享给他人时建议打开")。所以别把它当安全措施依赖 —— 不能假设它会清掉 C:\akke-wuying\ 这种自建目录里的 key,也不能假设它不会误删你要带走的东西。 要确保安全就自己手动确认目录内容,别赌这个开关的行为。
✅ 客户端路径已于 2026-07-28 实机走通(以此为准,官方文档措辞和真实按钮名对不上):
  • 做镜像:云电脑卡片「管理」→「镜像」页签 → 右下角「新建镜像」。 ⚠️ 这个页签上方显示的「当前镜像 / 分享码」是这台机当初是从哪个镜像开出来的不是你要的码 —— 拿那个码给别人,对方开出来的是台没装任何东西的空机器。
  • 拿码:左侧「镜像管理」→「我的镜像」→「云电脑」→ 找到刚建的镜像 → 打开卡片左下角「镜像码」开关 → 8 位数字码直接显示,旁边有复制按钮。
  • 接收方导入:镜像管理页右上角「通过镜像码收藏」 → 输入镜像码。 (不是官方文档写的「选择镜像 → 弹窗底部」。)

📦 当前进度(2026-07-28 22:37 更新)

我方 Step 1–3 已完成,两个镜像都做好、镜像码已生成。接下来是接收方的 Step 4。

镜像名对应账号创建时间镜像范围系统盘/数据盘镜像码
Yizhu0728饭粒(一筑·全屋定制)
c5d236e1-…69b
07-28 22:37系统盘 + 数据盘60GiB / 40GiB 见 Lark 私聊
xiaoxing0728夏夏(小星/零星)
8af08f10-…bda
07-28 22:35系统盘 + 数据盘60GiB / 40GiB 见 Lark 私聊
镜像码不写在这一页上。这个页面是公开 URL、没有登录验证,谁拿到链接都能看; 而镜像码等于钥匙 —— 任何人拿它导入,就得到了 .env 里的 Supabase key、OpenRouter key 和抖音登录态。 码走 Lark 私聊点对点给到接收方操作人。
做镜像时「协助清理个人数据」是关着的 → 抖音登录态、Cookie、坐标模板都跟着镜像走了, 新机开出来不用重新登抖音
接收方开新云电脑的规格下限:数据盘 ≥ 40GiB、系统盘 ≥ 60GiB(小于会创建失败); 规格建议对齐原机 8 核 16GiB,分辨率也尽量保持一致(不一致要重跑 measure_nav.py 量坐标)。

2操作步骤

📱 镜像端 = 小程序或客户端(按 ① 表选一套,别混) ·  🖥️ 云电脑 = 新云电脑里的 PowerShell  ·  🗄️ DB = 让 Claude 改数据库字段
饭粒号、夏夏号各走一遍 Step 1–8(都在我方手上,同一个人操作两遍),两台互不影响。
Step 1–3 我方做(产出镜像分享码) · Step 4 接收方做(拿码导入开机) · Step 5–7 在新云电脑里做 · Step 8 我方收尾(关分享开关 + 轮换 key + 恢复派单)。

1停供给:光设「暂停」是不够的🗄️ DB

找 Claude 做三件事,缺一件新机开机就可能自己发消息出去:

  1. 把这台号的 dispatch_paused_until 设成未来时刻(比如今晚 23:00)。
  2. 清空 dispatch_queue 里这个号 status='pending' 的残留行。
  3. 清空 dm_reply_drafts 里这个号 status='approved' 的待发回复。
⚠️ dispatch_paused_until 挡不住已经在队列里的单 —— 这点很容易误解。 查过 claim_dispatch 的实际定义(20260726203953_claim_dispatch_safe_comment_time_cast.sql): 它认领时只判 account_id + status='pending'压根没有读 dispatch_paused_until(它引用 accounts 只是为了盖心跳和读时窗)。 也就是说这个字段挡的是「以后还往队列里写不写新单」挡不住 agent 把队列里已经躺着的 pending 行领走发出去
更绕的是「已审批自动回复」那条路:poll agent 的 pending_approved_replies() 直接查 dm_reply_drafts?status=eq.approved,同样不看暂停字段, 而且它在主循环里是绝对优先、最先跑的一条。
所以只设暂停就去关机做镜像,新机一开机可能立刻把残留的单发出去 —— 而那时你还没核对账号 ID。
这个字段仍然要设,因为它同时静音心跳告警 —— 克隆期间机器关着, 不设的话群里会报「无影 agent 没在轮询」。 迁完一定要让 Claude 清空它,否则新机器起来了也不派新单 —— 之前栽过两次, 一次野荞被自己静音一整天,一次把人为静音误当成「风控自愈冷却」查了半天。

2做镜像📱 我方

下面按小程序流程写。用 Windows/macOS/Web 客户端的话,路径是 云电脑列表左下角「镜像管理」→ 立即创建(官方步骤没有「先关机」这一步),其余判断项相同。
  1. 支付宝或微信里搜「无影云电脑」小程序,打开。
  2. 云资源 页签,找到自己那台云电脑,先关机
  3. 点云电脑卡片上的 管理
  4. 切到 镜像 页签 → 新建镜像
  5. 镜像名称和描述。名字按下表起,别用「备份1」这种:
谁的机器镜像名称建议描述里写
饭粒(一筑)akke-yizhu-20260728饭粒 一筑全屋定制 DM+二触 环境克隆
夏夏(小星/零星)akke-xiaoxing-20260728夏夏 零星 DM+二触 环境克隆
  1. 磁盘范围系统盘必须选上(部署目录 C:\akke-wuying\wuying-dm 在 C 盘)。有数据盘就一起选。
  2. 「协助清理个人数据」开关 —— 这次保持关闭。
  3. 确认关机并创建,等镜像创建完成。
第 7 步为什么关掉:官方对这个开关的建议是「镜像要分享给他人时打开」。 但我们这次跨的是账号、不是用途 —— 新机上跑的还是饭粒 / 夏夏这两个抖音号的同一套自动化。 关掉才能把抖音登录态、Cookie、坐标模板一起带走,新机开出来基本能直接跑; 打开的话新机要重新登抖音、重新配一遍。
安全那一头不靠这个开关兜(它也兜不住,见上一节),靠把分享码当密码管 + 用完立刻关分享

3生成镜像分享码 —— 这就是要交出去的东西📱 我方

  1. 左侧「镜像管理」→「我的镜像」→「云电脑」页签,能看到刚建好的镜像卡片。
  2. 打开卡片左下角的「镜像码」开关(默认是灰色关闭)。
  3. 开关一打开,8 位数字码立刻显示在旁边,点复制按钮取走。
  4. 把码私聊点对点发给接收方的操作人。别发群、别截图丢来丢去(理由见上一节:镜像里有 key 和登录态)。
  5. 两个号各生成一个,别搞混 —— 建议交付时写清楚「这个码是饭粒(一筑)的 / 这个码是夏夏(小星)的」, 导错了会让新机顶着错的抖音号和错的 AKKE_ACCOUNT_ID 跑起来。
码是可重复使用的。将来这台机环境更新了想让对方也更新, 重新做镜像时选「绑定已有镜像码」绑到同一个码上,对方不用换码。

4接收方:用分享码导入镜像,开新云电脑📱 接收方

导入入口两个平台不一样,别照错:

导入成功后这个镜像就出现在可选列表里,选它开新云电脑,或给已有云电脑变更镜像。

给【已有】云电脑变更镜像时,那台接收方云电脑必须是开机(未停机)状态 —— 官方硬性要求,关着机做不了。这跟 Step 2「做镜像要先关机」正好相反,别记混: 做镜像的那台要关机,接收镜像的那台要开机。

开机配置两个硬约束:

分辨率变了,二次触达会全跑偏。二触脚本用的是归一化坐标(AKKE_C_*), 按旧机分辨率标定的。新机分辨率对不上又没重测 → 退回默认坐标 → 二触全部 wrong_user(点到别人主页去了)。 新机分辨率和旧机不一致时,必须在新机上跑一遍 measure_nav.py 重新量坐标。

5新机第一次开机:先掐掉自启,再核对账号 ID🖥️ 新云电脑

⚠️ 开机后 30 秒,自动化会自己跑起来 —— 抢在你核对之前。 这两台机都配了登录触发的计划任务(AkkeDomDmStart 延迟 30s 拉 akke-start.ps1AkkeRouteBStart 延迟 120s),镜像克隆会把它们一起带过来。 所以新机第一次进桌面什么都不做也会开始发消息,那时脚本可能还是旧版、账号 ID 还没人核过。 进桌面第一件事就是先掐掉,核完再放开:
Get-ScheduledTask *akke* | Disable-ScheduledTask
Get-Process python,py,msedge -ErrorAction SilentlyContinue | Stop-Process -Force
Step 5、6 都过了之后,再 Get-ScheduledTask *akke* | Enable-ScheduledTask 放开。

接着核对账号 ID。镜像是整机克隆,.env 会原样跟过来,理论上不用改, 但必须核一遍 —— 这是唯一能拦住「按 A 号领单、却在 B 号前台发」那类事故的地方:

cd C:\akke-wuying\wuying-dm
Select-String .\.env -Pattern AKKE_ACCOUNT_ID
这台机是谁的AKKE_ACCOUNT_ID 必须是
饭粒(一筑·全屋定制)c5d236e1-fd80-4cff-b349-506dfd09699b
夏夏(小星/零星)8af08f10-6db5-4d83-8942-b908349efbda
夏夏这条尤其要看清。数据库里叫「零星」的账号有两条, 云电脑这条永远是 8af08f10,另一条 d7ac1384 是早就停用的手发号。 对不上就是搬错了,别自己改,先找 Claude 确认。

6更新脚本(这一步最容易假装做完)🖥️ 新云电脑

cd C:\akke-wuying\wuying-dm

# ① 必须先单独拉一次 update.bat 本身,再跑它
curl.exe -fsSL -o update.bat "https://raw.githubusercontent.com/upioai/wiki/main/public/akke/wuying-dm/update.bat"
.\update.bat
验收看 OK 行数,不看它说没说「成功」。 update.bat 的下载列表里不包含它自己,所以机器上那份会永远停在被摆渡下来那天的版本, 之后仓库里新加的文件永远拉不到 —— 而它照样会打印「all downloaded」。
跑完 [2/3] 段应该打出 11 行 OK(=当前镜像里 $files 的长度, 这个数字会随仓库演进变化,对不上先去数一眼线上 update.bat 的列表再判断); 只打 1-2 行 = 机器上是远古版更新器,按上面第 ① 条重拉一次再跑。
07-19 饭粒机就栽在这:douyin_dm_grounded.py 是几个月前的截断版, 把整条捕获链炸掉了很久没人发现 —— 因为 DM 发送腿照常在发,看着一切正常。
好消息:update.bat 现在已经包含浏览器 DOM 通道的脚本了douyin_dm_web_send_dom.py / capture_dom / web_reply / web_capture / douyin_dm_autoreply.py 都在列表里), 不用再像以前那样单独补拉。(老资料里「update.bat 只下 PC 客户端脚本」的说法已过期。)
确认本机在跑哪个发送脚本:Select-String .\.env -Pattern AKKE_DM_SCRIPT
万一真要单拉某个文件:
curl.exe -fS "https://raw.githubusercontent.com/upioai/wiki/main/public/akke/wuying-dm/<文件名>.py" -o <文件名>.py
akke-start.ps1 不在 update.bat 的列表里,它是随镜像整体带过来的,更新不到 —— 要改得单独拉。

7起来 + 验活🖥️ 新云电脑

powershell -ExecutionPolicy Bypass -File C:\akke-wuying\wuying-dm\akke-start.ps1

然后逐项对:

#检查项合格标准
1调试版 Edge 通了浏览器开 http://127.0.0.1:9222/json/version 返回版本 JSON
2agent banner 绑对号account= 与 Step 5 表格一致,second_touch / rc 开关和旧机一样
3抖音登的是本人号Edge 里抖音登录的账号,和 banner 里的 account 是同一个人
4回复捕获腿活着py douyin_dm_web_capture_dom.pyweb capture[DOM]conversation-item N>0COMMIT 写回
5开机自启真的跑成功过
两个任务都要查
Get-ScheduledTaskInfo AkkeDomDmStart | Select LastRunTime,LastTaskResult
Get-ScheduledTaskInfo AkkeRouteBStart | Select LastRunTime,LastTaskResult
两个都要 LastTaskResult=0只看 Ready 是假验证 —— Ready 只说明任务还在、处于两次运行之间,上一次跑崩了它照样显示 Ready。 漏查 AkkeRouteBStart 的话,二触/RC 会静默死掉而 DM 一切正常,很久都发现不了
6DB 侧心跳让 Claude 查 last_poll_at,5 分钟内有刷新
7肉眼核私信气泡发出第一批后人工翻抖音私信,对方会话里真有气泡
第 7 项不能用日志代替。日志里的 sent 只代表「点了发送」。 抖音对陌生人私信有静默限流(约 24 小时冷却),命中时日志一片绿、消息根本没送到。 新机第一批必须人工核气泡。
第 4 项报 conversation-item=0 时先别慌:如果 by_name 有数字、只有 conversation-item 是 0, 那是私信面板还没加载完的时序问题,不是登录过期(真过期连 by_name 都读不到),下一轮会自愈。

8收尾🗄️ DB📱 小程序

3旧机怎么处理 · 推荐做法和理由

推荐:新机验活通过后,旧机立刻关机,但保留 7 天不释放,7 天后再退

三条理由,按重要性排:

  1. 新旧同时开着跑,就把「搬家」变成了「克隆多开」。 同一个抖音号、同一份克隆出来的设备指纹,两台机器同时在线活动 —— 这正是 06-23 那次三台集体搜索软封的触发条件。旧机一关,同一时刻只有一台在线,这个风险直接归零。
  2. 两台机器会抢同一批派单。新旧两台的 .env 里是同一个 AKKE_ACCOUNT_ID, 两个 poll agent 会同时去领同一个号的派单队列,结果是抢单、重复发给同一个客户、 本地发送记录互相打架。这不是风控问题,是当场就会出的数据问题。
  3. 关机但不释放 = 留一个能立刻回滚的兵。新机万一有问题(脚本没拉全、坐标不对、登录态没带过来), 把旧机开回来 + 清掉暂停字段就恢复原状了。多留几天的机器钱,比出问题时无处可退便宜得多。
验活没全绿之前,两台都别跑。正确的顺序是:旧机关机 → 做镜像 → 开新机 → 新机验活 → 确认没问题后才清 dispatch_paused_until 让新机开始接单。 全程不存在两台同时在跑的时刻。

4出问题时先看这几条

症状八成是什么怎么办
新机一条都不发 dispatch_paused_until 忘了清 找 Claude 清空这个字段。这是最高频原因,先查它再查别的
脚本报「不认这个参数」
或者行为像旧版
本地脚本是旧的,不是代码有 bug 按 Step 5 单文件 curl.exe 重拉,别去调试逻辑
某时刻起连续 dm_panel_failed,之前一直正常 Edge 窗口卡死,不是号出问题
判据:账号仍 active、失败计数没涨
重跑 akke-start.ps1别在卡死的 Edge 里手动点私信或导航走(是常见诱因)
搜人返回空,但浏览器能搜到 搜索软封(搜人量过线) 立刻停掉所有搜人动作养 24-48 小时。06-28 夏夏那次纯停发 ~2 天自愈了。换机器对这个没用,别重装
突然要短信/滑块验证、会话被登出
或日志 sent 但对方没收到
异地登录风控(新机 IP 段和旧机差太多)
不是搜索软封,别套那套排查
先停发观察,别反复重试撞验证。日志 sent 不代表送达这件事本身是已知的(陌生人私信会静默限流),必须人工核气泡确认
二次触达大量 wrong_user 新机分辨率和旧机不一致,坐标没重测 measure_nav.py 重新标定