Anthropic 的 Messages API 更倾向于为开发者提供对复杂推理、长文档处理和高级工具调用的精细控制。OpenAI 的 API 生态则更侧重于简化智能体(Agent)开发流程,并最大化跨提供商的兼容性。

两者的接口设计服务于不同的应用场景。

  • Anthropic Messages API (/v1/messages):专为利用 Claude 的原生能力设计,如扩展思考(Extended Thinking)、提示缓存(Prompt Caching)和计算机使用(Computer Use)。它支持在单个请求中运行服务器端工具。
  • OpenAI Chat Completions API (/v1/chat/completions):作为行业事实标准,设计上无状态,你需要在每次请求中管理完整的对话历史。其最大优势是生态兼容性最广。
  • OpenAI Responses API (/v1/responses):为智能体工作流打造,支持在单次 API 调用中让模型自行编排多个内置工具(如网页搜索、代码解释器)。它还通过 previous_response_id 或服务端对话来管理状态,减少了手动维护历史的负担。

虽然 Anthropic 提供了兼容层,允许你继续使用 OpenAI SDK 来调用 Claude,但这主要是为了便于测试和快速评估,并非生产环境的长期解决方案。

  • 兼容性限制:使用 OpenAI SDK 调用 Claude 时,工具调用的 strict 参数会被忽略,意味着 JSON 输出不保证严格遵循你提供的 Schema。此外,音频输入会被静默忽略,且不支持提示缓存。
  • 系统消息处理:这是最显著的差异之一。OpenAI 允许在对话任意位置放置系统/开发者消息,而 Anthropic 仅支持一条初始系统消息。兼容层会将所有系统消息拼接后置于开头。

两者在高级功能的侧重点上有明显不同。

  • 扩展思考:这是 Anthropic 的强项。你可以通过原生 API 获取 Claude 逐步的详细推理过程(thinking 参数)。而通过 OpenAI SDK 调用时,虽然思考能力生效,但不会返回详细的思考内容。
  • 内置工具:OpenAI 的 Responses API 提供了一站式的内置工具(网页搜索、文件搜索、代码解释器)。Anthropic 也通过服务器工具提供类似能力,但其设计更强调与自有工具链的集成。
  • 提示缓存:Anthropic 原生支持提示缓存,对于重复发送相同上下文的场景(如长文档分析),可大幅降低成本。此功能在 OpenAI SDK 兼容模式下不可用。

根据实际工作负载的不同,两个模型系列展现出不同的倾向。

  • Anthropic 强项:通常在长文档分析、编码任务和需要高一致性的结构化输出方面表现突出,并在企业级支出中占有重要份额。其定价在旗舰层级通常较高,但通过提示缓存(最高可节省约 90% 缓存输入成本)能有效控制长上下文场景的开销。
  • OpenAI 强项:优势在于多模态能力、广泛的生态以及低成本的小模型梯队(如 Nano 系列)。对于高吞吐量的分类和提取任务,成本可能更低。其定价策略通常更具竞争力,旗舰模型价格可能更低,但输出密集型任务的成本仍是考量重点。
  • 如果你需要最大化长文本处理、复杂代码生成、精细的推理过程控制,或者你是企业级用户且工作负载中包含大量重复的上下文,Anthropic 的原生 API 可能更适合你。
  • 如果你在构建通用的聊天应用、多模态应用,或者希望利用最广泛的开发工具和内置的 Agent 能力来快速原型开发,OpenAI 的 API(尤其是 Responses API) 通常是更顺畅的选择。

如下图所示:

  1. 按下 win+s 键
  2. 找到 “基于虚拟化的安全性” 将它关闭

关闭方法:

  1. 搜索 “内核隔离” ,打开窗口后将内存完整性关闭
    2.png
  2. 打开注册表,找到“HKEY_LOCAL_MACHINE/System\CurrentControlSet\Control\DeviceGuard”,选中后双击“EnableVirtualizationBasedSecurity”,将DWORD值设置为0,重启电脑
  3. 重启后正常

最近在尝试使用 Electron 开发桌面端应用。

搭建 Electron 开发环境主要分为两步:先安装 Node.js,再通过脚手架工具创建一个项目模板。

1. 安装前置环境:Node.js

