Skip to content

AtmoOmen/DirectorPrompt

Repository files navigation

DirectorPrompt

DirectorPrompt Logo

AI 驱动的非扮演型交互式叙事框架


核心体验

DirectorPrompt 是一款 AI 交互式叙事桌面软件,核心定位是导演模式:用户不扮演任何角色,不出现在剧情中,而是以上帝视角、通过不同类型的指令推动整个世界运行,AI 负责生成叙事内容。

与市面上主流的 AI 小说工具不同, DirectorPrompt 从零搭建了一整套支撑系统 —— 世界知识管理、故事记忆召回、状态变量更新、时间线切换, 切实保障单一对话的长期游玩体验。


快速开始

环境要求

  • Windows 11
  • .NET 10 SDK
  • (可选) Ollama 用于本地模型

下载

进入 Release 页面, 下载 DirectorPrompt-win-Portable.zip, 解压缩后运行 DirectorPrompt.exe

首次使用

  1. 启动软件, 进入主界面
  2. 打开设置界面, 配置提供商、模型, 为各个代理任务、向量生成分配模型, 保存
  3. 创建新项目, 支持导入本软件的数据包或 SillyTavern 导出的角色卡
  4. 编写/修改项目提示词、填充知识条目、设定人物分类、规定状态系统, 保存
  5. 发送消息, 开始游玩

差异

常见角色扮演工具 DirectorPrompt
用户身份 扮演特定角色参与剧情 上帝视角, 通过指令推动故事发展
知识系统 关键词/正则匹配, 差一个字符就无法召回 向量语义检索, 只要语义相近就能匹配
记忆管理 靠上下文硬塞与模型注意力硬顶 向量语义+时间衰减混合召回, 智能控制上下文长度, 原文始终保存, 再多信息也不会丢
状态系统 底层支持状态系统, 支持变量、表达式、枚举, 还有与知识共联的阶段切换
时间管理 一维坐标轴, 支持随意切换故事时间场景, 智能管理记忆可见性
人物系统 以角色卡为单位, 只能定义单个人物详细信息 有丰富的多人物类别描写、指定、继承, 还能为人物类别指定状态系统, 人物间构建关系网络
成本 单一对话越长, 成本越高 始终只塞有用的信息, 单次游玩缓存命中高

功能

指令组合

底部输入区并非简单聊天框, 其支持多类型指令组合、排序, 传递丰富的语义与控制:

  • 剧情指令 — 指导叙事变更
  • 基调指令 — 约束叙事风格, 支持指定轮数后自动过期或手动移除
  • 临时约束 — 短期硬性约束, 支持指定轮数后自动过期或手动移除
  • 时间/场景变更 — 变更故事目前的时间/场景

指令排列顺序本身携带语义。如: 先写"三天后"再写"主角发现密信",与顺序反过来, 会产生完全不同的理解

状态栏

侧边状态栏根据故事发展由 AI 实时填写、更新, 支持自定义任意状态, 包含项目状态系统和人物类别状态系统。

单一状态支持类型: 数值和枚举类型, 与驱动方式: AI 从叙事中提取变更填写、系统根据规则自动切换

  • 数值类型下, AI 会根据用户填写的规则(最大值/最小值、单位、变更规则)与叙事发展加减数值, 如: 金钱、声望值等。
  • 枚举类型下, 系统会根据触发时机设置与枚举定义自动切换状态, 如: 天气、季节等。每个枚举支持设定为:随机、表达式。
    • 随机模式下, 可以为枚举设定触发概率, 系统会在触发时机到来时自动根据概率随机切换至指定的枚举
    • 表达式模式下, 可以为枚举关联其他的状态, 通过复杂表达式实现在特定状态下自动转为指定的枚举。

阶段是状态系统的核心机制: 通过编写表达式, 在状态变为指定值/进入指定区间, 又或是不为指定值/退出指定区间时, 自动注入隐藏的知识条目或是发送一批预定义好的指令组合。

