dshbase

插件目录 / Developer / dsh-survival

dsh-survival

已验证 · 实测可装 XDzzzzzZyq

✓ 持续维护 2 位贡献者

查看 GitHub ↗ ← 返回插件目录

1Stars
0Forks
0未关闭 issue
JavaScript语言
2026-08-15最近推送
跨平台平台

功能简介

DeepSeek Harness生存模式

✅
我们的评价
可用 — 实测通过,早期项目

DeepSeek Harness生存模式 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

DSH 生存模式

> 🍗 **MC原版生存,今天吃什么?** 在 https://github.com/deepseek-ai/deepseek-harness 中体验**MC原版生存**:MC 原版生存机制 + MC 风格 UI。

这是什么

把一次会话变成一场方块世界生存(**agent 角色与标准模式完全一致**,仅追加一段系统提示,告诉 agent 何时请示吃饭/睡觉): - **新机制**(宿主端引擎 survival-engine,按 MC 规则结算): - ❤️ 生命值 0-20:工具失败 / 步骤错误掉血;**饱食度 ≥18 且饱和度 >0** 时每回合自动回 1 HP(消耗 6.0 疲劳)。 - 🍗 饱食度 0-20 与 ✨ 饱和度 0-20(上限=饱食度):**token 消耗产生疲劳,每满 4.0 疲劳先扣 1 饱和度,饱和度耗尽才扣饱食度**;进食先补饱和度再补饱食度。 - ⛏️ 昼夜循环:一天 24000 tick = 20 真实分钟(白天 10min / 黄昏 1.5min / 夜晚 7min / 黎明 1.5min),时间实时流逝,UI 随相位换色。 - 🎒 物品栏与 MC 食物表;**死亡掉落物品**,重生补给出生点物资。 - 😴 **吃饭 / 睡觉都由代理请示用户**(ask_user_question):饿了问"可以吃饭吗",夜晚问"可以睡觉吗";睡觉睡到清晨 1000t 并**打断当前任务**(concludeTurn)。 - 📝 **角色保持标准**:预设不定义 persona,agent 就是标准编码 Agent;只有 survival-prompt 追加一段系统提示(饱食度低时请示吃饭、夜晚请示睡觉)。 - **UI 风格**(ui/survival-hud.js,动态插件,真实 MC 素材): - **输入框上方**常驻状态条(conversation.input.dock):**10 颗红心**(官方 HUD 贴图,满/半/空、低血闪烁)+ **10 个鸡腿**(饱食度)——只显示生命与饱食度。 - 图标为 minecraft.wiki 官方 9×9 贴图(survival/assets/*.png),base64 内嵌、像素化放大,离线可用。 - **昼夜主题循环**:按 MC 相位切换四套全局配色(白天/黄昏/夜晚/黎明)。 - survival 工具专属卡片(聊天流内)与 /survival、/mc 命令(状态卡 + give 补给)。 > **素材署名**:survival/assets/*.png(红心/鸡腿 HUD 图标)来自 https://minecraft.wiki,采用 https://creativecommons.org/licenses/by-nc-sa/3.0/ 许可,版权归 Mojang 与 Minecraft Wiki 贡献者所有。

架构

`` DSH-survival/ ├── survival/ # ★ 可安装的 agent 预设(复制到任意部署的 .agent-presets/) │ ├── preset.yml # 模式元数据(名称/描述,出现在会话模式选择器) │ ├── agent.cordis.yml # Cordis 组成:标准工具集 + 生存域(不定义人格,角色与标准一致) │ ├── plugins/ │ │ ├── survival-engine.mjs # MC 引擎:provide 'survival' 服务,事件钩子 + settings 持久化 │ │ ├── survival-tool.mjs # survival 模型工具(status / eat / sleep / inventory / respawn) │ │ ├── survival-command.mjs # /survival 与 /mc 命令(状态卡 / eat / sleep / give / respawn) │ │ └── survival-prompt.mjs # 系统提示段:饱食度低请示吃饭、夜晚请示睡觉(角色不改变) │ ├── assets/ # 官方 MC HUD 图标源文件(红心/鸡腿 9×9 PNG,minecraft.wiki) │ └── skills/ │ └── survival-playbook/ # 随预设分发的 MC 法则技能(何时请示吃饭/睡觉) ├── ui/ │ └── survival-hud.js # 动态 Cordis 插件:MC 风格 HUD + 昼夜主题(参考实现) └── engine-smoke.mjs # 引擎功能冒烟测试(34 项断言,零依赖) `

关键设计决策

| 问题 | 决策 | 原因 | | --- | --- | --- | | agent 角色 | 不定义 persona,追加
systemPrompt.section() 提示段 | 与标准模式角色完全一致;生存行为只靠一段系统提示驱动(吃饭/睡觉请示),机制由引擎自动结算 | | 预设如何携带新代码 | agent.cordis.yml 用相对路径引用 ./plugins/*.mjs | 预设树的 loader 支持相对导入("a preset's own files travel with it"),整个模式自包含 | | 引擎服务的作用域 | 放在 isolate: { survival: true } 的 realm 里 | 预设行发布服务必须进 isolate realm,否则第二个会话挂载同一预设会冲突 | | 状态持久化 | settings 服务($DSH_HOME/settings.yaml),survival 命名空间按会话 id 键控 | 会话日志不允许仓库外事件类型(恢复时会拒绝整个日志);settings 是宿主的持久化 KV,且 schema 可以用普通函数代替 | | token 消耗 → 饱食度 | 回合结算时 tokenMeter.measure(session).surfaceTokens 的增量换算疲劳 | 忠诚"随 token 消耗减少";meter 缺失时用 stepFallbackTokens 兜底 | | 时间系统 | 状态存 absTicks + lastTickAt,20 tick/秒 按真实时间流逝 | MC 时间实时走;休眠/离线期间时间照常推进(与游戏一致) | | 浏览器实时 UI | 动态 Cordis 插件(ui/survival-hud.js) | **平台限制**:preset 无法携带 browser bundle(client 模块图在启动时静态构建),浏览器端扩展目前只能走动态插件管线;本仓库把该插件作为参考实现与文档 | | 工具/命令如何读状态 | 注入 survival 服务 | 同一 realm 内的兄弟行通过 inject 解析 | | 同进程热重载 | 引擎在 settings 命名空间已注册时复用现有注册 | 旧 standing 代仍存活时避免 already registered 冲突;但插件文件有 ESM 缓存,**改机制后需重启 DSH 生效** |

安装(给别人装)

1. 把
survival/ 目录复制到目标部署的预设根目录: `bash cp -R survival "$DSH_HOME/.agent-presets/survival" # $DSH_HOME 默认 ~/.dsh ` 或使用 DSH 的 preset 复制 API(agentPresets.copy('standard', 'survival', ...) 后替换文件)。 2. 重启 / 刷新 DSH(预设由 roster 在会话启动时发现)。 3. 新建会话时,在模式选择器里选 **生存模式**。 4. (可选)安装浏览器 HUD——当前需要通过动态插件管线加载: `bash # 在任意 cordis 会话里执行 cordis_define + cordis_run,代码见 ui/survival-hud.js; # 或用下方"本机开发"的脚本方式。 `

本机开发

`bash

安装(当前部署)

cp -R survival ~/.dsh/.agent-presets/survival

校验预设能否挂载(见编辑 Cordis 组成技能:mount-validate)

改动 survival/ 下的文件后重新校验即可;预设每次会话启动时重新读取

引擎功能冒烟测试(零依赖,直接跑)

node engine-smoke.mjs
`

机制参数(可调)

survival/agent.cordis.yml 里 survival-engine 行的 config 是全部规则(默认值与游戏一致): | 参数 | 默认 | 含义 | | --- | --- | --- | | maxHp / maxHunger | 20 / 20 | MC 生命与饱食度上限 | | startSaturation | 5 | 出生饱和度(MC:5.0) | | startInventory | bread×3, apple×2, cooked_beef×1, carrot×2 | 初始食物 | | tokensPerExhaustion | 150 | 每 150 token → 1 点疲劳(4 点疲劳扣 1 食物值) | | stepFallbackTokens | 400 | tokenMeter 不可用时的每回合兜底 | | failHpBase / failHpByPrefix | 1 / bash,pwsh 3; edit,write 2 | 工具失败伤害 | | stepErrorHp | 4 | 步骤级错误伤害 | | healThresholdHunger / healExhaustion / healHpPerTurn | 18 / 6 / 1 | 自然回血条件与消耗(MC:≥18 且 sat>0,回 1 HP 耗 6 疲劳) | | scorePerCleanTurn / scoreDeathPenalty | 1 / 5 | 生存分 | | respawnHp / respawnHunger / respawnSaturation | 20 / 20 / 5 | 重生值(MC) | | dayTicks / ticksPerSecond | 24000 / 20 | 一天 tick 数 / 时间流速(20 min/天) | | sleepStartTick / morningTick | 12542 / 1000 | 可睡窗口(MC:time>12541)/ 睡醒时间 | | keepInventoryOnDeath | false | 死亡掉落物品(MC 默认掉落;true 保留) | | starvationHpPerTurn | 1 | hunger=0 时每回合饥饿伤害 | | historyCap | 30 | 事件历史环形上限 |

食物表(MC 数值)

| 食物 | 饱食度 | 饱和度 | | 食物 | 饱食度 | 饱和度 | | --- | --- | --- | --- | --- | --- | --- | | cooked_beef | +8 | +12.8 | | bread | +5 | +6.0 | | cooked_porkchop | +8 | +12.8 | | baked_potato | +5 | +6.0 | | cooked_chicken | +6 | +7.2 | | carrot | +3 | +3.6 | | golden_carrot | +6 | +14.4 | | apple | +4 | +2.4 | | melon_slice | +2 | +1.2 | | cookie | +2 | +0.4 | | sweet_berries | +2 | +0.4 | | | | | 进食先补饱和度(上限=当前饱食度)再补饱食度(上限 20)。用户可用
/mc give <食物> [数量] 补给。

已知限制 / 路线图

- **进程运行期间修改预设组成会导致生存会话暂时无法创建(跳回标准模式)**:旧 standing 代占用的
survival settings 命名空间与新版冲突,挂载回滚。**重启 DSH 即可恢复**;引擎已内置"命名空间已注册则复用"的容错,重启后不再复发。 - 机制/UI 代码更新后需**重启 DSH**(预设插件文件有 ESM 缓存,同进程不重新加载;动态 HUD 插件也随进程重启消失,需重新 cordis_run,已授权过则免批) - 死亡时用 tools.guard` 阻止继续行动(当前死亡冻结状态,但工具仍可调用) - 把 HUD 变成随预设分发的正式 UI(需要上游支持 preset 携带 client bundle / 主题层) - 更多 MC 机制:护甲值、饥饿时减速、疾跑消耗、药水/附魔等

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-survival」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:XDzzzzzZyq/dsh-survival

Headless(CLI)profile:

dsh plugin --profile headless add github:XDzzzzzZyq/dsh-survival

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

使用场景

扩展 agent 的编码能力面——给它一个新工具、工作流或集成,让它接手以前做不了的开发任务。

适合谁

想让 dsh 在真实代码库上像队友一样干活的开发者——能改、能跑、能验证,而不只是回答问题。

二次开发建议

工具/命令面就是缝:暴露更多 SDK 能力、加更聪明的上下文接线,或收紧改代码与验证之间的循环。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7797 个插件 →