Electron 本身是一个 Node.js 模块,所以必须先安装 Node.js。

  • 下载安装:访问 Node.js 官网下载 LTS(长期支持)版本 的安装包并安装。对于 Windows 用户,也可以使用 winget install OpenJS.NodeJS 命令来安装。
  • 验证:安装完成后,打开终端(命令行),输入以下命令,能显示出版本号即表示成功。

    node -v
    npm -v
注意:Electron 虽然由 Node.js 驱动,但它会打包自己的 Node.js 运行时。这意味着你的最终用户不需要提前安装 Node.js 就能运行你的应用。

2. 创建项目:使用 Electron Forge 脚手架

手动配置 Electron 项目比较繁琐,推荐使用官方维护的脚手架工具 Electron Forge,它能一键生成包含打包工具的基础项目。

在终端中运行以下命令来创建项目(my-app 是你的项目名称,可自定义):

npm create electron-app@latest my-app

运行后,它会交互式地询问你几个配置选项,按推荐选择即可:

  1. Bundler(打包器):建议选 None。这样在集成原生模块时无需额外配置。
  2. Language(语言):选 JavaScript(如果你熟悉 TypeScript 也可以选它)。
  3. Electron Version:选 Latest(最新版)。
  4. Initialize git:按需选择。

3. 运行与开发

进入项目目录并启动应用:

cd my-app
npm start

如果一切顺利,你会看到一个默认的 Electron 窗口弹出,这说明开发环境已经就绪。

4. 网络优化(国内环境)

如果在安装依赖或首次启动(下载 Electron 二进制包)时速度很慢或失败,可以配置国内镜像源。在项目根目录的 .npmrc 文件中添加以下内容:

ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/

5. 基础项目结构

脚手架生成的项目通常包含以下核心文件,了解它们有助于你开始开发:

  • package.json:项目配置,包含 main 入口(通常是 main.js)和 start 脚本。
  • main.js:主进程文件。它管理应用的生命周期、创建窗口,并运行在完整的 Node.js 环境中。
  • index.html:渲染进程的入口页面。所有界面相关的 HTML/CSS/JS 都从这里开始,它本质上是一个浏览器窗口。
  • preload.js(可选):用于在渲染进程和主进程之间安全地暴露 API。

Android 用户是否也想拥有像 iOS 一样在一个页面滑动到完全回退之前就能看到之前的页面的功能呢?

预测性返回(Predictive Back)是 Android 13 引入的手势导航特性。当用户在屏幕边缘执行返回滑动时,当前界面会跟随手势缩小或移动,同时后方界面(或主屏幕)开始显现。用户可以在看到预览后决定是否松开手指完成返回,或反向滑动取消操作。

优势与劣势

优势:
提前预览返回目标,避免因误触边缘而意外退出应用或丢失当前操作状态,可视化的预览让用户明确知道“返回”会去哪里,交互更直观。配合系统动画,跨 Activity、跨任务以及返回主屏幕的过渡更加自然连贯。

劣势:
生态适配不一致是当前最主要的问题。许多第三方应用(如部分版本的 Spotify、Chrome)尚未完全适配,导致部分场景下有预览动画,部分场景下只有传统返回箭头,交互体验割裂。对于不熟悉该特性的用户,同一个返回手势在不同应用中表现不同,可能造成困惑,部分用户因此回流至传统的三键导航。旧版 onBackPressed 和 KEYCODE_BACK 回调在新机制下行为改变,开发者必须迁移至新的 API 才能正确拦截手势。

标准实现代码

最推荐的方式是使用 AndroidX 的向后兼容 API。如果你的项目使用了 Compose,可以直接使用 PredictiveBackHandler;如果是传统 View 体系或需要更底层的控制,则通过 OnBackPressedCallback 配合 OnBackPressedDispatcher。

Jetpack Compose(推荐):
使用 PredictiveBackHandler 可以获取 Flow<BackEventCompat>,实时读取手势进度(progress 值 0~1)来实现自定义动画。

