Skip to content

Repository files navigation

Kernelsoul — 项目状态文档

写给下一个 AI 助手: 这是项目的完整状态快照。请先阅读本文了解项目全貌,再开始工作。 不要依赖对话历史来推断状态——以本文为准。


项目身份

  • 名称: Kernelsoul / Kernelsoul 角色引擎
  • 版本: v2.5
  • 类型: AI 角色扮演后端引擎 + Web 前端
  • 技术栈: Python 3.11+ (FastAPI 后端) + React/TypeScript (Vite 前端)
  • API 协议: OpenAI 兼容(DeepSeek / OpenAI 双后端)
  • 运行端口: 后端 8001,前端开发服 5173,生产构建 4173

当前状态:已完成(v2.5)

以下功能已全部实现并验证通过,不要重复开发:

引擎核心

  • GameState 强类型状态系统(HP/Energy/Goodwill/Money/Emotion/Scene/Inventory)
  • 状态持久化(StateManager),JSON 读写
  • 角色卡片加载器(V1-V4 格式兼容,character_data.json + 独立文件)
  • AI 响应解析器(ParserEngine,JSON + 自然语言双模式)
  • 语义叙事渲染引擎(SemanticEngine + SemanticRenderer,三模式:direct/semantic/hybrid)
  • KNN 短语语料库(PhraseLibrary)
  • 三层分级压缩记忆(MemoryManager:轻量10轮 → 深度50轮 → 史诗200轮)
  • DSL 剧本语言编译器(SLL 递归下降解析器,WHEN/IF/THEN/CHANGE/SET 语法)
  • 规则编译器(RuleCompiler,AI 协作规则生成)
  • 规则进化触发器(EvolutionTrigger)
  • 世界书三维检索(WorldBookRetriever)
  • 上下文组装(Context + ContextWrappers)
  • 会话元数据管理(SessionMeta)
  • 路径解析器(PathResolver,41 条路径方法)
  • 草稿与版本管理(DraftManager)
  • 变量管理系统(VariableManager,多 scope:global/character/session/temporary)
  • 随机事件管理器(RandomEventManager)
  • 沙箱插件系统(PluginManager,12 个钩子)
  • 原子写入(utils/atomic_write.py)
  • 快照管理(utils/snapshot.py)

前端 UI

  • 左右侧边栏拖拽调整宽度(ResizableHandle,200-500px 左 / 240-480px 右)
  • 状态栏从 variables 系统读取并自动推断显示格式(VariableBasedStatusBar)
  • 状态栏模板渲染(TemplatedStatusBar,支持纯文本/JSON/HTML 三种格式)
  • 角色变量调试面板(DebugModePanel,实时修改角色状态)
  • 调试面板与 variables 系统双向同步
  • 角色关系图(RelationshipGraphPanel,含缩放、气泡、AI 自动生成)
  • 位置地图(LocationMapPanel)
  • 语义轴可视化(SemanticAxes)
  • 规则追踪(RuleTrace)
  • 库存列表(InventoryList)
  • 聊天窗口(ChatWindow,SSE 流式 + Typewriter 打字效果)
  • 预设编辑器(PresetEditor + ChatPresetsPanel)
  • 会话管理(SessionCreator,多会话切换)
  • 草稿预览/提交/丢弃(DraftPreview + DraftManager)
  • 角色编辑面板(CharacterEditPanel + PlayerPersonaPanel)
  • 世界书编辑面板(WorldbookPanel)
  • 记忆锚点面板(MemoryAnchorPanel)
  • 设置栏(SettingsBar,位于左侧边栏底部)
  • API 配置面板(ApiConfigPanel)
  • 备份面板(BackupPanel)
  • 主题切换(亮/暗,完整生效)
  • 预设模块系统(preset-modules,含版本管理)
  • 开场管理(多开场切换)
  • 图片发送与 AI 解析(多模态)

