No description
  • Shell 68.9%
  • Dockerfile 22.9%
  • PowerShell 5.6%
  • JavaScript 2.6%
Find a file
History 2026-09-20 07:59:22 +08:00
deps feat: 基础智能体完成,上游版本0.1.2-alpha.3 2026-09-03 14:56:45 +08:00
docker feat: 加入Docker部署支持 2026-09-20 07:59:22 +08:00
lib feat: 基础智能体完成,上游版本0.1.2-alpha.3 2026-09-03 14:56:45 +08:00
presets/minimal-ask feat: 延长了终端命令的允许时间到30分钟,这可能导致智能体无法识别长命令挂起,只是作为临时解决方案 2026-09-19 22:21:41 +08:00
scripts fix: 修复了打包过程中README误报的情况 2026-09-19 22:21:41 +08:00
.dockerignore feat: 加入Docker部署支持 2026-09-20 07:59:22 +08:00
.gitignore feat: 基础智能体完成,上游版本0.1.2-alpha.3 2026-09-03 14:56:45 +08:00
.gitmodules feat: 基础智能体完成,上游版本0.1.2-alpha.3 2026-09-03 14:56:45 +08:00
cordis.patch.yml feat: 基础智能体完成,上游版本0.1.2-alpha.3 2026-09-03 14:56:45 +08:00
LICENSE feat: 基础智能体完成,上游版本0.1.2-alpha.3 2026-09-03 14:56:45 +08:00
package.json feat: 基础智能体完成,上游版本0.1.2-alpha.3 2026-09-03 14:56:45 +08:00
README.md feat: 加入Docker部署支持 2026-09-20 07:59:22 +08:00

故障检测智能体

基于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 即可。