📄 文章总结:《我扒了 DeepSeek Harness 219 个包,真有价值的是插件内核,附插件推荐》
公众号: Ai学习的老章 | 分类: agent | 收录日期: 2026-08-15 原链接: https://mp.weixin.qq.com/s/i1tHqOhmTE68CXEcx9wdig
我扒了 DeepSeek Harness 219 个包,真有价值的是插件内核,附插件推荐
公众号:Ai学习的老章
作者开场:昨天安装 DeepSeek Harness 跑了一轮,只是“安装、初体验,没有惊喜”,写得很仓促。上午把官方仓库整个拉下来,让 AI 分析了一下,从启动配置一路翻到 Agent Loop、会话事件、工具管线、上下文压缩和插件加载,看到很多 DeepSeek 的设计巧思。省流:本文有 AI 味,不喜请立即马上迅速叉掉。
一、真正主角藏在网页下面
这套仓库里有 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 体系。
这个安排很能说明思路:需要一项能力时,做一个 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%
源码里有三道控制线:
第一道是稳定前缀:系统提示词、工具目录和已记录历史尽量保持稳定,新消息与新结果追加在尾部,让供应商缓存有机会持续命中。
第二道是工具结果瘦身:标准 Preset 中,工具结果超过 8192 字符会进入默认裁剪,保留开头 4096 和结尾 1024,中间换成说明。更大的内容可以落盘,默认对话内联上限是 50,000 字节,对话只留路径和摘要。
第三道是上下文压缩:上下文压力达到窗口的 80% 时,系统会在下一次 Step 前自动压缩旧历史,最近 16% 的尾部原样保留,默认摘要最多 8192 Token。
有意思的是,生成摘要时仍会携带同一段会话前缀。这看起来多传了一遍,实际有利于继续复用供应商的 KV Cache。模型直接报上下文溢出时,还有一条恢复路径再尝试压缩。
所以 dsh 的省 Token 路线就是:稳住可缓存前缀,先削工具噪音,接近上限以后再压缩历史。
十、插件到底怎么装进去
社区插件通常在 package.json 里声明自己的 Bundle Patch。安装命令会把包放进某个 Profile,再把它的 Patch 加进组合层。
通用格式:
装完重启 dsh web,再运行:
只要最终配置里出现对应条目,插件才算真正挂上。
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、皮肤中心都在里面。
全家桶安装:
作者更建议按需安装。例如只要任务看板:
只看 Token:
适合:把 dsh 当日常主界面、需要项目导航和实时状态的人。全家桶包含 SSH 与远程访问一类能力,安装前先确认自己确实需要。
3. ModLens:让纯文本 DeepSeek 真正读图
DeepSeek 的文本模型遇到截图、图表和界面 Bug 时会卡住。ModLens 给 dsh 加入原生 read_image,也会增加带 modlens vision 标记的 DeepSeek 模型选项。
安装:
装好以后,在模型列表里选择 DeepSeek-V4-Flash (modlens vision) 或 DeepSeek-V4-Pro (modlens vision),直接粘贴图片或给出本地路径。它需要一个视觉引擎,可以接 Gemini 或 OpenAI 兼容服务,也能在你明确同意后复用本机其他 Agent 已有的视觉能力。
适合:前端调试、图表理解、截图报错和文章配图检查。
4. ModSearch:补上搜索和单页精读
标准模式已经带 DeepSeek Web Search。ModSearch 会接管同一个搜索接口,再增加 x_search 和 read_page。
安装:
装好以后正常说“查一下今天的 AI 新闻”或“读完这个页面再总结”,模型会自己选择搜索或读取。它可以使用 Antigravity CLI,也支持 Tavily、Exa、Firecrawl 等引擎,X 搜索需要对应的 Grok Build 能力。
适合:写文章、做竞品研究、追踪社区讨论和核查网页资料。
5. dsh-agent-teams:给子 Agent 加上团队状态
官方标准模式已经能 spawn 和 fork 子 Agent。Agent Teams 继续加了队长、成员、任务依赖、成员消息和 Web 活动面板。
安装:
装好以后可以直接说:
用 AgentTeams 审查最近 50 个提交,分别检查性能、安全和功能回归,最后汇总。
成员状态保存在工作区的 .agent-teams,Web 面板能看到任务依赖、成员进度和回报。适合大范围代码审查、迁移、调研和能清楚拆成并行分支的任务。小任务开团队会增加协调成本。
6. dsh-automation:把重复工作交给全新会话
这个插件提供单次、固定间隔、每天和每周任务。每次执行都会创建一个全新的根 Agent 与 Session,工作区、权限、任务说明和运行记录都单独保存。
安装时建议锁定版本:
它适合定时跑测试、整理周报、检查依赖、扫描项目状态。无人值守任务只接受只读和工作区可写两种权限,完全访问不会进入计划任务。需要注意,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 生成”。
🎯 Friday 提炼
- DeepSeek Harness 的真正主角不是 Web 界面,而是由 238 个工作区项目、219 个包组成的 Agent 运行时 + 发行版骨架,核心原则是 Everything is a Plugin。
- 三层插件运行时(组装层、Cordis 运行层、Agent 能力层)加上“可逆副作用”设计,让 UI、循环、存储、工具甚至 Agent Loop 本身都能被插件替换和热插拔。
- 会话是只追加事件日志,模型看到的一切都能追溯;工具并行但结果按模型原始调用顺序写回,避免上下文时序抖动。
- 省 Token 靠三道控制线:稳定前缀、工具结果瘦身、80% 压力触发上下文压缩;插件推荐包括 dsh-cc-tui、dsh-web-ui-all、ModLens、ModSearch、dsh-agent-teams、dsh-automation。
- 现阶段适合当学习资料,不适合绝大多数人日常主力;开箱即用可选 Codex、Claude Code 或 WorkBuddy、QoderWork、TraeWrok 等 Work 类产品。
一句话: DeepSeek Harness 是“Agent 时代的安卓”——用可插拔内核重构 Agent 运行时,但现阶段更适合学习研究,而不是普通用户的生产工具。
💡 Friday 看法
这文章最戳我的点是把 Agent Loop 都拆成插件,等于把“大脑”也开放出来,这比只给几个工具接口狠多了。对日常用户来说,好处是以后想改对话逻辑、压缩策略甚至界面都能像搭积木一样换,坏处是配置复杂度可能暴增,普通人怕是得靠别人配好的 Preset 才能玩转。希望官方能多搞点成熟的“全家桶”预设,不然“Everything is a Plugin”容易变成“Everything is a折腾”。