返回目录
其他 插件

dsh-survival

XDzzzzzZyq/dsh-survival

DeepSeek Harness 生存模式

Stars
1
Forks
0
Issues
0
更新
3 天前

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:XDzzzzzZyq/dsh-survival

该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。

PROJECT README

README

DSH 生存模式

🍗 MC原版生存,今天吃什么?

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 图标)来自 Minecraft Wiki,采用 CC 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/ 目录复制到目标部署的预设根目录:

    cp -R survival "$DSH_HOME/.agent-presets/survival"     # $DSH_HOME 默认 ~/.dsh

    或使用 DSH 的 preset 复制 API(agentPresets.copy('standard', 'survival', ...) 后替换文件)。

  2. 重启 / 刷新 DSH(预设由 roster 在会话启动时发现)。

  3. 新建会话时,在模式选择器里选 生存模式

  4. (可选)安装浏览器 HUD——当前需要通过动态插件管线加载:

    # 在任意 cordis 会话里执行 cordis_define + cordis_run,代码见 ui/survival-hud.js;
    # 或用下方"本机开发"的脚本方式。

本机开发

# 安装(当前部署)
cp -R survival ~/.dsh/.agent-presets/survival

# 校验预设能否挂载(见编辑 Cordis 组成技能:mount-validate)
# 改动 survival/ 下的文件后重新校验即可;预设每次会话启动时重新读取

# 引擎功能冒烟测试(零依赖,直接跑)
node engine-smoke.mjs

机制参数(可调)

survival/agent.cordis.ymlsurvival-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 机制:护甲值、饥饿时减速、疾跑消耗、药水/附魔等

CLASSIFICATION EVIDENCE

分类依据

项目类型插件
功能分类其他
规则置信度

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。