关注公众号:weelinking | 访问官网:weelinking.com

📅 发布日期:2026年02月14日
🏷️ 标签:通信 | 配置 | 联调
⏱️ 阅读时长:15分钟
📚 系列文章:手机指挥电脑干活系列 - 第4篇


📄 文章摘要

手机端已经装好了,但它还"找不到"你的电脑——就像有了遥控器却还没对上频道。本文教你在电脑上部署一个 Flask 服务器,让手机通过局域网或外网连接到电脑,实现手机发指令→电脑上的 Claude 执行→结果返回手机的完整链路。还提供了 Tailscale 外网方案,让你出门在外也能远程指挥。连上了,就成功一大半!

关键词: #Flask #远程通信 #Tailscale #内网穿透 #weelinking


一、前言:最关键的一步

上一篇我们在手机上安装了 Claude 客户端,可以直接与 Claude AI 对话。

但这还不够酷!我们的终极目标是:手机发指令 → 电脑上的 Claude 执行 → 结果返回手机

这一篇我们要完成的关键任务:

  • ✅ 在电脑上部署一个服务端
  • ✅ 手机通过网络连接到电脑
  • ✅ 实现手机→电脑→Claude 的完整链路

连上了,就成功了一大半!

💡 本文所有操作均在 weelinking 上完成——国内直连 Claude,无需魔法,按量付费,新用户注册即送额度。

二、整体方案

我们采用一个简单实用的方案:

📱 手机 <--HTTP--> 💻 电脑(Flask服务) <--> Claude API

工作流程:

  1. 电脑上运行一个 Flask 服务器
  2. 手机通过 HTTP 请求发送指令
  3. 服务器调用 Claude API 执行任务
  4. 结果返回给手机

三、电脑端部署(服务端)

3.1 环境准备

Windows / Mac / Linux 都适用

确保已安装 Python 3.8+:

python --version
# 或
python3 --version

3.2 创建服务端项目

步骤1:创建项目目录

# Windows CMD/PowerShell
mkdir C:\claude-server
cd C:\claude-server

# Mac/Linux
mkdir ~/claude-server
cd ~/claude-server

步骤2:安装依赖

# 安装 Flask 和 anthropic
pip install flask anthropic flask-cors

# 如果是 Mac/Linux,使用 pip3
pip3 install flask anthropic flask-cors

步骤3:创建服务端代码

创建文件 server.py:

from flask import Flask, request, jsonify
from flask_cors import CORS
import anthropic
import os

app = Flask(__name__)
CORS(app)  # 允许跨域请求

# 配置 Claude API
API_KEY = "你的API_KEY"  # 替换为你的 Weelinking API Key
BASE_URL = "https://api.weelinking.com/v1"

client = anthropic.Anthropic(
    api_key=API_KEY,
    base_url=BASE_URL
)

# 存储对话历史
conversations = {}

@app.route('/')
def home():
    """首页"""
    return '''
    <h1>Claude Remote Server</h1>
    <p>服务运行中...</p>
    <p>API端点: POST /api/chat</p>
    '''

@app.route('/api/chat', methods=['POST'])
def chat():
    """处理聊天请求"""
    try:
        data = request.json
        user_message = data.get('message', '')
        session_id = data.get('session_id', 'default')

        if not user_message:
            return jsonify({'error': '消息不能为空'}), 400

        # 获取或创建会话历史
        if session_id not in conversations:
            conversations[session_id] = []

        # 构建消息历史(保留最近5轮对话)
        messages = conversations[session_id][-10:]  # 最近5轮=10条消息
        messages.append({
            "role": "user",
            "content": user_message
        })

        # 调用 Claude API
        response = client.messages.create(
            model="claude-sonnet-4-20250514",
            max_tokens=2048,
            messages=messages
        )

        assistant_message = response.content[0].text

        # 保存对话历史
        messages.append({
            "role": "assistant",
            "content": assistant_message
        })
        conversations[session_id] = messages

        return jsonify({
            'success': True,
            'response': assistant_message,
            'session_id': session_id
        })

    except Exception as e:
        return jsonify({
            'success': False,
            'error': str(e)
        }), 500

