deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:bigharm/dsh-agentnoodle
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
可扩展的 AI 群像聊天游戏框架(DeepSeek Harness 插件)。
输入一个行动/一句话,场景中多个 NPC 会各自做出反应——每条反应独立成一条聊天室消息,带自己的头像插图(无头像自动用名字首字占位圆)。叙事、场景切换、NPC 关系变化全由 AI 实时驱动,对话历史持久化到本地 JSON。
框架定位:世界、地点、NPC 乃至功能扩展都通过 harness 对话框让 agent 直接添加和修改——无需写代码。天然的可扩展性意味着玩家可以按需长出自己的玩法,例如:
源自 LazyNoodle 项目的 DSH 插件化改造。
dsh plugin --profile web add dsh-agentnoodle
或打开 Settings → Plugin Market 搜索 dsh-agentnoodle 一键安装。安装后重启 dsh web,页面右下角出现 🍜 AgentNoodle 聊天室 悬浮窗。
① 从零建一个新世界(全在对话里完成)
agentnoodle_generate_content(worldId, stage=locations) → AI 生成区域与场景;agentnoodle_generate_content(worldId, stage=npcs) → AI 生成 NPC(自动校验地点归属);② 直接玩默认世界
「暮色酒馆」世界内置在 seed 中,首次启动自动播种,含默认角色「无名旅人」——打开即可开始。
以下工具注册为模型工具,agent 在对话里直接调用:
| 工具 | 作用 |
|---|---|
agentnoodle_create_world |
创建新世界(worldId + name + 可选世界观),建骨架并切换为当前世界 |
agentnoodle_update_worldview |
更新世界观文本(世界观迭代阶段) |
agentnoodle_generate_content |
按世界观用 AI 生成地点(stage=locations)/ NPC(stage=npcs)/ 两者(stage=all) |
agentnoodle_list_worlds |
世界概览;传 worldId 查看详情(地点+NPC 名单) |
agentnoodle_add_location |
手工添加地点 |
agentnoodle_add_npc |
手工添加 NPC(校验地点归属) |
agentnoodle_import_card |
导入 SillyTavern 角色卡为 NPC |
agentnoodle_import_world |
导入 LazyNoodle 风格世界目录 |
示例:「帮我建一个『青云门』的修仙世界,掌门叫青云真人」→ agent 依次调用 create_world → add_location / generate_content → add_npc,全程不用碰代码。
用户:在 agentnoodle 里创建一个仙侠世界,地点 10 个,人物若干
agent 会依次调用:
agentnoodle_create_world(worldId, name, worldview) — 创建世界骨架并写入世界观;agentnoodle_generate_content(worldId, stage=locations) — AI 生成地点(不足 10 个时用 agentnoodle_add_location 补齐);agentnoodle_generate_content(worldId, stage=npcs) — AI 生成 NPC(可再 agentnoodle_add_npc 补充);内置示例:seed/worlds/jiuxiao/ 就是一个完整的「九霄仙域」仙侠世界(10 地点 + 8 NPC),全新安装后直接可选。
世界可以带一份玩家规则(<dataDir>/worlds/<id>/rules.txt,每行一条,# 为注释)。规则是硬性约束:注入游戏提示词的醒目位置、优先于世界观,内容生成(地点/NPC)也会遵守。
agentnoodle_update_rules(worldId, rulesText) — 覆盖整份规则(传空文本清空)agentnoodle_list_worlds(worldId) 详情含 rules提示:提示词层规则是"软约束"(AI 大部分时候遵守);需要程序强制的机制(死亡状态、数值系统等)属于插件代码扩展——这是框架可扩展定位的一部分。
agentnoodle_import_card):cardText)或本地 PNG/JSON 卡路径(filePath,PNG 从 tEXt chara 块自动解析);name→NPC 名、description→描述、personality→性格标签、scenario+personality→背景、first_mes→存档备用;locationId 指定所在位置(默认第一个地点)。agentnoodle_import_world):导入一个世界目录(需 worldview.txt,可选 locations.json / npcs.json / avatars/),注册进索引并切换为当前世界。~/.dsh/agentnoodle(首次启动自动从包内 seed/ 播种)cordis.patch.yml 里给该行配置 dataDir,或在 Settings → Plugins → 插件配置中修改<dataDir>/prompts/(environment.txt 游戏叙事、generate_locations.txt 生成地点、generate_npcs.txt 生成 NPC),改完即时生效<dataDir>/.env(AI_TEMPERATURE / AI_MAX_TOKENS / HISTORY_TAIL)世界就是普通文件(<dataDir>/worlds/<id>/),任何能写这些文件的入口都能建世界:
<worldId>/
├── worldview.txt # 世界观设定
├── locations.json # { regions: [{id,name,description,icon}], locations: [{id,name,parent,description,icon}] }
├── npcs.json # { npcs: [{id,name,gender,profile,location_id,avatar,active,dead}] }
├── avatars/ # NPC 头像 PNG(可选)
└── sessions/characters/ # 角色存档(运行时生成)
npm test # 跑自测(假 fs/AI,无需 harness 运行时)
npm run check # 语法检查 + 自测
结构:
lib/game.js # 游戏核心逻辑(纯函数、依赖注入)
lib/index.js # Host 插件入口:HTTP API + 头像路由 + 数据播种 + 模型工具
client/client.js # 浏览器面板(ModuleLoader bundle)
seed/ # 首次启动的默认世界/提示词
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: dsh-plugin-pack。