1. 引言:先别急着选工具,先判断你缺什么

很多开发者面对 DeepSeek Harness、Codex、Claude Code、LangGraph 这四个名字时,第一反应是「哪个更好用」。但更准确的问法是:你当前缺的是产品、底盘,还是工作流?

这四个工具并不在同一层:

  • DeepSeek Harness:面向模型评测与推理压测的工程框架,属于「底盘」层。
  • Codex:OpenAI 的编码智能体产品,属于「产品」层。
  • Claude Code:Anthropic 的终端编码智能体产品,属于「产品」层。
  • LangGraph:构建有状态、可编排的 LLM 应用框架,属于「工作流」层。

本文用一张选型决策表、四个实战案例和一组对比实验,帮你把「缺什么」翻译成「选什么」。

2. 四者定位:产品、底盘、工作流

先建立统一坐标系。下面这张表从定位、核心能力、适用人群三个维度做区分。

工具 定位 核心能力 适用人群
DeepSeek Harness 底盘 模型评测、推理压测、多数据集管理 算法工程师、模型平台团队
Codex 产品 云端编码智能体、沙箱执行、PR 自动生成 追求开箱即用的开发者
Claude Code 产品 终端内编码智能体、长上下文、工具调用 偏好本地终端工作流的开发者
LangGraph 工作流 有状态图编排、人机协同、可恢复执行 需要自定义 Agent 流程的工程师

一句话总结:要开箱即用选产品,要评测模型选底盘,要编排复杂流程选工作流。

3. 决策表:按你的场景直接查

下面这张决策表覆盖了最常见的 8 种场景,可以直接对照。

你的核心诉求 推荐工具 理由
快速让 AI 帮我改代码、提 PR Codex 云端沙箱,零配置,直接对接 GitHub
在本地终端里深度重构项目 Claude Code 长上下文 + 终端内交互,适合大仓库
对比 DeepSeek 不同版本的推理质量 DeepSeek Harness 内置评测集与指标,可量化对比
压测自建模型的并发与延迟 DeepSeek Harness 支持自定义请求脚本与并发配置
构建多步骤 Agent,如「检索→推理→写报告」 LangGraph 有状态图,节点可编排、可恢复
需要人工审批后再执行关键操作 LangGraph 内置 interrupt 机制,支持人机协同
既要编码智能体,又要自定义评测 Claude Code + DeepSeek Harness 产品负责干活,底盘负责验证
既要工作流编排,又要编码能力 LangGraph + Codex 工作流负责调度,产品负责执行

4. 实战一:DeepSeek Harness——评测你的模型底盘

假设你部署了 DeepSeek 的蒸馏模型,想对比它和原版在数学推理上的差距。DeepSeek Harness 的核心用法是「配数据集、跑评测、看指标」。

下面是一个最小可运行的评测配置示例。

from deepseek_harness import Harness, Dataset, Metric
1. 定义评测数据集
dataset = Dataset.from_jsonl(
"math_500.jsonl",
input_key="question",
output_key="answer"
)
2. 定义评测指标
metric = Metric.composite([
Metric.exact_match(),
Metric.llm_judge(model="deepseek-chat")
])
3. 初始化 Harness 并运行
harness = Harness(
model_endpoint="http://localhost:8000/v1",
model_name="deepseek-ai/DeepSeek-R1-Distill-Qwen-7B",
dataset=dataset,
metric=metric,
concurrency=16
)
report = harness.run()
print(report.summary())
输出示例:
exact_match: 0.72
llm_judge_pass_rate: 0.85

关键点:Harness 解决的是「我的模型到底行不行」的问题。它不帮你写业务代码,但能帮你量化模型能力,是典型的底盘工具。

5. 实战二:Codex——开箱即用的编码产品

Codex 的典型场景是「给我一个 Issue,还你一个 PR」。它把模型、沙箱、Git 操作封装成了完整产品。

下面是一个通过 Codex CLI 完成任务的示例。

# 1. 在仓库根目录启动 Codex
codex
2. 输入自然语言任务
> 修复 src/utils/date.ts 中时区转换的 bug,
> 并补充对应的单元测试。
3. Codex 自动完成:
- 定位 bug
- 修改代码
- 运行测试
- 生成 commit 和 PR

Codex 的核心价值是产品化:你不需要关心模型调用、上下文管理、沙箱安全,它把这一切封装成了「输入任务、输出 PR」的体验。

6. 实战三:Claude Code——终端里的深度重构