@app.route('/api/reset', methods=['POST'])
def reset():
    """重置对话历史"""
    data = request.json
    session_id = data.get('session_id', 'default')

    if session_id in conversations:
        conversations[session_id] = []

    return jsonify({'success': True, 'message': '对话已重置'})

@app.route('/api/status', methods=['GET'])
def status():
    """检查服务状态"""
    return jsonify({
        'status': 'running',
        'active_sessions': len(conversations)
    })

if __name__ == '__main__':
    # 获取本机 IP
    import socket
    hostname = socket.gethostname()
    local_ip = socket.gethostbyname(hostname)

    print("=" * 60)
    print("🚀 Claude Remote Server 启动成功!")
    print("=" * 60)
    print(f"本地访问: http://localhost:5000")
    print(f"局域网访问: http://{local_ip}:5000")
    print("=" * 60)
    print("API 接口说明:")
    print("  POST /api/chat    - 发送消息")
    print("  POST /api/reset   - 重置对话")
    print("  GET  /api/status  - 服务状态")
    print("=" * 60)

    # 启动服务(监听所有网络接口)
    app.run(host='0.0.0.0', port=5000, debug=False)

步骤4:配置 API Key

编辑 server.py,找到这一行:

API_KEY = "你的API_KEY"  # 替换为你的 Weelinking API Key

替换为你从 Weelinking 获取的真实 API Key。

步骤5:启动服务

python server.py
# 或
python3 server.py

如果看到类似下面的输出,说明启动成功:

===========================================================
🚀 Claude Remote Server 启动成功!
============================================================
本地访问: http://localhost:5000
局域网访问: http://192.168.1.100:5000
============================================================
API 接口说明:
  POST /api/chat    - 发送消息
  POST /api/reset   - 重置对话
  GET  /api/status  - 服务状态
============================================================

记住这个局域网 IP 地址(如 192.168.1.100),手机端要用!

3.3 防火墙配置

Windows:

# 以管理员身份运行 PowerShell
netsh advfirewall firewall add rule name="Claude Server" dir=in action=allow protocol=TCP localport=5000

Mac:

系统偏好设置 → 安全性与隐私 → 防火墙 → 防火墙选项 → 添加 Python

Linux:

sudo ufw allow 5000/tcp

四、手机端配置(客户端)

4.1 确认网络连通

步骤1:手机连接到同一WiFi

确保手机和电脑在同一WiFi网络下。

步骤2:测试连接

在手机浏览器中访问:

http://192.168.1.100:5000

(替换为你电脑的实际 IP)

如果看到 “Claude Remote Server” 页面,说明连接成功!

4.2 创建手机端客户端

Android (Termux)

在上一篇的基础上,创建新的客户端脚本:

cd ~/claude-mobile

cat > remote_client.py << 'EOF'
#!/usr/bin/env python3
import requests
import sys
import json

# 配置服务器地址
SERVER_URL = "http://192.168.1.100:5000"  # 替换为你电脑的 IP
SESSION_FILE = "session_id.txt"

def get_session_id():
    """获取或创建 session ID"""
    try:
        with open(SESSION_FILE, 'r') as f:
            return f.read().strip()
    except:
        import uuid
        session_id = str(uuid.uuid4())
        with open(SESSION_FILE, 'w') as f:
            f.write(session_id)
        return session_id

def send_message(message):
    """发送消息到服务器"""
    try:
        session_id = get_session_id()

        response = requests.post(
            f"{SERVER_URL}/api/chat",
            json={
                "message": message,
                "session_id": session_id
            },
            timeout=30
        )

        if response.status_code == 200:
            data = response.json()
            if data.get('success'):
                return data.get('response')
            else:
                return f"错误: {data.get('error')}"
        else:
            return f"请求失败: {response.status_code}"

    except requests.exceptions.ConnectionError:
        return "❌ 连接失败!请检查:\n1. 电脑服务是否运行\n2. IP地址是否正确\n3. 是否在同一WiFi"
    except Exception as e:
        return f"错误: {str(e)}"

