deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:XDzzzzzZyq/dsh-survival
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
🍗 MC原版生存,今天吃什么?
在 DeepSeek Harness 中体验MC原版生存:MC 原版生存机制 + MC 风格 UI。
把一次会话变成一场方块世界生存(agent 角色与标准模式完全一致,仅追加一段系统提示,告诉 agent 何时请示吃饭/睡觉):
survival-engine,按 MC 规则结算):survival-prompt 追加一段系统提示(饱食度低时请示吃饭、夜晚请示睡觉)。ui/survival-hud.js,动态插件,真实 MC 素材):conversation.input.dock):10 颗红心(官方 HUD 贴图,满/半/空、低血闪烁)+ 10 个鸡腿(饱食度)——只显示生命与饱食度。survival/assets/*.png),base64 内嵌、像素化放大,离线可用。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 生效 |
把 survival/ 目录复制到目标部署的预设根目录:
cp -R survival "$DSH_HOME/.agent-presets/survival" # $DSH_HOME 默认 ~/.dsh
或使用 DSH 的 preset 复制 API(agentPresets.copy('standard', 'survival', ...) 后替换文件)。
重启 / 刷新 DSH(预设由 roster 在会话启动时发现)。
新建会话时,在模式选择器里选 生存模式。
(可选)安装浏览器 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.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 | 事件历史环形上限 |
| 食物 | 饱食度 | 饱和度 | 食物 | 饱食度 | 饱和度 | |
|---|---|---|---|---|---|---|
| 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 <食物> [数量] 补给。
survival settings 命名空间与新版冲突,挂载回滚。重启 DSH 即可恢复;引擎已内置"命名空间已注册则复用"的容错,重启后不再复发。tools.guard 阻止继续行动(当前死亡冻结状态,但工具仍可调用)CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。