opencode移动端控制PC实战:远程Agent调用详细配置
1. 为什么需要移动端控制本地AI编程助手?
你有没有过这样的场景:
正在地铁上刷手机,突然想到一个关键的代码重构思路,想立刻验证;
或者在会议室用平板做技术分享,临时需要调用本地大模型分析一段项目代码;
又或者在家用笔记本写代码卡住了,想让厨房里的手机“帮你看一眼报错日志”——但又不想把代码上传到任何云端服务。
这些需求背后,其实指向同一个问题:如何安全、低延迟、零改造地让移动设备成为本地AI编程助手的遥控器?
OpenCode 正是为此而生。它不是另一个Web IDE或在线Copilot,而是一个真正“终端原生、隐私优先”的AI编码框架。它的核心设计里,早已埋下远程控制的基因:客户端/服务器分离架构、多会话并行支持、TUI界面与API双通道交互。这意味着——你不需要改一行代码,也不用暴露端口到公网,就能用手机发起一次完整的本地Agent调用:从读取当前项目结构,到生成修复补丁,再到自动执行测试,全程在你自己的机器上完成。
本文不讲概念,不堆参数,只聚焦一件事:手把手带你配通“手机 → 本地OpenCode Agent”的完整链路。从环境准备、服务暴露、移动端接入,到真实调用一个Qwen3-4B-Instruct模型完成代码诊断,每一步都可复制、可验证、无黑盒。
2. 环境准备:本地服务端一键就绪
2.1 快速启动OpenCode服务(含vLLM后端)
OpenCode本身不内置大模型推理能力,它专注做“智能调度中枢”。要让它真正干活,你需要一个高性能、低显存占用的本地推理服务。vLLM正是当前最成熟的选择——尤其对Qwen3-4B这类中等规模模型,vLLM能在单张RTX 4090上实现15+ tokens/s的吞吐,且内存占用比HuggingFace Transformers低40%以上。
我们采用“Docker一体化部署”方案,避免环境冲突:
# 1. 拉取预构建镜像(已集成vLLM + Qwen3-4B-Instruct-2507) docker pull opencode-ai/vllm-qwen3:2507 # 2. 启动vLLM服务(绑定本地8000端口,仅监听localhost) docker run -d \ --name vllm-qwen3 \ --gpus all \ -p 127.0.0.1:8000:8000 \ -e VLLM_MODEL=qwen/qwen3-4b-instruct \ -e VLLM_TENSOR_PARALLEL_SIZE=1 \ opencode-ai/vllm-qwen3:2507 # 3. 验证服务是否就绪(终端执行) curl -s http://localhost:8000/health | jq .status # 返回 {"status": "healthy"} 即成功注意:
-p 127.0.0.1:8000:8000是关键。它确保vLLM只接受本机请求,不对外网暴露,为后续移动端安全接入打下基础。
2.2 安装并配置OpenCode客户端
OpenCode官方提供跨平台二进制包,无需编译:
# macOS / Linux(一键安装) curl -fsSL https://opencode.ai/install.sh | sh # Windows(PowerShell) iwr -useb https://opencode.ai/install.ps1 | iex安装完成后,在任意项目目录下创建opencode.json配置文件,明确告诉OpenCode:“我要用本地vLLM跑Qwen3-4B”:
{ "$schema": "https://opencode.ai/config.json", "provider": { "local-qwen3": { "npm": "@ai-sdk/openai-compatible", "name": "qwen3-4b", "options": { "baseURL": "http://localhost:8000/v1", "apiKey": "sk-no-key-required" }, "models": { "Qwen3-4B-Instruct-2507": { "name": "Qwen3-4B-Instruct-2507" } } } }, "defaultModel": "Qwen3-4B-Instruct-2507" }这个配置做了三件事:
- 声明一个名为
local-qwen3的本地模型提供商; - 指向
http://localhost:8000/v1—— 这正是vLLM的OpenAI兼容API入口; - 设置默认模型为
Qwen3-4B-Instruct-2507,后续所有Agent调用将自动使用它。
2.3 启动OpenCode服务模式(非TUI)
默认opencode命令启动的是TUI界面。但我们要的是远程可调用的服务接口,因此需启用服务模式:
# 在项目根目录执行(注意:必须有opencode.json) opencode serve --port 8080 --host 0.0.0.0成功标志:终端输出
OpenCode server listening on http://0.0.0.0:8080
安全提示:--host 0.0.0.0允许局域网内其他设备访问,但OpenCode默认不鉴权——所以请确保你的路由器防火墙已关闭,或仅在可信局域网(如家庭Wi-Fi)中启用。
此时,OpenCode已作为HTTP服务运行,它暴露了标准REST API,例如:
POST /v1/chat/completions—— 标准OpenAI聊天接口GET /v1/agents—— 获取可用Agent列表POST /v1/agents/plan/run—— 调用规划Agent分析项目
这些接口,就是移动端连接的“大门”。
3. 移动端接入:三步完成远程调用
3.1 网络连通性确认(最关键一步)
手机和PC必须在同一局域网(如都连着家里的Wi-Fi)。打开手机浏览器,访问:http://[你的PC局域网IP]:8080/health
例如:http://192.168.31.123:8080/health
如果返回{"status":"ok"},说明网络打通;如果超时,请检查:
- PC防火墙是否放行8080端口;
- 手机Wi-Fi是否真的和PC在同一子网(不是“Wi-Fi 2”和“Wi-Fi 2.4G”这种命名陷阱);
- OpenCode服务是否仍在前台运行(不要关掉终端窗口)。
3.2 使用标准HTTP工具发起首次调用
无需安装App,用手机自带的“快捷指令”(iOS)或“Termux”(Android)即可。这里以iOS快捷指令为例,演示如何用手机调用OpenCode的buildAgent生成一个Python函数:
- 新建快捷指令 → 添加操作 → “获取URL内容”
- URL填入:
http://192.168.31.123:8080/v1/agents/build/run - 方法选
POST,添加Header:Content-Type: application/jsonAccept: application/json
- 请求体(Body)填入JSON:
{ "messages": [ { "role": "user", "content": "写一个Python函数,接收一个整数列表,返回其中偶数的平方和" } ], "model": "Qwen3-4B-Instruct-2507" }运行后,你会看到手机返回一段结构化JSON,其中choices[0].message.content就是Qwen3生成的完整代码:
def even_square_sum(numbers): return sum(x**2 for x in numbers if x % 2 == 0)这证明:手机已能完整驱动本地Agent,从理解需求、生成代码、到返回结果,一气呵成。
3.3 进阶:用手机扫码快速进入TUI界面(类VS Code Remote)
OpenCode还提供一个更直观的远程控制方式——通过二维码,让手机浏览器直接渲染TUI界面:
# 在PC终端执行(需已启动opencode serve) opencode serve --port 8080 --host 0.0.0.0 --tui-qr终端会立即显示一个二维码。用手机微信/相机扫描,即可在手机浏览器中打开一个完全功能的OpenCode TUI界面:
- Tab键切换
build(代码生成)和plan(项目分析)Agent; - 方向键导航、回车确认、ESC退出,操作逻辑与PC终端完全一致;
- 所有代码补全、跳转、诊断,均由本地vLLM实时响应,毫秒级反馈。
这个体验,就像把你的开发环境“投屏”到了手机上,但所有计算都在本地完成,隐私零泄露。
4. 实战案例:用手机诊断PC上的Python报错
现在,让我们做一个真实、高频、有获得感的场景:在手机上粘贴一段Python报错日志,让PC上的OpenCode自动定位问题并给出修复建议。
4.1 准备一个典型错误
在PC上新建test_error.py:
def calculate_average(nums): return sum(nums) / len(nums) print(calculate_average([])) # 触发ZeroDivisionError运行它,得到报错:
Traceback (most recent call last): File "test_error.py", line 4, in <module> print(calculate_average([])) File "test_error.py", line 2, in calculate_average return sum(nums) / len(nums) ZeroDivisionError: division by zero4.2 手机端发起诊断请求
用手机访问:http://192.168.31.123:8080/v1/agents/plan/run
POST Body填入:
{ "messages": [ { "role": "user", "content": "以下是一段Python报错日志,请分析错误原因,并给出修复后的完整代码:\n\nTraceback (most recent call last):\n File \"test_error.py\", line 4, in <module>\n print(calculate_average([]))\n File \"test_error.py\", line 2, in calculate_average\n return sum(nums) / len(nums)\nZeroDivisionError: division by zero" } ], "model": "Qwen3-4B-Instruct-2507" }几秒钟后,手机收到响应,content字段包含:
错误原因:
calculate_average函数在输入空列表时,len(nums)返回0,导致除零错误。
修复方案:在除法前检查列表长度,为空时返回0或抛出更友好的异常。
修复后代码:def calculate_average(nums): if len(nums) == 0: return 0 return sum(nums) / len(nums)
整个过程,你没有打开PC,没有复制粘贴到网页,没有上传任何代码——只是在手机上发了一次HTTP请求,就完成了专业级的错误诊断。
5. 常见问题与避坑指南
5.1 “手机能连通,但调用返回404”
大概率是OpenCode服务未正确加载配置。检查:
opencode.json是否放在当前工作目录(不是家目录,不是/tmp);- 文件名是否严格为
opencode.json(大小写敏感,不能是Opencode.json); - 配置中的
baseURL是否指向http://localhost:8000/v1(注意末尾/v1,vLLM必需)。
5.2 “vLLM启动失败,报CUDA out of memory”
Qwen3-4B在FP16下约需8GB显存。若显存不足,可在启动命令中添加量化参数:
docker run -d \ --name vllm-qwen3 \ --gpus all \ -p 127.0.0.1:8000:8000 \ -e VLLM_MODEL=qwen/qwen3-4b-instruct \ -e VLLM_DTYPE=half \ -e VLLM_QUANTIZATION=awq \ # 启用AWQ量化 opencode-ai/vllm-qwen3:2507AWQ量化可将显存占用降至5GB以内,性能损失小于3%。
5.3 “手机调用延迟高,响应慢”
这不是模型问题,而是网络问题。OpenCode默认启用流式响应(streaming),但手机浏览器可能未正确处理SSE。解决方案:
- 在POST请求头中添加
"Accept": "application/json"(强制关闭流式); - 或改用专用HTTP客户端App(如iOS的HTTPBot、Android的Postman)。
5.4 “如何让多个手机同时控制同一台PC?”
OpenCode原生支持多会话并行。每个手机发起的请求,都会被分配独立会话ID,互不干扰。你甚至可以让:
- 手机A调用
buildAgent写新功能; - 手机B调用
planAgent分析老模块; - 平板C用TUI界面实时查看Git状态。
三者完全隔离,共享同一套本地模型和代码库。
6. 总结:你刚刚搭建了一个怎样的系统?
你完成的不是一个“玩具Demo”,而是一套真正落地的、隐私可控的AI编程远程协作基础设施:
- 零信任安全模型:vLLM只监听
127.0.0.1,OpenCode服务仅开放局域网,所有数据不出本地; - 终端级性能体验:vLLM + Qwen3-4B组合,在消费级显卡上达成生产可用的推理速度;
- 跨端无缝衔接:手机、平板、PC共享同一套Agent逻辑,TUI界面在小屏上依然可操作;
- 开箱即用的工程化设计:从Docker镜像、JSON配置、到标准OpenAI API,全部遵循开发者直觉。
这不再是“用手机调用一个API”,而是把你的开发环境,变成了一个可随身携带、随时唤醒的智能体。下次开会时,当别人还在翻PPT找代码片段,你已经用手机扫个码,直接在浏览器里调试起本地项目了。
真正的AI编程自由,从来不是依赖某个云服务,而是让你的每一台设备,都成为你思考的延伸。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。