def main():
    if len(sys.argv) > 1:
        message = ' '.join(sys.argv[1:])
    else:
        message = input("请输入指令: ")

    print(f"\n📱 发送指令: {message}\n")
    print("⏳ 等待电脑上的 Claude 响应...\n")

    result = send_message(message)

    print("=" * 50)
    print("💻 电脑上的 Claude 回复:")
    print("=" * 50)
    print(result)
    print("=" * 50)

if __name__ == "__main__":
    main()
EOF

chmod +x remote_client.py

# 安装 requests 库
pip install requests

配置服务器地址:

编辑文件,替换 IP:

nano remote_client.py

# 找到这一行:
# SERVER_URL = "http://192.168.1.100:5000"
# 替换为你电脑的实际 IP

# 保存: Ctrl+X → Y → Enter

测试运行:

python remote_client.py "你好,请问你现在运行在哪台设备上?"
iOS (快捷指令)

更新之前创建的快捷指令:

操作1: 询问输入
  提示: "请输入指令"

操作2: 获取 URL 内容
  URL: http://192.168.1.100:5000/api/chat
  方法: POST
  请求头:
    - Content-Type: application/json
  请求正文: JSON
    {
      "message": "提供的输入",
      "session_id": "ios-session"
    }

操作3: 从字典中获取值
  键: response

操作4: 显示通知
  内容: 获取的值

五、完整链路测试

5.1 基础对话测试

Android:

python remote_client.py "介绍一下你自己"

iOS:

运行快捷指令,输入 “介绍一下你自己”

5.2 编程任务测试

写一个 Python 函数,实现二分查找

Claude 应该会返回完整的代码和解释。

5.3 上下文测试(验证历史记忆)

第1次:

请记住,我的名字叫张三

第2次:

我叫什么名字?

如果 Claude 能回答"张三",说明对话历史功能正常!

六、外网访问方案(可选)

如果想在外面也能用,推荐使用 Tailscale

6.1 安装 Tailscale

电脑端:

  • Windows/Mac: 访问 https://tailscale.com/download
  • Linux: curl -fsSL https://tailscale.com/install.sh | sh

手机端:

  • Android: Play Store 搜索 Tailscale
  • iOS: App Store 搜索 Tailscale

6.2 配置 Tailscale

  1. 电脑和手机都安装并登录同一个 Tailscale 账号
  2. 启动 Tailscale
  3. 电脑会获得一个 Tailscale IP (如 100.64.1.2)

6.3 修改手机端配置

将手机端的 SERVER_URL 改为 Tailscale IP:

SERVER_URL = "http://100.64.1.2:5000"  # Tailscale IP

现在即使在外面,只要手机有网,就能连接电脑了!


看到这里,是不是想自己试试?

现在就可以开始——点击注册 weelinking,国内直连 Claude,新用户有免费额度,够你把今天的内容完整跑一遍。


七、进阶功能

7.1 添加文件查看功能

修改 server.py,添加文件查看接口:

@app.route('/api/file', methods=['POST'])
def read_file():
    """读取文件内容"""
    try:
        data = request.json
        file_path = data.get('path', '')

        # 安全检查:只允许读取特定目录
        allowed_paths = [
            os.path.expanduser('~/'),  # 用户目录
            'C:\\' if os.name == 'nt' else '/'  # 根目录
        ]

        # 读取文件
        with open(file_path, 'r', encoding='utf-8') as f:
            content = f.read()

        return jsonify({
            'success': True,
            'content': content,
            'path': file_path
        })

    except Exception as e:
        return jsonify({
            'success': False,
            'error': str(e)
        }), 400

7.2 添加系统命令执行

import subprocess

