我扒了 DeepSeek Harness 219 个包,真有价值的是插件内核,附插件推荐

昨天我把 DeepSeek Harness 装上跑了一轮:DeepSeek Harness 安装,初体验,没有惊喜。 写的比较仓促,仅仅是从安装到使用走了一遍。上午我把官方仓库整个拉下来,让 AI 分析了一下,从启动配置一路翻到 Agent Loop、会话事件、工具管线、上下文压缩和插件加载,很多看到的地方,确实有很多 DeepSeek 的设计巧思
省流:本文有AI味,不喜请立即马上迅速叉掉
DeepSeek 这次开源的真正主角,藏在网页下面
这套仓库里有 238 个工作区项目,大家使用的 Web 界面只占其中一层,模型、会话、沙箱、审批、Skills、子 Agent、工作流、上下文压缩、存储和 UI,全被拆成了可以重新组装的零件,我更愿意把它理解成一套 Agent 运行时加发行版骨架,大家说它是 Agent 时代的安卓,很形象
219 个包,DeepSeek 到底拆出了什么
官方反复强调一句话:Everything is a Plugin,至少有三层含义

第一层是组装层,决定这次启动要装什么
第二层是 Cordis 运行层,决定插件如何依赖、通信、卸载和清理
第三层才是用户能看到的 Agent 能力,模型、工具、循环、会话、存储、沙箱和 UI 都在这里
第一层:一个 dsh 进程,先由配置拼出来
DeepSeek Harness 启动时不会加载一份巨大的固定配置
它会按顺序叠几层东西:
- Bundle 列表,先放进
dsh-base web或headlessProfile,决定产品入口- Profile 自己的
cordis.patch.yml - 用户目录里的长期修改
- 本次命令行传入的
--patch
Profile 决定整个进程有哪些能力,Preset 决定某个会话能拿到哪些工具、提示词和工作流
同一个 Web 进程里,不同会话可以挂不同 Preset
这意味着 DeepSeek Harness 的扩展单位已经从“给 Agent 多加一个工具”,扩大到“给一个会话换掉整套运行方式”
第二层:Cordis 负责让插件活起来
Cordis 是这套系统的底盘
它的 Context 可以理解成一个带作用域的服务容器,插件从里面拿 tools、llm、sessions 等服务,也把自己提供的能力注册进去
一条能力通常会拆成三个角色:
- 服务定义:约定能力叫什么、数据长什么样
- Provider:真正提供能力,例如 DeepSeek 模型适配器
- Consumer:使用能力,例如 Agent Loop 请求模型
Cordis 还提供多种事件方式
普通广播适合通知,waterfall 可以让多个插件依次改写同一份数据,parallel 可以并行执行,serial 可以按顺序找到第一个愿意处理的插件
Agent 的请求、工具审批、压缩触发、结果加工,很多接缝都靠这些事件串起来
这里最漂亮的细节叫“可逆副作用”
- 插件注册一个工具、监听一条事件、挂一条网页路由时,会同时登记清理动作
- 插件卸载或重载,Cordis 会把这些注册一起撤掉
- 热插拔才不会变成“旧工具还挂着、监听器越叠越多、重载几次就行为漂移”
这也是它敢把 UI、循环和存储都开放给插件的基础
第三层:连 Agent Loop 都只是一个插件
很多产品把 Agent Loop 写成不可碰的核心,再开放几个工具入口
DeepSeek Harness 把 Loop 本身也放进插件树
模型怎么请求、一步何时开始、工具怎么调度、任务什么时候停,都可以在这条链上被观察和改写
官方仓库里甚至准备了另一套 LLM 适配器 dsh-llm-pi-ai,底层使用 Pi 的 @earendil-works/pi-ai,dsh 借用了它成熟的多模型适配层,自己的会话、工具和运行时仍然走 Cordis 体系
这个安排很能说明 DeepSeek Harness 的思路:需要一项能力时,做一个 Provider 接进来,用户无需跟着重写
一轮任务,源码里同时跑着两条线
DeepSeek Harness 里,一个 Turn 可以包含很多 Step

一次 Step 大致等于一次模型请求,加上这次请求产生的工具调用

