直接回答:用 DeepSeek 写代码,先根据任务选择入口:只问一个函数或解释报错,用官方聊天窗口即可;需要读取仓库、生成 diff、运行测试,使用接入 DeepSeek 的代码智能体;需要批处理或自建工具链,再调用 API。截至 2026 年 7 月 16 日,DeepSeek 官方 API 的当前模型名是 deepseek-v4-flash 与 deepseek-v4-pro,旧别名 deepseek-chat、deepseek-reasoner 将于北京时间 2026 年 7 月 24 日 23:59 弃用。无论哪条路线,模型输出都只是候选补丁,必须经过测试、安全检查、人工复核和可回滚发布。
本文面向会使用终端、Git 或至少一种编程语言的中文用户,回答“DeepSeek 怎么写代码、模型怎么选、如何接入 Claude Code/OpenCode、怎样提供项目上下文、如何验收和保护代码”这些连续问题。只想了解产品和模型家族,可先看本站的 DeepSeek 是什么;本文不把普通聊天、API 开发、旧 DeepSeek-Coder 权重和代码智能体混成一个产品。
重要更正:旧版教程使用并不存在于当前托管 API 的 deepseek-coder,把密钥写进源码,把 temperature=0.7 当成代码准确性开关,还建议直接把整个项目投喂给模型。这些做法会造成 400 错误、密钥泄露、费用失控和敏感代码外发,本文全部撤回。未来重复稿 104639 中的 deepseek-sdk、deepseek-coder-v2 与固定 16GB 显存建议也不作为当前 API 教程保留。
DeepSeek 写代码有哪三种路线?
| 路线 | 模型能看到什么 | 适合任务 | 主要风险 | 合格交付物 |
|---|---|---|---|---|
| 官方聊天窗口 | 你粘贴或上传的内容 | 解释代码、生成小函数、分析报错 | 上下文缺失、复制粘贴泄密 | 可人工阅读的建议或代码片段 |
| 代码智能体 | 被授权读取的仓库文件、命令结果 | 跨文件检索、修改、测试与迭代 | 过度权限、错误命令、供应链与提示注入 | 小范围 diff、测试记录、风险说明 |
| 自建 API | 应用发送的消息、工具结果和历史 | 批处理、结构化输出、内部工作流 | 密钥、重试、并发、成本、日志和数据责任 | 可重放请求、版本身份、usage 与验收记录 |
DeepSeek 的当前快速开始文档同时列出 OpenAI 与 Anthropic 兼容格式,并明确可接入 Claude Code、GitHub Copilot、OpenCode 等工具。这里的“兼容”是接口层兼容,不表示第三方工具的所有字段、权限模型和功能都与原供应商完全相同。