安全与稳定性

  • 发布门禁系统(check.bat 一键验收:pytest → lint → build → 健康检查)
  • 原子写入(draft_manager、variable_manager、snapshot、recent_log 均使用)
  • 前缀缓存优化(Prompt 分层消息列表,system/context/history/current 四层结构)
  • 插件回调超时保护(5 秒超时,ThreadPoolExecutor)
  • stop_flag 跨会话隔离(per-generation 停止标志,多数会话互不干扰)
  • 布尔值类型转换规范化(支持 true/false/1/0/yes/no 字符串)
  • str(None) → "" 修复(变量 STRING 类型 None 值不再输出字面 "None")
  • auto-save 线程异常保护(崩溃不再静默退出)
  • 路径遍历防护(文件上传/删除使用 _safe_name 校验)

测试覆盖

  • test_phase1.py — 48 用例
  • test_memory.py — 27 用例
  • test_parser.py — 41 用例
  • test_dsl_compiler.py — 11 用例
  • test_rule_compiler.py — 10 用例
  • test_evolution_trigger.py — 通过
  • test_character_loader.py — 通过
  • test_worldbook.py — 通过
  • test_plugin.py — 11 用例
  • test_saved_drafts.py — 12 用例
  • test_semantic.py — 17 用例
  • test_prompt_system.py — 35 用例(含前缀缓存验证)
  • test_variable_manager.py — 40 用例
  • 总计:321+ 用例,全部通过

角色卡片

  • night_hunter — 夜城猎魔人·林霜(完整示例,含语义渲染)
  • 我的萝莉魅魔妈妈 — 14 变量 + 状态栏(完整 V4 卡)
  • cyber_test — CyberSprite-7(轻量示例)
  • demon_test — 堕魔公主 Lucy(轻量示例)

已知问题(未修复)

以下问题在对抗式审查中已识别,但尚未实现

严重度 问题 说明
关键 API Key 暴露 /api/config 端点返回明文 Key
关键 CORS 全开放 + 无默认认证 _ADMIN_TOKEN 为空时所有请求通过
SSE 流无请求体大小限制 /api/chat/stream 无 body 大小限制
_safe_name 正则黑名单 路径遍历防护依赖正则而非白名单
_dirty 标志非线程安全 bool 赋值在 Python 中非原子操作
_sanitize_filename 允许路径分隔符 zip 上传流程中可能允许子目录穿越

项目结构

Kernelsoul/
├── README.md                      ← 本文
├── check.bat                      ← 发布门禁一键验收
├── 启动.bat                       ← 启动脚本(Dev/Prod/后端/构建四种模式)
├── 待办/                          ← 文件系统待办(进行中/已完成/待规划)
├── docs/
│   ├── 参考资料/
│   │   ├── CODE_WIKI.md           ← 代码百科(API 端点、架构、版本演进)
│   │   ├── workflow.md            ← 开发工作流
│   │   ├── V3升级V4模板说明.md     ← 角色卡模板升级指南
│   │   └── v4_card_template/      ← V4 角色卡模板文件
│   └── 开发手册/                   ← 历史开发手册(已归档)
├── in-dev/                        ← 主开发目录
│   ├── api_server.py              ← FastAPI 后端入口
│   ├── core_engine.py             ← 核心引擎
│   ├── ai_bridge.py               ← AI API 桥接
│   ├── variable_manager.py        ← 变量管理系统
│   ├── plugin_manager.py          ← 插件管理器
│   ├── draft_manager.py           ← 草稿管理
│   ├── state_manager.py           ← 状态持久化
│   ├── memory_manager.py          ← 三层记忆
│   ├── parser_engine.py           ← 响应解析器
│   ├── dsl_compiler.py            ← DSL 编译器
│   ├── rule_compiler.py           ← 规则编译器
│   ├── evolution_trigger.py       ← 进化触发器
│   ├── semantic_engine.py         ← 语义引擎
│   ├── semantic_renderer.py       ← 语义渲染器
│   ├── phrase_library.py          ← 短语库
│   ├── worldbook_retriever.py     ← 世界书检索
│   ├── character_card_loader.py   ← 角色卡加载
│   ├── character_state_manager.py ← 角色状态管理
│   ├── context.py                 ← 上下文组装
│   ├── context_wrappers.py        ← 上下文包装器
│   ├── session_meta.py            ← 会话元数据
│   ├── path_resolver.py           ← 路径解析
│   ├── random_event_manager.py    ← 随机事件
│   ├── utils/
│   │   ├── atomic_write.py        ← 原子写入
│   │   └── snapshot.py            ← 快照
│   ├── configs/
│   │   ├── system.json            ← API 配置
│   │   ├── rules.json             ← 全局规则
│   │   └── presets/               ← 预设文件
│   ├── characters/                ← 角色卡片
│   ├── plugins/                   ← 插件示例
│   ├── frontend/                  ← React 前端
│   │   └── src/
│   │       ├── features/chat/     ← 聊天功能
│   │       ├── features/assistant/← AI 助手
│   │       ├── state-panel/      ← 状态栏
│   │       ├── settings/         ← 设置面板
│   │       ├── sidebar/          ← 侧边栏
│   │       ├── debug/            ← 调试面板
│   │       ├── stores/           ← Zustand 状态管理
│   │       └── api/              ← API 客户端
│   ├── requirements.txt
│   └── *.py                      ← 测试文件
└── .trae/specs/                   ← 已完成的 spec 文档