第一条是持久事件线
一次任务会依次出现:
turn/start
step/start
user/message
request header
assistant/chunk
assistant/message
tool/call
tool/result
step/end
turn/end
模型供应商、模型名、思考强度、系统提示词和工具目录,也会作为请求头快照写进日志
后面恢复会话时,系统能知道当时到底给模型看了什么
第二条是实时控制线
agent/pre-step 可以整理 inbox 和触发自动压缩,agent/request 可以改写请求,tools/pre-execute 可以做审批与权限检查,tools/post-execute 可以裁剪或加工结果
插件可以介入很多节点,同时不能悄悄改掉已经发生的历史
会话日志才是整套系统的脊柱
DeepSeek Harness 的 Session 是只追加的事件日志
模型可见的消息都从这份日志推导,工具调用、工具结果和模型输出也都写回同一处
连流式输出的 chunk 都会保留,因此网页刷新以后仍能还原当时的生成过程
这个选择一次解决了五件事:
- 恢复:进程重启后继续同一个任务
- 分叉:从历史节点另开一条路线
- 回放:重建模型与工具当时看到的内容
- 检索:从事件流里找任务和消息
- 审计:说明某个文件修改从哪里来
默认持久化使用 JSONL,仓库里也准备了 SQLite 实现
模型请求之前,以及顶层工具真正产生副作用之前,系统会做检查点
进程在中间崩掉,恢复逻辑会补上一条“任务被打断”的结束记录,已经落盘的真实工作仍然保留
这里体现的是一条很硬的原则:模型看见的东西必须能回到日志里找到
否则恢复后的 Agent 会生活在另一份历史里
工具并行,结果顺序却不能乱
模型一次可能吐出多个工具调用
DeepSeek Harness 会先判断哪些工具允许并行,哪些工具需要独占
普通工具进入一个有上限的并行池,默认最多同时跑 10 个
遇到独占工具时,前面的任务先收尾,它单独执行,后面的调用再继续
这里还有个很细的处理
工具实际完成顺序可以不同,写回模型的结果仍按模型最初的调用顺序排列
否则网络快一点的搜索结果跑到前面,慢一点的文件修改跑到后面,同一轮上下文会因为时序抖动而变化
任务被取消时,已经启动的动作会尽量收尾,没来得及启动的调用也会写入合成结果
日志中不会凭空少掉半截工具链
Token 到底省在哪里
昨天那篇文章里,我用《背影》阅读理解、SVG 生成和审美测试跑了一轮,一共 14 步
Token 消耗情况:
- 1 轮,14 步
- LLM 用时约 3 分 55 秒
- 工具调用约 18.2 秒
- 首 Token 平均约 1.2 秒
- 生成速度约 112 tok/s
- 累计输入约 680K tok
- 累计输出约 24.5K tok
- 缓存命中率 93%
DeepSeek Harness 很重视 Token 复用,源码里还能找到三道控制线

第一道是稳定前缀
系统提示词、工具目录和已记录历史尽量保持稳定,新消息与新结果追加在尾部,让供应商缓存有机会持续命中
第二道是工具结果瘦身
标准 Preset 中,工具结果超过 8192 字符会进入默认裁剪,保留开头 4096 和结尾 1024,中间换成说明
更大的内容可以落盘,默认对话内联上限是 50,000 字节,对话只留路径和摘要
第三道是上下文压缩
上下文压力达到窗口的 80% 时,系统会在下一次 Step 前自动压缩旧历史,最近 16% 的尾部原样保留,默认摘要最多 8192 Token
有意思的是,生成摘要时仍会携带同一段会话前缀
这看起来多传了一遍,实际有利于继续复用供应商的 KV Cache
模型直接报上下文溢出时,还有一条恢复路径再尝试压缩
所以 dsh 的省 Token 路线就是:稳住可缓存前缀,先削工具噪音,接近上限以后再压缩历史
插件到底怎么装进去
社区插件通常在 package.json 里声明自己的 Bundle Patch
安装命令会把包放进某个 Profile,再把它的 Patch 加进组合层
通用格式是:
dsh plugin --profile web add <npm 包、Git 地址或本地路径>
装完重启 dsh web,再运行:
dsh --profile web --dump-config
只要最终配置里出现对应条目,插件才算真正挂上
GitHub 的 dsh-plugin Topic 现在已经很热闹,里面也混入了大量皮肤、小游戏、模板仓库和蹭标签项目
我看了几个候选仓库,推荐几个有意思,有用的吧。后续可能会有海量的插件出现,就像之前炒作 Prompt、Skills 一样,各种 awesome plugin 合集眼花缭乱,我依然坚持之前的判断,换工具不换工作流,以自己的工作流为核心资产,缺什么插件就自己写!
1、dsh-cc-tui:给 dsh 补上一套完整终端入口
官方开源版目前把主要精力放在 Web 和 headless,终端用户可以直接装 dsh-cc-tui

它单独创建 cc-tui Profile,模型、会话、Skills、计划、目标、子 Agent 和工作流都能接到官方底座上
上下文占用、缓存命中、工具状态、生成速度、会话恢复、模型切换也都放进了终端
安装:
npx -y @deepseek-ai/dsh plugin --profile cc-tui add dsh-cc-tui
npx -y @deepseek-ai/dsh --profile cc-tui
适合:长时间待在终端、希望键盘完成全部操作的人
它不会改动原来的 Web Profile,想回网页继续用即可
2、dsh-web-ui-all:把 Web 从毛坯房补成工作台
这个仓库是一组 Web 插件的合集,任务看板、Git 图谱、右侧文件面板、实时 Token 统计、移动端远程、SSH、皮肤中心都在里面