Claude Code 更适合在本地终端里处理大型仓库。它的优势是长上下文和工具调用能力。

下面是一个典型的重构会话示例。

# 1. 在项目目录启动
claude
2. 提出重构需求
> 把整个 services/ 目录下的 HTTP 客户端
> 从 axios 迁移到 fetch,保持接口不变。
3. Claude Code 会:
- 扫描 services/ 下所有文件
- 逐个迁移并保持导出签名一致
- 运行类型检查确认无破坏

Claude Code 的定位是深度编码产品:它不只是一个补全工具,而是一个能理解项目结构、执行多文件修改的终端智能体。

7. 实战四:LangGraph——编排你的工作流

LangGraph 解决的是「多个步骤如何编排、如何恢复、如何人工介入」的问题。它把 Agent 流程建模成一张有向图。

下面是一个「检索→推理→人工审批→生成报告」的完整示例。

from langgraph.graph import StateGraph, END
from typing import TypedDict, List
class AgentState(TypedDict):
query: str
docs: List[str]
draft: str
approved: bool
1. 定义节点
def retrieve(state: AgentState) -> AgentState:
state["docs"] = search(state["query"])
return state
def reason(state: AgentState) -> AgentState:
state["draft"] = llm.generate(state["query"], state["docs"])
return state
def human_approval(state: AgentState) -> AgentState:
# 中断等待人工审批
return interrupt({"draft": state["draft"]})
def finalize(state: AgentState) -> AgentState:
return {"report": state["draft"]}
2. 构建图
graph = StateGraph(AgentState)
graph.add_node("retrieve", retrieve)
graph.add_node("reason", reason)
graph.add_node("human", human_approval)
graph.add_node("finalize", finalize)
graph.set_entry_point("retrieve")
graph.add_edge("retrieve", "reason")
graph.add_edge("reason", "human")
graph.add_edge("human", "finalize")
graph.add_edge("finalize", END)
app = graph.compile()
3. 执行并支持恢复
result = app.invoke({"query": "分析Q3营收趋势"})
在 human 节点暂停,人工确认后继续
result = app.invoke(None, config={"resume": True})

LangGraph 的核心价值是工作流编排:它不关心你用哪个模型,也不替你写业务代码,但它能让你把复杂的多步骤流程变成可维护、可恢复的图。

8. 组合实战:产品 + 底盘 + 工作流协同

真实项目中,这三层往往需要组合使用。下面是一个完整的协同架构示例。

# 架构:LangGraph 编排 + Claude Code 执行 + Harness 验证
from langgraph.graph import StateGraph, END
class DevFlowState(TypedDict):
issue: str
patch: str
test_report: str
def plan(state):
# 用 Claude Code 生成修改方案
state["patch"] = claude_code.plan(state["issue"])
return state
def implement(state):
# 用 Claude Code 执行代码修改
state["patch"] = claude_code.apply(state["patch"])
return state
def verify(state):
# 用 DeepSeek Harness 跑回归评测
state["test_report"] = harness.run_suite()
return state
def human_review(state):
return interrupt({"patch": state["patch"]})
构建协同图
flow = StateGraph(DevFlowState)
flow.add_node("plan", plan)
flow.add_node("implement", implement)
flow.add_node("verify", verify)
flow.add_node("review", human_review)
flow.set_entry_point("plan")
flow.add_edge("plan", "implement")
flow.add_edge("implement", "verify")
flow.add_edge("verify", "review")
flow.add_edge("review", END)
app = flow.compile()

这个组合的价值在于:LangGraph 负责流程控制,Claude Code 负责代码执行,Harness 负责质量验证。每一层只做自己最擅长的事。

9. 选型总结:一张图记住

最后用一张对比表收尾,方便你保存。

判断维度 DeepSeek Harness Codex Claude Code LangGraph
层级 底盘 产品 产品 工作流
核心问题 模型行不行 谁能开箱即用 谁能深度重构 流程怎么编排
上手成本
适合阶段 模型上线前 日常开发 大型重构 复杂 Agent
可组合性 可作验证层 可作执行层 可作执行层 可作编排层

最终建议:先判断你缺的是产品、底盘还是工作流,再决定选型。如果只是日常写代码,选 Codex 或 Claude Code;如果要评测模型,选 DeepSeek Harness;如果要编排复杂流程,选 LangGraph。多数真实项目,最终会组合使用其中两到三个。

Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。

更多推荐