@app.route('/api/command', methods=['POST'])
def execute_command():
    """执行系统命令(危险!仅限信任的客户端)"""
    try:
        data = request.json
        command = data.get('command', '')

        # 安全检查:命令白名单
        allowed_commands = ['ls', 'dir', 'git status', 'python --version']

        if command not in allowed_commands:
            return jsonify({
                'success': False,
                'error': '不允许执行此命令'
            }), 403

        result = subprocess.run(
            command,
            shell=True,
            capture_output=True,
            text=True,
            timeout=10
        )

        return jsonify({
            'success': True,
            'output': result.stdout,
            'error': result.stderr
        })

    except Exception as e:
        return jsonify({
            'success': False,
            'error': str(e)
        }), 500

八、常见问题排查

问题1:手机连不上电脑

排查清单:

# 1. 确认电脑服务运行中
# 看 server.py 是否还在运行

# 2. 确认防火墙已放行
# Windows: 检查防火墙设置
# Mac/Linux: 检查 ufw 状态

# 3. 确认 IP 地址正确
# 电脑端:
ipconfig  # Windows
ifconfig  # Mac/Linux

# 4. ping 测试
# 手机端(Termux):
ping 192.168.1.100

问题2:连接成功但无响应

检查:

  • API Key 是否正确
  • 网络是否能访问 Weelinking
  • 查看服务端日志是否有错误

问题3:对话历史不工作

检查:

  • session_id 是否正确传递
  • 服务端是否重启过(重启会清空内存中的历史)

九、总结与下期预告

本期完成的内容

  • ✅ 电脑端部署 Flask 服务器
  • ✅ 手机端连接到电脑
  • ✅ 实现手机→电脑→Claude 完整链路
  • ✅ 支持对话历史记忆
  • ✅ 可选的外网访问(Tailscale)

当前状态

✅ 手机端配置完成
✅ 电脑端服务部署完成
✅ 通信链路打通
⏸️ Claude 高级能力待开发

下期预告

第5篇:给电脑装上最强大脑——Claude 桌面客户端安装与配置

  • 安装 Claude Desktop
  • 配置工具权限(文件、命令执行)
  • 与当前服务整合
  • 让 Claude 能真正操作电脑

练习作业

  1. 尝试让 Claude 记住一些信息,然后重新询问
  2. 测试较长的代码生成任务
  3. 如果有条件,配置 Tailscale 实现外网访问

在评论区分享你的测试结果和遇到的问题!


🔗 开始使用 Claude

文中的所有操作,你现在就可以上手。

推荐使用 weelinking 访问 Claude:

优势 说明
🇨🇳 国内直连 无需任何网络配置,打开即用
💰 按量付费 用多少花多少,不浪费
🎁 新用户福利 注册即送体验额度
⚡ 稳定可靠 账号池技术,不掉线

👉 立即注册,免费开始


🔜 下期预告

「给电脑装上最强大脑——Claude 桌面客户端安装与配置」

通信链路已打通,下一篇我们让 Claude 真正拥有"操作电脑"的能力——读写文件、执行命令、运行代码,从"能聊天"升级到"能干活"。

👉 点击关注,下篇第一时间通知你。


📖 推荐阅读

如果这篇对你有帮助,以下文章你也会喜欢:

  • [Claude Skill 的四大骨架模式详解] — 理解 Claude Skill 的核心架构模式
  • [企业级 Claude Skill 库搭建与管理] — 从个人使用扩展到团队协作
  • [产品经理用 Claude 实现产品] — 不写代码也能做出完整产品

📦 本篇配套资源

  • ✅ Flask 服务端完整代码(server.py)
  • ✅ 手机端客户端脚本(remote_client.py)
  • ✅ 防火墙配置指南(Windows/Mac/Linux)
  • ✅ 连接排查流程图
  • 📷 需补充:连接成功的手机截图

📌 系列导航: 手机+OpenClaw+Claude实现远程AI编程系列大纲

上一篇: 第3篇:手机秒变 AI 遥控器——OpenClaw 手机端安装全攻略
下一篇: 第5篇:Claude桌面客户端安装与配置

💡 本系列全程使用 weelinking 访问 Claude,国内可稳定使用
🚀 整个系列的核心理念:你不需要变成程序员,你只需要从"找人做"变成"自己能做"。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