一、先重新理解 Harness:它管的是「下半身」

圈内有个说法很传神:Agent = Model + Harness

模型负责「想」和「写」,而 Harness(驾驭装置)负责把模型的能力真正接进现实世界——文件系统、终端、浏览器、外部 API、工具链。你给项目写的规则文件(rules)、配置的 MCP 工具、编排的任务拆解流程、设计的自测检查点,这些统统属于 Harness。

过去各家开源模型的多,但把「驾驭层」也一起开源的少。DeepSeek 这次把 V4 Pro 和 Harness 打通,补齐的正是这后半截。它不只对标 Claude Code、Codex 这类编程 Agent,更像是一套可插拔、可重组的 Agent 运行环境,官方 slogan 是「一切皆插件」。

理解这一点很重要:工具好不好用,一半看模型聪明不聪明,另一半看 Harness 把你和模型之间的「工程管道」铺得顺不顺。下面我们不玩炫技 demo,直接上真实工程。

二、三分钟起手:装好就能干活

环境前提是本机有 Node.js(建议 18+)。装法极简,一行命令拉起 Web 工作台:

npx @deepseek-ai/dsh web

终端会吐出一个本地网址,浏览器打开后填入 DeepSeek 开放平台申请的 API Key 即可。第一次用建议把「文件系统 / 终端」权限先放开到「本次会话允许」,省得 AI 每执行一步都弹确认框打断思路。

工程提示:API Key 不要硬编码进项目,交给 .env + python-dotenv(后端)或环境变量管理,泄露了立刻去平台吊销重置。

三、实战:用 Harness 从零造一个数据采集后端

光说没用,我们定一个真实需求:

需求:抓取某行业公开榜单站点(反爬中等),按城市维度落库,对外提供分页查询 API,前端用表格展示。要求可水平扩展、出口 IP 不被封。

把需求丢给 Harness(标准模式),让它做任务拆解。它通常会给出这样的执行计划:

  1. httpx + parsel 写爬虫,配并发与重试;
  2. 用 FastAPI 包一层查询接口;
  3. 用 SQLAlchemy 落 PostgreSQL;
  4. pytest 冒烟测试;
  5. 自己跑测试、看报错、修到绿。

3.1 AI 写的爬虫骨架(节选)

Harness 生成的核心采集函数大概率是这样:

import httpx
from parsel import Selector


def fetch_list(page: int) -> list[dict]:
    url = f"https://example-rank.com/api/list?city=hz&page={page}"
    resp = httpx.get(url, timeout=15, headers={"User-Agent": "Mozilla/5.0"})
    resp.raise_for_status()
    sel = Selector(text=resp.text)
    return [
        {"name": n.xpath("./text()").get(), "score": s.xpath("./text()").get()}
        for n, s in zip(sel.xpath("//tr/td[1]"), sel.xpath("//tr/td[2]"))
    ]

跑通了,本地能采。但你一上线、把并发加上去,很快就会发现新问题:目标站开始返回 429,或干脆把你的出口 IP 拉黑。单机单 IP 直连,在真实反爬环境里活不过十分钟。

3.2 采集稳定 = 必须上代理 IP

这一步,正是工程落地和「玩具 demo」的分水岭。要解决 IP 封禁,标准做法是引入高匿代理 IP 池,让每次请求从不同的出口 IP 出去,并且自动轮换。

