跳转至

Android 接入

本文记录 AgentMeshOS Android 客户端接入自托管 Headscale/Tailnet 的已验证最小路径,以及当前仍需继续验收的边界。它只覆盖“先把手机作为 Android 网络成员接入”的正式步骤,不把 Android 直接写成 Linux Worker 或 Nomad Worker。

📌 结论摘要

S20 已从单纯 Android 网络成员扩展为受控移动管理客户端:主职责仍为 client,ssh-management 服务职责同时覆盖出站管理和 Tailnet-only 入站管理。Termux、Termius 和 TermRover 均能连接九个在线节点;RR、101、Home 也能通过 100.64.0.8:8022 反向登录 S20。Magic2 已用同一套模式完成纳管,Termux、Termius 和 TermRover 均已保存九个在线目标,其中 TermRover 已拿到 RR 与 101 的真实登录截图;RR、101、Home 可通过 100.64.0.13:8022 反向登录。Magic2 的 Exit Node 已由用户手动设置并完成真机验证,Gemini 已收到真实回复 Hello! How can I help you today?。Android 探针已统一到 v0.4.0:S20 由 101 的 systemd timer 通过 ADB bridge 恢复实时上下行,Magic2 由 Home 的 Windows 原生 PowerShell bridge 恢复同一能力。2026-10-06 公网 Status 对 little-s20 和 honor-magic2 均回读为 status=online、resource_status=available,两台手机都有真实的接收、发送速率和物理接口清单。依据是设备身份回读、出站目标、入站来源、管理公钥、TermRover 截图、Gemini 对话结果和 2026-10-06 现场 API 回读。

S20 的重启自启验收已经通过。设备在 2026-10-04 17:41:52 CST 执行第二次受控重启,17:42:49 进入离线;用户只解锁屏幕,没有手动打开 Tailscale。Tailscale 在 18:17:50 自动恢复在线并返回 100.64.0.8,18:18:17 资源遥测恢复为 available。系统级 always_on_vpn_app=com.tailscale.ipn、Doze 白名单和后台运行许可均保持有效,Termux:Boot 与探针 push-loop 也已自动恢复。2026-10-04 19:14 CST 的再次受控重启又验证了入站 sshd:用户只解锁屏幕,100.64.0.8:8022 在约 204 秒后自动恢复,RR、101、Home 随后均重新登录成功。

边界仍按 Android 系统事实保留:设备重启后必须由用户解锁,Termux 才能访问加密存储;无线调试不是常驻服务,只在需要 ADB 运维时由用户临时开启。P17 仍未完成的部分是 Android Clash Meta 切换/回切和 iOS 真机验收,不能由本次自启通过替代。

📚 目录

📊 当前页面状态

  • 页面状态:已纳入正式导航
  • 内容状态:最小接入已验证,边缘能力与后台行为仍在继续验收
  • 适用对象:Android 手机或平板终端

🧭 节点角色定位

Android 后续定位为按需移动边缘能力节点,可在用户授权和受控任务协议下提供相机、传感器、位置、网络探测或设备端推理等能力;保留 Android 系统的设备不作为稳定通用 CPU Worker。用户已明确把 S20 定义为安卓移动管理节点,因此它在保持主职责 client 的同时增加 ssh-management 服务职责,可从手机主动管理九个在线节点。跨平台角色与资源池边界见 节点角色与能力矩阵。

若一台手机硬件经逐机评估后运行完整 Linux ARM64 系统,并通过运行时、供电、散热、恢复与连续稳定性验收,可申请成为低优先级 Linux Worker 候选;这不是 Android Worker。每台设备的事实记录和试点门槛统一写入 Android 节点评估与试点台账。

🧩 当前统一边界

  • 控制面入口:https://mesh.yohan.fun
  • 当前 Tailnet 关键节点:
  • 主节点:agentmeshos-main / 100.64.0.1
  • 中继 / 公网出口候选:agentmeshos-worker-mm / 100.64.0.6
  • 公网 Nomad 入口:https://nomad.yohan.fun/ui/
  • 正式采集方向:Android 手机在 Termux 中自行采集网络与资源指标,并直接上报主节点 API Gateway。Windows 主机上的 ADB 只作为受控 bridge,读取 Android 普通应用无权访问的接口计数器;它不接管遥测上报权,也不成为第二个数据源。
  • 入站管理方向:S20 与 Magic2 分别只在 Tailnet 地址 100.64.0.8:8022、100.64.0.13:8022 接受 RR、101、Home 三把已登记管理公钥;不开放公网、局域网或密码登录,不允许代理、端口转发、X11 和隧道。