比如可以设定当 理智值 ≤ 50 时, 自动注入 世界的隐秘真相之三 知识条目, 同时自动发送指令组合:

  • (基调指令, 持续 3 轮) 环境氛围变得压抑
  • (临时约束, 持续 3 轮) 理智值无法恢复至大于 50 的值

从而使与 AI 的互动真的像一款有程序逻辑制作的文字游戏, 而非一切都靠用户记忆规则并手动发送约束

知识/记忆召回

知识/记忆的召回依赖向量语义检索, 即: 在 AI 看来, 两段文本之间的语义有多相近。

传统工具依赖关键词/正则匹配触发上下文注入, 譬如一段知识的触发关键词是 "巷子"、"小巷", 那么当我发送消息包含的关键词是"窄巷"时, 就无法触发上下文注入, 只能通过游玩反复添加, 而这个工作可以说是无穷尽的。

而向量语义检索会先把文本丢给 AI, 为文本语义生成固定值, 然后软件会对所有存储的知识/记忆与文本进行比较, 召回与其语义最相关的指定个条目。

在 AI 看来: "巷子"、"小巷"、"窄巷"、"窄道" 都有着相似的语义, 那么无论输入什么, 都可以成功召回相应的知识/记忆, 使叙事生成极为省心、智能、灵活, 也使得知识和记忆都可以随意存储, 真正实现信息不磨损、按需召回

知识系统支持分组管理、手动开关。可将后期才揭示的设定放入独立分组, 前期关闭, 时机成熟后手动开启。使各种叙事手法, 如: 叙诡、反转等的节奏完全可控。

记忆召回时按语义相关性和时间线位置衰减混合排序 —— 久远时间线记忆权重自然降低, 模拟人类遗忘过程, 但不会被删除, 必要时仍然能召回完整信息。

记忆归属时间线场景, 跳跃至更早时间点场景会自动屏蔽,无需手动标记有效性。

上下文管理

故事越长, 历史越难全部塞进 AI 上下文, 模型成本也会越来越高 (尤其是在两次游玩超出了模型提供商缓存有效期的时候), 模型智力、注意力也会不断下降。

软件会在故事时间/场景变更或上下文超限时, 自动压缩存储为记忆存入库中, 使上下文长度始终保持可控。

所有模型、代理调用都会尽量保持消息前缀稳定, 使得单次游玩过程中, 能够尽可能多地命中缓存, 降低成本。

人物

软件采取 "人物分类" 定义而非具体的人物设定来让整体游玩更加契合第三人称上帝视角。

人物分类支持多重继承、状态栏指定; 人物支持有向关系 (A 对 B 的关系/记忆和 B 对 A 的关系/记忆可以完全不同)。

AI 自动维护人物: 新人物登场时自动建档, 人物离场时自动标记状态, 故事发展、关系变化时自动产生记忆, 为每个人物形成可调用查询的人物经历档案, 全程无需用户手动干预。

时间线

引入一维坐标轴与时间/场景概念, 线性推进叙事时自然流畅。

需要跳回先前某一时间点时 (比如回忆、闪回等), 只需要在指令中包含一条 时间/场景变更 指令, 系统就会自动将新场景插入正确的时间位置。

根据当前时间/场景, 会自动过滤掉晚于该时间/场景的记忆、知识、状态读取, 且其中的状态、记忆变更也不会影响到最新时间/场景, 全程无缝无感衔接。

工具与 MCP

内部提供各类工具覆盖人物、状态、知识、记忆、场景等全场景, 让 AI 代理能够通过工具调用实现强大能力。

同时支持 MCP 协议双向集成, 既可对外暴露软件工具能力, 也支持各类 MCP 连接扩展获取更多工具, 让软件内叙事发展更加强大生动, 让外部也能操控叙事更加灵活多变。

回滚与修正

对话中, 所有的操作、行为、变更都会被记录为事件序列, 支持精准完整的回溯、重放。

一次回滚会自动回退所有生成文本、状态、人物、记忆变更, 并将指令自动恢复至指令区, 整体游玩无比灵活。


许可证

AGPL-3.0

About

基于 C# 的 AI 非扮演型交互式小说游玩框架

Resources

License

Stars

13 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors