Cursor在内网环境配置自定义DeepSeek API

关键字

Cursor、DeepSeek、API配置、内网代理、HTTP/2


背景环境

使用Cursor集成环境开发程序。但是我使用公司的内网并不能使用cursor自带的模型,于是我就想使用DeepSeek官方的API服务。
环境:Windows 11系统


解决过程

网络检测

首先进行环境检测,在控制台中根据DeepSeek的API curl命令,检测网络是否通畅:

C:\Users\wangq>curl https://api.deepseek.com
curl: (28) Failed to connect to api.deepseek.com port 443 after 21087 ms: Could not connect to server

结果:不能访问服务器

但是网页版本就可以访问,环境区别就在于浏览器走了代理(内网环境很正常)。

首先配置代理:

C:\Users\wangq>set http_proxy=http://proxy-server:port
C:\Users\wangq>set https_proxy=http://proxy-server:port
C:\Users\wangq>curl https://api.deepseek.com
{
  "event_id": "30-inst-5-20250318161115-8e303def",
  "error_msg": "Not Found. Please check the configuration."
}

说明我的网络可以访问到DeepSeek的API


Cursor配置DeepSeek

  1. 添加自定义模型
    cursor添加自定义模型

  2. 设置DeepSeek的API Key

    • 这里使用OpenAI API Key,Base URL设置:https://api.deepseek.com
    • 当然也可以使用其他平台的api,比如阿里百炼,硅基流动等等。
      cursor设置apikey
  3. 其他模型冲突问题

    • 暂时关闭其他自带模型,只留自定义的模型。
  4. 配置Cursor代理

    • 在VS Code Setting中搜索proxy
    • 通过修改配置的方式修改代理
      设置代理

在配置中添加以下代码:

"http.proxy": "http://proxy-server:port",
"https.proxy": "https://proxy-server:port",
"http.proxyStrictSSL": false

配置修改代理

按理说到这一步就可以正常访问DeepSeek的API了,但是还是不行
cursor网络错误

  1. 禁用Http2
    • 勾选Disable Http2配置
    • 成功解决问题
      cursor网络错误

总结

  1. 内网环境特殊性
    • 公司代理可能对HTTP/2流量有特殊处理
    • 公网环境下不需要此配置
  2. 问题排查思路
    • 从基础网络连通性开始
    • 逐步排查代理配置
    • 最后考虑协议层问题
  3. 经验教训
    • 内网环境配置需要更多调试
    • 协议级别的配置可能影响API调用
### 离线状态下使用 Cursor 的方法 在离线状态下,`cursor` 的使用通常涉及两种主要场景:一种是通过数据库游标(如 `pymysql` 操作 MySQL 数据库时的游标),另一种是通过浏览器端的 IndexedDB 或 Web SQL 使用 API 游标。 #### 1. 数据库游标(以 pymysql 为例) 在离线环境中,如果需要操作本地数据库(例如 SQLite),可以使用类似 `pymysql` 的库来创建和操作游标对象。以下是具体步骤[^2]: - **连接到数据库**:首先需要建立与本地数据库的连接。 - **获取游标对象**:通过调用连接对象的 `cursor()` 方法获取游标对象。 - **执行 SQL 查询**:使用游标对象的 `execute()` 方法执行 SQL 查询语句。 - **处理结果**:可以通过游标的 `fetchall()`、`fetchone()` 或 `fetchmany()` 方法获取查询结果。 - **提交事务**:在修改数据后,需调用 `commit()` 提交事务。 - **关闭资源**:最后记得关闭游标和数据库连接以释放资源。 示例代码如下: ```python import pymysql # 建立数据库连接 db = pymysql.connect(host='localhost', user='root', password='password', database='test_db', charset='utf8') # 获取游标对象 cur = db.cursor() # 执行 SQL 查询 cur.execute("SELECT * FROM users") # 获取查询结果 results = cur.fetchall() # 关闭游标和连接 cur.close() db.close() ``` #### 2. IndexedDB 中的 API 游标 IndexedDB 是一种支持在浏览器中存储大量结构化数据的 NoSQL 数据库,适用于离线场景。其游标功能允许开发者遍历或查找存储对象中的数据[^5]。 - **打开游标**:通过 `objectStore.openCursor()` 方法打开一个游标。 - **遍历数据**:使用事件监听器(如 `onsuccess`)处理游标返回的结果。 - **访问键值对**:通过 `cursor.key` 和 `cursor.value` 分别获取当前游标的键和值。 - **继续遍历**:调用 `cursor.continue()` 方法移动到下一个记录。 示例代码如下: ```javascript var request = indexedDB.open("myDatabase", 1); request.onsuccess = function(event) { var db = event.target.result; var transaction = db.transaction(["myObjectStore"], "readonly"); var objectStore = transaction.objectStore("myObjectStore"); objectStore.openCursor().onsuccess = function(event) { var cursor = event.target.result; if (cursor) { console.log("Key:", cursor.key, "Value:", cursor.value); cursor.continue(); } else { console.log("All entries displayed."); } }; }; ``` #### 3. Web SQL 中的游标 虽然 Web SQL 已被 W3C 废弃,但在某些旧项目中仍可能遇到它[^4]。Web SQL 使用 SQL 语句进行查询,但不直接提供游标对象。开发者需要通过 `SELECT` 查询结果并手动处理数据。 示例代码如下: ```javascript var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function(tx) { tx.executeSql('SELECT * FROM myTable', [], function(tx, results) { var len = results.rows.length; for (var i = 0; i < len; i++) { console.log(results.rows.item(i)); } }); }); ``` ### 注意事项 - 在离线环境中,确保数据库文件或 IndexedDB 存储可用。 - 如果使用 SQLite,注意文件路径和权限问题。 - IndexedDB 更适合现代浏览器环境下的离线存储需求,而 Web SQL 不再推荐使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值