
# Agent‑Body
**DeepSeek Harness 的器官化插件层:器官、神经冲动、心跳、反射弧、长期记忆,以及闭环自愈。**
*这里的插件不是一份工具清单,而是一具活着的身体里的器官。*
[](#器官目录)
[](#器官目录)
[](#token-经济)
[](benchmarks/results/REPORT.md)
[](#自己验证)
[](#快速开始)
[](LICENSE)
[](https://github.com/1420079678-ctrl/agent-body/stargazers)
[](https://github.com/1420079678-ctrl/agent-body/issues)
[](https://dshfind.com/en/plugins/1420079678-ctrl/agent-body)
[架构文档](ARCHITECTURE.md) · [器官目录](catalog/organs.json) · [基准报告](benchmarks/results/REPORT.md) · [路线图](ROADMAP.md) · [**English**](README.md)
[官方 DSH 讨论区 · **Show Your Plugins!**](https://github.com/deepseek-ai/deepseek-harness/discussions/7555) · 官方 `CONTRIBUTING` 指定给插件作者的展示通道
**v0.1.1** · MIT · Windows 优先(Node 22.19 / 24) · **目录内 26 个器官,由本仓库 23 个插件包实现** · [发布说明](https://github.com/1420079678-ctrl/agent-body/releases/tag/v0.1.1)
[](https://1420079678-ctrl.github.io/agent-body/)
▶ **[打开在线 demo](https://1420079678-ctrl.github.io/agent-body/)** —— 一台真实安装的体征回放:心跳、器官、脉冲流、自愈账本与 token 门控,不用装任何东西。页面由运行时文件(`vitals.json`、`bloodstream.json`、`pulse.jsonl`)生成,不是照抄截图。
**目录** · [为什么做这个](#为什么做这个) · [它有什么不一样](#它有什么不一样) · [五层生物层级](#五层生物层级) · [架构一览](#架构一览) · [器官目录](#器官目录) · [快速开始](#快速开始) · [写自己的器官](#写自己的器官) · [自己验证](#自己验证) · [什么时候不要用这个](#什么时候不要用这个) · [常见问题](#常见问题) · [仓库结构](#仓库结构) · [参与贡献](#参与贡献) · [路线图](#路线图)
---
## 一行安装
```powershell
dsh plugin --profile web add `
https://github.com/1420079678-ctrl/agent-body/releases/download/v0.1.1/dsh-external-dsh-organism-0.1.1.tgz `
https://github.com/1420079678-ctrl/agent-body/releases/download/v0.1.1/dsh-external-dsh-cortex-0.1.1.tgz `
https://github.com/1420079678-ctrl/agent-body/releases/download/v0.1.1/dsh-external-dsh-zero-residence-0.1.0.tgz
```
```bash
dsh plugin --profile web add \
https://github.com/1420079678-ctrl/agent-body/releases/download/v0.1.1/dsh-external-dsh-organism-0.1.1.tgz \
https://github.com/1420079678-ctrl/agent-body/releases/download/v0.1.1/dsh-external-dsh-cortex-0.1.1.tgz \
https://github.com/1420079678-ctrl/agent-body/releases/download/v0.1.1/dsh-external-dsh-zero-residence-0.1.0.tgz
```
`dsh plugin` 会把参数原样转发给 profile 目录里的 `pnpm add`,所以一条命令能装多个包。装完重启 harness,`body_status`
就应该列出这些器官。目录里其余器官各是一个 tarball,见[快速开始](#快速开始)。
## 先看证据
| 你想要… | 打开… | 能核到什么 |
| --- | --- | --- |
| 不装任何东西先看它跑 | `npm run demo` | 一条真实的「命令 → 冲动 → 支配 → 执行 → 归因 → 反射」链路,离线、无需 key |
| 让提示词少塞点工具表 | [`benchmarks/results/REPORT.md`](benchmarks/results/REPORT.md) · `npm run bench:check` | 48 条命令上门控掉 **84.71%** 的 tool schema token(冷启动,可复现);带历史口径 74.25% |
| 让同一个失败别再犯第二遍 | `body_heal` | 重试之前先归因:`tool_missing` / `arg_error` / `permission` / `timeout` / `network` / `not_found` / `conflict`。开发机实测:**愈合 198、未愈 0、愈合率 99%** |
| 确认系统还活着 | `body_status` · `body_heart` | 43 个器官、**332/332** 项能力已被认领、第 1121 跳、架构完整性 6/6(*开发机实测*) |
| 拆掉一个器官身体还在 | `body_organ action=integrity` | 核心六件套不依赖任何单个器官;`body_call` 由能力重叠最高的器官代偿 |
| 写自己的器官 | [`docs/ORGAN_SDK.md`](docs/ORGAN_SDK.md) | `defineOrgan()` 在声明处校验并带字段路径抛错;`npm run check` 把整个仓库纳入闸门 |
---
## 为什么做这个
几乎所有 Agent 框架最后都会长成同一个样子:一堆工具、一份越来越长的系统提示词清单,以及一个**会话之间什么都记不住**的 agent。
同一个错误它要犯第二遍才「知道」它存在。它说不清自己哪项能力是坏的。它根本不知道某个依赖的插件已经掉线了——它只是照常调用、然后失败。而你还在一轮轮地为那些从没人调用的工具 schema 付 token。
**Agent‑Body 押的是相反的一注:把插件系统当成一具有机体来对待。**
每个插件都声明自己是一个**器官**——带着能力、感知和反射。其余的一切都是生理活动:一套把你的命令路由到正确器官的神经系统,一颗按节律把状态泵向全身的心脏,一些**完全不消耗模型调用**就能开火的反射弧,以及一条在考虑重试之前先把失败归因清楚的愈合回路。
结果就是:这套系统**用得越多越好**,而且你把某些部分拆掉,它依然站得住。
---
## 它有什么不一样
### 🫀 它有一颗心脏,不是一个循环
真正的起搏器以 1 秒为基准时钟,并**可变间期**——危重告警时快 3 倍、疲劳时快 2 倍、长时间静默时慢 2 倍。每一跳把当前的操作者指令、本体感觉与稳态告警打包成一份血液包,写入 `bloodstream.json`,并以 `organism/heartbeat` 广播出去。任何器官一行代码就能接上这套循环:
```ts
ctx.on('organism/heartbeat', (blood) => { /* 你的器官从此有了脉搏 */ })
```
循环是闭环而不是单向喷灌:器官经 `organism/venous` 回血,新学到的知识先经 `organism/oxygenated` 氧合,再泵向全身。
### 🧠 你的一句话会变成一束神经冲动
你输入一条命令。在模型还没开始推理之前,`agent/pre-step` 就把它转换成冲动,确定性地**支配(innervate)**应该处理它的器官,并广播 `organism/impulse`——告诉每个器官**该用自己哪一个能力**。
然后身体会记住这条路线。被支配的器官真的把活干成了,一条 Hebbian 突触就强化「这类命令 → 那个器官」;干砸了就衰减。支配顺序会自己重排,并持久化在 `synapses.json`。
```
你: "抓取这个站点并抽取结构化数据"
冲动 → 感官(web-crawl) · 执行(plan) · 免疫(verify)
→ 每个器官都被点名该开哪一项能力
```
### 🩹 自愈是闭环,不是口号
```
失败 → 确定性归因 → 按处方处置 → 复检
```
归因靠的是判定而不是猜:`tool_missing` / `arg_error` / `permission` / `timeout` / `network` / `not_found` / `conflict` / `unknown`。处方表决定怎么处置——只读类自动执行,有副作用的留给大脑裁决,而且 **`arg_error` 绝不自动重试**(参数错了还重试,只会把错误放大)。
伤口只有在**那个器官下次成功**时才会闭合——系统不会自己宣布自己痊愈了。超过 5 分钟仍未闭合的伤口标记为 `chronic`,停止空转。
> 在开发机上实测:**21 个伤口愈合 · 愈合率 100% · 0 个慢性伤口。** 一个 `arg_error` 伤口在真正的修复落地后 3.5 秒闭合。
### 🌱 它会自己训练,也会主动遗忘
三条学习通道持续运行,你不需要专门教它任何东西:
1. **突触学习**——干成就强化「命令类别 → 器官」,干砸就削弱。
2. **反射自生成**——同一个「工具 × 病因」失败 3 次,系统会**自己写出一条反射弧**(`R-auto-<病因>-<工具>`),下次同样失败时自动开火。
3. **链路固化**——任何跨器官链路跑通且 ≥3 步,就被固化成可重放的技能。
遗忘同样是刻意的:突触按 30 分钟半衰期衰减,权重低于 `|w| < 0.2` 且已有样本就修剪;开火 ≥5 次却零贡献的反射退役;连续失败的技能被遗忘。
`body_heal action=rehab` 把器官恢复到健康基线——**损伤清除,智慧保留**:疲劳与伤口归零,已学到的突触、反射、技能一条不动。
### 💤 它会睡觉、巩固、记住
静默 2 分钟进入浅睡,5 分钟进入深睡;深睡中每 2 分钟跑一轮**零模型调用的巩固**——纯确定性规则,把这一天的经历提炼成长期记忆:
| 记忆卡 | 提炼自 |
| --- | --- |
| `pitfall`(坑) | 同一工具连续失败 ≥3 次 |
| `playbook`(打法) | 跨工具成功链路重复 ≥2 次(同工具重复的平凡链路被过滤) |
| `hotspot`(薄弱环节) | 调用 ≥8 次且成功率 <70% |
| `unresolved`(未解) | 最后一次成功之后累计 ≥3 次失败 |
| `fact`(事实) | 操作者明确给出的事实 |
新命令进来会触发确定性召回——标签 > 标题 > 正文,再乘权重——最相关的几张卡被注入上下文。久未使用的卡按 168 小时半衰期衰减,并且是**归档而不是删除**。
### 🪶 零驻留上下文
这套引擎不用有损的 LLM 摘要,而是把常驻内容替换成**确定性指针**——并且每一个被遮蔽的字节都能从会话日志里逐字还原:
| 工具 | 作用 |
| --- | --- |
| `zr_compact` | 武装一次强制压缩,绕过比例阈值 |
| `zr_recall` | 按工具调用 id 或会话序号逐字重建被遮蔽的内容 |
| `zr_ledger` | 量化注意力积分、三段成本分解与压缩比 |
| `zr_fast` | 长命令异步执行,绝不阻塞当前回合 |
### 🧩 器官可以缺,架构不会动
六个内核不依赖任何一个器官:**神经总线 · 心脏泵 · 指令层 · 反射引擎 · 解剖器 · 冲动传导**。
拔掉一个插件,身体照常运转。卸载 `dsh-office-docs` 时立刻被检出——`craft` 器官离线,它的能力**由重叠度最高的器官代偿**,核心完整性依旧全绿。根本没安装的器官会被如实报告为「未安装」而不是「坏掉」——这一条根治了一场每 15 秒刷一次告警的风暴。