快速回答
DeepSeek Harness(dsh)的 agent 不是只能聊天——它能调用一整套真实工具去读写文件、执行命令、派生代理、联网搜索。这些工具来自插件,标准预设里最常用的几个:
| 工具 | 作用 | 典型场景 |
|---|---|---|
bash |
执行 shell 命令 | 读文件、跑测试、装依赖 |
| 文件读写 | 读 / 写 / 编辑文件 | 改代码、写报告 |
subagent |
派生子代理 | 并行拆任务 |
web_search / web_fetch |
联网搜索 / 抓页面 | 查文档、取最新信息 |
ask_user_question |
暂停向用户提问 | 需要确认的关键节点 |
lsp |
语言服务器协议查询 | 类型、跳转、补全 |
理解这些工具,你就理解了 dsh 和「聊天机器人」的本质区别:每次工具调用都是一次真实的读、写或执行。
bash:agent 的手
bash 让模型能执行 shell 命令。这是 agent 能「跑测试、装依赖、读仓库」的基础:
请查看当前目录结构,然后跑一遍测试并告诉我结果。
agent 会依次 ls、读文件、执行测试命令,把 stdout 读回来再决定下一步。注意:bash 意味着 agent 拥有你当前用户的权限,所以别在没把握的目录里放行高危命令。
文件读写:改代码的入口
文件工具让 agent 能读写工作目录里的文件。配合 bash,这是「改代码」闭环的核心:读文件 → 理解 → 编辑 → 跑测试 → 根据结果修正。
标准预设通常还带 glob/grep 这类文件搜索能力,让 agent 能定位「哪个文件定义了某个函数」,而不是盲目读整个仓库。
subagent:并行拆任务
subagent 让 agent 派生子代理处理子任务,再把结果收回来。典型用法:
主任务:修复 3 个互不相关的 bug。
agent 可以派 3 个子代理各查一个 bug,并行完成后汇总。这大幅缩短长任务的墙钟时间——尤其当瓶颈是「很多独立的小事」时。
web_search / web_fetch:联网能力
web_search 和 web_fetch 让 agent 能搜索和抓取网页。适合「查最新文档」「找报错对应的 issue」「取某个 API 的当前签名」这类需要外部信息、不能只靠训练数据的场景。
如果你不需要联网(例如纯本地代码仓库),可以不挂这两个工具,得到一个更可控、更省的 agent——这正是 dsh「能力面可裁剪」的体现(见《插件架构》)。
ask_user_question:关键时刻的确认
ask_user_question 让 agent 在关键节点暂停,等用户回答后再继续。适合「这个删除操作不可逆,确认吗?」这类需要人工拍板的场景,避免 agent 一路自动执行出错。
lsp:语言级智能
lsp 工具把语言服务器协议的能力暴露给模型——类型查询、定义跳转、补全。需要注册 provider(如 dsh-lsp-stdio)才能用;没有 provider 时返回结构化错误而不是报崩。
用免费档跑这些工具
工具本身不花钱,钱花在每一次工具往返背后的模型调用上。接 TeamoRouter 后,用免费档能白嫖一整天:
export DEEPSEEK_API_KEY="sk-teamo-你的Key"
export DEEPSEEK_BASE_URL="https://api.teamorouter.com/v1"
export DEEPSEEK_DEFAULT_MODEL="deepseek-v4-pro-free"
deepseek-v4-pro-free 每天 200 次请求,每次工具往返算 1 次——轻活走 deepseek-v4-flash-free(也 200 次/天),硬活走 Pro,是最省的组合(详见《200 次怎么算》)。
常见疑问
Q:这些工具默认都有吗?
取决于加载的 agent 预设。标准预设包含 bash + 文件读写 + glob/grep;web_search、subagent、lsp 视具体预设或配置而定,可以在配置里裁剪或补充。
Q:agent 会不会乱执行危险命令?
理论上 bash 给了它权限。稳妥做法:在受限工作目录跑、重要操作前用 ask_user_question 确认、别在公网暴露 dsh 端口。
Q:工具调用会消耗免费额度吗? 会。每次工具往返是一次独立请求,计入 200 次/天的额度。工具循环越深,烧得越快——所以难活才值得 Pro,轻活走 Flash。
Q:怎么给 agent 加自定义工具?
写一个 Cordis 插件注册到 ctx.tools,或在预设里挂载。这是 dsh 可扩展性的核心(见《插件架构》)。
Q:文件工具能写任意路径吗? 受工作目录和权限约束。默认作用在 agent 的工作目录内,具体边界取决于加载的 fs provider。
想实际跑一遍这套工具,到 TeamoRouter 拿 key,配好 dsh,给 agent 一个「读仓库 + 跑测试 + 汇报」的任务即可。