Deepseek Harness有点儿东西

之前看到Deepseek开源了Harness,其实还是有点儿兴趣,但是一直没空研究,这不昨天下午正好有点儿空,就部署来玩玩,踩了些坑,不过都是小问题,好在最后都解决了,整体上来说Harness还是不错的,至少架构和使用上无可挑剔。

Harness是开源的 AI 智能体运行时框架,MIT 协议,定位可以理解成"给大模型装上手脚"的基础设施——它本身不是模型,而是把模型能力转化为能自主执行任务的 Agent 的中间层,官方给它的公式是 Model + Harness = Agent。

它解决什么问题

现在做 Agent 最头疼的不是模型不够强,而是扩展方式碎片化:Claude Code、Cursor、Codex 各自一套技能、记忆、安全策略,换一个工具全要重写。Harness 想做的就是把这层统一掉,让开发者"写一次插件、多处复用",目标是让主流 Agent 都能跑在同一套插件体系上。

核心理念:一切皆插件

整个框架构建在一个叫 Cordis 的微内核之上,内核只负责"挂载插件、追踪依赖、干净卸载",没有特权核心。模型适配器、工具注册表、沙箱、会话状态、事件分发、UI、甚至 Agent 主循环本身——全部是可替换的插件。想从 DeepSeek 切到 Claude 或 GPT-4o,改几行 YAML 配置就行,不用动源码。

几个比较独特的点:

模型无关:开箱支持 DeepSeek、OpenAI、Anthropic、Google、Kimi 等近 40 家提供方,任何 OpenAI 兼容端点都能接
baidu.com
执行轨迹可审计:采用仅追加的事件日志,每条消息、每次工具调用、中间推理状态、Token 消耗都被记录,可以回放、排错、对比不同模型的表现,这是 Claude Code 和 Codex 都没有的。

四种运行模式:Standard(完整 Shell + 联网检索)、Code(批量工具调用)、Minimal(只开持久 Shell 和文本编辑)、Creator(诊断/测试用),按任务复杂度切换

快速开始

一键启动

npx @deepseek-ai/dsh web

全局安装(配合pm2守护)

npm install -g @deepseek-ai/dsh
npm install -g pm2
pm2 start "dsh web" --name dsh-harness
pm2 save && pm2 startup

源码运行

git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web

docker运行

docker run -d --name dsh -p 3080:3080 ghcr.io/huoxue1/deepseek-harness:latest

由于是docker部署,所以宿主机的工作目录要自己映射进去,我看了下宝塔面板自带的docker-compose,需要稍作改造,需要把/www/wwwroot目录映射到工作空间,可以参考我这个compose

services:
  deepseek_harness_BGes:
    image: docker.cnb.cool/btpanel/deepseek-harness:${VERSION}
    restart: always
    deploy:
      resources:
        limits:
          cpus: ${CPUS}
          memory: ${MEMORY_LIMIT}
    ports:
      - ${HOST_IP}:${DSH_PORT}:3080
    volumes:
      - /www/wwwroot:/workspace
      - ${APP_PATH}/dsh-home:/root/.dsh
    labels:
      createdBy: "bt_apps"
    networks:
      - baota_net
networks:
  baota_net:
    external: true

运维面板

1Panel和宝塔中均有Harness,可以直接选择安装,内部有代理,可以直接实现外网代理访问

DSH 自带Web UI没有任何登录认证,且Agent拥有文件读写、Shell 命令执行、联网能力。直接把 3080 暴露到公网,等同于把服务器控制权拱手让人——全网的扫描机器人 7×24 小时在扫新开的端口,短时间内就会被打穿,所以无论如何,前面必须套一层带账号密码的 HTTPS 反向代理,1Panel 商店版已经做好了这一步;如果自己搭反代,记得加 Basic Auth 或 IP 白名单。

运维面板中部署到外网,仍然会出现403问题,建议在网站配置文件404.html下面添加如下代码,伪造一下,就可以了

location /api/ {
        proxy_pass http://127.0.0.1:3080;
        proxy_http_version 1.1;
        proxy_set_header Host 127.0.0.1:3080;   # 伪装成 loopback,关键!
        proxy_set_header Origin http://127.0.0.1:3080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 3600s;
    }

公网访问

上面说的都是本地内网使用,如果要部署到公网,就需要用到社区认证插件

dsh plugin --profile web add dsh-web-startup-auth@latest
dsh plugin --profile web add dsh-lan-access

安装成功后,自行注册管理员,之后就可以登录了,再也不用操心权限问题了。

Harness实用插件

优先安装市场插件,后面插件安装就方便了

dsh plugin --profile web add dshmarket

存在问题

Harness好用是好用,毕竟也是刚出来不就,所以肯定有很多要完善的东西,经过这几天使用,发现了几个问题

  1. 官方插件机制挺好,但是有的插件更新过于频繁,导致和主版本Harness框架兼容存在问题,很容易把整体搞崩了;
  2. 插件太多了,很多做的很粗糙,包括功能上、页面样式等等,还有很多配置方面要自己去摸索;
  3. 思考模式有时候会卡住,也没有提示,可能是我自己用的还不熟的原因吧;

说这些问题,并不是工具不好用,相反我觉得挺好的,期待Harness后期基础框架功能更加强大,最起码不能让一个插件就把系统搞崩了。

评论加载中...