- Shell 68.9%
- Dockerfile 22.9%
- PowerShell 5.6%
- JavaScript 2.6%
|
History
|
||
|---|---|---|
| deps | ||
| docker | ||
| lib | ||
| presets/minimal-ask | ||
| scripts | ||
| .dockerignore | ||
| .gitignore | ||
| .gitmodules | ||
| cordis.patch.yml | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
故障检测智能体
基于deepseek harness(dsh)的二次开发,需求用户系统里已经安装了deepseek harness 0.1.2-alpha.3,具体安装请参考scripts/install.md。修改后打包请使用scripts/pack.sh。
dsh简要介绍
这是2026年八月deepseek新开源的agent harness,原版提供类似codex/claude code的功能,内置了精选的软件工程相关技能和提示词。
其采用一种特殊的插件化架构,使得包括工具调用、技能读取、网络搜索、大模型接入在内的几乎所有功能都是插件化可插拔的,通过写配置就可以实现高度的自定义。 因此可以很方便地得到一个极简的客制化智能体,这也就是我们所需要的。
架构极简说明(个人理解,可能够用)
我们关心的主要是三样东西:profile、bundle、preset。首先启动dsh时带参数--profile可以加载一份profile,profile相当于一份清单,向dsh说明需要加载哪些bundle;dsh预设了很多bundle,包括它的默认功能也是一个bundle,我们的智能体profile(fix-profile.mjs)会包括官方的最小量bundle(sdk-minimal)和前端(web-app),以及本仓库包含的自定义bundle(health-agent)。自定义bundle(cordis.patch.yml)里提供了一些胶水功能保证webapp能够起来,此外添加了skill加载、第三方模型接入和允许智能体问用户问题的功能(参见yml尾部)。这些bundle组合成的profile跑起来之后会在本机3080端口上启动开发服务器,进去前端之后可以配置模型和智能体对话,但dsh向智能体提供的工具和提示词是由preset(minimal-ask)决定的,参见agent.cordis.yml。智能体实际接收的系统提示词来自多方面的拼接,包括yml(注意preset会覆盖bundle的提示词)里的persona和工具、技能的简短描述,因此为了保证我们智能体的专业性有必要只保留需要的提示词、工具和技能,并且对这些提示词的组分质量做优化。
DeepSeek v4 flash用dsh读dsh的代码库画的图
┌─ 平面 1:启动组合栈(HOST 平面)——"这个部署是什么" ─────────────┐
│ dsh --profile test │
│ bundles 按序: [sdk-minimal, web-app, test] ← 每层=npm 包内 patch │
│ → profile cordis.patch.yml (~/.dsh/profiles/test/) │
│ → home cordis.patch.yml (~/.dsh/cordis.patch.yml) │
│ → --patch overlay │
│ ↓ 后写的层按 id 覆盖先写的 │
│ 组合树 = 注册表/服务/安全/GUI(tools、llm、user-questions…) │
│ 其中有一行:agent-presets { default, roots } ← 唯一的桥 │
└───────────────────────────────────────────────────────────────┘
│ 会话创建时:roster 按 default 解析 preset
▼
┌─ 平面 2:agent preset(AGENT 平面)——"某个会话的智能体是什么" ───────┐
│ roster 扫描 roots(顺序即优先级,前面赢重复 id): │
│ ① shipped root dsh-agent-presets 包内 → cordis/minimal/ptc/standard │
│ ② configured roots(config 可加,按序) │
│ ③ user root ~/.dsh/.agent-presets/ → minimal-ask(最后,最弱) │
│ 每个 preset 目录 = agent.cordis.yml = 该智能体的工具/persona/prompt 段 │
└───────────────────────────────────────────────────────────────┘
快速修改
注意
修改本仓库内的任何组件后都应该重新使用scripts下的pack.sh打包、install.sh安装,在仓库文件夹内的修改不会自动被本地Deepseek Harness识别!
技能
presets/minimal-ask/skills,可以参考技能的官方规格要求网站和skillcreator技能,在这个路径下修改的技能需要重新打包安装后才能被顺利调用(原理是技能需要进入用户的.dsh文件夹才能识别,而安装脚本可以自动把技能移动到所需的位置)。dsh的基本功能包括读取工作区里.agents/skills和.claude\skills等目录内的现有技能,因此如果只是快速开发技能可以不修改本仓库,只需要把技能拷贝或者链接到工作目录下上述位置即可;但同样欢迎将技能打包在本仓库内,这可以方便版本管理。
基本系统提示词(persona)
presets/minimal-ask/agent.cordis.yml,注意这只是智能体系统提示词的第一部分,完整的系统提示词还包括工具情况和技能情况。
基本功能
cordis.patch.yml,在deps/dsh-upstream/packages/bundle里有很多参考,从里面找最需要的,并且宁缺毋滥。
插件
也就是cordis.patch.yml的行,似乎社区已经维护了很多,github里有awesome仓库,或许可以淘到有用的,但还是宁缺毋滥。
前端
我的想法是fork目前的web-appbundle研究一下,换一些显示得到新bundle然后替换当前profile,不过这个不影响功能。
submodule说明
仓库的submodule(deps/dsh-upstream)是上游dsh的代码库,后续开发时工作区里带着代码库有助于人/agent直接翻源码确定功能。
Docker化交付
docker/ 目录把本产品装进社区容器镜像(底包 runzhliu/deepseek-harness:0.1.2-alpha.3-r1,与本仓库要求的 dsh 版本一致),打通"开发机构建 → 导出 tar → rsync 到局域网服务器 → 服务器加载运行 → 同局域网其他机器用浏览器访问 agent"这条链路。构建、传输、数据目录挂载方式、安全边界与排障见 docker/README.md。
./docker/ship.sh sunk3nstar@<服务器地址> --lan-host <服务器局域网IP>
注意:容器里跑的是构建时打包的 bundle,改完仓库里的产品文件(cordis.patch.yml、presets/、lib/)必须重建镜像才生效;只改部署行为(端口、信任来源、挂载)则改 docker/compose.health.yaml 或 overlay 后重新 up -d 即可。