安装全家桶:
dsh plugin --profile web add @linxin666/dsh-web-ui-all
我更建议按需安装
例如只要任务看板:
dsh plugin --profile web add @linxin666/dsh-client-ui-task-board
只看 Token:
dsh plugin --profile web add @linxin666/dsh-live-stats
适合:把 dsh 当日常主界面、需要项目导航和实时状态的人
全家桶包含 SSH 与远程访问一类能力,安装前先确认自己确实需要
3、ModLens:让纯文本 DeepSeek 真正读图
DeepSeek 的文本模型遇到截图、图表和界面 Bug 时会卡住
ModLens 给 dsh 加入原生 read_image,也会增加带 modlens vision 标记的 DeepSeek 模型选项

安装:
npx -y @deepseek-ai/dsh plugin --profile web add @liustack/modlens@latest
装好以后,在模型列表里选择 DeepSeek-V4-Flash (modlens vision) 或 DeepSeek-V4-Pro (modlens vision),直接粘贴图片或给出本地路径
它需要一个视觉引擎,可以接 Gemini 或 OpenAI 兼容服务,也能在你明确同意后复用本机其他 Agent 已有的视觉能力
适合:前端调试、图表理解、截图报错和文章配图检查
4、ModSearch:补上搜索和单页精读
标准模式已经带 DeepSeek Web Search
ModSearch 会接管同一个搜索接口,再增加 x_search 和 read_page

安装:
npx -y @deepseek-ai/dsh plugin --profile web add @liustack/modsearch@latest
装好以后正常说“查一下今天的 AI 新闻”或“读完这个页面再总结”,模型会自己选择搜索或读取
它可以使用 Antigravity CLI,也支持 Tavily、Exa、Firecrawl 等引擎,X 搜索需要对应的 Grok Build 能力
适合:写文章、做竞品研究、追踪社区讨论和核查网页资料
5、dsh-agent-teams:给子 Agent 加上团队状态
官方标准模式已经能 spawn 和 fork 子 Agent
Agent Teams 继续加了队长、成员、任务依赖、成员消息和 Web 活动面板

安装:
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:NanmiCoder/dsh-agent-teams
装好以后可以直接说:
用 AgentTeams 审查最近 50 个提交,分别检查性能、安全和功能回归,最后汇总
成员状态保存在工作区的 .agent-teams,Web 面板能看到任务依赖、成员进度和回报
适合:大范围代码审查、迁移、调研和能清楚拆成并行分支的任务
小任务开团队会增加协调成本
6、dsh-automation:把重复工作交给全新会话
这个插件提供单次、固定间隔、每天和每周任务
每次执行都会创建一个全新的根 Agent 与 Session,工作区、权限、任务说明和运行记录都单独保存

安装时建议锁定版本:
dsh plugin --profile web add github:titanwings/dsh-automation#v0.1.5
它适合定时跑测试、整理周报、检查依赖、扫描项目状态
无人值守任务只接受只读和工作区可写两种权限,完全访问不会进入计划任务
需要注意,0.1 版依赖 dsh Host 持续运行,关掉 dsh web 后,定时任务也不会自己在系统后台启动
插件越自由,安全边界越要看清
DeepSeek Harness 默认提供三种权限:只读、工作区可写、完全访问
工作区可写配合逐次询问,是日常使用更稳妥的起点

这里要分清两层权限
模型调用 Shell 和文件工具,会经过沙箱与审批
装进 Profile 的第三方插件属于宿主代码,它拥有的权限接近 dsh 进程本身
因此插件仓库里的安装脚本、依赖和 Host 代码,都要按真实程序来审查
官方没有默认开放任意 MCP Server,也有同样的考虑
MCP 的启动命令运行在 Agent 沙箱之外,不能因为工具调用有审批,就假设 MCP 进程也被关在里面
源码里还有两个很值得注意的默认值:
web_fetch默认关闭,主要防 SSRF 一类内网访问风险- Cordis 创造模式允许动态加载与修改插件,信任等级接近给 Agent Shell 权限
我建议除了权限设置,安装插件之前都要找顶级大模型先确认一遍其安全性,目前 AI 野蛮生长,安全问题不容小觑
总结
现阶段(预览版),DeepSeek Harness 开源项目是一份绝佳的学习资料
至于工具本身,可以吹,不建议折腾,它不适合绝大多数人
Codex、Claude Code,以及众多 Work 类产品,比如 WorkBuddy、QoderWork、TraeWrok,这些开箱即用的好东西足够了
本文由作者@Ai学习的老章,授权发布于平台,未经许可禁止转载。
- 目前还没评论,等你发挥!

起点课堂会员权益