🔧 已验证的最小接入路径

以下路径已在 2026-07-16 用 Redmi 3S(land,LineageOS 23.2 / Android 16)完成真实验证,适合作为后续 Android 手机接入的默认起点:

  1. 安装官方 Tailscale Android 客户端。
  2. 优先使用官方安装源;无 Google Play 服务的设备可使用官方 APK 本地安装或 ADB 安装。
  3. 打开 Tailscale App,进入 Settings -> Accounts。
  4. 进入右上角菜单,选择 Use an alternate server。
  5. 输入自托管控制面地址 https://mesh.yohan.fun。
  6. 在手机浏览器跳出的注册页获取 hskey-authreq-... 注册请求。
  7. 在主节点执行 headscale auth register --auth-id hskey-authreq-... --user agentmeshos 完成登记。
  8. 回到手机侧确认 Tailscale VPN 建立,并在控制面或状态页确认节点已上线。

本路径完成后,手机获得的是 Tailnet 网络成员身份,不是 Linux Worker、Nomad Worker 或长期后台算力授权。

🧪 当前已验证结果

  • Redmi 3S 已以节点名 redmi-3s 成功加入自托管 Headscale/Tailnet。
  • 已分配 Tailnet IPv4:100.64.0.8。
  • 已确认 Android 侧 tun0 VPN 建立,Tailnet DNS 为 100.100.100.100 / fd7a:115c:a1e0::53。
  • 已将 com.tailscale.ipn 加入设备省电白名单,减少 Doze 导致的断连概率。
  • 已验证过一版 ADB -> Office Windows -> 主节点只读导入 实验链路,可用于临时排障和字段对照;但它不是后续正式形态。
  • 已完成正式方向的第一版直推验收:手机本机通过 scripts/clients/agentmeshos-android-self-network-probe.sh 生成网络摘要,并直接推送到主节点 100.64.0.1:39120/api/android/probes/ingest;主节点接收后落盘到 /run/agentmeshos/android-network-probes/<node>.json,并可通过 /api/android/probes/redmi-3s 查询。
  • 当前验证只覆盖网络接入、基础在线和可恢复安装路径;未把该设备提升为 Worker。

📈 Android 资源遥测

Android 不使用 Linux node_exporter:9100。正式链路由 agentmeshos-android-self-network-probe.sh v0.4.0 在 Termux 中采集 /proc/meminfo、top、ifconfig、df 及可用的 Android 系统摘要,然后继续走现有 Bearer 上报口。Android 10/13 对普通应用限制读取 /proc/stat、/proc/uptime 和 /proc/net/dev,因此 CPU 使用率与接口清单使用手机自带的受限回退命令;无法合法读取的字段保持为空,不用静态值伪造。v0.4.0 使用 Termux 的 sh 绝对路径作为 shebang,并允许 Android 10 下不可读的 /proc/net/dev 安全返回空接口集合,避免探针被单个受限文件打断;它继续把 Tailnet 可达性作为在线判定的关键证据,元数据不可读只会降级为 degraded。运行时状态和日志默认保存在 Termux 私有目录 ~/.local/state/agentmeshos/android-network-probe/,不依赖普通应用无权写入的 /data/local/tmp。重复执行安装会按进程和 PID 文件去重,旧循环退出时不会误删新循环的 PID 文件。API Gateway 只把最新且未过期的清洗快照投影为节点资源状态;快照缺失、字段不可读或超过 ANDROID_PROBE_MAX_AGE_SECONDS 时分别报告不可达、字段缺失或过期。

🔄 Android 网络速率的 ADB bridge

结论:S20 和 Magic2 的网络遥测都不是“未安装”,而是 Termux 进程被 Android 权限边界挡住了接口计数器读取;两台设备已通过接入主机上的 ADB bridge 恢复真实上传、下载速率和物理接口清单。

