
Qwen Code WebShell Live Voice 的 Codex 对等重构Realtime 对话与后端执行的全双工架构契约【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code导读本文基于 docs/design/web-shell-live-voice-codex-parity-refactor.md 展开系统讲解 Qwen Code 项目中 WebShell Live Voice实验性 macOS 语音能力的架构重构契约以「Realtime 模型拥有对话、Qwen Code 模型负责执行」的双模型全双工架构精确复刻 Codex Desktop Live 的会话归属、选择性 handoff、增量静默上下文回流、显式语音输出与任务/权限分层。读者将掌握该功能的非协商架构、Qwen 目标映射、Provider 协议限定实验结论、八阶段重构序列与完整验收契约并能在仓库源码中逐一对齐每一项实现证据。一、契约地位与权威来源该文档是 2026-07-30 被接受的架构方向契约记录了 WebShell Live Voice 重构的完整架构决策。其核心要求是精确对等exact parity参照实现是 Codexorigin/main锚点c126f206dafb9b7fe8e1d6b990e67f0535de79f42026-08-01 刷新至f0c30e528a54bdf0fa9a4d52ff74b34383434811并经真实 Codex Desktop Live 会话佐证Qwen 实现必须复刻该架构与行为一旦出现 Qwen 或 WebShell 不兼容即为停止条件stop condition——必须先记录精确的不兼容点并取得显式批准才能实施任何替代、近似、回退或优化2026-08-04 契约更新了经验证的 Codexspeak_to_user生命周期与获准的 Qwen 传输映射并明确Qwen 映射只能替换公开 DashScope 协议未暴露的 Provider 原语且仅限文中记录的已批准行为。契约在以下领域取代此前设计会话归属与响应权威、Realtime 到后端的手交接管与后端到 Realtime 的结果流式回传、Live 任务发现/读取/创建/等待/追问、后端会话的常规与 Live 专属工具面、任务与工具权限处理、后端工作期间的打断与转向。二、非协商架构对话前端 执行后端WebShell Live 是一个普通的无项目projectlessQwen Code 会话其上附着一条由 Realtime 模型驱动的全双工语音对话。Realtime 模型是对话前端Qwen Code 模型是执行后端。关键区分在于Realtime 模型不是文本模型的 ASR/TTS 包装后端不是受限的独立 Coordinator 人设。契约规定以下10 条强制性规则Realtime 模型直接回答普通的、自包含的对话此类轮次不得启动 Qwen Code 后端轮次仅在执行、工具、任务管理或更深层后端推理有用时Realtime 模型才请求 handoffhandoff 成为同一个持久 Live Qwen Code 会话中的普通轮次不得创建或经由受限 Coordinator 会话路由后端 Live 会话保留常规 Qwen Code 工具面并叠加 Live 专属与任务管理工具Live 来源不得隐藏、抑制或替换常规工具及已配置的 MCP 工具后端 Agent 输出增量流式回灌仍在活动的 Realtime 对话等待完整后端答案再转文本转语音TTS不合规handoff 期间 Realtime 对话保持活动新语音转向/打断同一个后端轮次不得产生重叠响应、重复 handoff 或重复任务后端工具走常规 Qwen Code 权限与审批管线权限 UI 是异步的不得终止或死锁语音对话原始审批、工具与 MCP 协议事件不得被朗读或注入 Realtime 对话转写Appshot 不是 Realtime Provider 工具屏幕请求先触发 handoff由同一后端 Live 会话调用其 Live 专属capture_screen_context工具再经常规后端→Realtime 路径返回结果后端进度与普通最终文本静默更新 Realtime 上下文可听到的后端输出只能由后端专属speak_to_user(message)工具显式请求后端完成本身绝不授权 Realtime 响应响应串行化是技术重叠防护不是用户消息优先级策略Qwen 不得发明 Codex 未暴露的普通/紧急/打断消息类别。三、已确认的 Codex 参照行为3.1 对话与 handoffCodex 将 Realtime 对话附着在一条普通持久 Codex 任务上。GPT-Live 拥有轮次检测、直接对话回答、输出音频、以及是否请求后端执行的决策。后端提示词明确指示 GPT-Live请求自包含时直接回答、后端有用时请求 handoff。Provider 发出专门的 handoff 请求Codex 将其文本转为同一任务上的普通用户轮次handoff不会关闭 Realtime 对话也不把永久归属转移给其他会话。3.2 增量结果回传Codex 观察后端 Agent 消息生命周期事件按 item 缓冲 Agent 消息 delta并在当前专用 V3 协议上以约200 ms节奏由handoff_append刷新到 GPT-Live完成信号单独发送。可朗读内容与进度/评论是两个独立通道。Codex 还保留独立的 RealtimeV2 兼容路径V2 保持原 handoff 函数调用打开把已完成后端 Agent 消息作为user对话 item 发送然后关闭原函数调用仅在后端轮次完成时请求 Realtime 响应。V2 对话 item 是消息级更新不是 V3 的 200 ms delta 流。该双向流是本质行为它让 GPT-Live 保留实时对话、对进度作出反应、接受转向并无需等待完整后端轮次即可开始自然响应。3.3 显式后端语音当前 Codex 后端收到一个动态speak_to_user工具仅有一个必填message参数。普通后端文本作为静默上下文镜像到 GPT-Live不被自动朗读包括轮次完成时。当后端决定用户应听到进度更新、提问或最终结果时speak_to_user经thread/realtime/appendSpeech路由以StandaloneSpeech追加到同一 Realtime 会话的speakable通道GPT-Live 在现有对话与音色中产出音频。该工具没有priority、urgent或interrupt参数——Codex 没有实现应用层普通/紧急队列Provider 协议排序与用户 barge-in 是独立于后端朗读决策的机制。另外委派确认delegation acknowledgement与后端语音也是两个概念Codex 暴露可选的delegationAckFillerProvider 设置但已验证安装的客户端没有硬编码必须说一句确认语的提示词规则。Qwen 现有的 handoff 前确认语必须作为孤立的兼容项保留直到其 Provider 事件时序被测得不得借静默上下文实现来增删或合理化它。3.4 Appshot 归属GPT-Live不接收 Appshot 作为 Provider 工具。指示词deictic或屏幕感知请求触发后端 handoff同一条普通 Codex Live 任务在其常规工具之外调用 Voice/App 专属的capture_screen_context工具捕获的上下文在该后端轮次内消费其 Agent 输出再经活动 handoff 回到 GPT-Live。3.5 任务读取与追问Codex 同时提供被动上下文与主动任务操作启动上下文包含当前任务、近期工作、工作区/项目映射与相关笔记任务工具列出与读取既有任务而不打开或重建它们wait观察既有任务直到完成或需要关注send/follow-up向既有任务追加工作create仅在用户明确要求时新建项目或无项目任务本实现所需的 Live 任务面恰好是list/read/wait/send/createGit/worktree 任务迁移handoff_thread、fork、标题、归档与导航不在本特性范围内。读取或追问既有任务绝不能实现为创建替代任务。3.6 工具与权限分层一个用户可见的 Live 会话背后有两层内部结构Realtime Provider 只接收窄化的对话/handoff 协议同一个底层 Codex 任务被委派工作时接收常规 Codex 工具 Voice/App/任务工具。后端任务与普通任务遵循相同的沙箱、审批模式与权限处理。审批请求携带任务、轮次、item 与请求身份到达应用 UI并异步解决。Realtime 桥只镜像 Agent 消息不镜像原始审批或工具协议事件。四、Qwen 目标映射目标是用既有 Qwen Code 基础设施复刻同样的归属边界映射关系如下Codex 职责必需的 Qwen 映射持久普通任务一个普通无项目 Qwen Code 会话呈现在专用 Live 分组中GPT-Live 对话前端qwen3.5-omni-plus-realtime拥有普通对话、VAD、barge-in 与语音输出选择性后端 handoff一个窄化 Realtime handoff 操作路由进同一 Live 会话的普通轮次常规后端工具面既有 Qwen Code 工具、已配置 MCP 工具、沙箱与审批模式全部保留Voice/App 工具内置 Appshot 与通话控制能力挂到后端 Live 会话永不作为 Realtime Provider 工具暴露任务操作由既有 WebShell 会话与桥接服务支撑的 list/read/wait/send/create增量后端回传Agent 消息 delta 以约 200 ms 聚合作为静默有序对话上下文追加显式后端语音后端专属speak_to_user(message)工具刷新静默上下文并请求一次 Realtime 语音响应转向steering后端工作期间的新语音走既有同会话 mid-turn/转向路径权限既有会话权限事件与 WebShell 审批 UI无子会话逃逸通道两个关键约束Live 浮层不重复审批控件——其协调器存在未决工具权限时只显示一个打开该精确无项目 Live 会话的快捷方式审批/拒绝仍由既有 WebShell 权限 UI 拥有WebSocket 传输保留WebRTC 对于该对话/会话架构并非必需也不得用作缺失 handoff、任务、工具、权限或打断行为的借口。五、保留与废弃组件保留已安装的 Qwen Live Host 及其全局快捷键/后台归属蓝牙与其他选定输入设备的捕获与音频输出内部固定 Appshot 实现及其既有原生权限归属可配置快捷键、紧凑浮层、静音、停止与新通话 UIWebShell 中的无项目 Live 分组既有~/Documents/Qwen Code/Conversations/存储根每个无项目 Live 或无项目创建任务一个直接子目录认证的 daemon/Host 传输既有 WebShell 会话、事件、转写、mid-turn 与权限基础设施Qwen Realtime WebSocket 音频传输。废弃并从活动架构中移除强制每个有意义话语都调用delegate_to_coordinator的提示词仅把 Qwen Realtime 当转写与语音合成独立的受限 Coordinator 人设或会话对 Live 来源会话隐藏常规工具Live 中仅允许 Appshot 与create_sub_session对 shell、文件、MCP、网络、编辑或带审批工作强制创建子会话收集后端文本直到turn_complete再作为一次最终函数结果做语音合成以创建另一会话实现任务读取/追问另建无项目运行时、存储根或任务台账而非使用既有 Conversations 运行时与会话目录把 Git/worktree 迁移handoff_thread当作 Realtime 语音 handoff把审批处理变成把工作移出 Live 会话以accepted立即关闭 handoff、稍后仅以独立最终结果播报冒充同一 handoff重复响应创建、逐句 TTS、本地 TTS 或其他未批准的增量 handoff 近似。Qwen 不暴露 Codex V3 的handoff_append也没有公开的speakable通道。经真实 Provider 排序探测后用户显式批准的有界映射为以约 200 ms 聚合后端 delta作为静默conversation.item.create文本 item 追加不带response.create且仅为speak_to_user请求一次文本音频响应。显式模态是必需的——因为对注入文本的后端语音做响应可能无音频地完成。这是同一可观察生命周期的 Qwen Provider 传输适配不是逐句语音、本地 TTS、立即完成 handoff 或多重叠响应的授权。六、可用性与上线契约Live Voice 是macOS WebShell 的实验性能力。CLI/TUI、仅 SDK 的 daemon、非 macOS daemon 或未集成原生 Host 的 WebShell 都不得宣传它。平台支持由 daemon 依据process.platform决定绝不依据浏览器 user-agent 数据。完整首次使用路径在 macOS WebShell 中打开Settings Experimental Live Voice输入qwen3.5-omni-plus-realtime的专用 DashScope API Key可选修改全局快捷键开启 Live Voice 并确认安装签名的原生 Hostdaemon 从 Aliyun OSS 镜像下载架构匹配的发布物固定 Qwen Code GitHub 发布源作为回退校验 manifest 校验和、bundle 身份、签名与 Gatekeeper 接受在/Applications原子安装并启动Host 引导用户完成麦克风、辅助功能与屏幕录制授权——macOS 是唯一授权机构应用不能预授权或绕过 TCC 权限仅当配置、Host 协议、原生音频、全局快捷键、全部权限与内置 Appshot 都就绪时Live 才可用。特性默认关闭开启可恢复关闭 UI 或重启 daemon 可保留已完成步骤但绝不暴露半就绪路径关闭会停止活动通话、撤回原生发现并移除 Live 能力但不卸载 Host、不删除会话。专用 Realtime API Key 是用户级的WebShell 只接收是否已配置 key永不接收持久化值API 响应、日志、遥测、错误、渲染器状态与 Host 消息都不得包含 key替换或清除需显式操作。Provider 校验可为用户启用动作建立一次有界 Realtime 连接但状态轮询与 Host 就绪检查永不打开 Provider 连接或重试计费流量。设置 UI 复用 WebShell 原语在 Experimental 设置中增加一张紧凑的 Live Voice 卡片卡片只拥有启用、掩码 key 替换、快捷键捕获、安装进度与权限/就绪状态原生权限动作留在 Host普通 WebShell 听写保持可见且不变。发布物必须包含公证过的 arm64 与 x64 Host ZIP/DMG及机器可读 manifest协议版本、应用版本、架构、固定资产名、大小、SHA-256。安装器绝不接受调用方提供的 URL、路径、可执行文件或 shell 命令也绝不回退到未签名/开发构建。启用/禁用是热应用的用户无需重启 daemon同一进程发布或移除 Host 发现、惰性创建无项目 Live 运行时、刷新能力并保持本契约全部会话归属与 handoff 规则不变。七、Provider 协议限定实验公开 Qwen Realtime 行为已确立普通全双工对话与函数调用输出。开源 qwen-audio-agent锚点ab203c2567334255c69606d88f334edac770ad5a还演示了选择性spawn_thinking调用、立即accepted函数输出、ACP 工作期间 Realtime 对话继续、以及经新对话 item 的最终结果注入——证明有用的 Qwen 协议原语但其固定跨会话后端、私有 Work 台账、立即完成 handoff 与仅最终播报生命周期不复刻 Codex。有界真实 Provider 实验验证了 7 点普通对话请求不经 handoff 直接回答执行请求产生恰好一次选择性 handoff原 handoff 未决期间一个或多个 Codex V2 风格user对话 item 被确认且不启动响应完成原函数调用后请求响应Realtime 模型可基于全部注入的消息级更新自然作答独立用例确认 200 ms 对话 item 注入被接受且有序2026-08-04 被批准为静默后端上下文的有界 Qwen 映射开放 handoff 期间的新用户输入可产生第二个转向 handoff 而无重叠 Provider 响应将其路由到同一后端工作是实现要求而非 Provider 测试结果handoff 完成后直接 Realtime 对话仍可用。7.1 2026-07-30 限定结果获准探测使用qwen3.5-omni-plus-realtime经配置的 DashScope WebSocket 端点、纯文本模式不改产品代码、不记录凭据、不涉及麦克风输入、输出音频、VAD 或音频 barge-in。最终运行中全部协议用例通过自动模式带工具可用时普通请求返回DIRECT_OK且零函数调用执行请求产生恰好一次handoff_to_backend调用该调用未决期间在 0/202/402/602/801 ms 偏移发送的 5 个进度对话 item 按序确认item 确认延迟 67–69 ms复刻 Codex V2 顺序最终后端 Agent 消息作为 user 对话 item → 函数调用输出 →response.create产出包含 P1–P5 与COMPLETE_OK的完整回答且无进一步工具调用第二个原 handoff 未决时新转向 user item 产生恰好第二次 handoff 调用确认转向调用、稍后完成原调用产生顺序响应且无 Provider 重叠响应错误两次 handoff 都完成后普通请求返回AFTER_HANDOFF_OK且零函数调用。两项强制兼容细节① Provider 会替换调用方提供的对话 item ID——顺序确认可行但关联不得假设回显的 Provider item ID 等于请求的 item ID② 中间探测省略了最终后端 Agent 对话 item、仅把完成放进函数调用输出——尽管全部进度标记已到达模型仍错误回答工作仍在运行。因此精确的 Codex V2 排序是行为必需而非单纯的传输细节。剩余协议闸门先前探测是在关闭原 handoff 后才请求响应。在产品代码允许后端工作仍活动时调用speak_to_user之前必须有界探测验证response.create在原background_agent函数调用未决时是否被接受若不接受实现必须停止并报告不兼容而不是提前关闭 handoff 或发明异步替代生命周期。另外公开 Qwen 协议尚无与 Codexspeakable通道确认等价的机制需第二次有界探测确认静默上下文 item 显式语音指令能产出完整、稳定音色、保留请求消息的响应——提示词合规性不能从 schema 接受推断。7.2 2026-08-04 可朗读上下文结果该有界文本输入/音频输出探测保持一个background_agent函数调用未决追加静默上下文并在提交函数输出前请求两次顺序语音响应。两次请求均在qwen3.5-omni-plus-realtime经配置 DashScope WebSocket 上成功两个响应转写与请求的ALPHA、BETA消息完全一致并返回非空、帧对齐的 PCM 音频两个响应都没有再发工具调用或重叠响应错误将原函数输出作为静默完成提交后在随后一秒观察窗口内没有产生响应。这为产品实现限定了mid-handoff 响应创建与精确短消息提示词合规性更长真实麦克风场景下的音色稳定性仍是 E2E 验收项而非 schema 假设。转向实验只限定 Provider 协议把第二次 handoff 路由进同一既有后端轮次、防止重复后端工作、保持任务身份仍是 Qwen Code 的实现与 E2E 验收要求。八、八阶段重构序列每个阶段都由精确-Codex 对等规则把关不得因前一阶段测试通过就贸然开始既有基础已完成保留常规无项目 Live 会话、启动任务上下文、常规与 Live 专属工具、WebShell 权限、内部 Appshot、选择性 handoff 与同会话转向协议闸门验证 mid-handoff 响应创建与显式稳定语音的 Qwen 映射遇到不兼容即停止后端语音工具在既有 Live 会话工具注册表中注册后端专属speak_to_user(message)经认证的 ACP 桥路由到所属 Live 协调器它是内部通信工具无需用户审批静默上下文流按 item/turn 缓冲agent_message_chunk以约 200 ms 刷新有序非空上下文并在工具调用、speak_to_user、错误与轮次完成前强制刷新静默上下文绝不调用response.create完成与语音分离关闭 Provider handoff 但不自动响应speak_to_user刷新挂起上下文、追加显式语音请求并向既有响应仲裁器请求一次响应打断状态把排队语音绑定到通话、handoff、轮次与响应的代际generation用户 barge-in 取消当前音频并使过期排队语音失效而不取消后端工作新执行语音转向活动后端轮次简单对话保持 Provider 所有提示词对齐向两个模型描述静默上下文与显式语音保持委派确认分离审计remain_silent仅当 Provider 兼容证据需要时保留验证运行单元、集成、真实 Provider、Host 音频、WebShell 与完整真实场景测试随后进行两次干净的源码与运行时对等审计。任何引入 Codex 未确认行为或与 Qwen Code 兼容性未确认行为的源码改动都必须在编辑前停止并请求批准。九、验收契约重构只有真实场景证明以下全部条目才算完成场景必需证据普通对话自然 Realtime 回答零 Qwen Code 后端轮次屏幕提问恰好一次 handoff → 后端会话内部 Appshot → 流式结果 → 自然语音回答Realtime 自身无 Appshot 工具列出/检查任务既有任务被列出/读取不新建会话追问既有任务消息到达选定的既有会话并保持其身份创建任务恰好创建一个所请求的项目或无项目会话并完成链接常规工具使用Live 后端可使用与普通会话相同的常规工具面权限请求正确的 WebShell 审批出现Live 浮层链接到该精确会话批准与拒绝都能在 Live 保持可用时解决长后端工作有序 Agent delta 在轮次期间而非turn_complete后到达 Realtime后端进度语音只有显式speak_to_user产生音频静默进度与最终文本不创建响应工作中闲聊原后端轮次与静默上下文流继续时Realtime 直接回答第二次 handoff新执行请求转向活动后端轮次或在同一 Live 会话启动下一轮次绝不重复任务工作中 barge-in既有音频停止、过期排队语音被丢弃、后端工作继续任何执行指令转向时不重叠、不重复语音保真请求的语音完整、被调用时先于后端轮次完成开始、保持配置音色、打断后不恢复继续对话后端工作后 Realtime 保持上下文感知并再次直接回答协议隔离原始审批、MCP 与工具事件不被作为对话文本朗读单元、集成、Host 生命周期与麦克风→语音响应E2E 作为独立验证层报告通过测试不能替代架构或运行时证据。十、仓库源码印证从契约到实现以下是契约各项在 Qwen Code 仓库中的落地证据实现以仓库当前状态为准属契约批准后的演进结果speak_to_user工具live-speak-to-user.ts 定义了SPEAK_TO_USER_TOOL_NAME与MAX_SPEAK_TO_USER_MESSAGE_CHARS 32_000仅一个必填message参数getDefaultPermission()直接返回allow内部通信工具、免审批执行成功返回The voice update was sent.工具描述明确写着后端 Qwen Code 文本是静默上下文不会自动朗读消息由语音模型逐字朗读——与契约第 9 条一一对应后端提示词live-backend-instructions.ts 的LIVE_BACKEND_START_INSTRUCTIONS告诉执行后端普通助手文本会镜像为静默上下文并保持 WebShell 可见但永不自动朗读speak_to_user是让后端输出可听的唯一途径wait_threads的timedOut: true只表示观察窗口结束不代表任务失败LIVE_BACKEND_END_INSTRUCTIONS在 Realtime 结束后恢复普通聊天行为任务工具面live-task-tools.ts 恰好注册list_threads、read_thread、wait_threads、send_message_to_thread、create_thread五个工具create_thread明确仅在用户显式要求新任务/会话/对话时调用wait_threads的timeoutMs: 0表示立即快照——与契约list/read/wait/send/create边界一致Appshot 归属capture-screen-context.ts 实现 Live 专属capture_screen_context读取前台 macOS 应用、校验截图必须在私有目录内resolvePrivatePngPath、拒绝符号链接、校验 PNG 签名与 8 MB 上限并把屏幕内容标记为不可信数据不得当作指令——对应契约第 8 条Appshot 是后端工具而非 Provider 工具静默上下文与响应仲裁qwen-realtime-session.ts 中sendBackendConversationItem以conversation.item.createrole: user的input_text注入带前缀的静默文本不触发响应sendResponseCreate仅在authority backend_speech时请求response: { modalities: [text, audio] }并以pendingResponseCreate/activeResponseId与responseCreateQueue实现响应仲裁与串行化——对应契约第 10 条串行化是技术重叠防护测试验证live-session-coordinator.test.ts 中的streams backend message deltas into silent context on the Codex cadence用例断言agent_message_chunk增量经sendHandoffUpdate回流routes backend speak_to_user to the owning Realtime conversation用例断言语音消息路由到所属 Realtime 会话、且向非所属会话路由会抛错——正是契约约 200 ms 增量回流与会话归属的直接实现证据设置与 i18nWebShell 端如 i18n.tsx提供live.title: Live Voice与安装 Qwen Live Host 并完成全部权限后才能启动等文案与Experimental 设置中的 Live Voice 卡片契约一致。十一、证据锚点契约要求每个实现阶段开始前刷新以下锚点陈旧源码或旧结论不授权变更Codex Realtime 提示词codex-rs/prompts/templates/realtime/backend_prompt.mdCodex Realtime 会话与 handoff 流式codex-rs/core/src/realtime_conversation.rs同任务路由与 Agent delta 镜像codex-rs/core/src/session/mod.rsRealtime 启动任务上下文codex-rs/core/src/realtime_context.rs审批转发codex-rs/app-server/src/bespoke_event_handling.rsRealtime 事件过滤codex-rs/core/src/session/turn.rsQwen 既有会话目录与任务元数据session-list.tsQwen 既有会话提示词、事件、mid-turn 消息与权限session.tsQwen 公开协议参考实现QwenAudio/qwen-audio-agent锚点ab203c2567334255c69606d88f334edac770ad5a的config/frontend-agent/PROMPT.md、server/src/voice/realtime-provider.mjs与server/src/voice/tools/tool-call-handler.mjs总结WebShell Live Voice 的 Codex 对等重构本质上是把对话权威与执行权威严格分层qwen3.5-omni-plus-realtime作为唯一对话前端拥有普通对话、VAD、barge-in 与显式语音无项目 Live Qwen Code 会话作为唯一执行后端保留完整常规工具面、任务工具与权限管线经有界映射约 200 ms 静默conversation.item.createspeak_to_user触发的text/audio响应实现与 Codex 相同的可观察生命周期。任何偏离该架构的替代方案逐句 TTS、本地语音、立即完成 handoff、Coordinato 人设、子会话逃逸都被明确废弃遇到协议不兼容时实现必须停止并报告而不是发明近似行为。这套契约同时为工程实现提供了可直接对照的验收矩阵与源码级证据链可作为后续开发与审查的权威依据。【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考