dsh-agentnoodle:AI 驱动的群像聊天游戏框架

DeepSeek Harness (DSH) 的理念是「一切皆插件」。在构建叙事或 RPG 体验时,通常需要为每个场景编写代码或维护复杂的状态机。dsh-agentnoodle 提供了一种替代方案:将游戏世界构建为对话上下文,由 agent 动态管理。

简介

dsh-agentnoodle 是一个由 bigharm 维护的 DSH 插件,用于 AI 驱动的群像聊天游戏框架。它将一个行动或一句话转化为场景中 2-4 个在场 NPC 的独立回应,每条反应独立成一条聊天室消息。

插件基于 LazyNoodle 项目改造,支持通过对话直接管理游戏世界,无需编写代码即可扩展新功能或修改现有逻辑。

核心功能

  • 群像反应:一次行动 → AI 挑选 2-4 个在场 NPC 各自回应,每条独立渲染。
  • 多世界:每个世界独立的世界观 / 地点 / NPC / 角色存档。
  • 对话建世界:无需写代码,直接在对话里创建世界、生成地点与 NPC。
  • 可扩展框架:世界、地点、NPC 与新功能都可在对话里让 agent 添加修改。
  • 头像插图:每条消息显示说话人头像;无头像显示名字首字占位圆。
  • 角色卡与世界导入:兼容 SillyTavern 角色卡(V1/V2/V3 JSON 或 PNG)与 LazyNoodle 世界目录。
  • 本地持久化:JSON 文件存档,AI 解锁的新地点自动注册进地点库。
  • 模型无关:复用 DeepSeek Harness 的默认模型路由,无需额外 API Key。

安装与启用

通过命令行安装:

dsh plugin --profile web add dsh-agentnoodle

安装完成后,重启 dsh web。页面右下角会出现一个 🍜 AgentNoodle 聊天室 悬浮窗,可拖动、可最小化,不打扰主界面。

典型用法

1. 创建新世界

在对话中调用工具创建世界骨架并定义世界观:

// 创建世界
agentnoodle_create_world(worldId, name, worldview)

// 生成内容
agentnoodle_generate_content(worldId, stage=locations) // 生成地点
agentnoodle_generate_content(worldId, stage=npcs)     // 生成 NPC

2. 导入现有数据

  • 角色卡:调用 agentnoodle_import_card,粘贴 SillyTavern JSON 或本地 PNG/JSON 路径。
  • 世界:调用 agentnoodle_import_world,导入 LazyNoodle 风格的世界目录。

3. 更新规则

使用 agentnoodle_update_rules(worldId, rulesText) 设定硬性约束,该规则会注入游戏提示词的醒目位置,内容生成(地点/NPC)也会遵守。

对话工具列表

以下工具注册为模型工具,agent 可直接调用:

工具 作用
agentnoodle_create_world 创建新世界
agentnoodle_update_worldview 更新世界观文本
agentnoodle_generate_content 按世界观生成地点、NPC 或两者
agentnoodle_list_worlds 世界概览,传 worldId 查看详情
agentnoodle_add_location 手工添加地点
agentnoodle_add_npc 手工添加 NPC(校验地点归属)
agentnoodle_import_card 导入 SillyTavern 角色卡为 NPC
agentnoodle_import_world 导入 LazyNoodle 风格世界目录

规则与约束

  • 硬性约束:通过 agentnoodle_update_rules 添加的规则,注入提示词醒目位置,优先于世界观,内容生成也会遵守。
  • 软约束:提示词层规则(AI 大部分时候遵守)。
  • 代码扩展:需要程序强制的机制(死亡状态、数值系统等)属于插件代码扩展。

数据结构

世界数据存储在本地 JSON 文件中,路径默认为 <dataDir>/worlds/<id>/。

<worldId>/
├── worldview.txt          # 世界观设定
├── locations.json         # 地点列表
├── npcs.json              # NPC 列表
├── avatars/               # NPC 头像 PNG(可选)
└── sessions/characters/   # 角色存档

插件内置了默认数据(如「暮色酒馆」世界),首次启动自动播种。如需自定义,可在 profile 的 cordis.patch.yml 中配置 dataDir。

该插件允许在无需编写代码的情况下,通过对话构建复杂的叙事世界。更多详情与源码,请访问 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