// 确保依赖: androidx.activity:activity-compose:1.8.0+
PredictiveBackHandler(enabled = shouldInterceptBack) { progress: Flow<BackEventCompat> ->
    try {
        progress.collect { backEvent ->
            // 根据 backEvent.progress 更新 UI 动画,例如缩放、位移
            myAnimatable.snapTo(1f - backEvent.progress)
        }
        // 手势完成,执行真正的返回逻辑(如 popBackStack)
        navController.popBackStack()
    } catch (e: CancellationException) {
        // 手势被取消,恢复 UI 状态
        myAnimatable.animateTo(1f)
        throw e
    }
}

传统 View 体系(AndroidX):
核心是使用 OnBackPressedCallback,它会在启用预测性返回的应用中自动获得动画进度回调。

// 1. 依赖: androidx.activity:activity:1.6.0+
// 2. AndroidManifest 中启用(默认通常已启用,可显式声明)
// <application android:enableOnBackInvokedCallback="true" ...>

class MyActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 创建 Callback,仅当需要拦截时才启用
        val callback = object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
                // 执行自定义返回逻辑(如切换 Fragment)
                supportFragmentManager.popBackStack()
            }
            // 如需自定义动画,重写进度相关方法
            // override fun handleOnBackProgressed(backEvent: BackEventCompat) { ... }
            // override fun handleOnBackCancelled() { ... }
        }
        onBackPressedDispatcher.addCallback(this, callback)
    }
}

GitHub Copilot 是一项由 AI 为你进行结对编程的服务。Copilot 的意思是副驾驶,所以可以想象成在我们写代码时,它在旁边轻轻地帮助我们。它与 ChatGPT 那样的聊天形式不同,即使不给出特别指示,只要你写代码,它就会自然地给出建议。

例如,当用 Python 写到 def generate_random_ 时,GitHub Copilot 就会为你建议剩余的代码。只要按下 Tab 键,就可以采用建议的代码。虽然一开始很难得到非常完美的代码,但即使只是只有60分的代码,能先有一个草稿也是非常值的。

创建 GitHub 账号并购买方案

使用 Copilot 的前提是需要一个 GitHub 账号。所以请你先注册一个,但是如果是程序员的话,基本都有 Github 账号吧()

个人合同

个人使用的方案是 GitHub Copilot for Individuals。按月支付为每月 10 美元,按年支付为每年 100 美元。支付使用信用卡。

企业合同

企业使用的方案是在 Organization 中签订 Copilot for Business。每用户每月 19 美元。支付使用信用卡,请注册法人用信用卡。在这种情况下,可以强制对属于 Organization 的用户应用统一策略,因此可以部分控制使用。目前,可以选择是否阻止与公共代码匹配的建议。如果将其设为 Blocked,就可以抑制无意中挪用他人公开代码而导致许可证侵权的风险。

1.png

Organization 的管理员可以按如下方式选择使用用户:不让任何人使用(解约)、所属全员、选择的用户。由于只会按实际使用的用户计费,管理员应从公司内部招募希望使用者,或整理申请工作流。

将 GitHub Copilot 引入 VSCode

如果网络必须通过代理服务器才能连接互联网,则需要进行代理设置。从顶部菜单点击 File > Preference > Settings。

在打开的 Settings 画面中,打开左侧菜单 Application > Proxy。

在显示的 Proxy (Applies to all profiles) 中输入代理服务器 URL。

3.avif

添加 Extension

将 GitHub Copilot 用的 Extension(扩展功能)添加到 VSCode。

打开 VSCode,点击左侧菜单中四个方形的图标(下图中红框),在上方出现的搜索文本输入框中输入“copilot”。

4.avif

点击最上方出现的 GitHub Copilot 右侧的 "Install" 按钮。

账号设置

如果 VSCode 右下角显示 GitHub Copilot 图标(下图中红框),就说明 GitHub Copilot 已经可以使用了。

5.avif

如果显示的不是 GitHub Copilot 图标,而是旋转的图标,则说明正在等待登录 GitHub。如果消息关闭了,点击右下角的铃铛即可打开消息。

6.avif

点击 "Sign in to GitHub",通过浏览器登录 GitHub。会出现几次确认消息,请允许并继续。如果 GitHub Copilot 图标上有斜线,则说明由于某种原因认证失败了。点击 VSCode 左下方的用户图标 > 自己的 GitHub 账号名 (GitHub) > Sign Out,先登出并重启 VSCode。之后,再重新登录 GitHub 试试看。