macOS 下使用 mitmproxy 增强 Xcode AI 能力配置指南 (v2 - 自动化脚本版)

macOS 下使用 mitmproxy 增强 Xcode AI 能力配置指南 (v2 - 自动化脚本版)

本文档总结了通过 mitmproxy 工具,解决国行 macOS 系统下 Xcode 26 的 AI 功能与 DeepSeek API 不兼容问题的完整配置流程。该版本使用一个管理脚本来简化启动、关闭和系统代理配置。


步骤一:安装 mitmproxy

如果尚未安装,请使用 Homebrew 包管理器一键安装 mitmproxy

bash 复制代码
brew install mitmproxy

步骤二:创建修复脚本和管理脚本

我们将创建两个文件:一个 Python 脚本负责核心的 API 数据修复,一个 Shell 脚本负责自动化管理。这两个文件都已在之前的步骤中创建在您的主目录 (/Users/apple/) 下。

2.1 API 修复脚本 (deepseek_script.py)

该脚本会实时修改 Xcode 与 DeepSeek API 之间的通信数据,同时解决两个已知的兼容性问题:

  1. 移除 Xcode 请求中不被接受的 tools 字段。
  2. 修正 messages.content 字段的格式,将其从数组(列表)转为 API 期望的字符串。

脚本内容 (/Users/apple/deepseek_script.py):

python 复制代码
import json
from mitmproxy import http

class DeepSeekEditor:
    def request(self, flow: http.HTTPFlow) -> None:
        if "api.deepseek.com/v1/chat/completions" in flow.request.pretty_url:
            try:
                data = json.loads(flow.request.get_text())
                modified = False

                # --- 修复1:移除 'tools' 字段 ---
                if "tools" in data:
                    print("[DeepSeek Script] 找到并移除了 'tools' 字段。")
                    del data["tools"]
                    modified = True

                # --- 修复2:将 'content' 数组扁平化为字符串 ---
                if "messages" in data:
                    for message in data["messages"]:
                        if "content" in message and isinstance(message["content"], list):
                            print("[DeepSeek Script] 发现 'content' 是一个数组,正在将其转为字符串。")
                            new_content = ""
                            for part in message["content"]:
                                if isinstance(part, dict) and "text" in part:
                                    new_content += part.get("text", "")
                                elif isinstance(part, str):
                                    new_content += part
                            message["content"] = new_content
                            modified = True
                
                # 如果做出了任何修改,则将更新后的JSON写回请求体
                if modified:
                    flow.request.text = json.dumps(data)

            except json.JSONDecodeError:
                pass

addons = [
    DeepSeekEditor()
]

2.2 自动化管理脚本 (proxy_manager.sh)

该脚本可以一键完成"开启代理 -> 运行 mitmproxy -> 关闭代理"的整个流程。

脚本内容 (/Users/apple/proxy_manager.sh):

bash 复制代码
#!/bin/bash

# --- 配置 ---
# 脚本已根据您的网络设置为 "USB 10/100/1000 LAN"
NETWORK_SERVICE="USB 10/100/1000 LAN"
PROXY_DOMAIN="127.0.0.1"
PROXY_PORT="8080"
MITM_SCRIPT="/Users/apple/deepseek_script.py"

# --- 清理函数 ---
cleanup() {
    echo "
正在关闭系统代理..."
    networksetup -setwebproxystate "$NETWORK_SERVICE" off
    networksetup -setsecurewebproxystate "$NETWORK_SERVICE" off
    echo "代理已关闭。"
}

# 捕捉脚本退出信号,自动执行清理
trap cleanup EXIT

# 设置系统代理
echo "正在为 '$NETWORK_SERVICE' 设置系统代理..."
networksetup -setwebproxy "$NETWORK_SERVICE" "$PROXY_DOMAIN" "$PROXY_PORT"
networksetup -setsecurewebproxy "$NETWORK_SERVICE" "$PROXY_DOMAIN" "$PROXY_PORT"
echo "代理已开启。"
echo "---"

# 启动 mitmproxy
echo "正在启动 mitmproxy... 按 Ctrl+C 可退出并自动关闭代理。"
mitmproxy -s "$MITM_SCRIPT"

步骤三:如何使用

  1. 授予权限:为管理脚本添加执行权限(只需操作一次)。我们已经执行过此操作。

    bash 复制代码
    chmod +x /Users/apple/proxy_manager.sh
  2. 启动代理:在终端中,直接运行脚本即可。

    bash 复制代码
    /Users/apple/proxy_manager.sh
  3. 安装证书 (首次运行) :如果这是您第一次使用 mitmproxy,您可能需要安装它的证书。在代理运行时,用浏览器访问 http://mitm.it,然后根据页面提示点击对应图标安装并信任证书。

  4. 开始使用 :现在 Xcode 的 AI 功能应该可以正常工作了。mitmproxy 窗口会显示脚本执行的日志。

  5. 关闭代理 :在运行脚本的终端窗口中,按 Ctrl + C 即可。脚本会自动关闭 mitmproxy 并恢复您的网络设置。

相关推荐
IS6831 天前
视频文案提取技术全景:ASR vs OCR,哪种方案更适合你?
ide·macos·xcode
大熊猫侯佩2 天前
Xcode 预览新升级:arguments 让界面调试井井有条
swiftui·xcode·swift
User_芊芊君子4 天前
STT + LLM + TTS:用一条流水线搓了个中英双向翻译助手
ide·macos·xcode
星辰即远方7 天前
计算器仿写总结
学习·ui·ios·cocoa·xcode
2501_915918417 天前
免 Xcode 开发 iOS,工具链替代方案与编译、签名、安装
ide·vscode·macos·ios·个人开发·xcode·敏捷流程
2501_916008898 天前
移动安全之 APP 加固,保障移动应用安全的重要手段
安全·macos·ios·小程序·uni-app·iphone·xcode
MoSTChillax9 天前
数字人竞品分析(中):核心功能、产品使用与技术能力对比
ide·macos·xcode
2501_915106329 天前
SwiftUI项目创建详解:使用Xcode从零开始创建第一个App项目
ide·vscode·ios·swiftui·个人开发·xcode·敏捷流程
2501_915918419 天前
Xcode调试iOS应用内存管理与优化,识别泄漏与性能监控指南
android·ios·小程序·uni-app·cocoa·iphone·xcode
声讯电子11 天前
AU-60 语音处理模组:智能家居人机交互的听觉中枢
人机交互·智能家居·xcode·ai降噪·回音消除·语音处理模组