
之前看到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 webdocker运行
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好用是好用,毕竟也是刚出来不就,所以肯定有很多要完善的东西,经过这几天使用,发现了几个问题
- 官方插件机制挺好,但是有的插件更新过于频繁,导致和主版本Harness框架兼容存在问题,很容易把整体搞崩了;
- 插件太多了,很多做的很粗糙,包括功能上、页面样式等等,还有很多配置方面要自己去摸索;
- 思考模式有时候会卡住,也没有提示,可能是我自己用的还不熟的原因吧;
说这些问题,并不是工具不好用,相反我觉得挺好的,期待Harness后期基础框架功能更加强大,最起码不能让一个插件就把系统搞崩了。

