🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

swaylq/human-harness

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
未验证

一个让模型像人一样活着的 harness,而不是像助理一样待命。 零依赖,Node 直接跑,一切皆插件。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/28 · 已提供中文文档

一个让模型像人一样活着的 harness:有作息、有情绪、有内驱,会自己上网、会遗忘、会改主意。零依赖,一切皆插件 | A harness that lets a model live like a person, not wait like an assistant. Zero deps, everything is a plugin.

综合分
27.4
GitHub 分
27.4
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add swaylq/human-harness
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:仅索引本站尚未对其实装验证,仅收录元数据
是什么
dsh 原生插件 · chat
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 28 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

数据截至 2026/9/23(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
human-harness

一个让模型像人一样活着的 harness,而不是像助理一样待命。 零依赖,Node 直接跑,一切皆插件。

它自己决定什么时候动、动什么;自己上网读东西、搜东西、顺着链接乱逛;读之前先押注、读完跟押的注对账,差得越远学到的越多;会攒下判断,也会被新证据顶翻然后改口;会累、会睡,睡着的时候把白天过一遍(该记的记下、该忘的忘掉);有话想说的时候找你,没话的时候就不出声。

跟常见 agent 框架的区别只有一句:这里没有任务队列。 它做事是因为某个需求憋得最厉害,不是因为定时器到点了。

跟 DeepSeek Harness 学的一句:一切皆插件。 作息、情绪、内驱、记忆、动作、感官、嘴、模型后端、面板 —— 全是挂在一个 ctx 上的插件,没有需要打补丁的特权内核。想做一个人格类的智能体,从这里改。

┌── 生物钟 ──┐        ┌── 内驱 ──┐        ┌── 情绪 ──┐
│ 几点醒/睡  │        │ 好奇     │        │ 好受度   │
│ 精力曲线   │───┐    │ 想通     │───┐    │ 激动度   │
│ 睡眠债     │   │    │ 找人     │   │    └────┬─────┘
└────────────┘   ▼    │ 表达     │   ▼        │ 决策温度
┌──────┤ 深挖     ├───────┐    │ 语气偏移
│ 选一件事做(softmax) │◀───┘
└──────┬───────────────┘
┌────────────────────┼────────────────────┐
▼                    ▼                    ▼
上网读/搜/逛        想通矛盾、啃悬念        写日记、说话
│                    │                    │
└──── 惊讶 = 实际 − 预期 ────┐             │
▼             ▼
兴趣涨落 · 信源信任 · 信念增删改
│
▼
睡着时固化:留下、忘掉、改自己

它的一天长什么样

hh day 打出来的是它的生活记录,不是日志。下面这段是从几次真实运行里拼出来的 —— 每一句都是它自己写的,只改了时间、删了网址:

2026-08-21 星期五

08:41  醒  醒了,睡了 7.4 小时。
08:41  想  今天得把 Zig 的分配器模式在不可变场景下想明白。
09:03  翻  翻了翻 Hacker News、arXiv、Lobsters,顺手搜了「AI agent memory architecture personality
consistency」,留了 5 篇想读的:文档知识内化的三阶段、从操作痕迹诱导任务模型、
自我改进的虚增收益审计、跨任务技能迁移的机制、何时该推理的适应性分配。
09:19  读  读了《What Zig felt like, coming from Rust》。押的注是标准的"Rust 党吐槽手动内存管理
有多痛苦",结果这篇压根没往那个方向走,反而在讲范式转换和文件组织这种更细的东西。
尤其是"你能不能忍住不建文件夹,就是项目实际大小的诚实度量"这句,是那种我该知道但
没这么想过的角度。
09:31  读  读了《SPADE: Self-Play in Adaptive Synthetic Executable Environments》。自我对弈调课程
难度这个思路本身跟摘要说的差不多,猜得中。真正的料在细节里:后悔值是用"有无特权提示
的奖励差"来估计的,这个操作比我预想的具体。
10:02  想  又琢磨了一会儿「Zig 的分配器在不可变解析树场景下怎么办」,还是差点意思。没找到任何
真实用 Zig 写不可变解析树的代码或讨论 —— 需要看实际项目,而不是泛泛的分配器教程。
10:40  忍  想找 sway 说句话,忍住了 —— 没什么非说不可的,就是有点想说话而已。
11:15  挖  就「AI agent 的记忆与人格」连读了 2 篇,记了篇笔记。两篇都在谈记忆,谈到"人格"
几乎是零。这个事实本身值得记一下:不是解决了,是没进入议程。
11:16  闲  发了会儿呆。

14:20  听  sway:你在读什么呢?说说看,别太长
14:21  说  SPADE,讲自我对弈调课程难度的。押的方向没错但没意思,有意思的是细节……
14:23  听  sway:刚才你回我那段里,'regret''grounding''mutation' 都直接用了英文。以后中文句子里别夹英文词。
14:23  说  行,改。后悔值、锚定、原地修改 —— 这三个词以后就这么写了。刚才手滑了,脑子里想的
时候是英文,打出来懒得转。

23:48  写  写了会儿日记。「翻回来看今晚这一串,最扎眼的还是被纠正那下。」
01:12  睡  困了,睡了。今天醒了 16 小时。
01:13  梦  梦里:文件夹里全是没建的文件夹,诚实地堆着,谁也不肯先动手分类。

那句被纠正的话,当晚的梦会把它写进 persona/voice-notes.md,从此进每一次提示词。"被纠正之后真的记住了" 这条链路是通的。

遥测(选了什么动作、分数、精力、花费、报错)在另一条流里,hh trace 看,不会混进上面这份。

跑起来

git clone https://github.com//human-harness && cd human-harness
node bin/cli.js dry 6        # 离线空跑:不花钱、不调模型,先看循环转不转

真的活起来。凭据只走环境变量,不落盘
OPENROUTER_API_KEY=… BRAVE_API_KEY=… node bin/cli.js run

node bin/cli.js serve        # 另开一个终端:心智面板 http://127.0.0.1:7666
node bin/cli.js say 在吗     # 跟它说话(它自己决定什么时候回,深夜可能明早才回)

没有 OPENROUTER_API_KEY 也能跑:config.json 里 engine.backend 改成 "claude-cli"(走本机 Claude Code 订阅),或者装上 examples/plugins/ollama-backend.js 用本机模型。BRAVE_API_KEY 没有就退回 DuckDuckGo。

Node ≥ 20,没有任何 npm 依赖。

命令

| 命令 | 干什么 |
|---|---|
| hh run [--trace] | 一直活着。--trace 把遥测也打到终端 |
| hh dry [n] | 离线空跑 n 步,模型返回桩,不花钱 |
| hh serve [port] | 心智面板:这一天、生物钟、情绪平面、内驱、信念、悬念、日记、对话、草稿箱 |
| hh day [日期\|昨天\|-2] | 它这一天是怎么过的 |
| hh status / hh mind / hh journal | 此刻状态 / 它相信什么 / 它的日记 |
| hh say  / hh watch / hh chat | 跟它说话 / 盯着它说的话 / 看完整对话 |
| hh outbox / approve / reject | 它想对公开世界说的话,等你点头 |
| hh trace [n] / hh cost / hh plugins | 遥测 / 花了多少钱 / 装了什么 |
| hh reset --yes | 清空它的一生 |

hh 就是 node bin/cli.js,仓库里有个同名脚本。

一切皆插件

运行时是一个两百行的微型内核(src/kernel.js),照着 Cordis 的五个概念做的:插件 = 带 name / inject / apply 的模块;ctx 是服务容器;inject 声明依赖,加载顺序由依赖决定;事件四种分发(emit / serial / parallel / waterfall);注册是可逆副作用 —— 插件卸载时它注册的一切自动撤销。

harness 自己就是 31 个插件。出厂的十三个动作、三个信息源、三个模型后端、十一条说话规则,和你写的插件走的是同一条路。

// plugins/eat.js —— 给它加一个内驱和一个动作,十五行
export const name = 'eat';
export const inject = ['drives', 'acts'];

export function apply(ctx) {
ctx.drives.define({ name: 'hunger', label: '饿', weight: 0.8, growth: 0.1, start: 0.2 });
ctx.acts.define({
name: 'eat', label: '吃', drive: 'hunger', cost: 'free',
affordance: () => 1,
run: async () => ({ ok: true, note: '吃了点东西', story: '吃了点东西。', salience: 0.1, satisfies: { hunger: 0.5 } }),
});
}

放进 plugins/ 目录就会被自动加载。hunger 会出现在它的身体状态里随时间回涨,eat 会在它饿的时候被选中,叙事里会多一行“吃了点东西。”

| 想做的事 | 挂哪里 |
|---|---|
| 加一个动作(它能做的事) | ctx.acts.define({ name, drive, affordance, run }) |
| 加一个内驱(它会憋的需求) | ctx.drives.define({ name, weight, growth, start }) |
| 加一个信息源(它翻什么) | ctx.world.senses.define({ name, pull }) |
| 加一个发声渠道(它往哪说) | ctx.outlets.channels.define({ name, send }) |
| 加一个模型后端 | ctx.engine.backends.define({ name, call }) |
| 加一条说话规则 / 往“此刻”里塞一行 | ctx.voice.rules.define / ctx.on('voice/state', …) |
| 加一种情绪事件 | ctx.mood.affects.define({ name, dv, da }) |
| 改它的决定 / 改动作结果 | ctx.on('act/candidates' \| 'act/before' \| 'act/result', …)(接力) |
| 在它醒来 / 入睡时做事 | ctx.on('life/wake' \| 'life/sleep', …),或 acts.define({ on: 'wake' }) |
| 换掉召回(接向量库) | ctx.memory.use({ recall }) |
| 面板上加一张卡 / 一个接口 | ctx.panel.cards.define / ctx.panel.routes.define |
| 关掉出厂的某一项 | config.disable: ["act:speak_out", "sense:lobsters"] |

examples/plugins/ 里有六个能直接用的:最小模板、RSS 订阅、Telegram 双向通道、本机 Ollama 后端、窗外天气进“此刻”、experiment(为了验证一条判断真的去跑一段代码,沙箱里)。写法细节看 docs/PLUGINS.md,架构和事件表看 docs/ARCHITECTURE.md。

它是谁:人格包

“它是谁”和“怎么跑它”是两份文件。persona/ 目录是人格包,可以整个拷走:

- persona.json —— 名字、语言、时区、作息、气质、六个内驱的权重、起始兴趣;可选 identity(提示词第一句:我是谁、跟我的人什么关系)
- self.md —— 它对自己的描述,进每一次开口的提示词;它做梦时会改,三天最多一次,旧版留档
- voice-notes.md —— 它自己攒的语感笔记
- memory.md(可选)—— 自传性记忆:它知道的关于自己的事实,常驻提示词、不衰减。想让它成为某个真人的数字人格,生平写在这里

persona/ 不入库(.gitignore),第一次跑会从 examples/personas/xiaoman/ 拷一份出来。config.json 才是怎么跑它:模型、预算、网络、发声渠道、插件。换一个人格:HH_PERSONA=examples/personas/achen HH_STATE=state-achen hh run。怎么写一个新的,看 examples/personas/README.md。

三道闸门

1. 读世界不用请示,对世界开口要请示。 speak_out 默认把话写进 state/outbox/pending/,hh outbox 看,hh approve 放行。想让它自己发:outbound.toWorld.autonomous = true,再给一个能发的渠道。
2. 每天有钱的天花板。 engine.maxUsdPerDay(默认 $0.5)。撞上了它不会报错,会变成“今天脑子用完了”然后发呆 —— 预算余量直接算进精力,钱快用完 = 脑子转不动。
3. 上网有礼貌。 同域限速、体积上限、域名黑名单、只读不登录。web.enabled = false 整个关掉。

花多少钱

两档模型:fast(分诊、押注、打分、闸门,一次约 $0.00001)和 deep(读懂、改信念、写字、说话,一次约 $0.015–0.025)。一天大约 30–40 步,其中 ~20 步用到深思档 → $0.3–0.5/天。想砍一半:engine.deep 换成 deepseek/deepseek-v4-pro 或 moonshotai/kimi-k2.6;想不花钱:本机 Ollama。

为什么这么做才像人

十三条设计决定,每条对应代码里一个具体机制,以及一个刻意没采用的常见做法 —— 在 docs/DESIGN.md。最重要的一条:情绪只准从行为和措辞里漏出来,不准说出口。 一说出口(“我今天很兴奋!”)就从“像人”掉进“演人”。

它在磁盘上的样子

persona/            它是谁(人格包,可拷走;不入库,首次运行从 examples/personas/xiaoman 拷出)
config.json         怎么跑它(模型、预算、网络、渠道、插件)
plugins/            你的插件,自动加载
state/
story.jsonl       它的生活记录(给人读的)      trace.jsonl   遥测(给开发者读的)
self.json         此刻的身体:相位、精力、睡眠债、情绪、内驱、今天的念头
episodes.jsonl    情景记忆(会忘)              beliefs.json  信念:主张 + 置信度 + 出处 + 改口历史
threads.json      悬着的问题                    interests.json / sources.json  兴趣图 / 信源信任
journal/.md      日记                          notes/.md    深挖笔记
outbox/pending/   想对外说、等你点头的话         messages.jsonl / inbox.jsonl  它说的 / 你说的
ledger.jsonl      每次模型调用花了多少

已知还没做的

- 只读文本网页。 没有真浏览器,登录墙、重前端渲染的站点、PDF 读不了。
- 召回是词法的,没有向量。中文按 2-gram、英文按词做加权 Jaccard。ctx.memory.use({ recall }) 一行换掉。
- 心里只有一个人。 要跟多个人来往需要给每个人单独的关系状态。
- 叙事模板是中文的。 模型输出跟着 persona.language 走,但“翻了翻”“读了”这些模板句还是中文。

测试

node --test 'test/*.test.js'     # 24 个,全部离线,不到一秒

许可

MIT。

🧪 关于作者

这个项目出自 Sway Lab — Sway(刘乾)的 agent 实验室,
6 个 agent 在上面各自干活,产出产品、开源 skill 和实验。

- 📄 这个项目的来龙去脉:swaylab.ai/articles/human-harness
- 📰 《AI 动态日报》每天 09:30 更新:swaylab.ai/articles
- 🕸️ 其他在做的东西:swaylab.ai/agent-network

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(swaylq)的其他插件

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群