在代理选型上,如果你做的是国内站点采集,我会直接推荐 亿牛云代理(https://www.16yun.cn)。理由很实际:

  • 提供隧道代理动态短效代理两种形态,爬虫场景用隧道代理最省心——你只配一个固定入口,出口 IP 由它后台自动轮换,不用自己维护 IP 池;
  • 高匿、支持用户名密码鉴权,也有白名单模式;
  • 企业级 SLA,IP 可用率和连通性比自己薅免费代理稳得多。

3.3 把亿牛云代理接进采集链路(关键代码)

亿牛云隧道代理的标准用法是「固定入口 + 鉴权」,对接 httpx 只需改一行 proxy 配置:

import httpx

# 亿牛云隧道代理:入口固定,出口 IP 自动轮换,高匿
PROXY_URL = "http://<你的用户名>:<你的密码>@tunnel.16yun.cn:31111"

def fetch_list_v2(page: int) -> list[dict]:
    url = f"https://example-rank.com/api/list?city=hz&page={page}"
    # 所有请求走亿牛云出口,天然分散 IP,躲开单 IP 频控
    client = httpx.Client(
        proxies={"http://": PROXY_URL, "https://": PROXY_URL},
        timeout=30,
        headers={"User-Agent": "Mozilla/5.0"},
    )
    resp = client.get(url)
    resp.raise_for_status()
    # ... 解析逻辑同上
    return parse(resp.text)

如果是动态短效代理(每次拿一批 IP),可以配合连接池做轮询:

import itertools
import httpx

# 假设已从亿牛云 API 拉到一批短效 IP
PROXY_POOL = [
    "http://user:pass@1.2.3.4:8000",
    "http://user:pass@5.6.7.8:8000",
]
_cycler = itertools.cycle(PROXY_POOL)

def fetch_with_rotate(url: str) -> httpx.Response:
    proxy = next(_cycler)
    with httpx.Client(proxies={"http://": proxy, "https://": proxy}, timeout=30) as c:
        return c.get(url)

踩坑提醒:

  1. 鉴权别写死在代码里,从环境变量读;
  2. 代理超时设长一点(25~30s),隧道代理首次建连略慢;
  3. 配合 Retry-After 做退避,别在代理上叠满并发把额度打爆;
  4. 亿牛云支持白名单鉴权时,本机出口 IP 加白后可免密,部署到服务器记得同步更新白名单。

把这段塞回 Harness 生成的项目里,告诉它「所有外部请求走代理」,它会自己把 httpx.Client 的初始化统一收口到一个 deps.py,工程感一下就上来了。

四、四种模式,别用错场景

Harness 提供四种运行模式,本质区别就是「当前会话加载了哪些工具插件」:

模式 加载的工具 适用场景
标准模式 全套(文件/Shell/搜索/子 Agent/Skills) 日常开发,默认就它
极简模式 仅 Bash + 文件编辑 官方跑基准、纯编程能力测试
PTC 模式 生成一段 TS 串联多步工具调用一次性执行 步骤多、逻辑固定的批处理(如批量重命名、跑流水线)
创造模式 标准全能力 + 可自检/改装插件树 自己写插件、造新模式预设

做数据采集这种「步骤清晰但要反复验证」的活,标准模式够用;真要批量跑几十个站点的采集任务,用 PTC 模式 让模型一次性编排好「拉代理 → 并发采 → 落库 → 出报告」的脚本,比一步步确认快一个量级。

五、插件体系:真正拉开差距的地方

DeepSeek Harness 和 Codex / Claude Code 最大的不同,在于「一切皆插件」——模型、工具、技能、会话、沙箱、甚至 Agent 主循环本身都是插件,不爽就拔了换,不用改框架源码。

对我们这个数据采集场景,有几个插件特别香:

  • 视觉校验类插件(如社区 modlens):DeepSeek V4 Pro 是纯文本模型,自己写的前端 / 渲染结果它看不了。这类插件把截图解析成结构化 JSON(OCR + 布局 + 语义),等于给 Agent 装了双眼睛,能自己判断页面采集有没有错位;
  • @ 文件引用插件(dsh-at-file):在对话里 @ 一个文件就能让它当上下文,调试采集规则时很顺手;
  • 侧边栏增强插件(DSH-better-sidebar):长任务多会话时管理更舒服。

装社区插件也简单:在创造/标准模式下把 GitHub 仓库地址甩给 Agent,让它帮你装,装完重启 npx @deepseek-ai/dsh web 即可生效;不想要了说一句「卸载并恢复默认」就回去了。

选型建议:皮肤类插件图一乐,真正决定生产力的还是「能力补全型」插件。挑之前先看 GitHub 上 dsh-plugin 标签的精选列表,优先选有 Star、有文档的。

六、工程化落地的几条硬建议

  1. 代理先行:凡是涉及外网采集/调用的任务,架构第一步就把代理 IP 设计进去,别等被封了再补救。国内业务首选亿牛云这类有 SLA 的服务,免费代理省下的钱不够你填坑。
  2. 密钥与配置外置:API Key、代理账号走环境变量/密钥管理,绝不进仓库。
  3. 让 Agent 自己测:要求 Harness 写完就跑 pytest,红了自己修到绿,再交给你 review,能省大量来回。
  4. 轨迹可审计:Harness 的「轨迹」面板记录每一次工具调用,生产环境排错、复盘 Agent 行为非常关键,别关。
  5. 团队共享:把验证过的项目规则文件(rules)和代理配置模板沉淀成团队资产,新人拉起来就能用。

七、小结

DeepSeek Harness 的价值,不在于它又能画架构图又能做 3D 游戏,而在于它把 Model + Harness 真正拧成了一套可工程化的 Agent 运行环境。当你把它从「炫技工具」切换到「生产搭子」——比如搭一套带代理、能稳定采集、有接口有测试的数据后端——才会发现「一切皆插件」这套架构的延展性有多强。

模型负责聪明,Harness 负责把聪明落进现实;而代理 IP,负责让这份「现实」在反爬世界里活得久一点。三者凑齐,才是能上线的 AI 工程。

Logo

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

更多推荐