2026-07-17
周五
[前端/后端]
网站架构重构完成
- 后端数据访问层重构,移除旧有中间件,统一改为 PHP 8.2 直连数据库。修复部分页面白屏问题。
2026-07-16
周四
[系统/运维]
NPCBot stage116 零错误启动,等待测试
- 昨天(07-15)编译的 stage116 worldserver(5.7GB) 零错误启动运行中。auto-repair 系统持续稳态巡检,零活跃 bug。等待进游戏测试 70000 右键 + NPCBot spawn。
2026-07-15
周三
[代码/C++] bot_stubs.cpp ODR 违规修复 — NPCBot spawn 根因
bot_stubs.cpp ODR 违规修复 — NPCBot spawn 根因
- **根因**:bot_stubs.cpp 定义了 17 个 Creature 函数(包括 `Creature::IsNPCBot() const { return false; }`),与 Creature.cpp 的真实实现冲突,ODR 违反导致链接器始终取 stub 的 false
- **修复**:删除全部 17 个重复的 Creature stub,只保留 6 个真正缺失的
- **编译**:game 0 error + worldserver 0 error 0 warning,worldserver.exe 23.3MB
[DB/数据] flags_extra 批量补全
flags_extra 批量补全
- **背景**:`IsNPCBot()` 检查的是 `flags_extra & CREATURE_FLAG_EXTRA_NPCBOT`,不是 ScriptName 也不是 extras 表
- **NPCBOT flag 值**:0x8E000000(4 位组合),NPCBOT_PET 0x86000000(3 位组合)
- **操作**:70001-70574 Bot 全部 flags_extra |= 0x8E000000,70501-70574 Pet 全部 |= 0x86000000
- **结论**:`.npcbot spawn` 应该不再报 "not a npcbot"
[诊断/修正] MOD_NPCERBOTS 非拼写错误
MOD_NPCERBOTS 非拼写错误
- **误诊纠正**:之前怀疑 ScriptMgr.cpp 的 `MOD_NPCERBOTS`(带 E)是拼写错误,但 CMakeLists.txt 和 ScriptMgr.cpp 都使用 `MOD_NPCERBOTS`,一致性验证通过
- **真正根因**:bot_stubs.cpp ODR 违规(见上)
- **教训**:不要先怀疑宏拼写,先 grep 确认一致性,再排查其他
2026-10-16
周五
前端/网站
错误页统一站点风格(13 页),去掉 phpstudy 详情与外链
- 400/403/404/500-507/509/510 共 13 个 Apache 错误页全部重做:
- 套用站点暗色主题(#0a0e17 + #f5af19 渐变 + 星空背景),与 nav/footer 对齐
- 移除 phpstudy 自带错误详情段(错误说明/原因1/解决办法/IIS)
- 移除底部超链接,改为站内「返回首页 / 更新日志」
- 备份:D:\phpstudy_pro\_backup_error_20261016
2026-07-14
周二
[代码/C++] NPCBot 移植 —— 方案A全面落地
NPCBot 移植 —— 方案A全面落地
- **核心决策**:放弃独立 static library 方案(1201 编译错误),采用差量合并策略直接移植 LordPsyan 整合版 NPCBot 到 game/AI/NpcBots/
- **编译 0 errors**:game/scripts/worldserver 三目标全部通过,worldserver.exe 38.9MB 链接成功
- **链接策略**:创建 bot_stubs.cpp,77 个空实现函数解决 271 个 LNK 错误(覆盖 Creature/Unit/Player/Group/Battleground/Arena/SpellInfo 共 12 类)
- **注册链打通**:ScriptMgr.cpp::Initialize() 中加入 `#ifdef MOD_NPCERBOTS` 块调用 `AddNpcBotScripts()`,30+ NPCBot 脚本类全部注册成功
- **运行时验证**:worldserver 正常启动,日志显示 death_knight_bot/druid_bot/script_bot_giver 等脚本已注册("not assigned in the database" 为预期状态,需后续 SQL 绑定)
- **地图文件修复**:DataDir 指向 Release 目录,maps/vmaps/mmaps 全部就位
- **文件完整性**:NpcBots/ 目录 46 个 .cpp + 18 个 .h 与整合版 100% 一致(仅多一个 bot_stubs.cpp)
- **9 处核心修改**:Vehicle const、Unit const、Object const、EventProcessor、BattlegroundAB/AV/EY 等全部验证完好
- **备份**:stage109(链接通过)+ stage110(注册链修复),共 2 次备份
[踩坑] 关键教训
关键教训
- NPCBot 不是普通 mod —— 是完整子系统(WanderNode/SpawnSystem/BG扩展/RBAC/ChatCommand/sql持久化),不应低估集成复杂度
- 差量合并策略正确:直接复制整合版源码比逐文件补丁快 10 倍
- 注册链排查:当前 AC 不再用旧版显式 `AddSC_*`,需手动接入
- "not assigned" 日志异常是正常状态指示,证明脚本已注册
2026-07-13
周一
[代码/C++] NPCBot 独立库方案探索
NPCBot 独立库方案探索
- 建立独立 static library 框架(npcbot_src/),通过初步编译测试
- 16 类修复:C++20 兼容、MSVC polyfill、tri-comparison 守卫、Duration.h 宏守卫、stub 声明等
- bot_compat.h 创建 530+ inline 方法,Creature.h/Player.h/Unit.h 加 stub 声明 → 921 个函数可用
- **发现根本性障碍**:独立库方案(方案 B)只能到达 stub 形态,无法实现完整功能
- 产出方案评估报告 #051,供选型决策
[踩坑] 关键教训
关键教训
- NPCBot 源码不是补丁级差异,是整个子系统的深度集成
- stub 方案天花板清晰:独立库能过编译器但运行时无意义
- 备份纪律:stage106→107→108 每轮修复前备份,恢复快速
2026-07-12
周日
[代码/C++] NPC Emote 修复
NPC Emote 修复
- `do_nothing` 分支现在会设 `emote_state`(吧台坐姿/站岗姿态等)
- `walk_route` 走完后 fallthrough 时优先继承 emote_state
- Emote 枚举 166 个值全部提取至编程笔记
[代码/C++] mod_world_sim 完成
mod_world_sim 完成
- 独立 mod(不依赖 aibridge),通过 DB 共享数据
- 4 模块:流言系统 / NPC 社交网络 / 隐性剧情触发 / 梦境记忆融合
- 独立 INI 解析,配置加载时机修复,生产就绪 clean 版
- 踩坑:WinHTTP 在子线程不可用(12002)→ 改用 curl.exe pipe
[DB/数据] POI 同步 + 作息表
POI 同步 + 作息表
- acore_characters.npc_pois 同步精细版 POI
- 路线 5/6/7 共享段建立,POI 全链通 0 孤悬
- 后厨做饭(12-14h)设 emote=173 工作态
- 睡眠路线 DB 就绪:0-8 点路线系统走到床
[设计/架构] Ollama 流言系统方案
Ollama 流言系统方案
- 方案A vs 方案B 选型教训:Prompt engineering > 后端解析
- CheckSleepSchedule 去除独立优先级,统一走路线系统
- 朝向计算改 DB 配值 `bedO`,不用 atan2f 算
2026-07-11
周六
[代码/C++] 共享路线系统 v2 + Ollama 全面切换
共享路线系统 v2 + Ollama 全面切换
- 路线 5/6/7 共享段架构(接驳段 → 共享睡眠段)
- 链式走路:不同 route_id 自动执行下一路线
- 单点路线 3 码内自动标记到达
- NPC 对话全部切为主播(cloud),ollama 专用于后台
[代码/Fix] Ollama 链路修复
Ollama 链路修复
- PostViaCurlDirect 简化版返回 `string` 不是 `Response` 结构体
- 类内 static 不能同时声明 + 定义
- Prompt 遗漏 system message 导致回复乱码
- fields 索引错位:ai_model 插列后 sleepStartHour 未移位
- 新 NPC 的 scriptname 必须与已有 NPC 统一
2026-07-10
周五
[DB/数据] POI 双库同步
POI 双库同步
- POI 建到 acore_world 但 C++ 代码读 acore_characters → 建错库修复
- point_order 改 int(11),路线点可能超过 255 个
- 所有路线汇聚到大厅中转(id134)再分流
- reverse 路线标志必须同步 DB 字段和 C++ 结构体
2026-07-09
周四
[代码/C++] NPC 作息系统上线
NPC 作息系统上线
- `npc_character_card` 表加睡眠字段(start/end/bed_x/y/z)
- CheckSleepSchedule():到床 SetEmoteState(SLEEP) + 朝向
- 睡眠时段直接 return,不调 Ollama
- Ollama heartbeat 保活系统
[踩坑] 新坑档案
新坑档案
- ACG GetGameTime 不是 sWorld 成员,是 GameTime 命名空间
- `me->GetEmoteState()` 不存在,用 `UNIT_NPC_EMOTESTATE`
2026-07-08
周三
[代码/C++] Ollama 心跳 + 并发修复
Ollama 心跳 + 并发修复
- stage71+keepalive 编译通过
- Ollama 一次只能处理一个生成请求,两个并发必超时
- 排程线程加 120 秒启动延迟
- /api/ps 不能检测排队请求(队列不算 processes)
- 子线程 WinHTTP 不可用(缺消息泵)→ 全线改用 curl.exe pipe
- Ollama 返回可能被 markdown 代码块包裹,需前处理
2026-07-07
周二
[代码/C++] mod_ai_bridge v2.0 重构
mod_ai_bridge v2.0 重构
- 单文件 1392 行 → 6 header-only 模块 + 薄壳入口
- 配置自解析 + 延迟加载
- 长期记忆系统 5 项全部完成
- 共享知识表建立(npc_shared_knowledge)
[踩坑] 配置文件路径
配置文件路径
- worldserver 从 `configs/worldserver.conf` 读配置,不是启动目录下的
2026-07-06
周一
[代码/Fix] 编译链路修复
编译链路修复
- v1.1 DLL 18.7MB,Release Link 段加 `/DEBUG /OPT:NOREF /OPT:NOICF` 防 strip
2026-07-05
周日
[代码/Fix] 记忆持久化修复
记忆持久化修复
- SaveDirtyNow + 5 关键路径修复
2026-07-04
周六
[运维] 系统稳态
系统稳态
- 自检连续零修复运行
2026-07-03
周五
[代码/Fix] 编译系统修复
编译系统修复
- worldserver.exe 重链 0 error
- entry=6 ScriptName + npcflag 修复
- 角色卡 36 个已加载
2026-07-02
周四
[代码/Fix] Link strip 修复
Link strip 修复
- scripts_custom.vcxproj 的 RemoveUnreferencedCodeData 导致 v1.1 代码被链接器剥离
- 修复:Release Link 段加 `/DEBUG /OPT:NOREF /OPT:NOICF`
2026-07-01
周三
[前端/PHP] 世界预告站 v2
世界预告站 v2
- 管理后台:登录/文章 CRUD
- npc_bridge.mjs 端口 19991 连接 MySQL
2026-06-30
周二
[运维] 自动修复稳定
自动修复稳定
- ERROR 全部确认为 log 残留非真 bug
2026-06-29
周一
[运维] 周日调音师
周日调音师
- 系统零修复稳态