🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

从零构建 dsh hardness1020/learn-deepseek-harness

DeepSeek Harness
hardness102066 天前有提交已提供中文文档扫描:无法判定

一切皆为 plugin:从零拆解并重建 DeepSeek Harness。

47.6/100
综合分
38
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/hardness1020/learn-deepseek-harness.git
按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · tool
装得上吗
作者未把包发布到 npm,只能用源码安装
插件本身没问题,是分发方式不同
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 66 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包learn-deepseek-harness(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 04:34:42

安全扫描自动 · 静态分析源码
v2.7.0
⚪ 扫描:无法判定尚无人工评估
展开查看扫描说明与证据 ↓

已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。

  • · 包内无可扫 JS
  • · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/11/3(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

1 张 · 点击查看大图

功能亮点

  • 从零拆解并重建

README

由 DeepSeek 最新模型翻译生成
learn-deepseek-harness 一切皆为 plugin:从零拆解并重建 DeepSeek Harness。 DeepSeek Harness(dsh)基于 Cordis 构建,是一套 agent harness。它是个庞大的 TypeScript 项目,从工具到完整子系统都以 plugin 组成。如果一开始就直接读源代码,很容易迷失在各个软件包之间,因为核心设计分散在整个代码库中。 这份教学换一种读法:只用 Python 标准库,分成 4 个阶段、14 个章节,逐步实现一个最小版本 Mini-dsh。每章只加入一项核心机制,再用离线测试验证行为,最后对照真正的 dsh 如何实现。 目录:架构概览 · 阅读方式 · 章节索引 · 项目结构 · 运行方式 · 参与贡献 · 延伸阅读 架构概览 这张图汇总了 Mini-dsh 的整体架构。kernel 负责挂载与卸载 plugin,loop 负责推进 agent 流程,任何需要访问 log 以外资源的操作,都必须经过明确的能力接口(seam)。 Mini-dsh 架构 一切都是 plugin,每一次注册也都能完整撤销。 阅读方式 每一章都沿用相同的分析架构,固定分成四个部分: 1. 开场:先不看代码,直接说明本章要解决的设计问题。 2. 核心机制:逐一拆解需要实现的组件,并搭配代码片段与流程图说明。
展开完整文档(README 剩余 1 节)
learn-deepseek-harness

一切皆为 plugin:从零拆解并重建 DeepSeek Harness。

DeepSeek Harness(dsh)基于 Cordis 构建,是一套 agent harness。它是个庞大的 TypeScript 项目,从工具到完整子系统都以 plugin 组成。如果一开始就直接读源代码,很容易迷失在各个软件包之间,因为核心设计分散在整个代码库中。

这份教学换一种读法:只用 Python 标准库,分成 4 个阶段、14 个章节,逐步实现一个最小版本 Mini-dsh。每章只加入一项核心机制,再用离线测试验证行为,最后对照真正的 dsh 如何实现。

目录:架构概览 · 阅读方式 · 章节索引 · 项目结构 · 运行方式 · 参与贡献 · 延伸阅读

架构概览

这张图汇总了 Mini-dsh 的整体架构。kernel 负责挂载与卸载 plugin,loop 负责推进 agent 流程,任何需要访问 log 以外资源的操作,都必须经过明确的能力接口(seam)。

Mini-dsh 架构

一切都是 plugin,每一次注册也都能完整撤销。

阅读方式

每一章都沿用相同的分析架构,固定分成四个部分:

1. 开场:先不看代码,直接说明本章要解决的设计问题。
2. 核心机制:逐一拆解需要实现的组件,并搭配代码片段与流程图说明。
3. 对照真正的 dsh:将 Mini-dsh 的类与函数,对应到真正 dsh 中的实现文件。所有链接都固定在本教学研究的版本,并补充 Mini-dsh 为了保持精简而没有实现的功能。
4. 常见失败模式:解释少了这项机制后,系统会在哪些地方出问题。

建议依序阅读。每一章都会完整沿用前一章的 src/,只添加一项机制,这就是本教学的 Carry-forward 结构。读完一章后,可以直接运行对应的离线测试。若想聚焦某项机制,只要比较前后两章的 src/ 目录,diff 中的差异就是该章添加的内容。

章节索引

| # | 章节 | 设计问题 | 核心机制 |
| | Foundation | | |
| 00 | Setup | 为什么核心只使用统一的 Message 格式,并通过可替换的 Model seam 调用模型? | 不绑定 provider 的 Message、流式 Model seam、Scripted stand-in |
| 01 | Kernel | 为什么 plugin 的卸载与清理应由框架统一管理? | 可反向撤销的 fiber/effect 注册 |
| 02 | Session log | 为什么模型历史应从 log 推导,而不是另外保存一份消息列表? | append-only log + surface + derive_messages() |
| 03 | Compaction | 在 log 只能追加的情况下,compaction 如何缩小模型可见的历史? | surface 的 replace 操作 |
| | The Loop | | |
| 04 | Agent loop | 为什么每个 step 都要重新组装 prompt,并从 log 推导历史? | turn/step 状态机,log 是唯一可持久状态 |
| 05 | Tools | 为什么被拒绝或运行失败的调用,仍然必须产生 tool/result? | scoped registry + pre/ask/guard/execute/post pipeline |
| 06 | Scheduler | 为什么并行安全的调用会重叠执行,互斥调用会形成 barrier,而取消后尚未开始的调用会收到合成结果? | 四阶段并行工具 scheduler |
| 07 | Inbox | 为什么 inbox 需要 next-turn 与 next-step 两种目标,并只在 step 边界认领? | next-turn/next-step 两种介入时机 |
| 08 | System prompt | 为什么动态状态要以 user 消息重新发送,而不是写进 system prompt? | 有顺序的 provider -> system prompt + 工具列表 + runtime-context 快照 |
| 09 | Skills | 为什么 skill 列表以 context 注入,完整内容却由工具按需加载? | 分层 provider registry;列表先注入,内容按需加载 |
| | Capabilities | | |
| 10 | Capability seams | 一个能力在什么情况下,才值得拆成 Definition、Provider 与 Consumer? | Definition/Provider/Consumer 角色分离(fs/shell/sandbox/llm) |
| 11 | Jobs | job id 公开后,谁拥有读取、等待与取消它的权限? | 只允许拥有者操作的背景工作协议 |
| 12 | Subagent | 为什么 subagent 接口是「启动 child,返回 run」,而不是继承 Agent? | 具名 provider 的委派 registry |
| | Composition | | |
| 13 | Composition | 为什么 patch 会替换完整 config,而不是深层合并? | 在空的 entry 列表上依序叠加 patch 层 |

项目结构

learn-deepseek-harness/
├── README.md
├── LICENSE
├── requirements.txt # live demos only: anthropic, python-dotenv
├── .env.example # ANTHROPIC_API_KEY / ANTHROPIC_MODEL / optional base URL
├── assets/ # the architecture diagram, and the script that draws it
└── sections/
├── 00-setup/
│ ├── README.md
│ └── src/ # message.py, standin.py, test.py
├── 01-kernel/
│ ├── README.md
│ └── src/ # 00's src verbatim + kernel.py, test.py
├── ...
└── 13-composition/
├── README.md
└── src/ # 完整沿用第 12 章的 src,并加入本章机制、test.py、demo.py

运行方式

教学中的每项行为都有离线测试可验证。这些测试只使用 Python 标准库,不需安装额外软件包、API key 或网络,而且每次运行都会得到相同结果。

python sections/00-setup/src/test.py # one section
for t in sections/*/src/test.py; do python "$t" || break; done # all sections

从第 04 章开始,需要调用模型的章节也会提供在线示例,使用预先写好的 turn 调用 Anthropic API。如果没有设置 API key,示范会自动跳过,不会报错。

pip install -r requirements.txt
cp .env.example .env # then fill in ANTHROPIC_API_KEY
python sections/04-agent-loop/src/demo.py

参与贡献

- 深化某个章节:补上更精准的代码片段、更完整的失败模式,或更严谨的测试。
- 修正内容:如果 Mini-dsh 与真正 dsh 的对照有误,或文中任何说法与锁定版本的源代码不一致,欢迎提出修正。

延伸阅读

- Cordis primer:dsh 自己写的入门文,介绍它底下那套 plugin runtime。
- Cordis tutorial:教你怎么写真正的 dsh plugin,这份 tutorial 把写 plugin 的操作细节全都交给它。
- Subsystem docs:每个子系统都有独立的设计文档,可搭配各章的「对照真正的 dsh」段落阅读。
- cordiverse/cordis:dsh 内嵌进来的上游框架。
预览分享卡片长什么样 ↓hardness1020/learn-deepseek-harness
分享 · DeepSeek Harness Hub
hardness1020/learn-deepseek-harness

一切皆为 plugin:从零拆解并重建 DeepSeek Harness。

回到顶部