依据:S20 上 cat /proc/net/dev 返回 Permission denied,/sys/class/net/wlan0/statistics/* 同样不可读;ADB Shell 可读到 wlan0 的累计 RX/TX。scripts/clients/agentmeshos-android-adb-network-bridge.sh 在 101 上通过 ADB 连续采样,把 JSON 写到 /sdcard/Android/data/com.termux/files/agentmeshos/network-counters.json,v0.4.0 只在文件不超过 300 秒时读取,过期后拒绝继续使用旧速率;2026-10-06 13:11 CST 的真实回读为 receive_bytes_per_second=922.0、transmit_bytes_per_second=5742.0、interfaces=["wlan0"]。Magic2 使用 scripts/clients/agentmeshos-windows-android-adb-network-bridge.ps1,由 Home 上 AgentMeshOS-Android-ADB-Network-Bridge 计划任务每 60 秒刷新同一路径的设备文件。该任务使用 S4U 非交互会话和 Highest 运行级别,动作是 powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File ...,不再启动交互式 wsl.exe。2026-10-06 现场回读为 LastTaskResult=0,Magic2 最新快照包含 receive_bytes_per_second=2041.1、transmit_bytes_per_second=3290.24、interfaces=["wlan0","rmnet0","rmnet_ims00"];公网 Status 同轮返回 status=online、resource_status=available。

影响:两台 Android 的 CPU、内存、Swap、磁盘和 Tailnet 延迟继续保持真实上报;Wi-Fi 的 SSID、BSSID、网关、DNS 和信号强度受 Android 10/13 权限边界限制,不把 network_metadata_unavailable 当作网络速率故障。bridge 文件过期时,探针会回到自身采集回退路径;如果 Termux 仍无权读取计数器,就明确显示速率缺失,不用零值或旧值伪造实时数据。

Magic2 的恢复链路已闭环:Home 的 adb devices -l 回读设备 6LR0219322000259 为 device product:TNY-AL10 model:TNY_AL00 device:HWTNY,100.64.0.13:8022 可登录,Termux 中的 sshd、supervisor 和 push-loop 已恢复,探针升级为 v0.4.0。设备文件位于 /sdcard/Android/data/com.termux/files/agentmeshos/network-counters.json;旧 WSL 计划的原始 XML 备份位于 C:\ProgramData\AgentMeshOS\backups\AgentMeshOS-Android-ADB-Network-Bridge.20261006T134713.xml,SHA-256 为 C8C65F0280A449C0EA3E338E1670412D1DED0864D3DAD121F0538D9092C0D2B5。

🌐 IPv4、IPv6 与 UDP

结论:当前 Android 上报目标 100.64.0.1:39120 本身就是 IPv4,S20 的 Tailnet 连接也是 IPv4 直连;Magic2 的探针上报同样走该 IPv4 目标。不需要为了本次故障全局关闭或强制 IPv6;Tailscale 会在可用路径之间自行选择,当前口径是 IPv4 主用、IPv6 无可用路径时不影响管理链路。

依据:tailscale ping 100.64.0.8 返回 direct 192.168.50.195:53709,S20 的 WorkingIPv6 在 Android 客户端状态中为未知或不可用;Magic2 的 CurAddr 为空,tailscale ping 返回 via DERP(agentmeshos-mm)。因此不能通过关闭系统 IPv6 或修改 Headscale 全局 accept-dns/accept-routes 来“修复”网络速率,这会扩大控制面变更范围。

Tailscale Android 没有面向用户的“打开 UDP”开关。WorkingUDP=false 表示端到端 UDP/STUN 探测未建立成功,不是 App 内少点了一个按钮。可执行的安全操作顺序是:在手机 Tailscale 中关闭再开启连接;切换 Wi-Fi 与手机热点做对照;关闭 Clash 或其他 VPN 叠加层;确认 Termux 和 Tailscale 未被省电策略冻结;检查路由器 NAT/运营商网络。只有在 Tailscale 自己完成 UDP 探测后,Magic2 才可能从 DERP 切换到直连或 Peer Relay;DERP 当前仍是正常兜底,不是错误。

手机侧安装入口如下。<TOKEN> 只允许通过受控方式临时注入,不写入仓库、截图或公开文档:

NODE_NAME=little-s20 \
INGEST_TOKEN='<TOKEN>' \
INTERVAL_SEC=60 \
sh agentmeshos-android-self-network-probe.sh install

安装动作会:

  1. 把脚本复制到 Termux 私有目录 ~/.local/bin/。
  2. 把租户配置写到 ~/.config/agentmeshos/android-probe.env,权限为 0600。
  3. 安装 Termux Boot 启动项 ~/.termux/boot/agentmeshos-android-probe.sh。
  4. 立即启动 push-loop,优先申请 Termux wake lock,并在失败后继续重试。

手机端还需在系统设置中关闭 Termux 的电池优化,并安装 Termux:Boot;这些系统开关不能由脚本绕过。控制台中的节点资源详情以 little-s20 的实时投影为准,不再显示错误的 9100 采集端口。

📱 S20 移动管理节点

S20 为 SM-G986U1,现场名 Little 的 S20+,Tailnet 地址 100.64.0.8。设备同时保留官方 F-Droid Termux 0.118.3 与 Termux:Boot 0.8.1:Termux 提供 Shell、OpenSSH 和探针,Termux:Boot 只负责开机启动,二者用途不同且必须同时保留。Google Play 版 Termux 已卸载,避免重复包和错误升级来源。

管理面已完成以下真实验证:

客户端 已验证结果 边界
Termux 九个在线节点均可 SSH 登录并回读身份;管理公钥 SHA256:WIokvREOfeTluvNUrhXItIK4d73xs0uskzdnYvUB+38 使用 ~/.ssh/config 固定显式地址、端口、用户和密钥
Termius 九个主机已创建并逐项回读,实际登录 RR 返回 S20_TERMIUS_OK、rr、root、100.64.0.1;密钥 SHA256:1BOo4SRE9qnitM5V3NQmJKO2ZpiSkJVg6qg0R8Yk/R4 不得执行 pm clear,否则会删除 Keychain 与主机配置
TermRover 保存九个主机,实际登录 101 返回 pcdell-101、root;密钥 SHA256:yBpFXxVEEH5y67GrCrzrT6BwD2kGVxoxmw55pbfrbik 1.2.2 的高级设置存在 Tailnet 字段,但现场帮助文本和校验表明它用于官方 Tailscale API Key 所属组织,不是自托管 Headscale 控制面 URL;不得把该字段误写成 Headscale 入口
RR、101、Home → S20 三台均在 100.64.0.8:8022 以 u0_a355 登录成功;RR 使用 /root/.ssh/id_ed25519,101 使用 /root/.ssh/agentmeshos-101-to-rr,Home 使用 C:\Users\Administrator\.ssh\id_ed25519 只接受这三把公钥;错误钥匙和密码登录均返回 Permission denied (publickey);局域网 192.168.50.195:8022 返回连接拒绝

手机可主动连接 rr、101、home、102、d02、mm、dd、dog-public 和 nas-sz;RR -> 101、RR -> Home、101 -> RR、101 -> Home、Home -> RR、Home -> 101 六个方向也已逐项回读主机名、用户与 Tailnet IP。反向方向新增 RR/101/Home -> little-s20,但 S20 仍不是新的控制面,也不接受 DD、MM、d02、dog-public、nas-sz 或密码认证。

入站服务由正式脚本 scripts/clients/agentmeshos-android-inbound-sshd.sh 管理。S20 最初实装并完成重启验收的是 v0.2.0;当前仓库版本为 v0.3.0,安装时把节点名、Tailnet 地址和端口写入设备私有的 ~/.config/agentmeshos/android-inbound-sshd.env,Magic2 已按该版本部署,因此两台设备共用脚本不会继承彼此地址。~/.ssh/authorized_keys 每次安装都会收敛为 RR、101、Home 三把固定公钥;发现额外钥匙时先备份到 ~/.ssh/authorized_keys.pre-agentmeshos,再从最终授权文件移除。sshd 只监听设备自己的 Tailnet 地址和 8022,关闭密码、键盘交互、空密码、Root 登录、代理转发、端口转发、X11 和隧道。开机入口为 ~/.termux/boot/agentmeshos-android-sshd.sh,等待 Tailnet 地址可用后再启动服务。

现场曾出现过一次“进程仍存在,但 8022 拒绝连接”:Tailscale 临时关闭并重建 VPN 接口后,旧 sshd 进程仍存活,但其监听套接字已经失效,日志记录为 accept: Invalid argument。脚本因此增加 supervisor 守护:持续检查 sshd PID、日志错误计数和 socket 文件描述符;发现旧 socket、进程退出或 accept: Invalid argument 后自动停止并重建 sshd。受控回归中注入同一日志错误后,旧 PID 26483 在 8 秒内重启为新 PID 26881;真实重启后的三来源复核,101、RR、Home 均再次以 u0_a355 登录成功。Clash 真机测试若临时关闭 Tailscale,只会让该测试窗口内的控制通道不可用;测试完成后由 supervisor 或重启恢复重新建立监听,不把这个现象登记为常驻服务故障。

脚本支持 install、start、stop、restart、status 和 uninstall。修改脚本后必须通过 SSH 或受控小文件通道下发到 Termux,重新执行 install,并从三个管理来源回读;不能只改 101 工作区文件而假定手机已经更新。

S20 已在第二次受控重启后完成自动恢复验证:

检查项 现场结果
重启与离线 2026-10-04 17:41:52 CST 重启;17:42:49 Tailscale 进入离线
用户操作 只解锁屏幕,没有手动打开 Tailscale
Tailscale 自动恢复 18:17:50 自动上线,地址 100.64.0.8,从 101 ping 成功
系统级自启配置 always_on_vpn_app=com.tailscale.ipn、always_on_vpn_lockdown=0、Doze 白名单和 RUN_IN_BACKGROUND allow 均保持
探针自动恢复 18:18:17 RR 资源遥测恢复为 available,CPU 核数为 8
拓扑回读 RR 新快照在 18:18:33 生成,little-s20 保持在线
入站 SSH 恢复 2026-10-04 19:14 CST 再次受控重启后,用户只解锁屏幕;sshd 由 Termux:Boot 启动,端口约 204 秒后恢复。新 boot_id=5ff21b38-a32f-4a0a-b45d-9d96b8f32e10,101、RR、Home 均重新登录为 u0_a355

这套配置不依赖用户每次手动启动 Tailscale,也不依赖 ADB 常驻。Android 重启后仍需要一次屏幕解锁,这是加密存储的正常边界;无线调试只在需要执行 ADB 操作时临时开启。本次结果证明 Tailscale、Termux:Boot 和探针循环可以自动恢复,但不能替代 Android Clash Meta 真机切换验收。

📱 Magic2 移动管理节点

Honor Magic2 的现场型号为 TNY-AL00(product TNY-AL10),Android 10 / API 29,Headscale 节点 ID 23、Tailnet 地址 100.64.0.13,Termux 用户为 u0_a199。它由 Home 的 USB ADB 完成安装和初始配置;Android Shell 的 hostname 返回 localhost,因此节点身份以 Headscale/Tailscale 名称和 Tailnet IP 为准,不把该 Shell 值当成主机名。Headscale 里这台设备有三个需要区分的字段:name=TNY-AL00 是官方 Android 客户端注册时上报的设备码,given_name=andriod-magic2 是当前 Headplane 机器列表和订阅里使用的 Tailnet 节点名,Registry 稳定别名仍是 honor-magic2。网络态势、节点管理和本页登记表统一取实时 given_name;Headscale 改名后,下一次拓扑快照和节点清单会自动跟随。

已完成清单:

检查项 现场结果
客户端软件 Termux 0.118.3、Termux:Boot 0.8.1、官方 Tailscale、Termius 7.11.1 已安装;Google Play 版 Termux 不存在
Tailnet 100.64.0.13 在线,Headscale given_name=andriod-magic2,Tailscale DNS 名为 andriod-magic2.agentmeshos.internal.
入站 SSH 100.64.0.13:8022,用户 u0_a199;authorized_keys 仅含 RR、101、Home 三把公钥,密码和 Root 登录关闭
开机恢复 整机重启并解锁后,Tailscale、Termux、sshd、supervisor 和探针 push-loop 均自动恢复;101、RR、Home 三来源重新登录成功
资源遥测 探针 v0.3.8 每 60 秒向 RR 上报,push-loop、sshd 和 supervisor 三个进程在 2026-10-05 11:37 现场仍在运行;公开 Status 回读 resource_status=available、status=online,CPU(8 核)、内存、Swap、/data 磁盘和 Tailnet 延迟均可用。Android 10 不向第三方应用提供 SSID、BSSID、网关、DNS 和信号强度,探针里这些字段为 null,属于系统限制,不代表遥测未安装
身份一致性 Registry 稳定 ID 为 honor-magic2,display_alias=M2,OS 主机名 TNY-AL00,Tailnet 节点名(Headscale given_name)andriod-magic2;公开 Status、节点管理和网络态势快照都不再使用 node-15、设备码 TNY-AL00 或 Headscale 数字 ID 23 作为 Tailnet 节点名
移动管理 Termux、Termius 与 TermRover 均已配置 rr、101、home、102、d02、mm、dd、dog-public、nas-sz 九个目标;TermRover 显示 9 saved,实际登录 101 返回 root@pcdell-101:~#,登录 rr 返回 root@rr:~#
Exit Node 与 Gemini 用户在 Magic2 上手动设置 Exit Node;Android 连接状态显示 VPN 网络为默认网络,www.google.com 从真机 ping 3/3、约 173–179 ms,Gemini 已发送真实消息并收到 Hello! How can I help you today?
管理进程恢复 2026-10-05 晚现场发现 Termux 进程曾停止,100.64.0.13:8022 一度拒绝连接;通过 USB ADB 重新启动 Termux,并分别执行 ~/.termux/boot/agentmeshos-android-sshd.sh 与 ~/.termux/boot/agentmeshos-android-probe.sh 后,sshd supervisor 和探针 push-loop 恢复。该现象证明恢复脚本有效,但后台驻留稳定性仍需继续观察
临时配置恢复 ADB 操作使用的输入法已从 com.huawei.inputmethod.intelligent/.LatinIME 恢复为 com.tencent.wetype/.plugin.hld.WxHldService;Termux 与 Termux:Boot 已加入 Doze 白名单

尚存边界:TermRover 包 sh.termrover.app 不是 debuggable 应用,run-as 被系统拒绝,因此九个主机只能在该应用界面里配置或恢复,不能由 ADB 直接改写配置。1.2.2 的连接高级设置虽然有 Tailnet 字段,但现场帮助文本明确写明留空时使用 API Key 自己的 tailnet,仅在一把 Key 可列多个网络时才填写组织名;保存时仍要求官方 API Key,因此它不是自托管 Headscale 控制面地址输入框。Google 环境已完成 GMS 26.34.65、Play 53.3.21-24、Chrome 154.0.8037.126、ChatGPT 1.2026.265 和 Gemini 1.0.971139365 安装或更新;从手机 Termux 实测 Google 端点全部可达,Gemini 真机对话已经成功。Magic2 也不作为新的控制面,不接受 DD、MM、d02、dog-public、nas-sz 或密码认证。

⚠️ 当前待补项 / 需要决策

  • 待验证标准 Android、LineageOS 与厂商定制系统的差异
  • 待验证锁屏、重启、Wi-Fi 切换、蜂窝切换和长时间待机后的在线表现
  • 持续观察 S20 在长期锁屏、Wi-Fi/蜂窝切换、网络抖动和长时间待机后的在线表现
  • 持续观察 S20 入站 sshd 在长期待机、网络切换和 Termux 升级后的恢复;当前已通过整机重启、VPN 接口重建和 supervisor 自动重建三类现场恢复
  • 继续观察 Magic2 在长时间锁屏和系统清理压力下 Termux、sshd、supervisor 与探针进程的驻留;本次已证明 USB ADB 重启 Termux 后可恢复,但还不能把一次恢复写成长期稳定
  • TermRover 的官方 API Key 自动发现能力仍未与自托管 Headscale 控制面对齐;当前可用的结论是九主机手动配置和真实 SSH 登录已通过,不继续把 Tailnet 组织字段解释成 Headscale 地址
  • 无线调试仍按需开启,不属于重启后自动恢复的常驻服务
  • 待补相机、定位、传感器、BLE 等 A1 级移动边缘能力的逐项授权与回收说明
  • 待补 Exit Node、DNS、局域网访问和故障排查的正式操作步骤
  • 待决定是否将 Android 网络探针运行时快照进一步汇总进 Status 首页;当前接收口和单节点查询入口先独立提供,不冒充“已并入总览卡片”。

📌 写入原则

  • 未经真实验收的路径和设置不先写成正式步骤
  • 后续补充时继续沿用本页,不另起平行文档