2026 年应该使用哪个 DeepSeek 模型?
DeepSeek 在 2026 年 4 月 24 日发布 V4 Preview。官方V4 发布说明和更新日志均要求把模型参数改为 deepseek-v4-flash 或 deepseek-v4-pro。不要从旧博客复制 deepseek-coder、deepseek-chat-2026 或其他想象出来的模型名。
| 模型 | 编辑建议定位 | 官方上下文/最大输出 | 百万 token 价格(人民币) | 先验证什么 |
|---|---|---|---|---|
deepseek-v4-flash |
快速、低成本基线;简单修改与子任务 | 1M / 最大 384K | 缓存命中输入 0.02 元;未命中 1 元;输出 2 元 | 速度、简单任务成功率、缓存命中 |
deepseek-v4-pro |
复杂推理、规划和高价值补丁候选 | 1M / 最大 384K | 缓存命中输入 0.025 元;未命中 3 元;输出 6 元 | 是否真的比 Flash 提高保留集通过率 |
价格和能力来自 2026-07-16 复核的官方模型与价格页。1M 是可接受输入容量,不是“整个仓库都能无损理解”;384K 是最大输出规格,不是应该让模型一次生成几十万 token。代码任务更应控制 diff 大小、测试反馈和审查成本。
| 旧写法 | 当前含义 | 动作 | 截止时间 |
|---|---|---|---|
deepseek-chat |
兼容期映射到 V4 Flash 非思考模式 | 显式迁移到 deepseek-v4-flash |
2026-07-24 23:59(北京时间) |
deepseek-reasoner |
兼容期映射到 V4 Flash 思考模式 | 显式选择模型并设置 thinking | 同上 |
deepseek-coder* |
历史开放权重/旧模型家族,不是当前托管 API 名称 | 本地权重另行核对模型卡、许可证和硬件 | 不适用 |
历史 DeepSeek-Coder 仍有研究和本地部署价值,但要以其官方仓库中的具体权重与许可证为准。它与当前 V4 托管服务不是同一个采购或部署对象。
先写任务合同,再让模型看代码
“帮我修一下”不能形成可验收任务。把需求写成任务合同,让模型和审查者知道成功、失败与禁止范围。提示设计的通用方法可参考本站 Prompt Engineering 工程指南,但代码任务必须额外绑定仓库 revision、测试命令和权限边界。
| 字段 | 要写什么 | 不合格示例 | 合格示例 |
|---|---|---|---|
| 目标 | 用户可观察的行为变化 | 优化订单模块 | 重复提交同一 payment_id 时返回原订单,不重复扣款 |
| 环境 | 语言、框架、版本、OS、revision | Python 项目 | Python 3.12、FastAPI 0.115、revision 4ab2c71 |
| 输入/输出 | 类型、示例、错误行为 | 处理 JSON | 给定 schema;非法 currency 返回 422 |
| 允许修改 | 目录、文件、依赖边界 | 随便改 | 仅 src/order.py 与对应测试;禁止新增依赖 |
| 验收 | 可执行命令与预期 | 确保能跑 | pytest -q、ruff check . 均退出 0 |
| 停止线 | 需要人工决定的条件 | 没有 | 涉及数据库迁移、认证、密钥或公开 API 时停止 |
可直接使用的首轮指令
任务:修复重复 payment_id 导致重复创建订单的问题。
环境:Python 3.12 / FastAPI 0.115 / revision 4ab2c71。
允许读取:src/order.py、tests/test_order.py、pyproject.toml。
禁止:不要读取 .env;不要新增依赖;不要修改数据库 schema。
流程:
1. 先只读分析调用链和现有测试,不改文件;
2. 给出最多 6 步的修改计划、风险和待确认问题;
3. 获得批准后生成最小 diff;
4. 运行 pytest -q 与 ruff check .,逐项报告真实退出码;
5. 若测试失败,不得删除或弱化原测试。
交付:变更摘要、diff、测试结果、未解决风险和回滚方法。
| 上下文类型 | 应该提供 | 不应该提供 | 原因 |
|---|---|---|---|
| 代码 | 相关文件、接口、最小调用链 | 无筛选的整个 monorepo | 减少噪声、费用和权限面 |
| 错误 | 完整堆栈、复现输入、版本 | 只说“报错了” | 错误位置不等于根因 |
| 数据 | 脱敏 fixture 与 schema | 真实客户、Token、数据库快照 | 隐私、合同与泄露风险 |
| 规范 | 仓库真实 lint/test 命令 | 让模型猜框架版本 | 防止生成过时 API |
| 依赖 | lockfile 相关片段和现有版本 | 随意安装模型推荐包 | 供应链与兼容风险 |
用 Claude Code 或 OpenCode 接入 DeepSeek
DeepSeek 官方代码工具接入指南给出了 Claude Code 与 OpenCode 路线。Claude Code 使用 Anthropic 兼容地址 https://api.deepseek.com/anthropic;OpenCode 当前文档要求版本至少为 v1.14.24,并在 /connect 中选择 DeepSeek。安装第三方工具前仍应核对工具自己的发行页、包名、签名和权限,官方列出接入方式并不替你审计第三方软件。
# Linux / macOS:仅设置当前 shell;不要把真实 key 写进仓库
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
export ANTHROPIC_AUTH_TOKEN="$DEEPSEEK_API_KEY"
export ANTHROPIC_MODEL="deepseek-v4-pro[1m]"
export CLAUDE_CODE_SUBAGENT_MODEL="deepseek-v4-flash"
cd /path/to/your/repository
claude
Windows PowerShell 使用 $env:ANTHROPIC_BASE_URL=... 和 $env:ANTHROPIC_AUTH_TOKEN=$env:DEEPSEEK_API_KEY。不要把真实 key 写进截图、settings.json、PowerShell 历史或提交记录。DeepSeek 的Anthropic 兼容说明列出了被忽略或不支持的字段,例如 mcp_servers、图像、文档和部分工具结果;因此“能连上”不等于原工具全部功能可用。
| 权限层 | 初始设置 | 何时放开 | 必须拒绝 |
|---|---|---|---|
| 文件读取 | 限定仓库与相关目录 | 计划说明新增文件的必要性 | 家目录、密钥目录、无关项目 |
| 文件写入 | 默认关闭或逐次确认 | 只读计划批准后 | 删除备份、覆盖生成物来源 |
| 终端 | 只允许测试、lint、只读查询 | 命令、目录与影响可见 | 破坏性命令、提权、未知脚本管道 |
| 网络 | 默认关闭 | 下载来源、版本和哈希已确认 | 上传源码、日志、密钥或生产数据 |
| Git | 允许 diff/status,禁止自动 push | 人工复核后提交 | 改写历史、绕过保护分支 |
DeepSeek 官方还维护了 Agent 接入清单,但清单包含不同维护者和安全模型的工具。选择工具时至少核对仓库所有者、最近发行、许可证、安装脚本、沙箱、遥测、密钥保存位置和更新机制。
不用代码智能体时,怎样调用 DeepSeek API 写代码?
API 更适合你自己控制上下文、日志和输出合同的场景。下面代码依据官方快速开始改写,只从环境变量读取密钥,显式使用当前模型,并要求先给补丁计划。它没有被本站拿真实账户发送,因此只证明调用结构与当前文档一致,不证明模型会生成正确代码。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://api.deepseek.com",
)
response = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[
{"role": "system", "content": "你是代码审查助手。先给计划,不声称运行未运行的命令。"},
{"role": "user", "content": "分析给定函数的并发问题;返回风险、最小修改和应运行的测试。"},
],
reasoning_effort="high",
extra_body={"thinking": {"type": "enabled"}},
stream=False,
)
print(response.choices[0].message.content)
| 参数/字段 | 当前行为 | 代码任务建议 | 常见误区 |
|---|---|---|---|
model |
V4 Flash 或 V4 Pro | 固定精确模型并记录 | 复制已弃用或虚构名称 |
thinking |
默认启用;可 enabled/disabled | 按任务对照测试,不默认越多越好 | 把思考文本当正确性证明 |
reasoning_effort |
high/max;兼容映射存在 | 复杂规划才提高 | 把 low/medium 当真实低档 |
temperature |
思考模式下无效但不一定报错 | 不要用它解释思考模式代码稳定性 | 旧稿称 0.7 平衡准确与创造 |
reasoning_content |
工具调用轮次需正确回传 | 使用官方 SDK 结构并保留完整消息 | 丢失后出现 400 |
这些边界来自思考模式文档。如果要让模型调用编译器、测试器或内部 API,先阅读本站 Function Calling 权限与幂等指南;模型只提出函数名和参数,真正执行、鉴权、超时、重试和回滚仍由你的应用负责。DeepSeek 的Tool Calls 文档也明确展示了应用端函数映射。
结构化输出、FIM 和缓存什么时候有用?
| 能力 | 适合代码任务 | 当前限制 | 验收 |
|---|---|---|---|
| JSON Output | 问题清单、变更计划、审查结果 | 提示中需出现 json 和示例;偶尔可能空内容 | 本地 JSON parse + 业务 schema 校验 |
| FIM(Beta) | 在前缀与后缀之间补代码 | Beta;仅非思考模式;使用 beta base URL | 语法、类型、单测与上下文一致性 |
| 上下文缓存 | 重复使用稳定仓库说明或长前缀 | 默认启用、尽力而为,不保证命中 | 读取 usage 中 hit/miss token |
| 1M 上下文 | 大型依赖分析的容量上限 | 容量不等于每个位置可靠召回 | 首/中/尾关键事实与跨文件引用测试 |
官方 JSON Output 要求设置 response_format={"type":"json_object"},但“合法 JSON”不等于字段事实正确;必须继续做 schema 与语义校验。FIM Completion仍是 Beta,不应成为没有回退路线的生产依赖。
上下文缓存文档说明缓存按重叠前缀匹配,构建需要时间,通常数小时到数天后清理,并且不保证 100% 命中。把稳定的系统规则和仓库摘要放前面、变化问题放后面可能提高复用,但应以 prompt_cache_hit_tokens 和 prompt_cache_miss_tokens实测,不得把假设命中写入预算。
DeepSeek 代码补丁必须通过哪些验收?
生成代码“看起来合理”只是起点。本文提供一个纯 Python 标准库的补丁记录闸门:它不执行模型、不证明代码安全,只检查变更记录是否包含测试、安全检查、人工批准,并拦截密钥文件与未批准的高风险路径。本站实际运行了通过和失败样例:通过样例返回 {"valid": true};失败样例识别出 .env、认证目录、失败测试与缺少人工批准四项错误。
python deepseek-code-patch-gate.py patch-record.json --max-files 40
通过样例:
{"valid": true, "errors": []}
失败样例(节选):
{"valid": false, "errors": [
"secret-bearing path must not be submitted: .env",
"high-risk path changed without human approval",
"tests failed: pytest -q",
"human_approved must be true before merge"
]}
40 是本教程为演示设置的可配置编辑阈值,不是行业标准。项目应根据仓库结构、变更类型和审查能力制定自己的上限。完整记录至少包含 task_id、精确模型、repo revision、changed_files、tests、security_checks 和 human_approved。
| 验收层 | 证据 | 不能接受 | 失败动作 |
|---|---|---|---|
| 语法/类型 | 编译器、类型检查退出码 | 模型说“没有语法错误” | 停止并定位 |
| 单元测试 | 原测试 + 新边界测试 | 为了通过而删除或弱化测试 | 恢复测试,重做补丁 |
| 集成/契约 | 真实接口或可控替身 | 只跑 happy path | 补失败、超时、并发用例 |
| 静态/依赖 | lint、SAST、依赖扫描 | 让同一个模型自我保证安全 | 独立工具与人工复核 |
| 业务 | 任务合同中的可观察结果 | 只比较代码行数 | 退回需求或实现 |
| 回归 | 保留集、性能与兼容结果 | 只看新增测试 | 缩小变更或回滚 |
更完整的 AI 输出风险识别见本站 AI 幻觉核验指南;模型或提示升级后的生产评测,可使用 AI 系统可用性测试方法。NIST 的 生成式 AI SSDF Community Profile强调把 AI 风险纳入软件全生命周期,而不是把安全责任交给一次模型回答。
代码、密钥和隐私数据怎样保护?
| 数据 | 默认处理 | 允许发送前 | 禁止动作 |
|---|---|---|---|
| API Key/私钥 | 永不进入提示或仓库 | 放入服务端密钥管理器或环境变量 | 浏览器端、截图、日志、公开仓库 |
| 客户与个人数据 | 不发送 | 确认依据、最小化、脱敏与权限 | 把生产数据库当调试 fixture |
| 专有源码 | 最小文件、最小片段 | 核对公司政策、合同和数据位置 | 为了“1M”整库上传 |
| 第三方代码 | 保留来源与许可证 | 确认允许修改和再分发 | 让模型移除版权/NOTICE |
| 日志 | 先删 token、cookie、URL 参数 | 使用脱敏复现样例 | 原样粘贴生产日志 |
DeepSeek 的开放平台服务条款明确要求保护 API Key,不得公开或放在浏览器等客户端代码中,并要求开发者建立数据安全、监控与应急措施。其隐私政策还说明,下游开发者系统收集的终端用户数据不由该隐私政策覆盖;自建应用必须单独履行自己的告知、授权、安全和合规责任。这里是工程风险提示,不构成法律意见。
成本、缓存与模型路由怎么计算?
代码智能体会反复发送仓库规则、历史消息和工具输出,单次便宜不代表一个任务便宜。官方按输入缓存命中、输入缓存未命中和输出分别计费;实际 token 以响应 usage 为准,不能用字符数代替账单。Token 估算边界见官方 Token 用量文档。
| 示例任务 | 输入 | 输出 | 假设 | Flash 估算 | Pro 估算 |
|---|---|---|---|---|---|
| 首次仓库分析 | 200k | 10k | 全部未命中 | 0.20 + 0.02 = 0.22 元 | 0.60 + 0.06 = 0.66 元 |
| 重复前缀迭代 | 180k hit + 20k miss | 10k | 仅为算例,非命中承诺 | 0.0036 + 0.02 + 0.02 = 0.0436 元 | 0.0045 + 0.06 + 0.06 = 0.1245 元 |
以上仅按 2026-07-16 单价复算,不包含失败重试、第三方代码工具订阅、网络、人工审查和 CI 成本。路由策略应先用 Flash 跑简单任务和子任务,把在保留集上明显受益的复杂规划交给 Pro;是否受益必须用相同输入、相同工具权限、相同测试与相近尝试次数验证。跨平台选择可参考本站 AI 平台同任务评测方法。
常见错误怎么排查?
| 现象/状态码 | 优先检查 | 正确处理 | 不要做 |
|---|---|---|---|
| 400 | 模型名、请求结构、thinking 工具轮次 | 按错误信息与当前 API schema 修正 | 盲目重复请求 |
| 401 | 环境变量、Key 状态 | 轮换泄露密钥,核对服务端配置 | 把 key 打进日志 |
| 402 | 余额与账单 | 停止自动重试,设置预算告警 | 无限充值或静默失败 |
| 429 | 账户级并发、队列 | 退避、排队、限流和可选回退 | 多建 key 绕过账户限额 |
| 500/503 | 服务端状态、幂等性 | 带抖动退避;只重试安全请求 | 重复执行有副作用工具 |
| 连接不断空行/注释 | keep-alive 解析 | 兼容空行与 SSE 注释,设置应用超时 | 把 keep-alive 当模型输出 |
| 补丁越来越大 | 任务合同、上下文和失败反馈 | 回到最小复现,拆分任务 | 继续让模型“顺便重构” |
状态码依据官方错误码页。并发按账户计算,而不是每个 Key 独立;当前限速与隔离文档列出 Pro 500、Flash 2500 的账户并发上限,并说明请求等待期间可能持续返回空行或 SSE keep-alive 注释。上线时仍要读取自己账户的当前限制。
DeepSeek 写代码常见问题
DeepSeek 可以直接读取整个 GitHub 仓库吗?
普通聊天不会自动看到整个仓库。代码智能体只有在你授权文件访问后才能读取;API 只能看到应用发送的内容。即使容量达到 1M,也应先提供最小相关上下文,并用跨文件引用与位置切片测试可靠性。
DeepSeek-Coder 还是现在推荐的 API 模型吗?
不是。DeepSeek-Coder 是历史代码模型/开放权重家族;截至 2026-07-16,当前托管 API 明确列出 V4 Flash 和 V4 Pro。需要本地部署旧权重时应单独核对模型卡、许可证、硬件和推理框架。
代码任务应该关闭思考模式吗?
没有对所有任务成立的答案。思考模式默认启用,适合复杂规划;简单补全可能用非思考模式和 Flash 更经济。用同一任务集比较正确率、测试通过率、延迟和总成本,不要只看回答长度。
生成代码通过单元测试就能上线吗?
不能。单测可能漏掉权限、并发、依赖、集成、性能和业务约束。至少还要做 lint/type、集成/契约、安全与人工 diff 复核,高风险改动需要灰度和回滚。
怎样判断 DeepSeek 是否真的提升了编程效率?
记录完整任务耗时、首次可验收补丁率、重试次数、人工修复时间、测试回归和单位成功任务成本。只计算“生成用了几秒”会忽略审查与返工,不能代表交付效率。
结论:把 DeepSeek 放进可验证的软件流程
DeepSeek 写代码的正确起点不是“最强提示词”,而是选对入口、锁定当前模型、限制权限并定义验收。小片段用聊天;仓库变更用受控代码智能体;可重复业务才自建 API。迁移 deepseek-chat/deepseek-reasoner 后,仍要记录模型、revision、上下文、diff、测试、安全检查、成本和人工批准。模型可以加速搜索和生成,但只有可复现证据、独立检查和回滚路径,才能把候选代码变成可上线代码。