快速启动

1. 安装依赖

cd in-dev
pip install -r requirements.txt
cd frontend && npm install && cd ..

2. 配置 API Key

编辑 in-dev/configs/system.json,填入 api_key

3. 启动

# 方式一:启动脚本(推荐)
.\启动.bat          # 选择模式 1/2/3/4

# 方式二:手动
cd in-dev
python api_server.py    # 后端 http://127.0.0.1:8001
cd frontend && npm run dev  # 前端 http://localhost:5173

4. 验收

.\check.bat    # 一键测试 + lint + build + 健康检查

关键设计决策(不要改)

  1. Prompt 分层消息列表build_prompt 返回 list[dict],顺序固定 system → context → history → current。这是前缀缓存优化的核心,不要改为拼接字符串。
  2. 变量系统character_state.variablesVariableManager 双向同步。状态栏从 variables 系统读取。
  3. 原子写入:所有 JSON 持久化必须使用 utils/atomic_write,不能直接 open() + json.dump()
  4. SettingsBar 位置:仅在左侧边栏打开时渲染,位于侧边栏底部,使用 flex 布局。
  5. recent_log 格式:新格式为结构化 JSON 消息对 [{role, content}]_build_history_messages 兼容旧纯文本格式。
  6. DSL 语法WHEN condition KEYWORDS k1,k2 IF condition THEN action,USE/ELSE/BECAUSE 均在 DSL 编译器中实现。
  7. 渲染模式:direct(数值)/ semantic(语义叙事)/ hybrid(混合),可运行时切换。

不要做的事

  • 不要重新实现已存在的功能——上面所有的 ✅ 项均已实现
  • 不要修改 prompt 分层消息结构——前缀缓存优化依赖固定顺序
  • 不要删除 in-dev/README.md——那是开发级文档,本文是项目级状态文档
  • 不要修改 docs/参考资料/ 中的文件——除非用户明确要求
  • 不要创建新的待办文件夹——已有 待办/ 目录
  • 不要引入 Gradio——已完全迁移到 FastAPI + React

最后更新:2026-07-31 当前版本:v2.5

About

A deterministic character engine. Define behavior with DSL, compile to JSON rules, execute with precision. No prompt prayers, no persona drift. Character OS for games & AI roleplay.不靠祈祷,靠规则。Kernelsoul 是一个确定性的角色引擎——DSL 定义行为,编译器精确执行。

Topics

Resources

Contributing

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages