博客

DeepSeek Harness 无头模式:环境变量跑后台 Coding Agent

快速回答

DeepSeek Harness(dsh)不只有 http://127.0.0.1:3080 那个 Web UI。它还支持无头(headless)coding agent:不打开浏览器,靠环境变量或 .env 提供 DEEPSEEK_API_KEY,在后台跑一个能读写文件、执行命令、自动改代码的 agent。

这非常适合:CI 里的自动修复、定时任务、脚本化的批量重构——凡是「不需要人盯着、让 agent 自己跑完」的场景。

无头模式需要什么

无头模式只要求模型后端可用。最小配置:

bash
export DEEPSEEK_API_KEY="sk-teamo-你的Key"
export DEEPSEEK_BASE_URL="https://api.teamorouter.com/v1"

或写在仓库根目录的 .env 里(记得加进 .gitignore):

bash
DEEPSEEK_API_KEY=sk-teamo-你的Key
DEEPSEEK_BASE_URL=https://api.teamorouter.com/v1
DEEPSEEK_DEFAULT_MODEL=deepseek-v4-pro-free

配置好之后,无头 agent 就能像 Web UI 里的 agent 一样调用工具,只是没有可视化界面,输出通过 stdout / 报告文件返回。

单次运行:一个任务跑完即停

无头模式最常见的用法是单次运行——给一个任务,agent 跑完(或达到预算上限)就退出:

bash
# 伪代码示意:向无头 agent 投喂一个任务
dsh run "修复 src/services/reporting.py 里的 N+1 查询,并跑通相关测试"

agent 会读文件 → 理解 → 修改 → 跑测试 → 根据结果修正,直到完成。这种「跑完即停」的模型特别适合 CI 步骤:把「修 lint 报错」「补测试」这类确定性任务丢给它,比人肉改快得多。

ACP 自动化服务器:持久化的无头会话

更进阶的用法是 ACP 自动化服务器——通过 JSON-RPC stdio 提供全新的 agent 会话。它同样需要 DEEPSEEK_API_KEY,适合需要多次、脚本化调用 agent 的场景,而不是每次重新拉起进程。

两种形态的选择:

形态 适合 特点
单次运行 CI、定时任务 跑完即停,简单
ACP 服务器 长驻集成、脚本多次调用 常驻,会话复用

用免费档跑无头 agent

无头 agent 尤其适合配免费档——因为「跑完即停」的任务通常请求数可控:

bash
export DEEPSEEK_DEFAULT_MODEL="deepseek-v4-pro-free"   # 每天 200 次

一个单次「修 bug + 跑测试」的任务大概烧 10–20 次请求(读文件、改、跑测试、修正的往返)。200 次/天能支撑 5–10 个这样的任务,对个人自动化完全够用。量大时切 deepseek-v4-pro 付费(无账号限流,$1.74/$3.48 平价)。

常见踩坑

Q:无头 agent 起不来 / 提示没有 API Key? 确认 DEEPSEEK_API_KEY同一 shell里已 export,或 .env 在仓库根目录且被正确加载。echo $DEEPSEEK_API_KEY 先验证。

Q:无头模式怎么知道任务做完没有? 看退出码和 stdout。单次运行「完成即退」;ACP 会话有明确的会话结束事件。

Q:后台跑会不会失控? 会——如果任务边界不清。无头 agent 没有 UI 让你实时打断,所以:给明确的任务边界、限制工作目录、必要时设预算上限,别让它在一个大仓库里自由发挥。

Q:无头和 Web UI 用的是同一套工具吗? 是。工具来自同样的插件/预设,差别只在「有没有可视化界面」。无头模式的输出通过 stdout 或报告返回。

Q:能不能定时跑? 能。把无头命令包进 cron / launchd / CI,配好 .env,就能实现「每天凌晨自动修 lint」「每周自动重构」这类常驻自动化。

想搭一个后台 coding agent,到 TeamoRouter 拿 key,配好环境变量,把 dsh 的无头命令接进你的脚本或 CI 即可。

准备好接入了吗?登录控制台 · 购买额度 · 创建 API Key,三步即可开始。
DeepSeek Harness 无头模式:环境变量跑后台 Coding Agent · TeamoRouter