# ai **Repository Path**: bef/ai ## Basic Information - **Project Name**: ai - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-30 - **Last Updated**: 2026-11-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README = bio_brain :toc: :toclevels: 3 一个使用纯 C 和 Meson 构建、正在尽量向生物神经元原理收敛的仿脑网络项目。 它的目标不是把真实人脑逐细胞、逐分子完整复刻,而是在内存可控的前提下,先做出一个尽量遵守生物神经元工作方式的可运行核心:有神经元、有突触、有脑区、有发育阶段、有睡眠/清醒节律,也有记忆回放和巩固机制,同时尽量让高层功能从底层局部动力学里长出来,而不是全部靠手工规则硬编码。 独立的人脑原理审计和“当前实现 vs 生物原理”的逐项对照见 `BRAIN_PRINCIPLES_AUDIT.adoc`。 == 外部感觉输入 当前项目已经增加两条“直接接入外部感觉流”的入口,它们的定位都不是规则引擎,而是把外部连续刺激压成较粗但仍连续的感觉信号,再喂给脑内已有的感觉/内感受/共同调节通道: - `media_input_stream`:读取音视频文件,提取亮度、运动、声能量、声音突变等低层连续特征,再输出给 `bio_brain` - `device_input_stream`:读取当前硬件相机和麦克风,把实时视觉/听觉刺激压成同一组连续特征后直接喂给 `bio_brain` 当前支持四种相机指定方式:`--camera /dev/videoX`、`--camera auto`、`--camera pipewire:`、`--camera icamera:` 这里要特别说明一条边界: - 这些桥接程序只负责“感觉编码”,不负责“语义理解” - 它们不会在桥里写“看到什么就应该执行什么”的规则表 - 目前允许的只是低层连续映射,例如亮度变化、运动强度、声音能量、声音尖锐度、中心占据度等 - 真正的趋近、回避、记忆和后续推理由脑内神经元、突触、睡眠回放和价值/威胁通道自己在运行中形成 也因此,当前的文本/CSV 形式只是一层可观测、可管道化的桥,不是概念上的终点。实际运行时可以直接做管道: [source,bash] ---- ./build/src/media_input_stream --media /path/to/sample.mp4 --max-frames 180 \ | ./build/src/bio_brain --config config/media_runtime_stdin.xml 240 8192 65536 60 ---- 如果希望先落盘观察桥接输出,也可以用 `--output` 写到文件后再重放。 当前仓库里已经完成过一轮真实文件验证: - 样例文件:`https://samplelib.com/mp4/sample-5s-360p.mp4` - 验证命令: + [source,bash] ---- ./build/src/media_input_stream --media /tmp/bio_brain_samples/sample-5s-360p.mp4 --max-frames 180 \ | ./build/src/bio_brain --config config/media_runtime_stdin.xml 180 8192 65536 60 ---- - 实际结果:桥接成功输出连续感觉流,`bio_brain` 成功读取 `external_input: stream=- loop=0` 并完成 180 tick 运行 当前宿主的设备实测边界也一并说明: - 主机侧现在已经能看到大量 `/dev/video*`,并且 PipeWire 里也能枚举出 `Video/Source` - `arecord -l` 显示 `no soundcards found` - 但当前这台 Intel IPU6 机器上,直接 `video4linux2/v4l2src` 采集会卡在格式/色彩协商,`pipewiresrc` 节点也暂时没有真正吐出视频帧;本轮继续把 Intel OEM 的 `icamerasrc/CamHAL` 路径也接进了 `device_input_stream` - 新增的 `--probe-media /dev/media0` 实测还能看到 IPU6 媒体拓扑只有 `Intel IPU6 ISYS Capture 0..47` 和 `Intel IPU6 CSI2 0..5`,没有明显传感器、镜头或 ISP 处理链实体 - 因此 `device_input_stream` 目前已经从“只能编译”推进到“能自动尝试 V4L2、PipeWire 和 Intel OEM `icamerasrc` 后备路径,并能快速失败”,但还不能冒充成已经拿到真实摄像头帧 当前和真实设备有关的最小命令可以这样试: [source,bash] ---- ./build/src/device_input_stream --list-cameras ./build/src/device_input_stream --scan-camera-io ./build/src/device_input_stream --scan-pipewire ./build/src/device_input_stream --probe-pipewire-graph ./build/src/device_input_stream --probe-host-camera-stack ./build/src/device_input_stream --probe-camera /dev/video0 ./build/src/device_input_stream --probe-camera-io /dev/video0 ./build/src/device_input_stream --probe-media /dev/media0 ./build/src/device_input_stream --probe-pipewire pipewire:45 ./build/src/device_input_stream --camera auto --max-frames 4 --output /tmp/device_auto.csv ./build/src/device_input_stream --camera /dev/video0 --max-frames 4 --output /tmp/device_video0.csv ./build/src/device_input_stream --camera pipewire:45 --max-frames 4 --output /tmp/device_pw45.csv ./build/src/device_input_stream --camera icamera:ov08x40-uf --max-frames 4 --output /tmp/device_icamera_ov08x40.csv ---- 其中 `--list-cameras` 会列出当前可见的 `/dev/videoX`、对应的 `pipewire:` 映射,以及当前 `icamerasrc` 暴露出来的 `icamera:` 候选,便于手工指定候选设备;最新版本还会在 v4l2 项后面直接标出 `devnode=present/missing`,区分“sysfs 里还能看到名字”和“当前 runtime 里真的有可打开的 `/dev/videoX`”。 `--scan-camera-io` 会对当前可见的 `/dev/video*` 做一轮低开销 I/O 摘要扫描,快速标出哪些节点连 `REQBUFS` 都过不去,哪些节点已经更接近可工作的终端采样口。 最新版本的 `--probe-camera-io` / `--scan-camera-io` 还会额外核对当前格式下的 `VIDIOC_ENUM_FRAMEINTERVALS`,也就是 `frame_intervals` / `ival` 这一列。 `--scan-pipewire` 会对当前可见的 `pipewire:` 相机源做批量状态扫描,快速判断有没有节点已经从 `suspended` 进入 `running/paused`。 `--probe-pipewire-graph` 会继续把 PipeWire 图压成摘要,直接给出 `video_sources/video_devices/links/input_ports/output_ports/clients/metadata` 计数,判断是不是根本没有消费者连上相机源。 `--probe-host-camera-stack` 会把宿主相机用户态栈也做成一条程序内探针,直接汇总 `libcamera/libcamhal/v4l2-relayd/wireplumber` 的可见性,并额外做一轮 `icamerasrc/CamHAL` 单次 bring-up 探测;最新版本还会给出 `discovered_devices` 和失败时对应的 `device=`,减少每次都靠外部 shell 重新盘点。 `--probe-camera /dev/videoX` 会直接读取 V4L2 能力和像素格式,判断这个节点是不是原始采集口、是否支持 streaming/readwrite。 `--probe-camera-io /dev/videoX` 会继续测试当前节点的 `G_FMT/TR Y_FMT/REQBUFS/read` I/O 路径,区分“格式协商就失败”和“格式能协商、但用户态取帧还是失败”这两类边界。 `--probe-media /dev/mediaX` 会继续往上核对 media-controller 拓扑,确认这些采集节点背后是否真的挂着可工作的 sensor/ISP 链。 `--probe-pipewire pipewire:ID` 会直接读取 PipeWire 节点的 `state/media.class/object.path/node.name`,判断视频源是不是还停在 `suspended`,还是已经被宿主会话真正激活。 最新版本还会额外输出 `topology_summary` 和 `topology_assessment`,直接汇总 `capture/csi2/sensor/lens/isp/pixel_formatter` 计数,减少人工翻读整段拓扑时的误判。 当前主机进一步实测发现: - `/dev/video0`、`/dev/video45` 这类节点都会报告 `driver=isys card=ipu6` - 能力上是 `capture=1 streaming=1 readwrite=0` - 暴露的格式以原始 Bayer 和 `UYVY/YUYV` 为主,尺寸范围是 `2x2..4672x3416` - `--probe-camera-io /dev/video0` 进一步表明:当前格式本身就是 `YUYV 640x480`,而且 `TRY_FMT` 对 `YUYV/UYVY` 都能返回成功 - `--scan-camera-io` 继续把节点分成了两类:`/dev/video0` 是 `reqbufs=0 read=0`,而大量其它节点例如 `/dev/video1/2/3/5/10/45` 已经是 `reqbufs=1 read=0` - 新版 `--probe-camera-io /dev/video1` 继续表明:`REQBUFS` 已经成功,但 `frame_intervals` 会直接报 `Inappropriate ioctl for device` - 新版 `--scan-camera-io` 进一步显示当前几乎所有 `/dev/video*` 都是 `ival=0`,也就是在 `VIDIOC_ENUM_FRAMEINTERVALS` 这一步系统性失败 - `--scan-pipewire` 则显示当前可见的相机源例如 `pipewire:35/41/43/45/50/59` 全部还是 `state=suspended class=Video/Source` - `--probe-pipewire-graph` 进一步显示当前 PipeWire 图是 `video_sources=48 video_devices=48 links=0 input_ports=0 output_ports=48 clients=4 metadata=1`,也就是设备层和相机源都在,连 `settings` metadata 也在,但没有任何活跃 Link,也没有任何消费者输入端口 - `/dev/media0` 则会报告 `driver=intel-ipu6 model=ipu6`,拓扑计数大约是 `entities=54 interfaces=48 pads=102 links=96` - 已暴露的实体基本只有 `Intel IPU6 ISYS Capture 0..47` 和 `Intel IPU6 CSI2 0..5`,没有在返回拓扑里看到明显的 sensor/lens/ISP 处理实体 - 对应的 PipeWire 节点例如 `pipewire:45 -> v4l2:/dev/video0`、`pipewire:35 -> v4l2:/dev/video10` 虽然能枚举到,但 `--probe-pipewire` 实测仍是 `state=suspended media_class=Video/Source` - 真正卡住的是用户态取帧这一步:`REQBUFS` 和 `read()` 都返回 `Invalid argument` - 但在真实采样时,`VIDIOC_REQBUFS` 会报 `Device or resource busy`,而 `read()` 路径会报 `Invalid argument` - 进一步实测 `--camera /dev/video1 --max-frames 1` 也仍然失败:FFmpeg 路径报 `VIDIOC_STREAMON: Link has been severed`,原生路径则是 `REQBUFS failed: Device or resource busy` 与 `read failed: Invalid argument` - 更新后的 `--camera auto` 现在会按 `/dev/video1 -> 2 -> 3 -> 5 -> 10 -> 0` 的顺序尝试,但这 6 个候选最终都卡在同一类宿主错误:`VIDIOC_STREAMON: Link has been severed`,随后 `read failed: Invalid argument` - 进一步动态验证 `--camera pipewire:59 --max-frames 1` 时,PipeWire 图在采集尝试过程中仍保持 `links=0 input_ports=0`,最后输出文件也仍然只有表头。这说明当前 `pipewiresrc` 路径不是“已经挂上消费者但取不到帧”,而是更早一步就没有真正把 consumer 接进 PipeWire 图 - 再用独立命令 `gst-launch-1.0 pipewiresrc path=59 num-buffers=1 do-timestamp=true ! fakesink` 交叉验证时,GStreamer 会直接报 `streaming stopped, reason not-negotiated (-4)`,而 PipeWire 图在运行期间依旧没有新增 client/link/input port - 宿主用户态服务本身并没有挂掉:`pipewire.service`、`pipewire-media-session.service`、`xdg-desktop-portal.service` 和 GNOME portal backend 都是 active;但服务日志会反复出现 `/dev/video1 VIDIOC_ENUM_FRAMEINTERVALS: Inappropriate ioctl for device`,以及 `pw.link ... negotiating -> error (error output enum formats: Inappropriate ioctl for device)` - 驱动层时间线也有明显异常:内核日志显示 `Oct 31` 启动时曾报 `intel/ipu/ipu6epmtl_fw.bin` 缺失并导致 `intel-ipu6 ... probe failed -ENOENT`,同时还有 `INT3472:0c: GPIO type 0x02 unknown; the sensor may not work`;而现在这个固件文件已经存在于 `/lib/firmware/intel/ipu/ipu6epmtl_fw.bin`,时间戳正好是 `Nov 2 08:30`,内核随后也开始打印 `Found supported sensor OVTI08F4:00`、`Connected 1 cameras` - 新增的 `--probe-host-camera-stack` 又把宿主用户态缺口进一步收紧了:当前系统是 `22.04 jammy` 用户态配 `6.14.0-37-generic` 内核,`gst-launch-1.0` 和 `pw-cli` 存在,但 `libcamera-hello`、`cam`、`v4l2-ctl`、`media-ctl` 都缺失 - 同一条探针还确认:当前已装的是 `pipewire/pipewire-media-session/gstreamer1.0-pipewire`,但 `libcamera0`、`libcamera-tools`、`v4l2-relayd`、`wireplumber`、`intel-ipu6-dkms` 都未安装 - `apt` 可见候选里能看到 `libcamera0`、`libcamera-tools`、`v4l2-relayd`、`wireplumber`、`intel-ipu6-dkms`,但看不到任何 `libcamhal-*`;同时 `icamera` 关键字可见。这说明当前不只是“应用没拿到帧”,而是宿主机连最基本的 `libcamera` 用户态验证链都还没补齐,OEM/IPU6 HAL 也大概率不在现有源里 - 也因此,当前最可能的宿主修复方向已经可以排出优先级:先补 `libcamera-tools` 和基础 V4L2/media 工具做独立验证,再补齐 OEM/IPU6 HAL 来源;如果补完后 `VIDIOC_ENUM_FRAMEINTERVALS` 仍系统性失败,再把重点收回到当前 `jammy userspace + 6.14 generic kernel` 这一组对齐问题 - 本轮已经在宿主上真正补装了 `libcamera-tools/libcamera0/v4l-utils/v4l2-relayd/wireplumber`,因此 `cam`、`v4l2-ctl`、`media-ctl` 现在都已可用;对应的 `--probe-host-camera-stack` 结果也更新成了“`libcamera` 用户态已装,但 `libcamhal-*` 仍不可见” - 补装后,`v4l2-ctl --list-devices` 已经能稳定枚举 `ipu6 (PCI:0000:00:05.0)` 和 `/dev/video0..47`、`/dev/media0`,`media-ctl -d /dev/media0 -p` 也能稳定读出 IPU6 拓扑;`v4l2-ctl -d /dev/video1 --all` 还能直接读到当前格式 `YUYV 640x480` - 这说明宿主现在至少已经从“设备工具链没装全、连独立核对都做不了”推进到“设备能力与当前格式能被真实工具直接读出”,不再只是靠项目内探针间接判断 - 但真正的取帧仍然没有恢复:切到 `wireplumber` 之后,`v4l2-ctl --stream-mmap=1 --stream-count=1` 从先前的 `Device or resource busy` 变成了 `VIDIOC_REQBUFS returned -1 (Invalid argument)`;项目内 `device_input_stream --camera /dev/video1 --max-frames 1` 仍然报 `VIDIOC_STREAMON: Link has been severed`、`VIDIOC_REQBUFS failed`、`read failed: Invalid argument` - PipeWire 会话层本轮也被真正纠正了:旧的 `pipewire-media-session` 已经停掉并被 masked,`wireplumber.service` 与 `pipewire-pulse.service` 进入 active;`pw-cli ls Client` 和 `--probe-pipewire-graph` 现在都能看到 `WirePlumber`、`Mutter`、`Nautilus`、`gsd-power` 等真实客户端 - 但即便会话层已经切到 `WirePlumber`,PipeWire 图依旧是 `links=0`,而且 `gst-launch-1.0 pipewiresrc path=59 ... ! fakesink` 仍然会报 `not-negotiated (-4)`。这说明问题已经不再是旧 session manager 没切过来,而是 IPU6 视频源本身仍无法向上层稳定协商出可消费流 - 继续往上核对 `libcamera` 路径后,`cam -l` 在当前宿主上会直接 `Segmentation fault (core dumped)`,返回码是 `139`。这进一步说明当前不只是 PipeWire/V4L2 取帧失败,连已安装的 `libcamera` 用户态在这套 `jammy + 6.14` 组合上也没有稳定跑起来,更像是 HAL/IPA 或内核-用户态错配问题 - 本轮又进一步把机型和发行版支持面核对实锤了:`dmidecode` 识别到宿主是 `Dell Pro Max 16 MC16250`;Ubuntu 认证页对应 `Dell Pro Max 16 MC16250 (Intel Core Ultra 7 265H)`,明确写的是 `Ubuntu 24.04 LTS` - 同一页还明确提示:这台机器“在部分地区预装的是定制 Ubuntu 镜像,标准 Ubuntu 镜像可能表现不好,甚至完全无法工作”。这和当前 `cam -l` 崩溃、PipeWire/V4L2 无法稳定取帧的宿主现象是对得上的 - 继续对 OEM 包名核对后,`packages.ubuntu.com` 里这台机型对应的是 `oem-somerville-gogoat-meta (24.04~ubuntu1)`,说明 `MC16250` 对应的 OEM 分支属于 `noble-updates`,不是当前 `jammy` 仓库 - 再往前推进后,当前宿主其实已经从 Dell 的 `jammy-sutton` 源拿到了 `libcamhal0/libcamhal-common/gstreamer1.0-icamera`,因此问题不再是“完全没有 OEM HAL 包”;但对应的 `icamerasrc/CamHAL` 单次探测仍稳定失败在 `Failed to find DevName for cameraId: 0, get video node: ov08x40 , devname: /dev/v4l-subdev1`,随后 `MediaControl init failed` - 本轮又把 Intel OEM 路径做成了真正可手工指定的一等入口:`--list-cameras` 现在会直接列出 `icamera:ov08x40-uf`、`icamera:ov13b10-uf` 等候选,当前宿主实测 `discovered_devices=32` - 同时也补上了显式选择路径:当前可以直接运行 `./build/src/device_input_stream --camera icamera:ov08x40-uf --max-frames 1 --output /tmp/device_icamera_ov08x40.csv` 做单设备核对;实测它不再误报成功,但输出仍然只有表头,退出前会超时停住,说明 `icamerasrc` 的确已经被程序尝试到,但宿主仍没把真实帧交出来 - 本轮又把一层 runtime 边界直接压进 CLI 里:当前这台环境里虽然 `/sys/class/video4linux` 还能枚举出很多 `Intel IPU6 ISYS Capture *` 名字,但 `--list-cameras` 已经会把它们明确标成 `devnode=missing`。对应地,显式跑 `./build/src/device_input_stream --camera /dev/video1 --max-frames 1 ...` 时,程序现在会先直接报 `camera device path is not present in this runtime: /dev/video1`,而不再继续刷一串误导性的 V4L2 open failed - 这轮又做了一次聚焦复验:显式 `--camera /dev/video1`、显式 `--camera icamera:ov08x40-uf` 和 `--camera auto` 现在都会稳定停在“无真实帧输出”的边界上,对应输出文件都是 `0` 行;也就是桥接层当前已经不会再把 stdout 日志或失效候选误当成摄像头成功取帧 - 这说明当前边界已经进一步收紧成:Jammy 上虽然已经补进了一部分 Dell OEM 用户态,但媒体节点映射/内核用户态对齐仍不成立;也就是问题不再是“桥接程序没试对后端”,而是更上游的 IPU6 媒体链仍没有稳定把真实相机流交给 OEM 路径 - 再做非破坏性升级检查后,`do-release-upgrade -c` 直接返回:`/etc/update-manager/release-upgrades` 里 `Prompt=never`,所以当前宿主连 24.04 升级通道都被本机配置关掉了。也就是说,若要继续沿正确路线修这台机子的相机,宿主侧下一步已经不是“继续补 Jammy 包”,而是先打开并规划 24.04/OEM 升级路径 - 本轮也顺手修掉了一个桥接层误判:最初把 `icamerasrc` 接进 fallback 时,CamHAL 打到 stdout 的日志字节有机会被误认成灰度帧;现在 `device_input_stream` 已改成让 `icamerasrc` 先把灰度帧落到临时文件再读回,因此不会再把日志冒充成有效图像 - 对应地,当前这份工作区里再跑 `./build/src/device_input_stream --camera auto --max-frames 1 --output /tmp/device_auto.csv` 时,程序现在会先跳过 `devnode=missing` 的 `/dev/video*` 候选,再按 `--list-cameras` 枚举到的 `icamera:` 候选继续尝试;但在修正伪成功之后,本地输出又重新回到了“只有表头/无真实帧”的状态。这说明当前不是“桥接已经拿到一帧,只差优化”,而是宿主相机链依旧没有真正恢复 所以这些节点更像 IPU6 的原始采集端口,而不是当前会话下可被普通用户态直接拿帧的稳定终端口。现阶段输出文件仍然只有表头,说明宿主相机栈还没有把完整媒体链上的真实帧交给桥接层;现在已经能更明确地说:问题不是“基础 YUV 格式完全不支持”,而是“宿主侧 I/O 激活和媒体会话没有把可读缓冲区真正交给用户态”,而且 PipeWire 侧不只是“节点 suspended”,更是整张图里没有任何活跃相机 Link 或消费者输入端口,连程序主动尝试 `pipewire:59` 或独立的 GStreamer `pipewiresrc` 都没有建立出活跃 consumer。进一步看单节点和批量扫描、再结合宿主日志,`pipewire`/`wireplumber` 只是把会话层纠正了,但没有把 IPU6 链真正救活;再往前看驱动时间线,这套 IPU6 链还经历过一次“固件缺失导致 probe 失败,后来补上固件后才识别到传感器和 1 个摄像头”的过程。现在再加上机型/OEM 证据,可以把问题继续收紧成更硬的三层:一是这台 `MC16250` 的稳定支持面在 `Ubuntu 24.04 + oem-somerville-gogoat-meta`;二是当前 `jammy` 宿主即便已经补进 `libcamhal0/gstreamer1.0-icamera`,OEM `icamerasrc/CamHAL` 仍卡在 `DevName/MediaControl init`;三是因此继续在 Jammy 上小修小补,很难把这条相机链修成稳定可用。要继续往前,真正的宿主修复方向已经从“继续补 Jammy 包”转成了“切到匹配的 24.04/OEM 相机栈”,或者至少继续沿 OEM 媒体节点映射那一层往上追。 == 发声输出 当前版本已经新增一条生物启发式的“连续发声输出”通路,但它还不是语言系统。 - `voice_output`:读取 `bio_brain` 当前每个 tick 的连续发声控制量,并把它们合成为 `.wav` - 当前发声控制量包括:呼吸驱动、发声驱动、构音开口度、共鸣、基频、音节门控 - 这些量来自脑干/运动/社交通路和内感受状态的连续耦合,不是文本到语音的捷径 目前最准确的定位是: - 已经能输出类似婴儿早期发声/咿呀的连续声波 - 还不能理解词义、学习语言结构,或跟人进行真正对话 - 当前没有词、音素、句法、语义图或语言记忆网络,所以不能把“看视频”直接学成“会说话聊天” 一个已验证的最小命令是: [source,bash] ---- ./build/src/media_input_stream --media /tmp/bio_brain_samples/sample-3s.wav --max-frames 120 \ | ./build/src/voice_output --config config/media_runtime_stdin.xml --output /tmp/bio_brain_voice.wav 120 8192 65536 60 ---- 这条链已经在当前主机上跑通,并生成了有效的 WAV 文件。 在这条基础之上,当前版本又往前推进了两层更接近婴儿早期发育的机制: - 外部输入流现在除了原来的 11 条感觉/社会通道,还可以携带 4 条听觉目标通道:`auditory_energy`、`auditory_pitch_hz`、`auditory_rhythm`、`auditory_roughness` - 婴儿期发声现在会在社会接触、安抚和共同调节门控下,沿着连续误差缓慢把自己的 `pitch/syllable/output` 往外部听觉目标靠拢 - 同时又新增了一层短时听觉痕迹:外部声音停掉后,近期 `energy/pitch/rhythm/roughness` 会先以连续衰减的方式保留,并继续轻推发声执行端做短时复述 - 这不是词或语义模仿,而是更早期的“听到一个声音轮廓,发声逐渐贴近那个轮廓,并在短时间内继续自发复述” 当前已经有一条回归探针覆盖这层能力: - `./build/src/vocal_imitation_probe` - 最新结果:`passed=2/2` - 代表性结果: `infant_social_imitation start_pitch=160.0 end_pitch=251.0 target_pitch=280.0 out=0.41 err=0.14 trace=1.50 rehearse=1.50 silent_out=0.12 silent_pitch=216.8 silent_err=0.13` `infant_distress_call start_pitch=160.0 end_pitch=269.3 target_pitch=320.0 out=0.32 err=0.23 trace=1.50 rehearse=1.50 silent_out=0.15 silent_pitch=238.4 silent_err=0.18` 它的含义是:当前系统已经能在婴儿期和社会门控存在时,把发声朝听到的目标音高/节律方向推进,并在输入停止后依靠短时听觉痕迹继续短暂复述,但仍然只是前语言阶段,不是会说词句。 如果要调这部分而不重新编译,当前可以直接改 XML: - `auditory_trace_decay`:听觉痕迹衰减速度 - `auditory_trace_encoding_gain`:外部声音写入短时痕迹的强度 - `auditory_trace_social_gate`:社会接触/安抚对听觉痕迹编码的增强 - `vocal_rehearsal_pitch_gain`:痕迹对后续音高复述的牵引 - `vocal_rehearsal_rhythm_gain`:痕迹对后续节律复述的牵引 - `vocal_rehearsal_output_gain`:痕迹对后续发声输出幅度的牵引 == 项目状态 当前版本已经具备这些能力: - 纯 C 实现,Meson 构建 - 稀疏神经网络核心,而不是全连接矩阵 - 四类神经元:兴奋、抑制、感觉、运动 - 八个脑区:皮层、海马体、丘脑、基底节、小脑、脑干、杏仁核、下丘脑 - 皮层分层:L1、L2/3、L4、L5、L6、deep - 海马子区:DG、CA3、CA1、subiculum - 左右半球标签与轻量跨半球耦合 - 发育阶段:婴幼期、青少年期、成年期、衰老期 - 清醒/睡眠相位:wake、nrem、rem - 神经发生、神经元凋亡、突触生长、突触剪枝 - 活跃前沿推进和维护预算分片 - 睡眠期记忆回放与海马体到皮层的巩固倾向 - 能量储备和睡眠压力两个全局生理变量 - 神经调质、激素、昼夜节律、胶质清理与炎症负担 - 婴幼期共同调节慢变量:连续维护 `developmental_coregulation_signal/trace` - 工作记忆槽位、决策冲突监控、习惯控制与模型驱动控制仲裁 - 最小身体/环境闭环:运动输出会改变身体状态,再反馈成感觉输入 - 运动输出、身体状态和脑区神经元数量统计 - 一版可运行的冷存储骨架:可把“860 亿目标神经元”作为虚拟规模写入 manifest,并把当前驻留活跃窗口的神经元/突触检查点周期性落盘 当前它依然是“生物启发式仿真系统”,不是神经科学研究级别的精确解剖或电生理模型。 == 暂停状态与继续要求 当前开发先暂停在这个状态,后续继续时应直接从这里接着推进,而不是重新回到“高层评分器/手工决策器”路线。 这一段里的“继续要求”以当前用户要求为准,下面 4 条属于非协商边界,后续继续实现时不要回退: - 目标方向仍然是尽量按神经结构与局部动力学逼近全脑仿真,而不是回到手工行为器 - 不能重新引入哪怕一层“行为模式脚本 / 决策树 / 场景特判”来直接指定外显动作 - 不能依赖定向训练、定制样本灌输或单独行为监督去把系统训成某类表现 - 不能额外加一个语义捷径控制器去绕过现有神经元、突触、记忆和睡眠/发育链路;后续只能继续沿局部传播、自组织竞争和慢变量塑形往前拆 本次暂停前,已经确认的状态如下: - 构建方式仍然是纯 C + Meson - 当前核心实现已经明确转向“更贴近生物神经元原理”的局部动力学 - 神经元层已经包含膜电位、兴奋/抑制电流池、不应期、适应电流、泄漏式积分、轻量树突驱动和钙依赖状态 - 突触层已经包含短时资源池、记忆标签、轻量 STDP 风格偏置、睡眠期回放强化,以及树突/钙门控的局部可塑性偏置 - 调质现在直接门控局部可塑性与 replay,而不是只做高层数值打分 - 生长/剪枝/凋亡已经开始依赖局部活动、`trophic_support`、`spine_density`、微胶质样清理和 E/I 稳态补偿 - 髓鞘/白质这条慢变量现在不再只由发育阶段和睡眠恢复决定;近期真实参与过的长程投射也会通过局部结构支持与活动残余,轻微反推 `myelination_level`、`white_matter_integrity` 和跨区传导增益 - 新增了一层轻量前额叶样 `binding_workspace`,它把工作记忆、情景回忆、显著性与回放信用压成少量上下文绑定槽位,并以 `binding_workspace_coherence` 跟踪上下文是否已稳定重绑定 - 分时维护和稀疏连接策略仍然保留,用来控制内存占用 本次暂停前最近一次验证结果: - `meson compile -C build` 通过 - `./build/src/reasoning_probe` 通过,`passed=6/6 aggregate_score=1.000` - `./build/src/motor_window_probe` 通过,`passed=4/4` - `./build/src/sleep_memory_probe` 通过,`passed=3/3` - `./build/src/rem_association_probe` 通过,`passed=3/3` - 6 个代理场景的 case id 目前仍沿用历史命名:`threat_avoidance`、`goal_seeking`、`hunger_foraging`、`conflict_braking`、`context_rebinding`、`mature_rebinding`;当前应把它们理解为 probe 场景标识,而不是对外行为类别接口 - `motor_window_probe` 当前固定检查 4 个生物窗口:`late_wake_sparse_window`、`wake_to_nrem_boundary`、`coarse_sleep_entry`、`nrem_pre_rem_quiet_window` - `sleep_memory_probe` 当前固定检查 3 条睡眠记忆约束:`nrem_entry_replay`、`nrem_sustained_consolidation`、`nrem_quiet_motor` - `rem_association_probe` 当前固定检查 3 条 REM 约束:`rem_entry_association`、`rem_sustained_association`、`rem_quiet_motor` - `context_rebinding` 已从旧的保守弱通过提升到稳定通过,`score=1.000 dominant_basis=b3 bind=0.44`;说明旧危险情景在安全重语境化后,当前会更稳定地把连续竞争态推向 `b3` 主导区间 - `mature_rebinding` 继续通过,`score=1.000 dominant_basis=b3 bind=0.42`,用于专门覆盖“非 infant 发育后上下文重绑定”窗口 - 最新一轮发育期修正把“上下文重绑定增益”和“动作释放门控”拆开:婴儿/青少年期允许在安全重语境化下松动旧的高威胁 `b2` 尾迹,但在高 `sleep_pressure`、高 `melatonin` 的尾醒窗口里,仍限制把这类重绑定直接放大成大幅外显动作,更接近“认知可改判,不等于立即放行动作程序”的生物学分层 - 最新一轮尾醒修正继续保持这条分层:新增的限幅只放在极高睡压、低能量、稀疏 spike 的低层执行端读出处,允许像真实低肌张力尾醒那样保留极小 twitch,但不再让单次稀疏放电被放大成 wake-like burst - 本轮曾试验过一个“睡眠后短时认知整合痕迹”机制,想把睡眠恢复信号继续轻量带到清醒期的 `working_memory` 和 `binding_workspace`;但真实回归表明它会把尾醒和入睡边界的低层动作窗口重新抬坏,因此已经整块撤回,不再让睡眠恢复信号在清醒期直接额外加成工作记忆稳定度或绑定支持度 - 本轮还短暂试验过一个更窄的 `NREM` 内部 spindle-like 门控,想只在睡眠窗内轻量增强慢波整理、回放和巩固;但两次真实回归都说明它仍会经由网络慢变量把尾醒/入睡边界重新抬坏,例如一度出现 `tick=781 motor=2.80`、`tick=876 motor=0.73`,即使收窄后仍有 `tick=783 motor=0.77`。因此这条机制也已完全撤回,当前结论是不应在现有网络里继续沿这条落点增强睡眠内部门控,除非先找到不会污染尾醒窗口的更局部实现 - 本轮继续往前推后,已经补上一层更局部、也更稳定的 `NREM` 单突触睡眠整理:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对低 `memory_tag`、低支持、钙负荷偏高的兴奋性连接做极轻微回落,并对高 `memory_tag`、高支持的连接做极轻保护;不改 `replay_budget`、不改跨相位门控慢变量、也不接入动作链。真实回归下它保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3`,说明这条落点目前更符合“睡眠期主要做局部突触稳态整理,而不是额外放大全局增益”的生物方向 - 在这条安全路线之上,本轮又补上一层 `NREM` 单神经元睡眠稳态整理:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑神经元做轻微钙负荷校正。高钙、低活动、已闲置一段时间的单元会被轻微提高阈值、提高适应并降低一点树突/兴奋性驱动;低钙且长期闲置、但 trophic 仍足够的单元只得到极小恢复。它同样不改 replay 强度、不改跨相位门控,也不接触动作池。真实回归依旧保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又继续往前推了一层 `NREM` 局部抑制性连接稳态:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对投向皮层/海马/丘脑的抑制性局部连接做极轻的资源保护和弱回落。高钙、近期仍活跃的局部抑制连接会得到一点短时资源恢复和极轻保护;而低 `memory_tag`、长期闲置、支持不足的局部抑制连接只会做极轻回落。它同样不改 replay 强度、不改跨相位门控、不接触动作池。真实回归依旧保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮在同一路线上继续前推了一层 `NREM` 局部树突/钙负荷稳态整理:它仍只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑神经元做极轻微的局部回落。对“树突驱动仍偏高、钙负荷略高、但近期外显活动已经下降”的单元,会轻微下调 `dendritic_drive`、释放一点 `calcium_level`,并做极小 `spine_density` 收敛;对“树突驱动偏低、钙长期偏低、支持仍足够且长期闲置”的单元,只给极轻的钙/棘恢复。它同样不改 replay 强度、不改跨相位门控、不接入动作池。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又在同一个安全边界里继续加了一层 `NREM` 局部抑制张力回补:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期外显活动已经下降、但局部树突/钙残余仍在,而且 `inhibitory_current` 还明显弱于 `excitatory_current` 时,它才会极轻地回补一点 `inhibitory_current`,并顺手压一点 `excitatory_current`。它更像睡眠期对局部关联回路做轻量 shunting/降噪,而不是去新造全局睡眠增益;真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又继续沿同一安全路线补了一层 `NREM` 关联兴奋性弱痕迹结构保底/去噪:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性连接生效。对“`memory_tag` 还没完全掉光、结构支持偏弱但 trophic 仍在、近期活动已经降下来”的关联弱痕迹,它只做极轻的 `short_term_resources`/`strength` 保底,并给后神经元一点极小 `spine_density` 恢复;而对“记忆标签更低、结构支持更差、又已经长期闲置但钙负荷仍偏高”的弱连接,只做极轻去噪回落。它仍然不改 replay 强度、不改跨相位门控、不接入动作池。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又继续补上一层 `NREM` 局部短时资源池稳态:它仍只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联连接生效。对“记忆标签还在、近期活动已经降下来、但 `short_term_resources` 偏低”的安静关联连接,它只极轻地回补一点释放资源;而对“记忆标签很低、长期闲置、但资源池却异常偏高”的安静弱连接,只做极轻泄放。这更像睡眠期对局部突触释放资源做恢复与归一,而不是去放大全局回放或跨相位门控。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部适应电流松弛:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期外显活动已经低、钙负荷也不高、但 `adaptation_current` 还残留偏高时,它才会极轻地释放一点适应电流,并把阈值回放一点点。这更像睡眠期对局部疲劳电流做恢复,而不是把全局网络增益抬高。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部抑制过冲回落:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期外显活动已经很低、树突/钙残余也已经回落、但 `inhibitory_current` 仍明显高于 `excitatory_current` 时,它才会极轻地释放一点抑制张力,并把阈值回放一点点。这更像睡眠期对局部 E/I 过冲做归一,避免把关联回路长期压死,而不是去加一个会跨相位传播的全局增益。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 关联抑制性连接过强归一:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当局部回路已经安静、钙压力也不高,但某条抑制性连接的 `strength` 仍偏强时,它才会极轻地回落一点连接强度。它更像睡眠期对局部抑制性连接做过冲归一,避免把已经安静的关联回路长期钉死在过强抑制上,而不是去改变全局睡眠门控或回放增益。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联兴奋性连接过强归一:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当局部回路已经安静、钙压力也不高、记忆标签不高,但某条兴奋性连接的 `strength` 仍偏强时,它才会极轻地回落一点连接强度。它更像睡眠期对局部兴奋性连接做过冲归一,避免把安静关联回路里残余过强连接长期保留,而不是去改动 replay 或全局门控。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 低钙阈值残差归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期外显活动已经很低、树突/钙状态也偏低、但阈值仍残留在偏高位置时,它才会极轻地回放一点阈值。它更像睡眠期对局部膜后恢复做最后一点细调,避免把长期安静的关联单元一直卡在高阈值上,而不是去增加全局可兴奋性或改动 replay。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联痕迹极小保留:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经安静但仍有局部支持的关联连接生效。只有当连接近期活动已经很低、`idle_ticks` 已经进入安静窗口、`trophic_support` 仍够、而 `memory_tag` 只剩一层中低残余时,它才会极轻地保留一点点 `memory_tag`。它更像睡眠期对局部关联痕迹做“不要过早完全抹平”的微弱保留,而不是去放大全局 replay 或跨相位门控。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元残余兴奋电流清理:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突/钙状态也低、但 `excitatory_current` 还残留一小段偏高尾巴时,它才会极轻地清一点残余兴奋电流。它更像睡眠期对局部膜电流尾迹做清理,避免安静关联单元长期挂着不必要的兴奋残差,而不是去提升全局可兴奋性或改动 replay。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部资格迹尾迹清理:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突/钙状态也低、但 `trace` 还残留一段局部资格迹尾巴时,它才会极轻地让这段 `trace` 再衰减一点。这更像睡眠期对局部活动资格迹做尾迹清理,避免安静关联单元长期挂着过期局部痕迹,而不是去改动 replay 或全局门控。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部膜去极化尾迹回落:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突/钙状态也低、兴奋/抑制电流也都已回落,但膜电位还残留一小段高于 `recovery` 的去极化尾巴时,它才会极轻地把 `membrane` 往 `recovery` 再拉回一点。这更像睡眠期对局部膜电位残余做回落,避免安静关联单元长期挂着过期去极化尾迹,而不是去提升全局可兴奋性或改动 replay。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部后超极化尾迹释放:它同样只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突/钙状态也低、兴奋/抑制电流也都已回落,但膜电位还残留一小段低于 `recovery` 的后超极化尾巴时,它才会极轻地把 `membrane` 往 `recovery` 再拉回一点。这更像睡眠期对局部膜恢复尾迹做收敛,避免安静关联单元长期挂着过期后超极化残差,而不是去提升全局可兴奋性、改动 replay,或重新把动作边界抬高。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部微弱钙尾迹清理:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突驱动也低、兴奋/抑制电流也都已回落,但 `calcium_level` 还残留一小段略高于基线的微弱尾巴时,它才会极轻地把这段钙残余再放掉一点。这更像睡眠期对局部钙依赖稳态做最后一点收敛,避免安静关联单元长期挂着过期微弱钙尾迹,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部树突棘过冲尾迹归一:它仍然只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突驱动和钙尾迹也都已很低、兴奋/抑制电流都已回落,但 `spine_density` 还残留一小段偏高的结构尾巴时,它才会极轻地把这段树突棘过冲再压回一点。这更像睡眠期对局部微结构支持做最后一点归一,避免安静关联单元长期挂着过期结构残余,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部树突棘低尾恢复:它仍然只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静且局部支持仍够的关联神经元生效。只有当近期外显活动已经很低、树突驱动和电流尾迹都已回落、钙状态略低于基线,而且 `spine_density` 还留在一小段偏低尾巴时,它才会极轻地回补一点点树突棘密度。这更像睡眠期对局部微结构支持做最低限度保养,避免安静但仍有支持的关联单元被长期往下磨损,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部低阈值尾迹归一:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突驱动和兴奋/抑制电流尾迹都已回落、钙状态也已回到窄窗,但 `threshold` 还残留一小段偏低尾巴时,它才会极轻地把阈值回抬一点。这更像睡眠期对局部膜兴奋性做最后一点防过冲归一,避免安静关联单元长期挂在过低阈值上,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部低适应电流地板恢复:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静且局部支持仍够的关联神经元生效。只有当近期外显活动已经很低、树突驱动和兴奋/抑制电流尾迹都已回落、钙状态略低于基线、`threshold` 也不低,但 `adaptation_current` 还掉到一小段过低尾巴时,它才会极轻地回补一点点适应电流。这更像睡眠期对局部疲劳地板做最低限度保养,避免安静关联单元长期挂在过低适应状态,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部极低抑制尾迹地板恢复:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静且局部支持仍够的关联神经元生效。只有当近期外显活动已经很低、树突驱动和兴奋尾迹都已回落、钙状态略低于基线、`threshold` 也不低,而 `inhibitory_current` 只剩一小段几乎见底的尾巴时,它才会极轻地回补一点点局部抑制电流。这更像睡眠期对局部 E/I 稳态保留最低限度抑制底座,避免安静关联单元长期挂在过低抑制状态,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部 trophic 支持尾迹恢复:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静且局部微结构仍在的关联神经元生效。只有当近期外显活动已经很低、树突驱动和兴奋/抑制尾迹都已回落、钙状态略低于基线、`spine_density` 还在可用范围内,而 `trophic_support` 只滑到一小段中低尾巴时,它才会极轻地回补一点点局部营养样支持。这更像睡眠期对局部支持环境做最低限度保养,避免安静关联单元长期挂在偏低支持状态,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部 trophic 支持过冲尾迹归一:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突驱动和兴奋/抑制尾迹都已回落、钙状态也不高,而 `trophic_support` 还残留一小段偏高过冲尾巴时,它才会极轻地把这段局部支持过冲收回一点。这更像睡眠期对局部支持环境做最后一点归一,避免安静关联单元长期挂着过高支持尾迹,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部 `recovery` 高尾归一:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突驱动和兴奋/抑制尾迹都已回落、钙状态也不高,而 `recovery` 还残留一小段偏高尾巴时,它才会极轻地把这段局部恢复位过冲收回一点。这更像睡眠期对局部膜恢复基线做最后一点归一,避免安静关联单元长期挂着偏高恢复位尾迹,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部 `recovery` 低尾地板回补:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静且局部支持仍够的关联神经元生效。只有当近期外显活动已经很低、树突驱动和兴奋/抑制尾迹都已回落、钙状态略低于基线,而 `recovery` 只剩一小段偏低尾巴时,它才会极轻地把这段局部恢复位地板补回一点。这更像睡眠期对局部膜恢复基线做最低限度保养,避免安静关联单元长期挂在过低恢复位状态,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部微弱低钙尾迹回补:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静且局部结构和支持仍够的关联神经元生效。只有当近期外显活动已经很低、树突驱动和兴奋/抑制尾迹都已回落、`spine_density` 和 `trophic_support` 仍在可用范围内,而 `calcium_level` 只剩一小段偏低尾巴时,它才会极轻地回补一点点局部钙地板。这更像睡眠期对局部钙依赖稳态做最低限度保养,避免安静关联单元长期挂在过低钙状态,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 局部树突地板回补:它还是只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静且局部结构和支持仍够的关联神经元生效。只有当近期外显活动已经很低、树突驱动掉到很低尾巴、兴奋/抑制尾迹都已回落、钙状态略低于基线,而 `spine_density` 和 `trophic_support` 仍在可用范围内时,它才会极轻地回补一点点 `dendritic_drive`。这更像睡眠期对局部树突可塑性底座做最低限度保养,避免安静关联单元长期挂在过低树突驱动状态,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联兴奋性连接低强度保底:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 还没掉光、结构和局部支持都还在、钙状态略低于基线,但 `strength` 已经压到一小段偏低尾巴时,它才会极轻地回补一点点连接强度。这更像睡眠期对局部关联痕迹做最低限度保养,避免安静但仍有痕迹的连接过早塌到过弱地板,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联抑制性连接低强度保底:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 还没掉光、局部支持还在、钙状态略低于基线,但 `strength` 已经压到一小段偏低尾巴时,它才会极轻地回补一点点连接强度。这更像睡眠期对局部抑制性关联痕迹做最低限度保养,避免安静但仍有痕迹的抑制性连接过早塌到过弱地板,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静抑制性关联痕迹极小保留:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 还保留一小段中低残余、局部支持仍在时,它才会极轻地再保留一点点 `memory_tag`。这更像睡眠期对局部抑制性关联痕迹做“不要过早完全抹平”的微弱保留,避免安静但仍有功能意义的抑制性连接过早掉出局部回路,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静抑制性关联连接释放资源地板回补:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 还没掉光、局部支持仍在、钙状态也不高,但 `short_term_resources` 已经压到一小段偏低尾巴时,它才会极轻地回补一点点释放资源。这更像睡眠期对局部抑制性关联连接做最低限度突触资源保养,避免安静但仍有功能意义的抑制性连接过早掉到过低释放地板,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静抑制性关联连接释放资源过冲归一:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 已很低、局部回路也已安静、钙状态不高,但 `short_term_resources` 还残留一小段偏高尾巴时,它才会极轻地把这段资源过冲收回一点。这更像睡眠期对局部抑制性关联连接做最低限度的突触资源归一,避免安静连接长期挂着过高释放资源,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静抑制性关联连接 `plasticity` 地板恢复:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 仍保留一小段中低残余、局部支持仍在、钙状态也处于窄窗内,但 `plasticity` 已经掉到近乎僵硬的低尾时,它才会极轻地回补一点点可塑性系数。这更像睡眠期对局部抑制性关联连接做最低限度的可塑性保养,避免安静但仍有功能意义的连接过早塌进过硬的学习地板,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静抑制性关联连接 `plasticity` 过冲归一:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 已经很低、局部支持也不高、钙状态仍处于窄窗内,但 `plasticity` 还残留一小段偏高尾巴时,它才会极轻地把这段可塑性过冲收回一点。这更像睡眠期对局部抑制性关联连接做最低限度的可塑性归一,避免安静低痕迹连接长期挂着过高学习敏感度,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性兴奋关联连接 `plasticity` 地板恢复:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 仍保留一小段中低残余、局部结构和营养支持仍在、钙状态也处于窄窗内,但 `plasticity` 已经掉到近乎僵硬的低尾时,它才会极轻地回补一点点可塑性系数。这更像睡眠期对局部兴奋性关联连接做最低限度的可塑性保养,避免安静但仍有痕迹的连接过早塌进过硬学习地板,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静低痕迹兴奋关联连接 `plasticity` 过冲归一:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 已经很低、局部结构和营养支持也不高、钙状态仍处于窄窗内,但 `plasticity` 还残留一小段偏高尾巴时,它才会极轻地把这段可塑性过冲收回一点。这更像睡眠期对局部兴奋性关联连接做最低限度的可塑性归一,避免安静低痕迹连接长期挂着过高学习敏感度,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性关联神经元极低兴奋电流地板恢复:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期外显活动已经很低、树突驱动也低、钙状态略低于基线、局部支持仍在,而且 `excitatory_current` 已经掉到近乎见底时,它才会极轻地回补一点点背景兴奋电流。这更像睡眠期对局部关联单元保留最低限度的自发兴奋底噪,避免安静但仍有功能意义的单元长期塌到完全无驱动,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性兴奋关联连接释放资源地板恢复:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 仍保留一小段中低残余、局部结构和营养支持仍在、钙状态也处于窄窗内,但 `short_term_resources` 已经压到偏低尾巴时,它才会极轻地回补一点点释放资源。这更像睡眠期对局部兴奋性关联连接做最低限度的突触资源保养,避免安静但仍有痕迹的连接过早掉到过低释放地板,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静低痕迹兴奋关联连接释放资源过冲归一:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 已经很低、局部结构和营养支持也不高、钙状态仍处于窄窗内,但 `short_term_resources` 还残留一小段偏高尾巴时,它才会极轻地把这段释放资源过冲收回一点。这更像睡眠期对局部兴奋性关联连接做最低限度的突触资源归一,避免安静低痕迹连接长期挂着过高释放资源,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静低支持兴奋关联连接高痕迹尾迹回落:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、局部结构和营养支持也偏低、钙状态仍处于窄窗内,但 `memory_tag` 还残留一小段偏高尾巴时,它才会极轻地把这段痕迹标签继续放掉一点。这更像睡眠期对局部低支持关联痕迹做自然淡出和去陈旧化,避免安静低支持连接长期挂着过高记忆标签,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静低支持抑制性关联连接高痕迹尾迹回落:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、局部支持也偏低、钙状态仍处于窄窗内,但 `memory_tag` 还残留一小段偏高尾巴时,它才会极轻地把这段抑制性痕迹标签继续放掉一点。这更像睡眠期对局部低支持抑制性关联痕迹做自然淡出和去陈旧化,避免安静低支持连接长期挂着过高记忆标签,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性兴奋关联连接低残余痕迹极小保留:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 只剩一小段低残余、局部结构和营养支持仍在时,它才会极轻地再保留一点点痕迹标签。这更像睡眠期对局部兴奋性关联痕迹做“不要过早完全抹平”的微弱保留,避免安静但仍有功能意义的连接过早掉出局部回路,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元抑制过冲尾迹归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突和兴奋/抑制电流尾迹都已回到窄窗,但 `inhibitory_current` 还残留一小段偏高尾巴时,它才会极轻地把这段抑制尾迹收回一点。这更像睡眠期对局部抑制膜电流做最后一点过冲归一,避免安静关联单元长期挂着过高抑制残差,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元适应电流过冲尾迹归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突和兴奋/抑制电流尾迹都已回到窄窗,但 `adaptation_current` 还残留一小段偏高尾巴时,它才会极轻地把这段疲劳电流尾迹收回一点。这更像睡眠期对局部疲劳电流做最后一点过冲归一,避免安静关联单元长期挂着过高适应残差,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元高阈值尾迹归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突和兴奋/抑制电流尾迹都已回到窄窗,但 `threshold` 还残留一小段偏高尾巴时,它才会极轻地把这段高阈值尾迹收回一点。这更像睡眠期对局部膜兴奋性做最后一点高尾归一,避免安静关联单元长期挂着过高放电阈值,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元兴奋电流过冲尾迹归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突和兴奋/抑制电流尾迹都已回到窄窗,但 `excitatory_current` 还残留一小段偏高尾巴时,它才会极轻地把这段兴奋电流尾迹收回一点。这更像睡眠期对局部膜兴奋电流做最后一点过冲归一,避免安静关联单元长期挂着过高兴奋残差,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元树突驱动过冲尾迹归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、钙状态和兴奋/抑制电流尾迹都已回到窄窗,但 `dendritic_drive` 还残留一小段偏高尾巴时,它才会极轻地把这段树突驱动尾迹收回一点。这更像睡眠期对局部树突平台残余做最后一点过冲归一,避免安静关联单元长期挂着过高树突驱动残差,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元局部驱动过冲尾迹归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突和兴奋/抑制电流尾迹都已回到窄窗,但 `recent_drive` 还残留一小段偏高尾巴时,它才会极轻地把这段局部短时驱动尾迹收回一点。这更像睡眠期对局部短时驱动做最后一点过冲归一,避免安静关联单元长期挂着过高局部驱动残差,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元钙过冲尾迹归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突和兴奋/抑制电流尾迹都已回到窄窗,但 `calcium_level` 还残留一小段偏高尾巴时,它才会极轻地把这段钙尾迹收回一点。这更像睡眠期对局部钙依赖稳态做最后一点过冲归一,避免安静关联单元长期挂着过高钙残差,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元高资格迹尾迹归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突和兴奋/抑制电流尾迹都已回到窄窗、钙状态也回到基线附近,但 `trace` 还残留一小段偏高尾巴时,它才会极轻地把这段局部资格迹收回一点。这更像睡眠期对单神经元局部可塑性资格迹做最后一点去陈旧化,避免过期高痕迹长期挂在安静关联单元上,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性兴奋关联连接超低强度地板恢复:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 还保留一小段中低残余、`short_term_resources` 和局部结构/营养支持都还在,但 `strength` 已掉到超低尾巴时,它才会极轻地回补一点点连接强度。这更像睡眠期对仍有局部痕迹的安静兴奋性关联连接做最低限度保养,避免它们在长静默里被继续磨到过低而过早掉队,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性抑制关联连接超低强度地板恢复:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 还保留一小段中低残余、`short_term_resources` 和局部营养支持都还在,但 `strength` 已掉到超低尾巴时,它才会极轻地回补一点点连接强度。这更像睡眠期对仍有局部回路意义的安静抑制性关联连接做最低限度保养,避免它们在长静默里被继续磨到过低而过早掉队,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性抑制关联连接超低可塑性地板恢复:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 还保留一小段中低残余、`short_term_resources` 和局部营养支持都还在,但 `plasticity` 已掉到超低尾巴时,它才会极轻地回补一点点局部可塑性余量。这更像睡眠期对仍有局部回路意义的安静抑制性关联连接做最低限度的 metaplasticity 保养,避免它们在长静默里过早变得过于僵硬,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性兴奋关联连接超低可塑性地板恢复:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 还保留一小段中低残余、`short_term_resources` 和局部结构/营养支持都还在,但 `plasticity` 已掉到超低尾巴时,它才会极轻地回补一点点局部可塑性余量。这更像睡眠期对仍有局部痕迹的安静兴奋性关联连接做最低限度的 metaplasticity 保养,避免它们在长静默里过早变得过于僵硬,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性抑制关联连接极低痕迹地板保留:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 已经掉到极低尾巴、但 `short_term_resources` 和局部营养支持都还在时,它才会极轻地回补一点点局部痕迹标签。这更像睡眠期对仍有局部回路意义的安静抑制性关联连接做最低限度的痕迹保留,避免它们在长静默里被过早完全抹平,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性兴奋关联连接极低痕迹地板保留:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 已经掉到极低尾巴、但 `short_term_resources` 和局部结构/营养支持都还在时,它才会极轻地回补一点点局部痕迹标签。这更像睡眠期对仍有局部痕迹意义的安静兴奋性关联连接做最低限度的痕迹保留,避免它们在长静默里被过早完全抹平,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静支持性兴奋关联连接低尾痕迹地板保留:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 已落到 `0.04-0.10` 的低尾区间、`short_term_resources` 仍高于窄窗、局部结构和营养支持仍在、而钙压力也保持在局部静默窄窗时,它才会极轻地再保留一点点痕迹标签。这更像睡眠期对“仍有局部痕迹意义但已经快被磨平”的安静兴奋性关联连接做最低限度的低尾保养,避免它们在长静默里过早彻底消失,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静低支持兴奋关联连接低尾痕迹自然淡出:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑兴奋性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 仍停在 `0.04-0.10` 的低尾区间、但 `short_term_resources` 已偏低、局部结构和营养支持也都不足、而钙压力仍处于局部静默窄窗时,它才会极轻地再放掉一点点痕迹标签。这更像睡眠期对“已经安静且失去局部支撑”的弱兴奋性关联痕迹做自然淡出,避免刚做完地板保留后又把不该留的低尾残迹长期挂住,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静低支持关联神经元局部营养尾迹自然淡出:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到静默低尾、`trophic_support` 只剩 `0.10-0.16` 的低尾区间、而 `spine_density` 也已偏弱时,它才会极轻地再放掉一点点局部营养支持残差。这更像睡眠期对“不再被局部微结构继续维持”的安静关联单元做自然退场和支持去陈旧化,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静低支持抑制关联连接低尾痕迹自然淡出:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑抑制性关联连接生效。只有当连接近期活动已经很低、`memory_tag` 仍停在 `0.04-0.10` 的低尾区间、但 `short_term_resources` 已偏低、局部营养支持也不足、而钙压力仍处于局部静默窄窗时,它才会极轻地再放掉一点点痕迹标签。这更像睡眠期对“已经安静且失去局部支撑”的弱抑制性关联痕迹做自然淡出,避免低尾地板保留把本该继续衰退的抑制性残迹长期挂住,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静但仍有微结构支撑的关联神经元极低营养地板回补:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到静默低尾、`trophic_support` 已降到 `0.08-0.14` 的极低区间、但 `spine_density` 仍保留可用微结构支撑且钙状态略低于基线时,它才会极轻地回补一点点局部营养支持地板。这更像睡眠期对“虽然很安静,但局部结构仍提示它还不该完全失去支持底座”的关联单元做最低限度保养,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静低支持关联神经元低尾恢复位自然淡出:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到静默低尾、`recovery` 还停在 `0.08-0.12` 的低尾区间、但局部营养支持和微结构也都偏弱时,它才会极轻地再放掉一点点恢复位偏置。这更像睡眠期对“已经安静且失去局部支撑”的关联单元做最低限度的恢复位去陈旧化,避免前面的低尾地板回补把本该继续衰退的尾迹长期托住,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静但仍有微结构支撑的关联神经元低尾恢复位地板回补:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到静默低尾、`recovery` 已压到 `0.05-0.09` 的更低尾区间、局部营养支持虽然不高但还没掉空、而 `spine_density` 仍保留可用微结构支撑且钙状态略低于基线时,它才会极轻地回补一点点恢复位地板。这更像睡眠期对“虽然很安静,但局部结构还提示它不该继续往下掉”的关联单元做最低限度保养,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静但仍有微结构支撑的关联神经元高阈值地板回补:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到静默低尾、`threshold` 还挂在 `1.02` 以上的偏高尾巴、局部营养支持虽然不高但仍保留一点底子、而 `spine_density` 仍保留可用微结构支撑且钙状态略低于基线时,它才会极轻地把阈值回放一点点。这更像睡眠期对“虽然很安静,但局部结构还提示它不该长期卡在过高阈值上”的关联单元做最低限度保养,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静低支持关联神经元低阈值偏置自然归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到静默低尾、`threshold` 仍停在 `0.52-0.62` 的低尾区间、但局部营养支持和微结构也都偏弱时,它才会极轻地再抬回一点点阈值。这更像睡眠期对“已经安静且失去局部支撑”的低阈值残迹做自然归一,避免前面的低阈值地板保养把本该继续衰退的尾迹长期托住,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 本轮还顺手修正了两条更窄 `NREM` 阈值尾迹规则的执行顺序:把“低支持低阈值自然归一”和“仍有微结构支撑的高阈值地板回补”移到各自更宽泛规则之前,避免被上面的宽条件先吃掉。这个修改不改变数值范围、不新增全局变量,只是让更局部的生物尾迹修正真正优先生效。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静但仍有微结构支撑的关联神经元更深低阈值尾迹缓慢归一:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到静默低尾、`threshold` 已压到 `0.45-0.52` 的更深低尾区间、局部营养支持虽然不高但还留一点底子、而 `spine_density` 仍保留可用微结构支撑时,它才会极轻地把阈值回抬一点点。这更像睡眠期对“仍有结构底座但低阈值尾迹已经压得过深”的关联单元做最低限度归一,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静但仍有微结构支撑的关联神经元更深疲劳地板回补:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到静默低尾、`adaptation_current` 已压到 `0.02` 以下的更深低尾区间、局部营养支持虽然不高但还留一点底子、而 `spine_density` 仍保留可用微结构支撑且钙状态略低于基线时,它才会极轻地回补一点点局部疲劳地板。这更像睡眠期对“虽然很安静,但局部结构仍提示它不该继续把疲劳底座磨空”的关联单元做最低限度保养,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静但仍有微结构支撑的关联神经元更深抑制地板回补:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、树突驱动和兴奋/抑制电流都已回到静默低尾、`inhibitory_current` 已压到 `0.01` 以下的更深低尾区间、局部营养支持虽然不高但还留一点底子、而 `spine_density` 仍保留可用微结构支撑且钙状态略低于基线时,它才会极轻地回补一点点局部抑制地板。这更像睡眠期对“虽然很安静,但局部结构仍提示它不该继续把抑制底座磨空”的关联单元做最低限度保养,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静但仍有微结构支撑的关联神经元更深兴奋地板回补:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、树突驱动和兴奋/抑制电流都已回到静默低尾、`excitatory_current` 已压到 `0.01` 以下的更深低尾区间、局部营养支持虽然不高但还留一点底子、而 `spine_density` 仍保留可用微结构支撑且钙状态略低于基线时,它才会极轻地回补一点点局部兴奋地板。这更像睡眠期对“虽然很安静,但局部结构仍提示它不该继续把兴奋底座磨空”的关联单元做最低限度保养,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静但仍有微结构支撑的关联神经元更深局部驱动地板回补:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、树突驱动和兴奋/抑制电流都已回到静默低尾、`recent_drive` 已压到 `0.02` 以下的更深低尾区间、局部营养支持虽然不高但还留一点底子、而 `spine_density` 仍保留可用微结构支撑且钙状态略低于基线时,它才会极轻地回补一点点局部驱动地板。这更像睡眠期对“虽然很安静,但局部结构仍提示它不该继续把短时驱动底座磨空”的关联单元做最低限度保养,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静但仍有微结构支撑的关联神经元更深后超极化尾迹缓慢释放:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到静默低尾、`membrane` 已明显低于 `recovery`、局部营养支持虽然不高但还留一点底子、而 `spine_density` 仍保留可用微结构支撑时,它才会极轻地把后超极化尾巴往 `recovery` 回收一点点,而且这一下比通用回收还更保守。这更像睡眠期对“虽然很安静,但局部结构仍提示它不该长期挂在更深后超极化尾巴上”的关联单元做最低限度尾迹释放,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静但仍有微结构支撑的关联神经元更深去极化尾迹缓慢回收:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到静默低尾、`membrane` 已明显高于 `recovery`、局部营养支持虽然不高但还留一点底子、而 `spine_density` 仍保留可用微结构支撑时,它才会极轻地把更深去极化尾巴往 `recovery` 回收一点点,而且这一下比通用回收还更保守。这更像睡眠期对“虽然很安静,但局部结构仍提示它不该长期挂在更深去极化尾巴上”的关联单元做最低限度尾迹释放,而不是去增强 replay、改写全局睡眠门控,或重新抬高动作输出。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 低支持弱痕迹残差清理:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经安静且支持不足的关联连接生效。只有当连接近期活动已经很低、`idle_ticks` 已进入安静窗口、`trophic_support` 偏低、而 `memory_tag` 只剩一小段低残余时,它才会极轻地继续清一点 `memory_tag`。它更像睡眠期对局部弱痕迹做“支持不足就继续自然淡出”的残差整理,而不是去改动 replay 或全局门控。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元残余抑制电流尾迹清理:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突/钙状态也低、`excitatory_current` 已经很低、但 `inhibitory_current` 还残留一小段中低尾巴时,它才会极轻地清一点残余抑制电流。它更像睡眠期对局部膜抑制尾迹做清理,避免安静关联单元长期挂着不必要的抑制残差,而不是去改动 replay 或全局门控。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元树突尾迹轻微回落:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突/钙状态也低、但 `dendritic_drive` 还残留一小段中低尾巴时,它才会极轻地回落一点 `dendritic_drive`。它更像睡眠期对局部树突尾迹做清理,避免安静关联单元长期挂着不必要的树突残余,而不是去改动 replay 或全局门控。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静抑制性弱痕迹残差清理:它只在 `run_synapse_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经安静且支持不足的抑制性关联连接生效。只有当连接近期活动已经很低、`idle_ticks` 已进入安静窗口、`trophic_support` 偏低、而 `memory_tag` 只剩一小段低残余时,它才会极轻地继续清一点 `memory_tag`。它更像睡眠期对局部抑制性弱痕迹做“支持不足就继续自然淡出”的残差整理,而不是去改动 replay 或全局门控。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这轮又补上一层 `NREM` 安静关联神经元局部驱动尾迹清理:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑、已经很安静的关联神经元生效。只有当近期外显活动已经很低、树突/钙状态也低、但 `recent_drive` 还残留一小段局部短时驱动尾巴时,它才会极轻地再衰减一点 `recent_drive`。它更像睡眠期对局部短时驱动尾迹做清理,避免安静关联单元长期挂着过期局部驱动,而不是去改动 replay 或全局门控。真实回归继续保持 `reasoning=6/6`、`motor=4/4`、`sleep=3/3`、`rem=3/3` - 这次回退后,`motor_window_probe` 恢复到 `late_wake_sparse_window/wake_to_nrem_boundary/coarse_sleep_entry/nrem_pre_rem_quiet_window = 4/4`,其中最坏窗口也只剩 `tick=782 motor=0.09` 的低幅尾醒 twitch,不再出现此前 `motor=0.75` 一类 wake-like burst - 这次回退后,`./build/src/bio_brain 820 8192 65536 1` 再次确认 `tick=820` 已处于 `phase=nrem` 且 `motor=0.00`,`./build/src/bio_brain 890 8192 65536 1` 再次确认 `tick=880` 进入 `phase=rem` 时 `motor=0.00 rem_assoc=17 recov=0.011`,说明主仿真时间线上也与 probe 结论一致 - `./build/src/sleep_memory_probe` 当前结果为:`tick=784` 入睡即满足 `replay_delta=2 consol_delta=12 motor=0.00 recovery=0.042`;到 `tick=840` 的 NREM 窗累计 `replay_delta=24 consol_delta=328 cumulative_recovery=1.148 max_motor=0.03` - `./build/src/rem_association_probe` 当前结果为:`tick=880` 进入 `REM` 即满足 `rem_assoc=17 recovery=0.011 motor=0.00`;到 `tick=927` 的 REM 窗累计 `rem_assoc_delta=13 replay_delta=21 cumulative_recovery=0.515 max_motor=0.00` - 当前硬件保守预算保持 `concurrency_budget=1`、`active_budget=1024` - 最近一轮估算内存约 `3.60MB` - `NREM/REM` 回放仍然存在 - 仿真没有崩溃,清醒期放电仍然较稀疏但没有完全沉寂,平均膜电位比上一版略高 - 当前最明显的运动回归已经从“晚清醒大脉冲和入睡后漏动作”收敛到“保留低幅 twitch,但不再出现 wake-like burst”;后续优化仍应只走低层残余回响/局部招募路线,不能回退到高层硬编码动作表 后续继续开发时必须遵守这些要求: - 必须坚持纯 C 和 Meson - 必须优先遵守生物神经元原理,不能退回抽象“计算器式”脑逻辑 - 优先继续往局部神经动力学、局部突触传播、局部可塑性、局部稳态、生长与修剪机制上完善 - 可以做分时和预算化处理,不要求同时让上亿神经元一起工作 - `README.adoc` 必须持续同步项目现状、大脑结构和当前实现方向 - 没有必要时不要停在大段分析或空泛总结上,应继续实现和验证 == 当前大脑结构 === 神经元层 当前支持四类神经元: - `NEURON_EXCITATORY`:兴奋性神经元 - `NEURON_INHIBITORY`:抑制性神经元 - `NEURON_SENSORY`:感觉输入神经元 - `NEURON_MOTOR`:运动输出神经元 每个神经元维护的主要状态包括: - 膜电位 `membrane` - 放电阈值 `threshold` - 恢复值 `recovery` - 活动痕迹 `trace` - 偏置输入 `bias` - 最近驱动痕迹 `recent_drive` - 兴奋性突触电流池 `excitatory_current` - 抑制性突触电流池 `inhibitory_current` - 放电后适应电流 `adaptation_current` - 树突分支驱动 `dendritic_drive` - 轻量钙状态 `calcium_level` - 不应期计数 `refractory_ticks` - 年龄 `age_ticks` - 闲置时长 `idle_ticks` - 放电次数 `spike_count` - 最近一次放电时刻 `last_spike_tick` - 所属脑区 `region` - 所属半球 `hemisphere` 当前的神经元更新已经开始更贴近生物神经元的基本工作方式: - 外部刺激和大部分脑区传播优先写入兴奋/抑制电流池,而不是直接硬改膜电位 - 膜电位会在每个 tick 上以泄漏式积分的方式缓慢靠近“恢复位 + 突触驱动”,再由阈值决定是否放电 - 神经元放电后会进入一个轻量不应期,并产生额外适应电流 - 兴奋/抑制电流与适应电流都会按时间衰减,形成更像局部动力学的行为 - 局部兴奋共激活会先在 `dendritic_drive` 中积累,再在达到平台阈值后转成轻量平台电流和钙流入 - `calcium_level` 会把最近的树突共激活和放电历史保留下来,并继续反馈到阈值、适应电流、棘密度与后续可塑性 - 活跃单元还会接收少量随机微释放样背景输入,形成低水平自发活动,而不是完全静态等待外部推动 - 不同细胞类型的膜积分时间常数也不同:抑制性神经元更快,兴奋性和运动神经元更慢一些 - 丘脑和部分海马单元还加入了轻量的抑制后反跳电流,模拟被抑制后重新起跳的特性 - CA3 和皮层第 5 层单元还会保留一点放电后去极化尾迹,形成更像 burst 的短程回响 - 皮层 L2/3 与海马 DG/CA3 还加入了轻量局部侧抑制,让同层或同子区单元之间产生竞争 - `recent_drive` 现在主要保留为短时局部资格迹,用于活动痕迹、慢波整理和可塑性偏置,而不再承担主要远程传播 - 神经发生、回放和发育调节也开始优先通过电流池、阈值和适应电流来影响神经元状态 - 维护阶段现在还会把过高或过低的钙负荷视为局部稳态信号,缓慢调节阈值、适应和树突敏感度 这还不是 Hodgkin-Huxley 或完整多室模型,但已经明显比“单阈值 + 直接加值”更接近生物神经元原理。 === 脑区层 当前实现了 8 个脑区,作为连接偏好和功能分工的基础: - `REGION_CORTEX`:皮层,偏向整合、输出与广域联接 - `REGION_HIPPOCAMPUS`:海马体,偏向近期记忆和回放 - `REGION_THALAMUS`:丘脑,偏向感觉输入中继 - `REGION_BASAL_GANGLIA`:基底节,偏向动作选择和抑制环路 - `REGION_CEREBELLUM`:小脑,偏向运动协调与校正 - `REGION_BRAINSTEM`:脑干,偏向基础唤醒和低层输入驱动 - `REGION_AMYGDALA`:杏仁核,偏向威胁显著性、情绪偏置和防御联想 - `REGION_HYPOTHALAMUS`:下丘脑,偏向睡眠压力、饥饿、体温和内稳态调节 其中皮层现在又进一步拆成了轻量层级结构: - `CORTICAL_LAYER_1` - `CORTICAL_LAYER_2_3` - `CORTICAL_LAYER_4` - `CORTICAL_LAYER_5` - `CORTICAL_LAYER_6` - `CORTICAL_LAYER_DEEP` 这些层不会把实现复杂度一下推到真实皮层柱尺度,但已经开始体现更像人脑的分工: - 丘脑输入更偏向第 4 层 - 工作记忆和联想保持更偏向第 2/3 层 - 运动和下行输出更偏向第 5/6 层 海马体现在也进一步拆成了轻量子区: - `HIPPO_SUBFIELD_DG` - `HIPPO_SUBFIELD_CA3` - `HIPPO_SUBFIELD_CA1` - `HIPPO_SUBFIELD_SUBICULUM` 当前它们的功能偏置大致是: - `DG` 更偏向新奇输入编码和模式分离 - `CA3` 更偏向联想补全和回放扩散 - `CA1` 更偏向把海马内部结果送回皮层联想层 - `subiculum` 更偏向把整理后的结果送往皮层深层和丘脑 当前还给大部分前脑/皮层相关单元加入了轻量的左右半球标签: - `HEMISPHERE_LEFT` - `HEMISPHERE_RIGHT` 这不是完整的解剖侧化模型,但已经开始体现两个方向: - 同侧皮层-丘脑、皮层-海马回路更容易形成更稳定传播 - 跨半球仍然保留较弱但持续存在的胼胝体样耦合,特别是皮层联想层与输出层 这些脑区现在不是独立线程或独立进程,而是在同一稀疏网络中通过“区域标签 + 投射偏好”来体现结构差异。 此外,当前版本额外强化了一个更明确的运动通路: - 皮层 `cortex`、小脑 `cerebellum`、基底节 `basal_ganglia` 更容易向 `motor` 神经元建立输入 - `motor` 神经元更容易把结果回投到脑干 `brainstem` 和丘脑 `thalamus` 这让动作输出不再只是随机出现,而是更接近一个简单的感觉-决策-执行回路。 边缘系统和内稳态轴也开始被显式建模: - 杏仁核更容易与皮层、海马体、下丘脑形成高显著性联接 - 下丘脑更容易影响脑干、丘脑和觉醒/睡眠切换相关通路 - `cortisol_level`、`melatonin_level`、`circadian_drive` 会把威胁、昼夜节律和睡眠压力映射回行为与调质系统 === 突触层 每条突触包含: - 前神经元 `pre` - 后神经元 `post` - 连接强度 `strength` - 可塑性系数 `plasticity` - 记忆标签 `memory_tag` - 短时可释放资源 `short_term_resources` - 年龄 `age_ticks` - 闲置时长 `idle_ticks` - 同一前神经元下一个突触索引 `next_outgoing` 突触是稀疏存储的,只按实际存在的连接占用内存,因此网络规模扩展时比稠密矩阵更现实。 当前突触还加入了一层轻量短时动力学: - 高频连续放电时,单条突触的 `short_term_resources` 会先下降,后续释放幅度随之变小 - 当突触闲置或进入睡眠维护窗口时,资源会逐步回补 - 兴奋性输出更容易出现短时疲劳,抑制性输出则保留更高持续性 - 高 `memory_tag` 的连接,尤其是海马-皮层回放相关连接,在睡眠期会获得更快一点的资源恢复 - 前神经元刚放电后的极短时间窗里,释放效率还会有一点促进,模拟残余钙带来的短时 facilitation - 突触增强/减弱还会参考前后神经元的相对放电时序,形成一个轻量 STDP 风格偏置 - 突触增强现在还会参考后神经元的 `dendritic_drive` 和 `calcium_level`,更接近“树突平台事件 + 钙依赖 LTP/LTD”的局部条件 - 维护阶段还会执行局部稳态塑性:长期过强但缺少记忆支撑的连接会缓慢回落,长期沉默但仍有记忆痕迹的弱连接会慢慢恢复 - 对兴奋性突触,过高但缺少记忆支撑的钙负荷会触发额外回落;对抑制性突触,后神经元钙负荷偏高时会更容易被保留或略微增强 - 这样同一条连接不再每次都按固定强度输出,行为上更接近生物突触的短时疲劳与恢复 === 发育层 网络会根据总寿命进度切换发育阶段: - 婴幼期 `STAGE_INFANT` - 青少年期 `STAGE_JUVENILE` - 成年期 `STAGE_ADULT` - 衰老期 `STAGE_AGING` 不同阶段会影响: - 神经元出生概率 - 神经元死亡概率 - 突触增长概率 - 突触衰减速度 - 可塑性增强幅度 - 神经元和突触的闲置耐受阈值 当前还加入了更贴近人类成长的功能成熟偏置: - 婴幼期更偏向杏仁核和下丘脑等边缘/内稳态回路,皮层控制较弱 - 青少年期皮层和海马体更容易获得额外兴奋电流,可塑性更高,同时情绪偏置也更明显 - 成年期更强调皮层与基底节的稳定控制 - 衰老期会逐步提高皮层和海马体的激活门槛,并通过更高适应负担和抑制张力让恢复更依赖睡眠整理 当前还额外加入了一层轻量的“传导成熟”发育变量: - `myelination_level`:表示髓鞘化成熟程度,婴幼期较低,青少年和成年逐渐升高 - `white_matter_integrity`:表示白质通路完整性,成年较高,炎症和衰老会逐步拉低 它们会进一步影响: - 脑区之间长程投射的传播增益 - 皮层-丘脑、皮层-海马这类远程反馈回路的稳定性 - 睡眠恢复对发育成熟和老化退化的缓冲作用 - 最近真实参与过的长程投射,能否在睡眠后继续被轻量保护或缓慢释放 == 当前行为机制 === 1. 清醒与睡眠节律 当前实现了三种生理相位: - `PHASE_WAKE`:清醒期,外部感觉输入最强 - `PHASE_NREM`:非快速眼动睡眠期,外部输入下降,偏向整理与巩固 - `PHASE_REM`:快速眼动睡眠期,内部回放更活跃 相位按照配置中的时间片循环推进: [source,c] ---- wake_ticks = 320 nrem_ticks = 96 rem_ticks = 48 ---- === 2. 身体与环境闭环 当前版本不再只使用固定外部刺激,而是维护一组轻量的身体/环境状态: - 身体位置 `body_position` - 身体速度 `body_velocity` - 当前目标位置 `body_target` - 饥饿程度 `body_hunger` - 体温 `body_temperature` - 心率 `heart_rate` - 呼吸率 `respiration_rate` - 交感张力 `sympathetic_tone` - 副交感张力 `parasympathetic_tone` - 痛觉信号 `pain_signal` - 内感受状态 `interoceptive_state` - 环境新奇度 `environment_novelty` - 环境危险度 `environment_hazard` - 本体感觉误差 `proprioception_error` - 内稳态奖励 `homeostatic_reward` - 动作紧迫度 `action_urgency` - 计划中的运动指令 `planned_motor_command` - 实际输出的运动指令 `realized_motor_command` 这些变量在每个 tick 都会更新: - 上一 tick 的运动输出会影响身体速度和位置 - 身体是否接近目标,会影响饥饿和误差 - 环境变化会影响新奇度和危险度 - 身体状态越健康、越接近目标,`homeostatic_reward` 越高 - 危险、误差和饥饿升高时,`action_urgency` 会升高 - 这些状态随后转换成新的感觉输入,反馈给丘脑、脑干、小脑和基底节 这让模型具有了最基本的“动作改变世界,世界再改变感觉”的闭环。 当前还加入了一层轻量的自主神经系统: - 高危险、紧迫度、去甲肾上腺素和皮质醇会推高交感张力 - 睡眠恢复、褪黑素和血清素会推高副交感张力 - 交感/副交感张力会进一步调节心率、呼吸、体温和行动紧迫度 这样下丘脑和脑干相关回路不再只是在“危险时多刺激一点”,而是能通过全身生理张力去持续影响行为。 当前还加入了一层轻量的痛觉与内感受整合: - `pain_signal`:把危险、热偏差、本体误差和交感应激整合成一个痛苦/损伤样信号 - `interoceptive_state`:把饥饿、心肺负荷、温度偏差等整合成一个身体内部状态感受 - `interoceptive_prediction_error`:表示当前身体内部感觉与系统内部预期之间的偏差 - `anterior_insula_drive`:偏向前岛叶风格的显著内感受整合与“身体不对劲”信号 它们会进一步影响: - `threat_focus` 和 `hunger_focus` 的升高速度 - 下丘脑/杏仁核相关回路的驱动强度 - 内稳态奖励、行动紧迫度与规避倾向 - 显著性网络的切换强度 - `ACC` 样冲突监控和超直接刹车的启动阈值 这样系统现在不只是“知道自己饿不饿、痛不痛”,还开始区分“身体感觉本身”和“身体感觉是否偏离预期”。 当前还加入了一层轻量的小脑前馈校正: - `motor_execution_drive`:已经被放行的动作意图在运动池中的短时持续性驱动 - `brainstem_motor_drive`:更偏低层、脑干样的短时运动程序接力信号 - `motor_prediction`:对本 tick 动作输出的内部预测 - `motor_prediction_error`:预测动作与实际动作、本体误差之间的综合偏差 - `cerebellar_calibration`:动作前馈模型的校准程度 它会进一步影响: - 动作计划和真实动作之间的一致性 - 本体感觉误差积累后的快速修正 - 睡眠恢复对白天动作校准精度的缓慢提升 - 清醒期已进入执行态的动作能否在后续数个 tick 里继续保持 - 高层动作意图切入后,是否能由更低层回路继续把一小段动作程序接住 - 婴幼期/青少年期在低危险、低冲突条件下,是否保留一点发育早期自发运动探索 - 睡眠期尤其 `REM` 对运动执行回路的抑制强度,避免把离线回放误释放成真实动作 === 3. 运动基底竞争层 当前版本不再把外显动作解释成几个语义化“行为模式”之间的硬切换,而是维护 4 条连续 `motor_basis` 竞争通道: - `b0`:低驱动、低位移的静息/收敛侧残余 - `b1`:更靠近目标牵引和定向推进的连续残余 - `b2`:更靠近威胁回避和制动的连续残余 - `b3`:更靠近探索/取食式展开的连续残余 行为模式会输出一个有符号运动计划: - `planned_motor_command`:当前计划的动作方向和强度 - `realized_motor_command`:本 tick 真正由运动神经元实现出来的动作指令 这让运动控制从“只有强度”升级成了“有方向的目标驱动动作”。 === 4. 经验学习层 当前版本还加入了一个轻量的慢偏置学习机制,用来模拟“最近哪条动作通道在当前身体-环境耦合里更容易被强化”: - 四条动作通道维护一个慢偏置场,统计层现在直接以 `motor_basis_slow_bias[4]` 导出 - 当前身体/环境状态会产生一个即时奖励 `homeostatic_reward` - 系统会计算奖励预测误差 `reward_prediction_error` - 上一拍真实通道残余会按预测误差和当前压力场对齐程度去缓慢改写这些偏置 这不是完整的多巴胺系统或深度强化学习,但已经能表达一个关键点: - 如果某条 `motor_basis` 最近让身体状态更稳定,它的慢偏置会上升 - 如果某条 `motor_basis` 最近让状态恶化,它的慢偏置会下降 动作竞争因此不再只是硬编码规则,而是“连续压力场 + 近期经验残余”共同决定。 当前还加入了一个轻量的“基底节直接/间接通路”仲裁层: - `direct_pathway_drive`:更偏向动作放行、探索和当前候选动作的执行 - `indirect_pathway_drive`:更偏向动作抑制、冲突时刹车和风险下的保守控制 它们会同时受到多巴胺、冲突、危险、痛觉和当前模型驱动控制影响,并最终参与: - `motor_basis_drive[b0..b3]` 的连续竞争 - 计划动作最终被放大还是被压制 - 基底节对皮层和运动输出的门控风格 当前版本又在这层之上补了一层更明确的“皮层-基底节-丘脑动作通道闭环”: - 四个动作通道 `motor_basis_drive[b0/b1/b2/b3]` - 一个超直接通路驱动 `hyperdirect_drive` - 一个丘脑下核样兴奋刹车 `subthalamic_drive` - 一个苍白球外节样抑制张力 `gpe_tone` - 一个苍白球内节风格的持续抑制量 `pallidal_inhibition` - 一个丘脑去抑制后的选择信号 `thalamic_selection_signal` 它的大致工作方式是: - 皮层/工作记忆/价值系统先提出各条 `motor_basis` 候选 - 基底节直接/间接通路去放大或压制这些候选通道 - 冲突、风险和显著性升高时,超直接通路会快速推高 `subthalamic_drive` - `gpe_tone` 和 `subthalamic_drive` 会共同塑造 `pallidal_inhibition` 的全局刹车强度 - 苍白球样抑制提供“默认刹车” - 最强动作通道对丘脑产生去抑制,形成新的选择信号 - 这个选择信号再回过头调节 `thalamic_gate`、`cortical_gain` 和最终动作输出 这样当前系统已经不只是“先打分再直接选行为”,而是更接近一个带超直接刹车、间接抑制和去抑制放行的动作竞争环。 不过需要明确: - 目前仍有一部分高层慢变量在直接调节门控、焦点和 `motor_basis` 竞争 - 因此当前版本是“以生物神经元局部动力学为底座,并叠加部分脑系统层慢变量”的折中实现 - 后续主线会继续把更多高层效果下沉到局部神经元和突触动力学,而不是反过来继续堆更多手工评分器 === 5. 执行控制与工作记忆 当前版本还加入了一个轻量的“前额叶风格”执行控制层,由两部分组成: - 三个持续变化的焦点变量 - 4 个工作记忆槽位 `working_memory_slots` - 8 个关系绑定片段 `relational_bindings` - `goal_focus`:当前对目标追踪的关注程度 - `threat_focus`:当前对威胁/风险的关注程度 - `hunger_focus`:当前对觅食/能量需求的关注程度 - `working_memory_load`:当前短时保持内容的占用程度 - `working_memory_stability`:当前短时保持内容的稳定性 - `decision_conflict`:多个候选动作竞争接近时的冲突强度 工作记忆槽位会在清醒期根据新奇度、奖励预测误差、风险和紧迫度编码,在睡眠期逐步整理或衰退。 这些焦点和槽位都不是每个 tick 都瞬间重置,而是会带着一定惯性衰减和更新。 它们会影响: - 主导 `motor_basis` 的形成 - 动作计划方向和强度 - 哪类连续动作残余更容易在当前上下文中胜出 - 当前保持的目标和风险会如何偏置 `b1/b2` - 当前决策冲突有多大,以及动作输出会不会因此被抑制一部分 这让系统开始具备一点“工作记忆”和“任务保持”的味道,而不是只对即时输入被动反应。 当前还加入了一层更像前额叶内部控制的轻量慢变量: - `anterior_cingulate_drive`:偏向 ACC 风格的冲突/错误监控 - `orbitofrontal_value`:偏向 OFC 风格的当前情境价值重估 - `dorsolateral_prefrontal_drive`:偏向 dlPFC 风格的目标维持、规则控制和模型驱动调度 - `ventromedial_value`:偏向 vmPFC 风格的安全感、内部价值整合和情境缓冲 它们的作用方向大致是: - `anterior_cingulate_drive` 会在冲突、预测误差、风险和痛觉升高时抬高 - `orbitofrontal_value` 会在当前情境奖励较好、记忆回忆更正向时抬高 - `dorsolateral_prefrontal_drive` 会在工作记忆稳定、任务网络较强和目标维持明确时抬高 - `ventromedial_value` 会在奖励较好、风险较低、血清素较稳时抬高 - ACC 样信号会推动 `hyperdirect_drive`,让系统更容易进入快速刹车 - OFC/vmPFC 样信号会偏置低威胁条件下的 `motor_basis` 价值重估 - dlPFC 样信号会增强 `model_based_control`,让目标追踪和规则性选择更稳定 这样前额叶层现在不只是在“维持工作记忆”,而是开始分化出更像人脑的冲突监控、价值重估、目标维持和情境安全整合。 当前还加入了一层更长期的“语义原型”抽象: - 系统会把多次相似的情景压缩到几个 `semantic_prototypes` - 每个语义原型不再只挂一个离散行为标签,而是保存一组连续 `motor_basis_trace[b0/b1/b2/b3]`,表示这类情景曾经把哪些动作通道共同推高 - `semantic_coherence` 表示当前体验和已有抽象模式的一致程度 - `abstraction_level` 表示系统从具体情景中提炼出稳定模式的程度 这让模型开始不只是记住“某次发生了什么”,还会逐渐形成“这类情况通常意味着什么”的偏置。 当前又在这层之上补了一层更接近“关系约束整合”的轻量结构: - 系统会把近期工作记忆、风险、目标距离、饥饿和紧迫度压成几个 `relational_bindings` - 这些关系片段现在也不再保存单一 `preferred_action_channel`,而是保存连续偏好通道痕迹,靠各通道重叠度参与一致性和重绑定 - `relational_coherence` 表示这些关系片段与当前上下文是否仍然一致 - 这些关系片段会把“高危险更偏向 `b2`”“低风险且饥饿更易推高 `b3`”“目标明确时更易推高 `b1`”这类弱约束重新反馈到动作选择 这仍然不是显式命题逻辑,但已经比单纯“情景槽位 + 语义原型”更接近一层可组合的关系保持。 最近又在关系绑定层之上补了一层更像前额叶上下文重绑定的小工作空间: - 系统现在维护 4 个 `binding_workspace` 槽位,每个槽位压缩当前目标证据、危险证据、饥饿证据、奖励上下文、回放信用和连续行为偏好痕迹 - `binding_workspace` 主要由工作记忆、情景回忆、显著性、睡眠回放整理结果和当前生理相位共同驱动 - `binding_workspace_coherence` 表示这些上下文绑定槽位与当前情境的一致程度 - 婴幼期还会额外维护 `developmental_coregulation_signal` 和 `developmental_coregulation_trace`:前者表示当前拍的安全共激活强度,后者表示这类体验在局部回路里的慢残余。它们来自预测安全、自主神经稳定、奖励缓解和感觉运动对齐的连续合流,随后进入情景记忆、工作记忆、绑定工作区、关系绑定和睡眠重放 - 这层工作空间现在仍保持保守,但不再只是被动读数:只有在工作记忆稳定、`dlPFC` 驱动足够高时,它才允许少量“上下文切换偏置”进入关系层,从而帮助旧危险情景在新饥饿/目标情景下更快退场 - 最新一轮又把这层“关系再绑定/去巩固”进一步收窄成发育后机制:只有在非 `infant` 阶段、且仍处于清醒、睡压未过高、能量未过低时,工作空间才允许对 `relational_bindings` 做很轻的再巩固或陈旧危险痕迹衰减;这样更接近前额叶样上下文重配的晚成熟,也避免在当前 `infant` 主运行期扰动已经稳定的低层运动尾窗 - 继续往前推后,这层成熟期门控现在又多了一点“工作空间内部再巩固”味道:当成熟期工作空间槽位和当前觅食/目标情境重新对齐时,它会按槽位已有的 `replay_credit` 给一点更轻的支持和回放信用回灌;而当旧的危险回避槽位已经明显落后于新情境时,也会多给一点局部去巩固。这仍然停留在工作空间内部慢变量上,没有直接改写动作执行链 - 这层成熟期重绑定现在还会再参考 `myelination_level` 和 `white_matter_integrity`:只有白质/传导成熟度足够时,关系层的再巩固和去巩固才会被轻微放大,更接近“发育后长程整合能力提升”而不是所有成熟期一刀切地拥有同样强的上下文重配能力 - 最新一轮又把这种“成熟期 top-down 重配增益”收得更稳了一点:动作竞争层里的额外释放/回弹项现在保留了所有阶段原本就有的基线,只在非 `infant` 且白质/髓鞘更成熟时,才在这个基线上额外叠加一层很轻的增益。这样更接近生物脑里发育后长程协调变强,而不是把发育早期已有的基础重绑定直接拿掉 - 继续往前推后,成熟期白质成熟现在还会很轻地帮助 `task_network` 和 `dlPFC` 维持当前上下文:只有在非 `infant` 的清醒期,这层成熟度才会把 `binding_workspace_coherence` / `relational_coherence` 的一小部分稳定性慢慢送进 `task_network_level` 和 `dorsolateral_prefrontal_drive`。它更像发育后长程纤维让任务集维持更稳,而不是新增一条高层动作捷径 - 海马样多痕迹重建目前只在 `binding_workspace` 内部使用,不再直接改写全局 `recalled_value` 或主运动链,避免再次污染睡眠/运动主回路 这样做的原因是:更激进的直接反馈虽然一度能把推理代理分数拉高,但会把主仿真的运动/睡眠链路带偏;当前版本把重绑定限制成“海马样多痕迹重建 + 前额叶门控后的小幅顶下行偏置”,并且只在发育更成熟、资源更允许时才介入,这更接近生物脑里上下文重配并不会在任意时刻强行压倒基底节和脑干回路。 最近一轮还额外强化了“推理到运动执行”的闭环: - `planned_motor_command` 不再只停留在高层计划变量 - 皮层第 5 层、基底节、丘脑和小脑现在会更明确地向 `motor` 池汇聚驱动 - `motor` 神经元会额外参考 `thalamic_selection_signal`、`direct_pathway_drive` 和 `cerebellar_calibration` - 新增 `motor_execution_drive`,让已经被放行的动作意图在数个 tick 内维持一段轻量执行惯性 - 新增 `brainstem_motor_drive`,让已经起动的动作更容易被一个低层、脑干样的程序回路短时接力 - 在 `infant/juvenile` 阶段,系统会在低危险、低冲突时给脑干回路一点轻量自发探索驱动,模拟发育早期的运动 babbling - `motor` 神经元在清醒期放电后会保留更短的不应期和轻量的后放电余辉,形成更像短时运动程序的连续执行 - 当某个 tick 没有新的 `motor` 放电时,`realized_motor_command` 会参考上一 tick 的真实执行结果做短时衰减保持,而不是立即掉到接近 0 - 当新的 `planned_motor_command` 与旧执行方向发生冲突时,执行惯性和脑干样接力会更快退场,避免旧方向拖尾太久 - 当 `brainstem_motor_drive` 已经起势且场景仍低危险、低冲突时,运动池会收到一层很轻的脑干到运动接力,帮助“准备态”更容易跨到真实动作 - 当脑干样驱动已经起势时,还会叠加一层很轻的 `locomotor_rhythm_carrier`,让运动池和 `motor` 神经元更像被低层节律器按相位推一把 - 运动池现在会做很轻的同侧优先、对侧次级协同招募;单个 `motor` 神经元放电后,也会给同组单元一个短时接力,模拟更像运动单元 recruitment 的局部协同 - 如果清醒期已经有明显下行驱动,但身体还没真正动起来,`motor` 神经元本地门控会给一个很轻的起步补偿,帮助最早清醒段更早跨过放电阈值 - 现在在 `infant/juvenile` 的清醒低危险窗口里,还会给运动池一层很轻的发育期探索节律续推: 当脑干样驱动和执行驱动已经存在、但动作输出又快掉回 0 时,系统会按一个弱节律继续轻推几拍,更接近发育早期脑干/节律器对自发动作的续航 - 最新一轮又把这层续推收窄成“只对已起步动作做局部接力”: `motor` 单元现在会参考上一 tick 的真实执行方向和幅度,在低危险、低到中等冲突时给已对齐的运动池一个很轻的续航增益,更接近低层回路对刚启动动作的短时惯性维持,而不是每一拍都要求高层重新下发同等强度的命令 - 当前版本还把皮层局部微回路往前推了一小步: 当 `L4` 单元在清醒期、丘脑门控已开且冲突不高时放电,会给 `L2/3` 一个很轻的树突样前馈接力;而 `L2/3` 在低冲突、选择信号已起时,又只会给 `L5` 一个更轻的树突样续接。它更像感觉证据沿局部柱样回路逐层汇聚到输出层,而不是新增一条高层 if-else 动作表 - 在极晚清醒、睡压高、能量低、且上一拍刚经历较强运动 burst 的反转交接细窗里,当前版本还会给 `motor_output` 保留一小段低层 `afterdischarge` 尾巴;它只在当前拍几乎没有新 motor 放电来源时触发,用来减少 `tick=745` 这类“已反转但瞬间掉空”的断档 - 这层尾巴现在被收敛成几种很窄的低层局部机制: 反转后的 `afterdischarge`、短程 `handoff`、高睡压低能量下的同向 `quiet continuation`、只在强 burst 后触发的极小 `burst reverberation`、疲劳反转窗口里的 `motor_reversal_recruitment_limit`、睡前最后几拍的 `motor_terminal_residual`,以及 `NREM` 期只允许稀疏睡眠 twitch 而不允许 wake-like burst 的 `nrem_sparse_twitch_limit`;最新一轮又把这个“疲劳稀疏放电限幅”轻微放宽到低层允许感受轻度威胁漂移,但仍把单次稀疏放电限制在 twitch 量级;这些限制都只读取上一拍残余输出、局部执行/脑干状态、丘脑选择和当前稀疏放电条件,没有把高层 `plan` 重新写回执行端 - 睡眠期会额外压低运动执行门控,其中 `REM` 抑制更强,用来避免把离线回放误释放到身体回路 这让运动输出从“长期接近 0”进一步转向“清醒期可以保留连续动作段、睡眠期则更安静”。最新验证里,最早清醒窗口仍稳定保持在 `tick=100/200/300 -> motor=1.24/0.68/2.13`;而这轮收敛重点是把晚清醒坏窗压回低幅:`tick=745/746/750/755/760/765/770/775/780 -> motor=0.00/0.00/0.00/0.00/0.08/0.00/0.00/0.00/0.00`,并让入睡边界保持在 twitch 级别而不是 burst,`tick=781/782/783/784/785 -> motor=0.00/0.09/0.00/0.00/0.00`。同时,先前在 `NREM` 出现的漏动作也继续被压回,`tick=818/819/820 -> motor=0.00/0.00/0.00`。这说明当前版本更像“极晚清醒时的局部残余会被局部自限,真正入睡后只剩极小 twitch”,但仍不是完整连续的中央模式发生器。 当前还加入了一个轻量的丘脑-皮层门控层: - `thalamic_gate`:表示当前丘脑向皮层放行感觉输入的强度 - `cortical_gain`:表示当前皮层总体响应增益 这两个信号会同时受到新奇度、注意、工作记忆稳定性、风险和睡眠相位影响,使输入不再是“原样灌入皮层”,而更接近带选择性的感觉门控。 在最新版本里,它们还会继续受到动作选择环的反馈: - `thalamic_selection_signal` 会在某个候选动作被放行时抬高丘脑输入优先级 - `hyperdirect_drive` 和 `subthalamic_drive` 会在冲突、风险和痛觉较高时快速加强刹车 - `gpe_tone` 会在低冲突或直接通路较强时帮助解除一部分全局抑制 - `pallidal_inhibition` 会综合这些量重新压住或放松门控 - 因此清醒期的选择性输入与运动准备,会更明显地跟当前行为竞争状态耦合 当前还加入了一个轻量的大尺度网络竞争层: - `default_mode_level`:偏向内部回忆、语义整合和低外部任务压力时的背景网络 - `task_network_level`:偏向工作记忆保持、目标跟踪和模型驱动控制 - `salience_network_level`:偏向新奇、风险、情绪显著性和切换注意 它们不是把大脑拆成三个独立网络,而是作为全局慢变量去调节已有模块: - 默认网络更容易抬高回忆、语义抽象和内部维持 - 任务网络更容易抬高 `goal_focus`、工作记忆稳定性和目标导向行为 - 显著性网络更容易抬高 `threat_focus`、丘脑门控切换和高优先级输入竞争 === 6. 情景记忆与情绪显著性 当前版本还加入了一个轻量的“海马体 + 杏仁核风格”模块: - 系统会把近期高风险、高新奇度、大奖励预测误差的情景写入几个 `episodic_traces` - 每个情景槽位记录位置、目标、风险、奖励和当时采用的行为 - 当前情景会和这些近期记忆进行匹配,得到 `recalled_value` - 匹配到高风险或高强度情景时,会提升 `emotional_salience` 这些信号会进一步影响: - 威胁焦点 `threat_focus` - 行为价值的当前使用效果 - `b1/b2/b3` 等主导通道的当前使用权重 这让模型开始具备一点“最近吃过亏就更警惕”“最近成功过就更愿意重试”的倾向。 === 7. 预测编码层 当前版本还加入了一个轻量的“预测编码”层,用来模拟大脑对环境的内部预期: - `predicted_target`:对当前目标位置的内部预测 - `predicted_hazard`:对当前风险水平的内部预测 - `target_prediction_error`:真实目标和预测之间的误差 - `hazard_prediction_error`:真实风险和预测之间的误差 这些预测误差信号会进入: - 新奇度 `environment_novelty` - 目标焦点 `goal_focus` - 威胁焦点 `threat_focus` - `b1/b2` 之间的竞争权重 这样模型的“新奇”不再只是简单随机扰动,而更接近“世界没有按我预期变化”的响应。 === 8. 神经调质层 当前版本还加入了一个轻量的全局神经调质系统: - `dopamine_level`:更多由奖励预测误差驱动,偏向影响学习强化和探索动机 - `norepinephrine_level`:更多由风险和威胁预测误差驱动,偏向影响警觉和规避 - `serotonin_level`:更多由整体稳定和内稳态驱动,偏向影响行为持续性和抑制 - `acetylcholine_level`:更多由新奇和预测误差驱动,偏向影响注意与皮层激活 这些调质信号会进一步影响: - 行为评分 - 工作记忆焦点的持续性 - 感觉/皮层/基底节的激活强度 - 突触可塑性的强化幅度 这样模型不再只是“看到状态就直接行动”,而是多了一层更接近生物脑的整体调控。 此外,还加入了一个轻量的“神经胶质/免疫清理”层: - `microglia_activity`:表示微胶质样清理活性,婴幼期和睡眠期更容易升高 - `inflammation_level`:表示压力、危险和睡眠不足积累出的炎症负担 这些信号会影响: - 弱连接和长期闲置连接被修剪的速度 - 睡眠期高记忆标签联接的保留倾向 - 去甲肾上腺素和血清素的目标水平 === 9. 睡眠整理与离线巩固 当前版本把睡眠阶段进一步细化成了两个不同功能: - `NREM`:偏向稳定化、降噪和记忆巩固 - `REM`:偏向情景重放、跨回路联想和关联重组 具体来说: - `NREM` 会优先增强高 `memory_tag` 或海马体到皮层相关的联接 - `NREM` 现在会按慢波式规则扫描更广的突触窗口,把“近期活跃 + 记忆标签 + 海马/皮层回路偏置”一起作为巩固资格 - `NREM` 会对皮层、海马体、丘脑做轻量阈值回落,并把膜状态缓慢拉回恢复位,同时补一点抑制张力,模拟慢波睡眠中的恢复与降噪 - `NREM` 现在还会显式压低运动执行驱动,使睡眠巩固和真实身体动作进一步解耦 - 如果常规扫描没有命中可巩固目标,`NREM` 还会从最近放电缓冲区中补做一次海马体/皮层回路的抢救式固化 - `NREM` 会对弱而长期闲置的连接做更温和的降噪处理 - `REM` 会从近期情景记忆中抽取高显著性轨迹,主要通过补充兴奋电流来推动海马体和皮层共同激活 - `REM` 还会尝试生成新的海马体到皮层、海马体到基底节的联想边 - `REM` 同时会更强地抬高运动输出阈值,避免梦样内部回放被当成外显动作执行 输出中的这些统计可以看到睡眠对结构的影响: - `nrem_consolidations_total` - `rem_associations_total` - `sleep_recovery_signal` 这样睡眠不再只是“低输入阶段”,而开始承担真正的离线重整作用。 === 10.1 过激活保护 当前还加入了一层轻量的过激活保护: - 当单 tick 放电比例过高时,系统不会简单粗暴地清零网络 - 过激活保护会优先削弱兴奋电流、提高局部抑制张力、抬升阈值并增加适应电流 - 膜电位则更多是缓慢回落到各自恢复位,行为上更接近一次全局降噪和短暂保护性抑制 这让“网络降温”更像生物神经系统里的疲劳与抑制恢复,而不是纯数值硬裁剪。 === 11. 感觉驱动 - 清醒期主要由环境新奇度驱动丘脑,由危险度和饥饿驱动脑干 - 本体感觉误差会增强小脑输入 - 危险度较高时还会额外刺激基底节 - NREM 期仍保留少量外部输入,但显著减弱 - REM 期更偏向海马体和皮层的内部激活 - 除了外部刺激,脑干、下丘脑、丘脑等还会持续提供少量自发起搏样种子输入,作为觉醒、节律和内稳态底噪来源 === 12. 放电传播 - 活跃神经元膜电位达到阈值时放电 - 兴奋性神经元产生正向传播 - 抑制性神经元产生负向传播 - 不同脑区之间的投射有不同连接偏好 例如: - 丘脑更倾向投向皮层和海马体 - 海马体更倾向沿 `DG -> CA3 -> CA1 -> subiculum` 传播,再回投皮层和丘脑 - 皮层更倾向投向皮层、基底节和小脑 - 小脑和脑干更偏向回路协调与中继 - 皮层第 6 层会更明显回投丘脑和海马输出通路 - 髓鞘化和白质完整性会进一步调节跨脑区长程传播效率 - 同侧连接整体更稳,跨半球连接更像低成本的协调桥 === 12. 可塑性与记忆 - 当后神经元活动痕迹较高时,连接会增强 - 不活跃连接会缓慢衰减 - 突触上维护 `memory_tag`,用于表示更稳定的记忆痕迹 - 每个突触还会受到前后神经元局部活动、营养样支持和树突棘可用度的共同约束 - 多巴胺、乙酰胆碱、去甲肾上腺素、血清素已经直接下沉到局部塑性窗口里,不再只是高层“打分器” - 去甲肾上腺素现在还会更明显地偏置抑制性稳态补偿,而血清素会更多充当过快强化的刹车 - 睡眠中如果发生回放,海马体和皮层相关联接更容易被强化 - 当 `homeostatic_reward` 较高时,成功回路更容易保留 - 当 `homeostatic_reward` 为负时,弱连接会更快衰减 - 行为价值和奖励预测误差会进一步影响后续行为偏好 - 情景回忆值和情绪显著性也会偏置当前策略选择 - 神经调质水平还会进一步改变强化、注意和警觉度 - 睡眠期巩固和重放会离线改写联接结构 === 13. 记忆回放 系统会维护一个最近放电神经元环形缓冲区。 在 `NREM` 和 `REM` 阶段: - 从最近活跃神经元中抽取一部分进行回放 - 优先让海马体和皮层节点重新进入活动状态 - 海马内部回放会更偏向 `DG -> CA3 -> CA1 -> subiculum` - 同时增强海马体到皮层、皮层到海马、皮层到皮层这类更接近记忆巩固的连接 - replay 的增强幅度也会继续受 ACh/DA 门控,因此更像“被状态调制的局部再激活”,而不是固定回放脚本 === 14. 生长、剪枝与凋亡 - 高活跃而且局部营养样支持较高的神经元,才更可能生成新神经元 - 新生神经元会优先继承父神经元附近的脑区倾向 - 新生神经元还会继承一部分父神经元的 `trophic_support` 和 `spine_density` - 长时间闲置、局部支持不足、炎症/应激偏高的神经元会更容易被移除 - 弱连接和长期闲置连接会被修剪,但现在还会参考前后神经元的局部支持度和树突棘状态 - 微胶质活性更高时,会更倾向清理“低活动 + 低记忆标签 + 低支持度”的弱突触 - 当局部兴奋明显高于抑制时,抑制性投射会得到额外稳态补偿,帮助回路重新找回 E/I 平衡 === 15. 运动输出 当 `NEURON_MOTOR` 类型的神经元放电时,会累积到 `motor_output_last_tick` 统计值中。 现在它已经会反过来影响身体状态,而不再只是一个孤立统计值。`action_urgency` 较高时,运动神经元也更容易被推动进入活动。 当前实现还专门强化了 `cortex/cerebellum/basal_ganglia -> motor -> brainstem/thalamus` 这类回路,因此动作输出会比早期版本更稳定、更有方向性。 === 16. 全局生理变量 当前维护两个全局生理变量: - `energy_reserve`:能量储备,活跃时下降,睡眠时恢复 - `sleep_pressure`:睡眠压力,清醒时上升,睡眠时下降 此外还有几类会持续影响局部回路命运的全局背景量: - `microglia_activity`:偏向弱突触清理与睡眠期整理 - `inflammation_level`:提高压力,压低局部支持度 - `dopamine_level/acetylcholine_level/norepinephrine_level/serotonin_level`:分别偏置强化、注意、警觉和制动 这些量不会直接替代神经元放电,而是通过阈值、突触释放、局部可塑性和维护预算间接影响网络。 == 分时与内存策略 这个项目从一开始就没有走“默认把上亿神经元同时激活”的路线,而是采用了适合大规模仿真的分时策略: - 神经元池和突触池一次性预分配,减少碎片化 - 稀疏突触池,按真实连接数占用内存 - `active_now` / `active_next` 只追踪当前活跃前沿 - `maintenance_candidates` 只对有近期活动的单元做重点增长维护 - 神经元维护和突触维护按预算分片执行 - 最近记忆使用环形缓冲区,而不是无限日志 - 新增的 `trophic_support` 和 `spine_density` 是每神经元两个轻量标量,换来更接近生物发育/修剪的维护逻辑,默认内存仍只在几 MB 量级 默认参数下: [source,c] ---- initial_neurons = 256 max_neurons = 8192 max_synapses = 65536 target_synapses_per_neuron = 12 maintenance_period = 16 maintenance_neuron_budget = 96 maintenance_synapse_budget = 512 replay_budget = 4 ---- 当前默认配置下,程序启动的估算内存量级仍然只有几 MB;最近一轮加入局部营养支持和树突棘状态后,`8192/65536` 配置下启动估算约为 `3.53MB`,仍适合作为结构原型继续往上扩。 == 构建 [source,bash] ---- meson setup build meson compile -C build ---- 如果已经初始化过 `build` 目录,可以直接: [source,bash] ---- meson compile -C build ---- == 运行 [source,bash] ---- ./build/src/bio_brain ./build/src/bio_brain 5000 ./build/src/bio_brain 5000 16384 131072 200 ./build/src/reasoning_probe ./build/src/motor_window_probe ./build/src/sleep_memory_probe ./build/src/rem_association_probe ---- 命令行参数按顺序为: . 仿真步数 `steps` . 最大神经元数 `max_neurons` . 最大突触数 `max_synapses` . 输出间隔 `report_interval` 例如: - `./build/src/bio_brain 5000`:运行 5000 步,使用默认规模 - `./build/src/bio_brain 5000 16384 131072 200`:运行 5000 步,把网络上限扩大到 `16384` 个神经元、`131072` 条突触,每 `200` 步输出一次统计 - `./build/src/reasoning_probe`:运行“逻辑推理代理指标”测试,检查威胁规避、目标寻址、饥饿驱动和冲突刹车是否仍然成立 - 当前还会额外检查 `context_rebinding` 与 `mature_rebinding`,分别覆盖已有情景痕迹在当前阶段下的保守重绑定,以及发育后窗口里工作空间对关系层的轻量再绑定是否仍然成立 - `./build/src/motor_window_probe`:运行尾醒与入睡边界回归,自动检查 `late_wake_sparse_window`、`wake_to_nrem_boundary`、`coarse_sleep_entry`、`nrem_pre_rem_quiet_window` 这 4 个窗口是否仍符合“尾醒只允许 twitch、NREM 不允许 wake-like burst、NREM 末段也不应重新抬出明显动作”的生物约束 - `./build/src/sleep_memory_probe`:运行 NREM 睡眠记忆回归,自动检查入睡即回放、整段巩固累计增长、以及睡眠窗口最大动作输出仍保持在低幅 twitch 范围内 - `./build/src/rem_association_probe`:运行 REM 关联重组回归,自动检查 REM 入段后关联数继续增长、整段 REM 的 replay/association 累积不回退、且 REM 窗口保持接近静默 这里的 `reasoning_probe` 不是人类级符号逻辑证明器测试,而是当前生物启发式控制回路的代理评估。 而 `motor_window_probe` 也不是完整步态学测试,它只是把当前最容易回归的尾醒/NREM 生物窗口固化成自动守门。 `sleep_memory_probe` 同样不是完整睡眠脑电或长期记忆实验,它只是把当前模型里“海马/皮层回放增强、NREM 巩固累计增加、外显动作维持低输出”这组生物约束固化成自动守门。 `rem_association_probe` 也不是完整梦境内容或 PGO 波实验,它只是把当前模型里“REM 关联重组增加、回放继续发生、肌张力维持低输出”这组生物约束固化成自动守门。 如果只给前几个参数,后面的仍使用默认值。 程序运行时会输出: - 当前发育阶段 - 当前清醒/睡眠相位 - 神经元和突触数量 - 当前 tick 的脉冲数 - 当前 tick 的运动输出 - 当前身体/环境状态 - 当前内稳态奖励和动作紧迫度 - 当前行为模式与计划/实际运动指令 - 当前奖励预测误差和各行为价值 - 当前目标/威胁/饥饿焦点 - 当前回忆值和情绪显著性 - 当前内部预测和预测误差 - 当前神经调质状态 - 当前睡眠整理/恢复信号 - 总出生/死亡/生长/修剪数量 - 回放累计次数 - 能量储备和睡眠压力 - 各脑区的神经元数量 - 皮层分层与海马子区数量 - 左右半球数量 - 髓鞘化 `myelination_level` 与白质完整性 `white_matter_integrity` == 代码入口 - 主程序入口:`src/main.c` - 脑模型接口:`src/brain.h` - 脑模型实现:`src/brain.c` - 运行时 XML 配置:`config/runtime.xml`、`config/reasoning_probe.xml`、`config/motor_window_probe.xml`、`config/sleep_memory_probe.xml`、`config/rem_association_probe.xml` - 构建配置:`meson.build` 和 `src/meson.build` == 本轮继续优化 - 这轮又开始正面拆现有那层显式 `motor-basis arbitration`。当前先拆掉的是最像“上游控制器”的部分:`update_motor_basis_arbitration()` 不再从“上一拍选中了哪条动作通道”反推基底节样 `direct/indirect/hyperdirect`,而是直接从连续的 `motor_basis_drive`、目标/威胁/饥饿压力、工作记忆稳定度、预测误差和社会安全/痛苦信号里合成这些慢变量。这样更接近“分布式通道竞争 + 局部调制”而不是“先定一个离散行为标签,再沿标签驱动回路”。 - 同一步里,`synthesize_motor_command_from_motor_basis()` 也进一步收口成读出层:当前只保留 `dominant_motor_basis` 这一观测读出,而不再维护额外的内部标签缓存;运动计划 `planned_motor_command` 主要由连续通道混合、目标/危险方向、丘脑放行、基底节抑制和紧迫度共同合成,不再依赖单独的离散行为选择逻辑。 - 这轮继续把中间残留的“分类提案器”也拆掉了:`update_action_selection_loop()` 不再调用 `compute_motor_basis_scores()` 先构造 `b0/b1/b2/b3 proposals[4]`,而是直接从连续的目标/威胁/饥饿压力、工作记忆稳定度、社会安全/痛苦残余、习惯痕迹、价值偏置、白质成熟度和基底节样门控里生成 `channel_currents[4]`,再交给 motor-basis 竞争回路自己更新 `motor_basis_drive`。这样动作通道的上游就进一步从“离散行为打分器”收口成了连续状态场。 - 为了不让这一步拆解反过来抬坏重绑定或睡眠窗口,这轮又补了两条很窄的连续边界:`binding_workspace` 现在更直接把 `context_shift_signal/safe_recontextualization` 纳入槽位形成与 coherence,因此 `context_rebinding/mature_rebinding` 不会因为去掉提案器而掉回 `bind=0`;同时 `REM` 末端动作释放又收了一道闸,避免清醒期形成的上下文残余在做梦窗口里重新放大成 overt motor burst。 - 这轮继续往下拆时,又把两段更像“标签余毒”的低层路径收掉了。首先,`update_motor_execution_state()` 和 `update_brainstem_motor_pattern()` 不再直接读取任何离散标签来决定执行强弱,而是改成从当前 `motor_basis_drive` 的连续混合比例读出 `b0/b1/b2/b3` 残余,再让这些残余去连续调节运动执行与脑干模式发生器。其次,`update_motor_basis_bias_learning()` 不再按四类旧语义通道逐项跑分类 `if/else` 去手工回写价值表;现在它先从目标/威胁/饥饿、社会安全/痛苦、共同调节偏置和失配负载里生成一个连续 `channel_targets[4]`,再按上一拍真实通道残余与当前压力场的对齐程度去缓慢更新慢偏置。 - 这一步的含义不是“已经没有任何低维读出”,而是又少掉了一层“先看标签、再决定执行或学习”的工程捷径。当前还残留的 `motor_basis_slow_bias` 更接近动作通道上的慢偏置场,而不再是一个靠离散类别条件表驱动的价值表;`dominant_motor_basis` 也进一步退回成观测层读出,而不是低层运动和学习必须查询的控制键。 - 这轮继续往同一方向收口时,又把内部最后那点“标签兜底”也拆掉了:`set_motor_basis_trace_from_drive_or_trace()` 现在只接受当前 `drive` 和历史连续 `fallback_trace`,当两者都不足时统一退回静息通道,不再接收离散标签兜底。对应地,情景记忆、工作记忆、语义压缩和每拍 `previous_motor_basis_trace` 的更新,也都只会回退到连续残余痕迹,不会再偷偷从旧的离散标签缓存里捞一个单标签回来。 - 同一路线上,`compute_motor_basis_currents()` 在早期 `channel_total` 很低的时刻,也不再根据上一次离散标签去造 `b2/b1/b3/b0` 的 one-hot 残余,而是直接读取 `previous_motor_basis_trace` 的连续残余幅度。这样当前主链里,离散标签进一步只剩索引常量和人类可读输出用途,不再参与记忆写入、慢偏置学习或动作通道电流生成时的内部兜底。 - 这轮继续把残余命名和缓存也往观察层收口了一步:`brain.c` 内部原先那张慢偏置表已经明确改名成 `motor_basis_slow_bias`,对应的语义就是“动作通道慢偏置”而不是离散行为价值表;关系/工作空间回灌出来的连续偏置也同步收口成 `inferred_motor_basis_bias`。到当前版本,这层命名也已经推到了公共统计接口,`BrainStats` 直接导出的是 `motor_basis_slow_bias[4]`。 - 同一轮里,内部缓存的单标签模式也已经完全撤掉;最新版本只在 `brain_get_stats()` 里,根据当前 `motor_basis_drive` 的最大通道生成一个 `dominant_motor_basis` 读出。因此离散 `MotorBasisId` 现在更明确地只剩内部索引常量和兼容读出用途,不再作为脑内主链慢变量被存起来反查。 - 这轮继续往外收口后,公共统计和 probe 也不再把行为标签当主字段:`BrainStats`、`BrainReasoningCaseResult` 和 `BrainDevelopmentCaseResult` 现在都直接暴露 `dominant_motor_basis`、`motor_basis_drive[4]` 和 `motor_basis_slow_bias[4]`,主程序与 probe 输出也统一改成 `dominant_basis=...`、`basis(...)`、`slow(...)`。这样离散 `MotorBasisId` 进一步退到了内部索引常量的位置,而不再是对外结果结构体里的主语。 - 对应地,这轮 `reasoning_probe` 与 `developmental_coregulation_probe` 的通过条件也已经从“行为标签是否等于某类”改成“连续动作通道之间的相对强度关系、慢偏置关系是否满足当前场景边界”。这一步的意义不是换皮,而是把守门标准本身也从离散类别匹配收口成连续竞争态检查,避免我们一边拆行为层、一边又用标签化 probe 把它偷偷补回来。 - 这轮继续按“不要再往行为 if/else 里堆东西”这个约束前推,把白质/髓鞘从纯全局成熟度又往结构侧推进了一步:现在 `myelination_level` / `white_matter_integrity` 除了继续受发育阶段、睡眠恢复、炎症和能量状态调节外,还会额外参考“最近真实活跃过的长程投射”这一局部连续信号。也就是说,最近真正参与过皮层-丘脑、皮层-海马、跨脑区或跨半球传播的连接,会通过它们自己的 `trace/recent_drive/memory_tag/short_term_resources/trophic_support/spine_density`,很轻地反推白质成熟度和后续跨区传导效率。 - 同一路线上,`NREM` 的突触维护现在也多了一层很窄的“长程投射整理”边界:对安静但仍有结构支持的长程连接,只给极轻的资源回补和强度保底;而对已经很弱、很安静、支持不足的长程连接,只做极轻释放。这一步仍然不改 replay 预算、不引入新的行为分支,也不直接去推高动作输出,更像睡眠期对白质相关长程纤维做局部整理,而不是高层规则器在指定“哪些连接重要”。 - 这轮先把“调参数必须重编译”这个阻塞点解决掉了:主程序和 `reasoning/motor/sleep/rem/developmental_coregulation` 5 个 probe 现在都支持从 XML 配置文件加载 `BrainConfig`,默认分别读取 `config/runtime.xml`、`config/reasoning_probe.xml`、`config/motor_window_probe.xml`、`config/sleep_memory_probe.xml`、`config/rem_association_probe.xml`、`config/developmental_coregulation_probe.xml`,也支持 `--config path/to/file.xml` 覆盖。这样后续继续调 `860 亿` 目标映射、`concurrency_budget=1`、`active_processing_budget`、睡眠周期、维护预算和婴幼期共同调节慢变量时,不需要每次重新改源码常量,更适合持续按生物原理微调。 - 这轮继续按“婴儿推理来自经验慢塑形”往前推时,没有引入新的规则表,而是补了一条更贴近神经元原理的慢链:`predictive_safety + autonomic_settling + reward_relief + sensorimotor_attunement -> developmental_coregulation_signal -> developmental_coregulation_trace -> episodic/working_memory/binding_workspace/relational_bindings -> NREM/REM replay -> developmental growth bias`。它表达的是“安全共激活在局部回路里留下慢残余,再通过记忆和重放缓慢改变连接偏置”,不是直接写死逻辑结论。 - 这批婴幼期共同调节参数已经全部进 XML:`developmental_coregulation_signal_gain`、`developmental_coregulation_trace_decay`、`developmental_coregulation_memory_weight`、`developmental_coregulation_replay_gain`、`developmental_coregulation_growth_bias`、`developmental_coregulation_juvenile_scale`。主程序输出也补上了 `coreg(signal=... trace=...)`,后面继续微调不需要再改源码重编译。 - 这轮又继续把这条慢痕迹往下沉到“抽象原型”和“价值学习”本身:`update_semantic_memory()` 现在会把 `developmental_coregulation_trace` 压进 `SemanticPrototype.coregulation_mean`,并在 `NREM/REM` 里随 replay 一起缓慢重加权;`update_motor_basis_bias_learning()` 和关系/工作空间读出也会把这条共同调节慢痕迹作为连续 reinforcement bias,轻量促进低危险场景下的 `b0/b1/b3`,并抑制已经过时的 `b2` 尾迹。这样婴幼期经验就不只是“被记住”,而是会慢慢改变后续抽象压缩和价值偏置。 - 这轮还补了一个专门验证“婴儿推理是否真的靠安全经验慢慢改写局部偏置”的 `./build/src/developmental_coregulation_probe`。它不看手工规则,只看连续神经动力学变量在 3 个场景里的累计结果:当前 `passed=3/3 aggregate_score=1.000`,其中 `infant_safe_coreg` 已稳定得到 `coreg(signal=0.86 trace=1.50 delta=1.32)`,同时慢偏置呈现“`b2` 下压、`b1/b3` 上抬”的形态,说明安全共同调节体验确实会在初始基线上方累积慢痕迹,并逐步压低陈旧 `b2`、抬高 `b1/b3` 倾向;`infant_rebinding` 和 `infant_sleep_replay` 也都保持 `delta=1.32`,说明这条慢塑形链已经穿过重绑定和睡眠回放,而不是停在一次性的瞬时激活。 - 这轮又继续把婴幼期链往“预测性安全预激活”推进了一层,但仍然没引入规则。新增的是一个连续 `developmental_coregulation_prediction` 变量,它不是在问“这是什么概念”,而是在把情景记忆、工作记忆、语义原型和关系绑定里已经形成的安全共同调节慢痕迹,重新压回下一拍的共调节目标里,形成一种很轻的 anticipatory settling。更像熟悉安全回路被重新点亮后,局部网络会先带一点预期性安定,而不是每次都得等当前拍外界输入把整条链重新堆起来。 - 这批新参数也已经进 XML:`developmental_coregulation_prediction_gain` 和 `developmental_coregulation_prediction_decay`。当前默认值分别是 `0.16` 和 `0.012`,主程序输出也已经补成 `coreg(signal=... trace=... pred=...)`,这样后续如果要继续微调“旧安全经验提前预热下一拍”的强度和衰减,同样不用再改源码重编译。 - 最新复跑结果已经把这层收益打出来了:`./build/src/developmental_coregulation_probe` 继续保持 `passed=3/3 aggregate_score=1.000`,而且 3 个场景现在都稳定出现 `pred=1.50`。其中 `infant_safe_coreg` 已经提升到 `coreg(signal=1.19 trace=1.50 pred=1.50 delta=1.32)`,慢偏置继续表现为旧 `b2` 尾迹下压、`b1/b3` 上抬;`infant_rebinding` 得到 `signal=0.99 pred=1.50`;`infant_sleep_replay` 得到 `signal=1.07 pred=1.50`。这说明旧安全经验现在不只是通过回放慢慢留下痕迹,还能在相似局部状态重新出现时,先轻量预热下一拍的安全共同调节。 - 在这个基础上,这轮又把另一半补上了:新增连续 `developmental_coregulation_mismatch`,专门接当前危险、疼痛、内感受误差、运动误差和新奇性带来的失配负载。它不会直接改写行为标签,而是先把旧的 `developmental_coregulation_prediction` 和当拍 `signal` 往下拉,再通过连续 reinforcement bias 缓慢把过时的安全预期冲淡。对应 XML 参数也已经加上:`developmental_coregulation_mismatch_gain=0.20`、`developmental_coregulation_mismatch_decay=0.018`,主程序和 probe 输出都补成了 `coreg(signal=... trace=... pred=... mismatch=...)`。 - 这轮开始明确按“婴儿通过社会交互学会共同调节”这条原理继续推,而不是再靠内部量互相硬拽。系统现在新增了 3 条直接的社会经历输入:`social_contact_input`、`social_soothing_input`、`social_attunement_input`。它们会先在运行时形成 `caregiver_contact_signal`、`caregiver_attunement_signal`、`social_relief_signal`、`attachment_security` 和 `social_prediction_error`,再进入共调节链、价值学习链和失配链。也就是说,当前婴幼期学习不再只是在“危险/奖励”上自己内卷,而是开始真的通过“有没有被接住、有没有被安抚、匹配是否成功”这些互动经历改写后续反应。 - 主程序和 development probe 的输出也补上了这层社会学习观测:现在除了 `coreg(...)` 之外,还会输出 `social(relief=... attach=... spe=...)`。这里 `relief` 表示当前互动是否真的降低了 distress,`attach` 表示反复成功互动留下的依恋安全感,`spe` 表示“期待得到怎样的安抚”和“这次实际得到怎样的安抚”之间的社会预测误差。 - 最新 `developmental_coregulation_probe` 结果已经把这层社会学习直接打出来了,当前仍是 `passed=4/4 aggregate_score=0.900`。其中 `infant_safe_coreg` 现在不只是 `signal=1.27 pred=1.50 mismatch=0.13`,还出现了 `social(relief=1.50 attach=0.98 spe=0.34)`;`infant_rebinding` 则出现 `social(relief=1.44 attach=0.70 spe=0.50)`;`infant_sleep_replay` 是 `social(relief=1.26 attach=0.95 spe=0.15)`。这说明当前安全和重绑定不再只是靠内部状态抬起来,而是会在“接触/安抚/匹配成功”反复出现时,把依恋安全和社会缓解一起写进共调节链。 - 反过来,`infant_prediction_mismatch` 现在也能直接表现出“社会互动失败”的样子:当前得到 `social(relief=0.27 attach=0.40 spe=0.13)`,同时 `coreg(signal=0.27 pred=0.00 mismatch=1.50)`。它的含义是:在危险持续、安抚输入弱、匹配失败的情境里,旧安全预测会被现实和社会失配一起压回去。这比单纯调低预测增益更接近“婴儿是从互动里学会谁能安抚自己、何时不该继续保持安全预期”的方向。 - `developmental_coregulation_probe` 现在也扩成了 4 个场景,新增 `infant_prediction_mismatch` 专门验证“旧安全预期遇到现实危险会不会被拉回”。最新结果是 `passed=4/4 aggregate_score=0.900`。其中 `infant_safe_coreg` 已经恢复到 `signal=1.19 pred=1.50 mismatch=0.01`,`infant_rebinding` 也恢复到 `signal=0.98 pred=1.50 mismatch=0.03`,说明失配抑制没有再把安全预激活整条压死;而新的 `infant_prediction_mismatch` 当前得到 `signal=0.24 pred=0.00 mismatch=1.50`,说明“现实危险把旧安全预测压回去”这半条链已经成立。 - 这轮继续把“社会交互是如何被记住的”往下沉到了现有记忆层,而不是再加一层行为规则。现在 `episodic_traces`、`working_memory_slots`、`semantic_prototypes`、`relational_bindings` 和 `binding_workspace` 都会额外保存 `social_relief/attachment/social_prediction_error` 这 3 条连续社会痕迹;后续相似情境出现时,系统会先按匹配度把这些痕迹重新激活,再把它们送进 `recalled_value`、`inferred_motor_basis_bias`、`model_based_control` 和最终 `motor_basis` 竞争。也就是说,当前行为变化已经更像“过去有没有被接住、有没有失配过”在后续相似状态里被局部回路重新点亮,而不是新写了一层抽象决策模板。 - 这一步按生物原理核对后仍然成立。新增的并不是“如果社会失配就切到 `b2`”这种规则,而只是让现有记忆压缩结构多带几条社会连续量,然后通过匹配、衰减、回放和价值竞争把它们再送回动作通道。系统读写的仍然是连续局部变量:`social_relief_signal`、`attachment_security`、`social_prediction_error` 以及它们在记忆里的残余均值/期望/上下文,不是离散语义标签。 - 最新 `developmental_coregulation_probe` 结果也已经把这条链真正跑通:当前仍是 `passed=4/4 aggregate_score=0.925`,其中 `infant_prediction_mismatch` 现在得到 `dominant_basis=b2 coreg(signal=0.27 trace=1.50 pred=0.00 mismatch=1.50 delta=1.32) social(relief=0.27 attach=0.40 spe=0.13)`。这说明系统已经不只是“把旧安全预测压回去”,而是能让社会失配和危险记忆穿过价值层、关系层和动作通道竞争层,最终把外显动作稳定推到 `b2` 主导区间。 - 当前最新回归仍然全部通过:`./build/src/developmental_coregulation_probe = 4/4 aggregate_score=0.925`,`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/motor_window_probe = 4/4`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/rem_association_probe = 3/3`。说明把社会交互痕迹继续下沉到记忆压缩、关系绑定和行为竞争之后,既有推理链、睡眠整理和低肌张力窗口仍然稳住了。 - 这轮继续把“靠输入长期发育,而不是靠改代码学新东西”这件事往前推成了可运行能力。主程序现在支持从 XML 里读取 `external_input_stream_path` 和 `external_input_loop`,然后按 tick 顺序从一个 CSV 连续特征流里读取外部输入帧。每一帧目前包含 `target_position/hazard/novelty/hunger/pain/reward/interoception/proprioception/social_contact/social_soothing/social_attunement` 这 11 条连续感觉与社会通道,随后直接进入身体状态、内感受、危险负载和社会互动链。也就是说,后续不需要再改 C 代码去“教”它某个场景,只需要继续喂长期输入流。 - 这一步按生物原理核对后仍然成立,因为外部流喂进来的不是高层行为标签,也不是“看到什么就做什么”的规则,而是更像感觉皮层前的连续特征通道。当前实现只是把这些通道混入已有 `body_target/environment_hazard/environment_novelty/pain/interoception/proprioception/social_*` 链,再让记忆、回放和动作竞争自己把长期残余积起来。 - 仓库里现在已经带了一个最小样例:[config/social_development_runtime.xml](/home/bytedance/gitee/ai/config/social_development_runtime.xml) 和 [config/social_development_stream.csv](/home/bytedance/gitee/ai/config/social_development_stream.csv)。可以直接用 `./build/src/bio_brain --config config/social_development_runtime.xml 240 8192 65536 60` 运行。最新一轮真实输入流训练已经稳定跑通,主程序会打印 `external_input: stream=config/social_development_stream.csv loop=1`,说明当前版本已经具备“外部连续输入驱动长期塑形”的基础通道。 - 这轮又补上第 82 处更窄的 `NREM` 局部实现:它只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流和树突驱动都已回到低尾、`calcium_level` 已压到更深低尾、局部营养支持仍只保留 `0.10-0.18` 的微弱底座、而 `spine_density` 仍提示局部微结构还在时,它才会极轻地回补一点点更深钙地板。这更像睡眠期对“虽然很安静,但局部结构仍提示它不该继续把最低钙依赖可塑性底座磨空”的关联单元做最低限度保养,而不是去增强 replay、改写跨相位门控,或重新抬高动作输出。 - 这轮又继续补上第 83 处更窄的 `NREM` 局部实现:它仍只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流都已回到低尾、`dendritic_drive` 已压到更深低尾、局部营养支持仍只保留 `0.10-0.18` 的微弱底座、而 `spine_density` 仍提示局部微结构还在时,它才会极轻地回补一点点更深树突驱动地板。这更像睡眠期对“虽然很安静,但局部结构仍提示它不该继续把最低树突可塑性底座磨空”的关联单元做最低限度保养,而不是去增强 replay、改写跨相位门控,或重新抬高动作输出。 - 这轮又继续补上第 84 处更窄的 `NREM` 局部实现:它仍只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流与树突驱动都已回到低尾、`spine_density` 已压到更深低尾、局部营养支持仍只保留 `0.10-0.18` 的微弱底座时,它才会极轻地回补一点点更深结构地板。这更像睡眠期对“虽然很安静,但局部微结构仍提示它不该继续把最低树突棘支撑磨空”的关联单元做最低限度保养,而不是去增强 replay、改写跨相位门控,或重新抬高动作输出。 - 这轮又继续补上第 85 处更窄的 `NREM` 局部实现:它仍只在 `run_neuron_maintenance()` 的 `NREM` 维护周期里,对非 `motor` 的皮层/海马/丘脑关联神经元生效。只有当单元近期活动已经很低、兴奋/抑制电流与树突驱动都已回到低尾、`recovery` 已压到更深低尾、局部营养支持仍只保留 `0.10-0.18` 的微弱底座、而 `spine_density` 仍提示局部微结构还在时,它才会极轻地回补一点点更深恢复位地板。这更像睡眠期对“虽然很安静,但局部结构仍提示它不该继续把最低膜恢复基线磨空”的关联单元做最低限度保养,而不是去增强 replay、改写跨相位门控,或重新抬高动作输出。 - 这轮没有再继续机械地往 `NREM` 维护块里堆更多离散 `else if`,而是把最近几层“更深低尾地板”保养往连续局部动力学收了一步:新增了一个局部更新函数,把“安静度、低钙压力、局部营养底座、微结构支撑、闲置时长”等因子连续压成若干个 `0.0-1.0` 的门控量,再用它们去缓慢调节更深低尾的 `calcium_level`、`dendritic_drive`、`spine_density`、`recovery`。这更接近“神经元局部状态在睡眠期围绕突触/树突信号和局部支持环境连续漂移”,而不是继续把同一类低尾保养拆成越来越多的人工窄窗规则。 - 这轮完成后重新回归,结果继续保持稳定:`./build/src/reasoning_probe` 仍是 `passed=6/6 aggregate_score=1.000`,`./build/src/motor_window_probe` 仍是 `passed=4/4`,而且最敏感窗口继续保持 `tick=779 motor=0.08`、`tick=782 motor=0.09`、`tick=876 motor=0.00`;`./build/src/sleep_memory_probe` 仍是 `passed=3/3`,`./build/src/rem_association_probe` 仍是 `passed=3/3`。说明本轮两个变化都没有破坏既有推理、睡眠整理和低肌张力尾醒窗口。 - 本轮最新一次稳定回归已经同步到当前代码:`./build/src/motor_window_probe = 4/4`,其中最坏窗口是 `tick=877 motor=0.03 phase=nrem`;`./build/src/sleep_memory_probe = 3/3`,其中 `tick=784` 入睡即满足 `replay_delta=4 consol_delta=28 motor=0.00 recovery=0.100`,到 `tick=840` 的 `NREM` 窗累计 `replay_delta=65 consol_delta=324 cumulative_recovery=1.084 max_motor=0.00`;`./build/src/rem_association_probe = 3/3`,其中 `tick=880` 的 `REM` 入段满足 `rem_assoc=24 recovery=0.020 motor=0.00`,到 `tick=927` 的 `REM` 窗累计 `rem_assoc_delta=29 replay_delta=306 cumulative_recovery=1.113`;`./build/src/reasoning_probe` 继续保持 `passed=6/6 aggregate_score=1.000`。这说明当前版本已经把“记忆层离散行为标签”收敛成连续行为通道痕迹,而且没有重新抬坏动作静默窗口。 - 继续沿这条主线往前核对后,`update_motor_basis_bias_learning()` 和 `update_motor_basis_arbitration()` 里原本还残留的一段“上一拍离散标签回写”也已经收敛成连续残余痕迹:当前版本新增 `previous_motor_basis_trace`,让奖励预测误差和习惯仲裁优先读取上一拍动作通道竞争留下的连续残余,而不是直接把上一拍压成一个离散行为标签再回写。这样更接近“神经通道竞争后的残余活动继续塑造突触权重和后续选择偏置”,而不是“标签被重新当作规则键值”。 - 这次继续收口后的最新稳定回归仍然全部通过:`./build/src/motor_window_probe = 4/4`,最坏窗口仍是 `tick=876 motor=0.03 phase=nrem`;`./build/src/sleep_memory_probe = 3/3`,其中 `tick=784 phase=nrem replay_delta=4 consol_delta=28 motor=0.00 recovery=0.096`、整段 `NREM` 累计 `replay_delta=92 consol_delta=322 cumulative_recovery=1.086`;`./build/src/rem_association_probe = 3/3`,其中 `tick=880 phase=rem rem_assoc=41 recovery=0.028 motor=0.00`、整段 `REM` 累计 `rem_assoc_delta=19 replay_delta=313 cumulative_recovery=1.119`;`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`。说明把学习/习惯层从离散标签继续推向连续通道残余后,睡眠静默边界和推理代理依然稳定。 - 这轮最新一次“第二步拆解”后的回归也已经同步核过:`./build/src/reasoning_probe = passed=6/6 aggregate_score=1.000`,其中 `context_rebinding score=1.000 dominant_basis=b3 bind=0.65`、`mature_rebinding score=1.000 dominant_basis=b3 bind=0.63`;`./build/src/motor_window_probe = 4/4`,最坏窗口仍是 `tick=876 motor=0.03 phase=nrem`;`./build/src/sleep_memory_probe = 3/3`,当前 `nrem_entry_replay` 为 `tick=784 replay_delta=4 consol_delta=28 motor=0.00 recovery=0.098`;`./build/src/rem_association_probe = 3/3`,当前 `rem_entry_association` 为 `tick=880 rem_assoc=30 recovery=0.022 motor=0.00`。这说明把 `compute_motor_basis_scores()` 这一层中间提案器彻底拿掉后,清醒期重绑定、`NREM` 静默窗和 `REM` 低肌张力边界仍然都稳住了。 - 这轮继续拆掉“标签驱动的低层执行/学习”后也重新核过一遍:`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`;`./build/src/motor_window_probe = 4/4`,最坏窗口是 `tick=877 motor=0.03 phase=nrem`;`./build/src/sleep_memory_probe = 3/3`,`nrem_quiet_motor` 当前仍是 `max_motor=0.03 tick=838`;`./build/src/rem_association_probe = 3/3`,`rem_quiet_motor` 当前仍是 `max_motor=0.00 tick=880`。说明把低层执行从旧的单标签模式里撤出来、再把学习器从分类条件表收口成连续压力回写后,推理代理、睡眠整理和 `REM` 低肌张力边界仍然没有被抬坏。 - 这轮把“内部标签兜底”一起拿掉后又重新核过一遍:`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`;`./build/src/motor_window_probe = 4/4`,当前最坏窗口进一步收紧到 `tick=876 motor=0.00 phase=nrem`;`./build/src/sleep_memory_probe = 3/3`,`nrem_quiet_motor = max_motor=0.00 tick=784`;`./build/src/rem_association_probe = 3/3`,`rem_quiet_motor = max_motor=0.00 tick=880`。这说明把上一拍单标签回退这类兜底彻底从主链拿掉后,清醒期推理、`NREM` 静默窗和 `REM` 低肌张力边界仍然都稳住了。 - 这轮继续把内部“行为价值表/行为缓存”也收口后又重新核过一遍:`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`;`./build/src/motor_window_probe = 4/4`,最坏窗口仍是 `tick=876 motor=0.00 phase=nrem`;`./build/src/sleep_memory_probe = 3/3`,其中 `nrem_entry_replay tick=784 replay_delta=4 consol_delta=28 motor=0.00 recovery=0.093`、`nrem_quiet_motor = max_motor=0.00 tick=784`;`./build/src/rem_association_probe = 3/3`,其中 `rem_entry_association tick=880 rem_assoc=33 recovery=0.030 motor=0.00`、`rem_quiet_motor = max_motor=0.00 tick=880`。说明把内部慢偏置表继续收口成 `motor_basis_slow_bias`、再把缓存标签读出收口成 `dominant_motor_basis` 之后,推理代理、睡眠整理和 `REM/NREM` 运动边界仍然没有被抬坏。 - 这轮把公共统计与 probe 评分也一起去标签化后又重新核过一遍:`./build/src/reasoning_probe = 6/6 aggregate_score=0.908`,输出现在直接展示 `dominant_basis` 和 `basis(b0..b3)`;`./build/src/developmental_coregulation_probe = 4/4 aggregate_score=0.863`,输出也改成 `slow(...)` 与 `basis(...)`,不再把旧的标签/value 当主结果字段;同时 `./build/src/motor_window_probe = 4/4`、`./build/src/sleep_memory_probe = 3/3`、`./build/src/rem_association_probe = 3/3` 继续全部通过,`NREM/REM` 最坏窗口仍保持 `max_motor=0.00`。这说明连验证标准本身都从离散标签切到连续通道之后,系统边界仍然稳住了。 - 当前编码状态(2026-11-03)也一起冻结在这里,避免下次继续时再从代码里反向考古: - 公共接口已经稳定收口到 `motor_basis` 边界:`src/brain.h` 里的对外读出以 `dominant_motor_basis`、`motor_basis_drive[4]`、`motor_basis_slow_bias[4]` 为主,主程序和 probe 输出统一使用 `dominant_basis`、`basis(b0..b3)`、`slow(b0..b3)`,不再把旧的 `rest/seek/avoid/forage` 当接口语义 - `src/brain.c` 内部情景记忆、工作记忆和语义原型里原先那批 `action_channel_trace` 也已统一改名为 `motor_basis_trace`,对应的 fallback/回灌逻辑只保留连续痕迹,不再偷偷回捞离散标签 - `update_motor_execution_state()`、`update_brainstem_motor_pattern()` 现在通过 `compute_motor_basis_mix_from_drive()` 从连续 `drive[4]` 生成 `basis_mix[4]`,已经把执行层和脑干模式发生器里那类“先看标签、再决定输出”的低层壳子再拆掉一层 - 这一轮试过把 `compute_motor_basis_currents()` 整体重写成更通用的阵列加权形式,但真实回归证明这一步还不稳:`motor_window_probe` 一度在 `wake_to_nrem_boundary` 打出 `tick=782 motor=0.60`,超过 `max=0.12`。因此当前代码已经明确回退到稳定版本,只保留安全的命名去语义化和低层 `basis_mix` 清理,不把这次失败尝试伪装成进展 - 到当前版本,最主要的“手工四通道壳子”已经收口到 3 个函数:`compute_motor_basis_currents()`、`synthesize_motor_command_from_motor_basis()`、`stimulate_motor_basis_control()`。它们仍然带着固定四 basis 的人工投影/读出外壳,是下一轮继续拆解时最优先的代码目标 - 当前的真实结论不是“已经做完全脑仿真”,而是“已经把接口、统计、probe 和一部分低层回写从行为标签收口到连续 `motor_basis` 残余,但动作读出层和容量压缩层仍然明显偏工程近似”。后续继续时应优先把更多控制效果下沉到局部神经元/突触传播,而不是重新往上层补规则 - 针对“860 亿神经元不必全驻内存”的要求,这轮把冷存储从“整窗快照”继续推进到“虚拟神经元块索引”层:每个驻留神经元现在都会拿到一个稳定 `virtual_id`,冷存储会把 `target_biological_neurons=86000000000` 作为虚拟全脑规模写入 `cold_storage/runtime/manifest.txt`,同时把当前驻留窗口按 `cold_storage_chunk_neurons` 映射成 `checkpoint_*.index`、`neuron_chunk_*.bin`、`synapse_chunk_*.bin`。其中神经元块记录会保存 `virtual_id/chunk_id/resident_index`,突触块记录会保存 `pre_virtual_id/post_virtual_id/source_chunk_id/target_chunk_id`,这样后续做按块换入换出时,就不再只能依赖内存槽位编号。 - 主程序输出的冷存储状态也补上了 `last_chunks`,运行时能直接看到最近一次刷盘覆盖了多少虚拟块、多少驻留神经元和多少突触连接。当前默认 XML 配置仍然保守地把 `concurrency_budget=1`、`active_processing_budget=1024`,优先保证机器不卡,再慢慢往“磁盘里是超大规模脑、内存里只放当前活跃窗口”推进。 - 在这个基础上,这轮又把“保守冷迁移”从单纯骨架继续推进到“局部增长压力闭环”:当驻留窗口打满时,代码会先扫描一个受预算限制的常驻神经元窗口,把 `trophic_support`、`spine_density`、`trace/recent_drive`、兴奋电流和树突驱动压成连续 `local_growth_drive`,只有在局部确实出现增长压力时,才尝试把长期安静、近期未放电、且不在当前活跃窗口里的非 `motor` 神经元连同相关连接写入冷存储并释放驻留槽位。相关阈值仍然都在 XML,包含 `cold_storage_evict_idle_ticks` 和 `cold_storage_min_live_neurons`,主程序统计里也会持续显示 `evictions` 与 `last_evicted`。 - 这版冷迁移为了不破坏睡眠期低肌张力和离线整理,仍然刻意收窄成“只在清醒相位的安静窗口里尝试”,并避开海马/丘脑/脑干等更敏感的回放与生命维持链路;但内部判断已经从更生硬的候选队列/硬门槛,收口到局部连续信号聚合与静默分数比较。这样更接近“哪些神经元正在获得局部生长驱动、哪些神经元已经长时间低活动”的神经元级资源竞争,而不是为了凑驱逐次数再堆一串高层规则。 - 这轮继续顺着同一方向把冷迁移剩余的清醒静默门控也全部抽进了 XML:现在不仅增长压力阈值可配,连 `spikes_last_tick`、`action_urgency`、`motor_execution_drive`、`brainstem_motor_drive`、`sleep_pressure`、`melatonin_level`、近期放电回看窗口,以及单神经元的 `trace/recent_drive/calcium_level` 上限都能直接在 XML 里调。这样后续再围绕“什么样的局部静默神经元可以安全转冷”继续优化时,就不需要反复改 C 代码重编译了。 - 最新一次 `ASAN_OPTIONS=abort_on_error=1:detect_leaks=0 ./build-asan/src/bio_brain --config /home/bytedance/gitee/ai/config/eviction_wake_smoke.xml 2400 64 1024 400` 已经在纯清醒烟测里稳定看到 `evictions=2`、`births=2`,同时 `sleep_memory_probe=3/3`、`rem_association_probe=3/3`、`motor_window_probe=4/4`、`reasoning_probe=6/6` 继续保持通过。这说明当前版本已经打通“局部增长压力 -> 冷迁移腾槽 -> 新生神经元补位”的最小闭环,而且没有把睡眠静默窗口和逻辑推理链路打坏。 - 把这批冷迁移门控也 XML 化之后,回归结果继续保持不变:`sleep_memory_probe=3/3`、`rem_association_probe=3/3`、`motor_window_probe=4/4`、`reasoning_probe=6/6 aggregate_score=1.000` 全部继续通过,`eviction_wake_smoke` 的 ASan 长时烟测也仍然稳定保持 `evictions=2`、`births=2`。说明这次改动只是把“局部静默窗口”的参数外移到配置,不是偷偷改变底层传播机制。 - 这轮又顺着同一条主线补上了“局部增长优先恢复冷神经元”的最小闭环:现在 `maybe_grow_neuron()` 在满足局部增长条件后,不会只会新生,而是会先查看一个严格有上限的近期冷存储索引,从最近转冷的神经元里挑出与当前父神经元在脑区/类型/半球上更相容的记录,优先把它恢复成驻留单元,再按记录里的虚拟连接和当前父神经元重建少量局部突触。只有恢复失败时,才退回到真正的新生神经元。 - 这条恢复链仍然遵守“内存只放当前活跃窗口”的约束:内存里没有回填整个冷存储,只保留一个很小的近期冷记录索引和每条记录少量局部突触摘要,完整状态仍然继续写入磁盘。代价是估算内存从这组极小烟测里的 `0.05MB` 上升到大约 `0.17MB`,但换来的是第一次出现“局部再激活优先恢复旧神经元,而不是一味新生”的真实运行路径。 - 最新一次 ASan 清醒烟测 `./build-asan/src/bio_brain --config /home/bytedance/gitee/ai/config/eviction_wake_smoke.xml 2400 64 1024 400` 已经稳定看到 `evictions=3`、`reactivations=2`、`births=0`。这说明当前版本在清醒期局部增长压力下,已经能让一部分先前转冷的神经元被重新招回驻留窗口并重新接上局部传播链,而不是只能通过创建全新神经元来补位。 - 这次恢复路径落地后,`sleep_memory_probe=3/3`、`rem_association_probe=3/3`、`motor_window_probe=4/4`、`reasoning_probe=6/6 aggregate_score=1.000` 仍然全部通过。因此当前可以比较明确地说,这条“先局部再激活旧神经元,再退回新生”的路径已经通过了现有睡眠静默、运动窗口和逻辑推理守门。 - 这轮又继续把恢复链的关键偏好和门槛抽进了 XML:现在不仅“是否允许恢复”可配,连“近期窗口多大”“父神经元至少要多强的增长驱动”“恢复时更偏向同脑区、同类型、同半球、同层/同亚区,还是更看重 `trophic_support/spine_density/recency`”都能直接在 XML 里调。这样后续如果要继续把恢复行为往更像生物局部再激活的方向收敛,就不用再改 C 代码。 - 把这批恢复参数也 XML 化之后,回归和烟测结果继续保持不变:`sleep_memory_probe=3/3`、`rem_association_probe=3/3`、`motor_window_probe=4/4`、`reasoning_probe=6/6 aggregate_score=1.000` 全部继续通过,`eviction_wake_smoke` 的 ASan 长时烟测也继续稳定保持 `evictions=3`、`reactivations=2`、`births=0`。说明这一步同样只是把参数外移到配置,而不是偷偷改变局部传播语义。 - 这轮又把恢复链从“内存里的近期冷摘要”继续推进到“真实磁盘冷记录优先读取”:候选仍然先由局部父神经元和近期冷记录做相容性选择,但真正恢复时,代码现在会优先回到 `evict_neuron_chunk_*` / `evict_synapse_chunk_*` 文件里读取该 `virtual_id` 最近一次落盘的神经元状态和局部突触记录;只有磁盘读取失败时,才退回到内存里的近期冷摘要做兜底。 - 这样做的意义不是为了多加一层工程复杂度,而是让“转冷后再被局部信号重新招回”这件事,开始真正依赖磁盘里保存的旧神经元状态,而不是只靠内存里那一小段热索引。最新回归下,`sleep_memory_probe=3/3`、`rem_association_probe=3/3`、`motor_window_probe=4/4`、`reasoning_probe=6/6 aggregate_score=1.000` 继续保持通过,`eviction_wake_smoke` 的 ASan 长时烟测也继续稳定保持 `evictions=3`、`reactivations=2`、`births=0`,说明这次磁盘恢复接入没有打坏现有链路。 - 这轮继续把磁盘恢复往前推到真正的块级 checkpoint 回退:现在 `load_cold_record_from_disk()` 在找不到 `evict_neuron_chunk_*` / `evict_synapse_chunk_*` 时,会继续扫描最新的 `checkpoint_*.index`,定位覆盖目标 `virtual_id` 的 `neuron_chunk_*` / `synapse_chunk_*`,再把同一个虚拟神经元和它的局部突触记录从块文件里恢复出来。这里恢复的仍然只是神经元状态和局部连接,不会凭空塞进高层规则或直接改动作输出。 - 为了验证这条链不是“看起来像恢复”,这轮新增了 `./build/src/cold_storage_restore_probe`。它会先跑一遍真实清醒烟测生成冷存储,再构造一个只保留 `checkpoint_*.index`、`neuron_chunk_*`、`synapse_chunk_*` 的目录,最后直接检查同一个 `virtual_id` 是否能从 checkpoint 块恢复。当前结果是 `passed=2/2`,其中 `restore_case=eviction_disk` 和 `restore_case=checkpoint_disk` 都成功,且同一个 `virtual_id=9` 的 `synapses=8 region=6 type=0 hemisphere=1` 一致,说明这次确实已经打通“磁盘块记录 -> 同一神经元再激活”的恢复链,而不是靠内存摘要硬兜底。 - 这轮还把“恢复到底来自哪里”做成了正式运行时统计:主程序输出和 `manifest.txt` 现在会分别给出 `reactivations_recent_memory`、`reactivations_eviction_disk`、`reactivations_checkpoint_disk`。这样后面继续按 XML 调冷存储参数时,不用再靠看代码猜这次再激活究竟是走了内存摘要、驱逐块,还是 checkpoint 块。 - 这轮继续把冷恢复分成了两层时间尺度,而且都已经进 XML 了:`cold_storage_recent_record_ttl_ticks` 控制“冷神经元候选身份”在内存里还能保留多久,`cold_storage_recent_synapse_ttl_ticks` 控制“内存里的局部突触摘要”多久过期,`cold_storage_evict_file_retention_ticks` 则控制 `evict_*` 驱逐块文件还能保留多久。这样我们可以单独调“候选还能不能被局部增长信号选中”和“恢复细节是继续吃内存/驱逐块,还是被迫回到 checkpoint 块读取”。 - 为了验证这不是只在人工构造目录里才成立,这轮新增了 `./build/src/live_checkpoint_reactivation_probe` 和对应配置 `config/live_checkpoint_reactivation_probe.xml`。当前它已经能在真实 2400 tick 运行里稳定得到 `reactivations=2 recent=0 eviction_disk=0 checkpoint_disk=2 evictions=3`,说明当近期突触摘要快速过期、驱逐块文件也很快淘汰时,系统仍能依靠同一个冷神经元候选元数据,回到 `checkpoint_* / neuron_chunk_* / synapse_chunk_*` 里把神经元重新接回局部传播链。 - 同时,原来的 `./build/src/cold_storage_restore_probe` 也保留下来了,只是改成使用专门的 `config/cold_storage_restore_probe.xml`,确保驱逐块文件不会过早清掉。这样它继续稳定给出 `restore_case=eviction_disk pass=1` 和 `restore_case=checkpoint_disk pass=1`,用来同时守住“驱逐块恢复”和“checkpoint 块恢复”两条链。 - 这轮又把 checkpoint 恢复从“只读目标神经元所在块”继续推进到“同一 checkpoint 内的跨块邻域突触也一起恢复”。现在 `load_cold_record_from_checkpoint_index()` 在找到目标神经元后,不会只扫它自己源块对应的 `synapse_chunk_*`,而是会回头扫描同一个 `checkpoint_*.index` 里列出的相关突触块,把所有和该 `virtual_id` 有关的输入/输出突触一起收集回来。这样恢复出来的就不再只是“孤立神经元 + 本块里正好落到它的突触”,而更像“神经元重新被接回附近回路”。 - 为了验证这条跨块邻域恢复确实发生了,这轮新增了 `./build/src/cross_chunk_checkpoint_probe` 和对应的 [config/cross_chunk_checkpoint_probe.xml](/home/bytedance/gitee/ai/config/cross_chunk_checkpoint_probe.xml)。它故意把 `cold_storage_chunk_neurons` 压到 `8`,强制形成多块,然后只保留 checkpoint 相关文件再做恢复。当前结果已经稳定是:`cross_chunk_case=checkpoint_neighbor_restore pass=1 virtual_id=18 own_chunk_synapses=1 all_chunk_synapses=4 restored_synapses=4 source=3`。这说明 checkpoint-only 恢复现在确实能带回超过“目标块自身”那部分的跨块邻域突触。 - 这轮继续把恢复单位从“单个冷神经元”推进到“最小局部冷回路”:`try_reactivate_cold_neuron()` 现在会先用统一的冷神经元实例化/重连路径把目标神经元从 `checkpoint_disk` 拉回驻留窗口,再根据它已经回读到的局部突触记录,保守地挑 `1` 个当前仍处于冷态的相关邻居虚拟神经元,一并恢复并重新接回配对突触。默认仍然严格限额,只在 `checkpoint_disk` 路径里启用,不会扩成整片大范围唤醒。 - 这次把这条“冷邻居一起回暖”的预算也放进 XML 了:`cold_storage_reactivate_checkpoint_neighbor_budget` 控制最多顺带恢复几个冷邻居,`cold_storage_reactivate_checkpoint_neighbor_min_score` 控制邻居与当前锚点之间至少要有多强的已有突触耦合才允许回暖,`cold_storage_reactivate_checkpoint_neighbor_drive_scale` 控制邻居回暖时继承多少局部增长驱动。这样后面继续调“局部回路恢复”时不需要再改 C 代码。 - 这轮又把主候选排序往“更容易恢复局部回路”方向推了一小步,但仍然保持纯信号链视角:新增 `cold_storage_reactivate_cold_neighbor_weight`,让 `try_reactivate_cold_neuron()` 在比较多个冷候选时,轻微偏向那些自身还保留更多“冷态邻域再接回潜力”的神经元。这里的“潜力”只来自它已有冷突触记录里对其他仍处于冷态邻居的 `strength/memory_tag/short_term_resources/age` 汇总,不读语义标签,也不引入规则模板。 - 这轮又把另一个更底层的瓶颈也往前推了一步:不只是“主冷候选排序”优先考虑局部回路潜力,连冷存储里保留下来的那小批局部突触摘要也开始按“局部回路价值”筛选,而不是按文件遍历顺序截断。现在无论是从 `checkpoint_* / synapse_chunk_*` 回读,还是从近期冷摘要里回读,系统都会优先保留那些更强、记忆标签更高、资源状态更完整、更新更近、且对端仍然可能处于冷态的突触记录。 - 这轮又在主冷候选排序前面加了一层非常小预算的 `checkpoint` 邻域前瞻:系统现在会对前几名冷候选先做一次轻量 `checkpoint` 冷邻域机会试探,再把这个机会值加回候选分数。新增的 XML 参数是 `cold_storage_reactivate_checkpoint_probe_budget` 和 `cold_storage_reactivate_checkpoint_probe_weight`。它们控制“最多前瞻多少个高分冷候选”和“如果某个候选在 `checkpoint` 里确实还保留对冷邻居的恢复机会,这个机会值在总排序里加多少权重”。 - 主程序输出和 `manifest.txt` 现在也补上了 `checkpoint_neighbors`、`last_neighbor`、`neighbor_anchor`,可以直接看到“这次 checkpoint 恢复有没有顺带带回冷邻居”以及最近那对局部回路锚点/邻居的虚拟 ID。 - 为了验证这条链不是靠自然运行碰运气,这轮新增了 `./build/src/checkpoint_neighbor_reactivation_probe` 和对应的 [config/checkpoint_neighbor_reactivation_probe.xml](/home/bytedance/gitee/ai/config/checkpoint_neighbor_reactivation_probe.xml)。它会先生成真实冷存储,再从 checkpoint-only 文件里挑一个确实存在跨块邻域突触的冷锚点神经元,最后在最小运行时里验证该锚点能顺着已有突触把一个冷邻居一起带回并重新接上。当前稳定结果是:`checkpoint_neighbor_case=checkpoint_local_circuit pass=1 anchor=24 neighbor=34 own_chunk_synapses=0 all_chunk_synapses=1 anchor_synapses=1 pair_connections=1 checkpoint_disk=1 neighbor_reactivations=1`。 - 这次改完后再次核对“是否仍符合生物神经元原理”:当前新增的是冷存储块读取和局部状态恢复,不是额外规则系统。候选仍然先由父神经元的局部增长驱动、脑区/类型/半球相容性、营养支持和树突棘状态来决定;磁盘层只负责把先前真实保存的神经元状态和局部突触状态读回来。因此这一步属于“让神经元信号链拥有更真实的冷态记忆载体”,而不是把推理逻辑偷偷改成规则匹配。 - 最新完整回归结果也继续保持稳定:`./build/src/sleep_memory_probe = 3/3`,`./build/src/rem_association_probe = 3/3`,`./build/src/motor_window_probe = 4/4`,`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/cold_storage_restore_probe = 2/2`,`./build/src/live_checkpoint_reactivation_probe = 1/1`,`./build/src/cross_chunk_checkpoint_probe = 1/1`,`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`。这说明当前系统已经不仅能在真实运行里自然走到 `checkpoint_disk`、把跨块邻域突触一起带回来,而且还能在确定性 probe 里进一步把 `1` 个仍处于冷态的相关邻居一起回暖并重新接回局部回路,同时没有破坏睡眠静默窗口、运动边界和逻辑推理链路。 - 这轮做完后再次核对,新增的 `cold_storage_reactivate_cold_neighbor_weight` 没有破坏任何既有守门:`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/motor_window_probe = 4/4`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/rem_association_probe = 3/3`,`./build/src/live_checkpoint_reactivation_probe = 1/1`,`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`。当前结论是:这一步已经把“更像局部冷回路恢复”的偏好安全接进候选排序,但默认 `live_checkpoint_reactivation_probe` 场景里仍然主要表现为 `checkpoint_disk=2 checkpoint_neighbors=0`,说明真实长时运行下还需要继续推进,才能让“冷邻居一起回暖”从确定性 probe 更稳定地走进自然运行路径。 - 这轮把冷突触摘要截断也改成局部回路优先后,再次回归结果仍然保持不变:`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`,`./build/src/cross_chunk_checkpoint_probe = 1/1`,`./build/src/live_checkpoint_reactivation_probe = 1/1`,`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/motor_window_probe = 4/4`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/rem_association_probe = 3/3`。当前最新结论因此更清楚了:现在“主候选排序”和“冷突触摘要保留顺序”都已经朝局部冷回路恢复方向收敛,而且没有破坏既有睡眠/运动/推理边界;但默认真实 `live_checkpoint` 长时运行仍然表现为 `checkpoint_disk=2 checkpoint_neighbors=0`,说明下一个缺口已经不再是简单的候选或摘要截断,而更可能是自然运行里锚点恢复时机与冷邻居同时可达性的耦合还不够强。 - 这轮把“小预算 checkpoint 候选前瞻”接进去之后,再次回归结果仍然全部保持:`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`,`./build/src/cross_chunk_checkpoint_probe = 1/1`,`./build/src/live_checkpoint_reactivation_probe = 1/1`,`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/motor_window_probe = 4/4`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/rem_association_probe = 3/3`。但默认真实 `live_checkpoint` 长时运行仍然是 `checkpoint_disk=2 checkpoint_neighbors=0`。所以当前边界已经更明确了:我们已经把“更像局部冷回路恢复”的偏好先后下沉到了主候选排序、冷突触摘要保留顺序和小预算 `checkpoint` 邻域前瞻三层,而且都没有破坏既有守门;下一步如果还要让真实运行自然长出 `checkpoint_neighbors>0`,就更可能需要继续改“锚点和冷邻居在同一时窗内一起变得可达”的底层动力学,而不是继续堆同类排序技巧。 - 这一轮继续把方向收紧到“神经元信号传递”本身:新增 `cold_storage_reactivate_signal_budget`、`cold_storage_reactivate_signal_decay_ticks`、`cold_storage_reactivate_signal_scale`、`cold_storage_reactivate_signal_weight`,让从 `checkpoint_disk` 拉回的锚点神经元只沿它原本保存下来的冷突触,给少量冷邻居留下会衰减的短时再激活信号;同时新增 `cold_storage_reactivate_anchor_recent_drive_boost`、`cold_storage_reactivate_anchor_dendritic_boost`、`cold_storage_reactivate_anchor_calcium_boost`,让刚恢复的锚点在后续几个时窗里保留一点局部回响,而不是马上掉回完全静默。 - 同一轮还修正了一个和“短时痕迹更容易再次被激活”相反的实现偏差:原先 `cold_storage_reactivate_recency_weight` 的分数方向写反了,导致越旧的冷记录反而越容易被选中。现在已经改成“越新近、越高分”,这和短时突触痕迹、近期被信号碰过的冷目标更容易再次进入活动窗口的方向一致。 - 为了避免又滑回“高层规则指定恢复谁”,当前这套机制仍然严格受限:冷信号只能写入已经存在于冷突触记录里的邻居虚拟 ID;命中后只会把少量冷元数据回收到最近冷缓存,并给候选排序增加一个可衰减的局部驱动分,不会直接强制恢复整片邻域,也不会引入语义标签或规则模板。 - 这一轮完整回归结果仍然稳住:`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`,`./build/src/live_checkpoint_reactivation_probe = 1/1`,`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/motor_window_probe = 4/4`,`./build/src/rem_association_probe = 3/3`。其中最新 `checkpoint_neighbor_reactivation_probe` 结果是 `anchor=18 neighbor=9 all_chunk_synapses=2 pair_connections=1 checkpoint_disk=1 neighbor_reactivations=1`,说明确定性局部冷回路恢复仍然成立。 - 当前新的真实运行边界也要明确记下来:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 现在稳定得到 `checkpoint_disk=1 checkpoint_neighbors=0 signal_driven=0`,而对应 `./build/src/live_checkpoint_reactivation_probe` 也是 `reactivations=1 recent=0 eviction_disk=0 checkpoint_disk=1 evictions=2 last_reactivated=37`。这说明新增的“短时传播 + 锚点回响”已经安全改变了动力学,但还没有把自然长跑推进到“冷邻居也会在后续时窗里自己长出来”的阶段;下一步仍应继续改局部可达性耦合,而不是回头堆更高层的规则。 - 这轮继续沿“神经元信号传递”本身做了一次纠偏:实际把 `last_reactivated=37` 的冷突触邻居逐个探出来后,已经确认磁盘里并没有丢邻居,像 `61/28/58/25/40` 这些目标都还能从 `checkpoint_*` 读回。之前真实运行里一直看到 `signal_attempts>0` 但 `signal_loadable=0`,真正原因不是 checkpoint 坏了,而是运行时那一拍只尝试把信号继续发给“仍处于冷态”的邻居,反而把当时还驻留在内存里的邻居直接跳过了。 - 所以这轮新增了 `cold_storage_reactivate_resident_echo_scale`,让从 `checkpoint_disk` 恢复回来的锚点神经元在重新接回已有输出突触后,能给当前仍驻留的相邻神经元一个很小的、按已有投射亲和度和传导增益缩放的局部突触回响。这里没有引入任何语义规则,也没有直接改动作输出,只是把“恢复锚点已经重新接上的真实突触”真正通上电流。主程序和 `manifest.txt` 现在也新增了 `resident_echoes` 与 `resident_target` 统计。 - 最新真实结果因此往前推了一步:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 现在稳定得到 `checkpoint_disk=2 resident_echoes=3 signal_attempts=9 signal_loadable=0`,而 `./build/src/live_checkpoint_reactivation_probe` 也提升到 `reactivations=2 recent=0 eviction_disk=0 checkpoint_disk=2 evictions=3`。这说明当前自然长跑里虽然还没有把“冷邻居再次转冷再被信号招回”这条链完整拉起,但已经真实出现了“checkpoint 恢复锚点 -> 沿已恢复突触给驻留邻居局部回响 -> 局部恢复次数上升”的现象。 - 这次改完后再次完整回归:`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`,`./build/src/live_checkpoint_reactivation_probe = 1/1`,`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/motor_window_probe = 4/4`,`./build/src/rem_association_probe = 3/3`。当前结论因此更清楚了:真实运行中的下一个缺口,已经不是“checkpoint 邻居读不回来”,而是“如何让 resident 回响进一步把更多冷邻居也推进到可再激活状态”。 - 这轮继续往前推之后,诊断又更清楚了一步:新增 `signal_resident_skips` 与 `signal_disk_failures` 后,真实运行已经确认第二跳没有卡在读盘失败,而是几乎完全卡在“目标当时还驻留在窗口里”。也就是说,局部回响确实顺着已有突触传到了邻居,但这些邻居在那一拍还不是冷态,不能直接走 `load_cold_record_from_disk()`。这里的关键纠偏因此不是再加规则,而是让这类 resident 目标也能留下会衰减的短时再激活痕迹,等它们后续转冷时还能沿同一条突触链继续被选中。 - 因此这轮把 resident 目标也纳入了 `cold_reactivation_signals`,并修正了信号统计刷新时机:`store_cold_reactivation_signal()` / `clear_cold_reactivation_signal()` 现在会立即刷新活跃信号计数,`prune_expired_cold_reactivation_signals()` 也不再因为目标暂时仍驻留就把信号立刻清零,而是只按过期时间衰减。`config/live_checkpoint_reactivation_probe.xml` 的 `cold_storage_reactivate_signal_decay_ticks` 也同步拉长到 `960`,让这类局部信号痕迹更有机会跨过“仍驻留 -> 后续转冷”的时间窗。 - 最新真实结果因此又前进了一步:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 现在稳定得到 `checkpoint_disk=2 signal_driven=1 signal_emissions=12 active_signals=8 signal_attempts=12 signal_resident_skips=12 signal_disk_failures=0 resident_echoes=3`。这说明系统已经不只是“恢复锚点后给 resident 邻居打一点电流”,而是开始出现“resident 邻居留下衰减信号痕迹,之后在转冷后真的沿这条信号链再次被招回”的第一例自然运行结果。 - 这一步做完后再次回归,`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/motor_window_probe = 4/4`,`./build/src/rem_association_probe = 3/3`,`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`,`./build/src/live_checkpoint_reactivation_probe = 1/1` 继续全部通过。当前最新边界也因此更明确了:现在已经第一次在真实长跑里看到了 `signal_driven>0`,下一步如果还要继续推进,就应该继续增强“resident 痕迹如何在后续转冷阶段稳定转成更多 signal-driven reactivation”,而不是回头堆高层条件判断。 - 这轮继续把这条链往“神经元真实转冷再招回”推进:`ColdStorageNeuronRecord` 现在会统一通过共享填充路径,把当前神经元的 `membrane/recent_drive/dendritic_drive/calcium` 与一个新的 `signal_trace/signal_anchor_virtual_id` 一起写进 `eviction` 和 `checkpoint` 冷记录。这里的 `signal_trace` 只来自现有 `cold_reactivation_signals` 的衰减值,再按 `cold_storage_evict_signal_imprint_scale` 缩放写入,不是额外标签或规则。因此即使内存里的活跃信号表先衰减,后续真正转冷的神经元也不会像“从没被局部波及过”那样完全静默。 - 同一轮还把这段冷态信号印迹真正接回再激活路径:`try_reactivate_cold_neuron()` 现在除了继续读取运行中仍存活的 `cold_reactivation_signals`,还会把冷记录里的 `signal_trace` 以 `cold_storage_reactivate_stored_signal_weight` 加回候选评分;`instantiate_cold_neuron()` 也会在恢复时把这段冷态快变量残迹重新注入 `trace/recent_drive/excitatory_current/dendritic_drive/calcium`。这样信号驱动仍然完全围绕神经元状态和已有突触传播,不需要引入更高层的规则。 - 进一步诊断后,这轮又发现另一个更底层的瓶颈不是“信号写不进去”,而是“这些被局部信号波及过的 resident 目标后续很少真正转冷”。为此现在又新增了 `cold_storage_evict_signal_preference_weight`、`cold_storage_signal_spill_min_active_signals`、`cold_storage_signal_spill_resident_headroom`。前者只在神经元已经满足静默窗口时,轻微偏向近期带有衰减信号痕迹的回冷候选;后两者则允许系统在 resident 窗口只剩少量余量、且 `active_signals` 已经堆起来时,提前做一次非常保守的安静单元回冷,而不是死等到“槽位完全用尽”才回冷。 - 最新真实结果因此重新回到更健康的自然链路:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 现在稳定得到 `checkpoint_disk=2 signal_driven=1 signal_emissions=20 active_signals=12 signal_attempts=20 signal_resident_skips=20 signal_disk_failures=0 resident_echoes=3`,对应 `cold_storage/live_checkpoint_probe/manifest.txt` 也记录为 `reactivations=2 checkpoint_disk=2 signal_driven=1 last_signal_driven=35 last_signal_anchor=61 last_signal_target=34`。和上一轮相比,这轮不是把信号简单放大,而是把它收敛成更少但更持久的局部冷链路,同时重新保住了自然运行里的 `signal_driven=1`。 - 这轮改完后再次完整回归,`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/motor_window_probe = 4/4`,`./build/src/rem_association_probe = 3/3`,`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`,`./build/src/live_checkpoint_reactivation_probe = 1/1` 继续全部通过。当前新的边界因此也更具体了:系统已经能在真实长跑里稳定重现 `checkpoint_disk=2 + signal_driven=1`,但 `evictions` 仍然只有 `2`,说明下一步最值得继续推进的,是让“带信号痕迹的 resident 目标”在不破坏静默窗口的前提下更频繁地完成后续转冷,而不是继续增加高层排序或规则。 - 这轮继续沿着同一条“只看神经元信号传递”主线收口后,先把一个前后不一致的问题补平了:之前冷却筛选里已经允许“近期被局部信号波及、但现在足够安静”的神经元更容易回冷,可真正写 `ColdStorageNeuronRecord` 时却只读取仍在 `cold_reactivation_signals` 表里的瞬时痕迹,所以一旦这张表先衰减,神经元虽然已经转冷,冷记录里的 `signal_trace` 仍可能掉成 `0`。现在这两段已经统一到同一条冷却信号评分上,避免“筛选承认有残迹、写盘却当作完全静默”。 - 这次新增的不是规则系统,而是把神经元自身已经存在的局部残余也算进冷却印迹:除了仍然读取 `cold_reactivation_signals` 里的短时传播痕迹,还会把神经元本体的 `recent_drive/dendritic_drive/calcium_level/trace/excitatory_current` 压成一个连续 `local_signal_residue`,再通过新的 XML 参数 `cold_storage_evict_local_signal_scale`、`cold_storage_evict_local_signal_floor` 控制这段残余在写冷记录时保留多少。这样即使外部信号表已经衰减,只要神经元本体还留着局部后电位和树突/钙尾迹,它转冷时就不会被写成“从未被碰过”的全静默单元。 - 最新 `./build/src/live_checkpoint_reactivation_probe` 结果已经把这个修正直接打出来了:当前稳定得到 `reactivations=2 checkpoint_disk=2 signal_driven=2`,并且目标冷记录从上一轮那种 `signal_target_cold_signal_trace=0.000` 提升到了 `signal_target_cold_signal_trace=0.891`。同一轮里 `last_reactivated=47 last_reactivated_signal_trace=0.456`,说明现在不只是自然运行里再次出现了 `signal_driven>0`,而且“近期被局部信号波及过的神经元转冷后仍带着残余可激活性”也终于更稳定地写进了冷记录。 - 这轮 probe 里还出现了一个值得说明的现象:`signal_target_cold_signal_anchor=0`。它的含义不是“没有信号”,而是“当前保留下来的主要是该神经元自身的局部残余尾迹,已经不足以唯一追溯到一个仍在线的单一上游锚点”。这仍然符合神经元原理,因为真实局部回路里,后电位、树突驱动和钙尾迹本来就可以在上游尖峰已经过去后继续短暂残留;当前实现只是把这段残余作为冷态快变量保存下来,没有额外打语义标签或塞规则键值。 - 这轮又把这层局部残余继续外移到了 XML,避免后面再为了微调“哪一种局部快变量更像将要回冷的残余可激活性”反复改源码重编译。现在除了总量参数 `cold_storage_evict_local_signal_scale` 和地板参数 `cold_storage_evict_local_signal_floor` 之外,`recent_drive`、`dendritic_drive`、`calcium_level`、`trace`、`excitatory_current` 五个分量的权重也都已经变成 XML:`cold_storage_evict_local_recent_drive_weight`、`cold_storage_evict_local_dendritic_weight`、`cold_storage_evict_local_calcium_weight`、`cold_storage_evict_local_trace_weight`、`cold_storage_evict_local_excitation_weight`。 - 当前 live 配置里,这组权重被轻微收敛到更偏“局部后电位和树突尾迹”而不是“单纯兴奋电流尾巴”的方向:`recent_drive=0.50`、`dendritic=0.24`、`calcium=0.14`、`trace=0.08`、`excitatory=0.04`。这里仍然不是新规则,而只是说,当外部 `cold_reactivation_signals` 已经衰减时,冷却写盘更相信神经元自身仍保留的局部驱动/树突/钙残余。 - 参数外移后再次重跑,结果仍然稳定:`./build/src/live_checkpoint_reactivation_probe` 当前得到 `reactivations=2 checkpoint_disk=2 signal_driven=2 last_reactivated_signal_trace=0.462 signal_target_cold_signal_trace=0.462`;`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/motor_window_probe = 4/4`。这说明这一步确实只是把局部快变量权重 XML 化,没有破坏推理、运动边界或冷链路方向。 - 这轮又把“来源锚点”继续往神经元本体里下沉了一层,不再只依赖外部 `cold_reactivation_signals` 表。现在只要神经元在正常突触传递里真实收到来自某个前驱神经元的局部电流,或者在冷恢复后的 resident echo 里被某个恢复锚点再次波及,它本体就会留下一个会衰减的 `local_signal_anchor_virtual_id/local_signal_anchor_trace`。冷却写盘时,如果外部短时表已经衰减,但神经元本体这段来源残迹还在,`signal_anchor_virtual_id` 也能继续写进冷记录。 - 这次新增的仍然不是规则系统,而只是把“最近哪条真实信号链路给这个神经元留下了局部残余”保存成一个会衰减的本体快变量。它不会写语义标签,不会直接指定谁必须恢复,也不会跳过已有突触传播;只是让神经元在跨过 `resident -> cold` 时间窗时,不会因为外部短时表先退掉,就完全失去最近来源。 - 与此同时,这层来源残迹也已经 XML 化了:除了 `cold_storage_evict_local_anchor_decay` 控制本体来源残迹衰减速度,现在还新增了 `cold_storage_evict_local_anchor_synapse_scale`,控制正常突触传递时给这段来源残迹写入多强。当前 live 配置把它调到 `0.72`,让“正常局部突触传播留下的最近来源”比默认更容易跨过回冷时间窗。 - 最新 `./build/src/live_checkpoint_reactivation_probe` 结果已经把这个改动打出来了:当前得到 `reactivations=3 checkpoint_disk=3 signal_driven=3`,`last_reactivated=34 last_reactivated_signal_trace=0.626 last_reactivated_signal_anchor=61`,并且目标冷记录也终于不再是 `signal_target_cold_signal_anchor=0`,而是 `signal_target_cold_signal_anchor=61 signal_target_cold_signal_trace=0.626`。这说明现在不只是“神经元还留着局部残余”,而且“这段残余最近主要来自哪条真实局部信号链路”也更稳定地跨过了回冷写盘。 - 这轮还顺手把 live probe 的运行时视角补全了:现在能直接看到某个还驻留在窗口里的目标神经元,当前本体还记着哪个 `runtime_anchor`、还剩多少 `runtime_anchor_trace`。这一步本身不改变动力学,只是把“来源锚点到底是在运行时就没留下,还是留下了但写盘时丢了”明确打出来,方便后面继续沿纯信号链调试。 - 继续往前推后,这轮又补了一层很窄的“活跃冷信号来源回写本体锚点残迹”:只要某个神经元当前仍在 `cold_reactivation_signals` 表里带着活跃来源,处理拍里就会按一个很小的比例 `cold_storage_evict_local_anchor_active_scale`,把这条来源再轻轻刻回 `local_signal_anchor_virtual_id/local_signal_anchor_trace`。这不是新记忆表,也不是新规则,只是让外部冷信号表和神经元本体来源残迹在衰减期里不再各走各的。 - 这层“活跃来源回写本体”也已经 XML 化了。当前 live 配置把 `cold_storage_evict_local_anchor_active_scale` 设成 `0.95`,配合 `cold_storage_evict_local_anchor_decay=0.965` 和 `cold_storage_evict_local_anchor_synapse_scale=0.72`,让“当前还活着的冷来源”和“神经元本体里最近的来源残迹”在回冷前更容易保持一致。 - 这轮多次 live 重跑后,结果比前几轮更稳地收敛到正确方向:当前一轮完整验证得到 `reactivations=3 checkpoint_disk=3 signal_driven=3 last_reactivated_signal_anchor=61 signal_target_cold_signal_anchor=61 signal_target_cold_signal_trace=0.534`。这说明现在不只是偶尔能把来源锚点带进冷记录,而是“活跃来源 -> 本体来源残迹 -> 冷记录来源锚点”这条链本身已经更连续了。 - 顺着同一条链继续查 `live_checkpoint_reactivation_probe` 偶发掉回 `eviction_disk` 的原因后,这轮又修正了一个更底层的来源选择偏差:旧版 `load_cold_record_from_disk()` 只要在目录里先看到较新的 `evict_*`,就会直接把它当作恢复来源,哪怕同一 `virtual_id` 在时间上很接近的 `checkpoint_*` 里已经有稳定冷痕迹。现在新增 XML 参数 `cold_storage_restore_checkpoint_preference_ticks`,让加载时会同时比较最新 `evict_*` 和最新 `checkpoint_*`;只要 checkpoint 没比 eviction 旧太多,就优先恢复已经固化的 checkpoint 痕迹。 - 这一步仍然没有引入规则系统,修的只是“短时搬运残迹”和“已固化冷痕迹”谁更该代表当前神经元可恢复状态。当前工程里,`evict_*` 更像 resident 窗口刚释放时留下的短时搬运副本,`checkpoint_*` 更像按块稳定写下的分布式冷记忆;当两者时间上足够接近时,优先 checkpoint 比“谁文件名更新就先吃谁”更符合神经元信号残迹的时间尺度。 - 这层来源选择时间窗也已经 XML 化了。当前 live 场景把 `cold_storage_restore_checkpoint_preference_ticks` 设成 `128`,默认运行配置也接入了同名参数,后面如果要继续压缩或放宽这个“固化优先”窗口,不用再改代码重编译。 - 这轮改完后重新连续重跑 `./build/src/live_checkpoint_reactivation_probe` 5 次,结果都保持 `pass=1`,并且每次都稳定是 `eviction_disk=0`、`checkpoint_disk>=2`、`signal_driven>=2`。同一轮里 `./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/motor_window_probe = 4/4`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/rem_association_probe = 3/3` 也继续全部通过,说明这次纠偏修的是冷痕迹来源判定,没有破坏逻辑推理、睡眠静默窗口或运动边界。 - 继续往下核对后,这轮又发现另一个更细的来源丢失点:有些 run 里 `signal_trace` 还明显存在,但 `signal_anchor_virtual_id` 会先掉成 `0`。根因不是“信号没了”,而是神经元本体的局部残余还能靠 `recent_drive/dendritic_drive/calcium` 多留几拍,而来源刻痕单独按衰减清空得更快。现在新增 `cold_storage_evict_local_anchor_residue_hold_scale`,让来源刻痕在本体局部残余还明显高于地板时,被这一段残余轻轻托住,而不是先于残余完全消失。 - 这一步仍然没有引入规则系统,改的只是同一个神经元本体里两种快变量的耦合衰减:一边是“还剩多少局部可再激活性”,另一边是“这段可再激活性最近主要来自哪条局部链路”。再加上本轮也已 XML 化的 `cold_storage_evict_local_anchor_same_source_gain`,现在同一来源的弱重复输入会慢慢把来源刻痕积起来,而本体残余存在时又不会太早把来源 ID 清空。 - 最新重新连跑 `./build/src/live_checkpoint_reactivation_probe` 12 次后,这条修正已经开始直接体现在输出上:这批 run 里 `last_reactivated_signal_anchor` 已经稳定不再掉成 `0`,而之前经常归零的 `signal_target_cold_signal_anchor` 也开始更多保留下来,例如同一批结果里已经能看到 `signal_target_cold_signal_anchor=42/28/31/61` 这类非零来源。说明现在“本体残余还在,但来源 ID 先没了”的断层已经明显收窄。 - 再往前推一层后,这轮又把 resident 槽位压力从“只看外部 `active_signals` 表”收紧成“外部短时表 + 神经元本体局部残余”共同决定。现在新增 `cold_storage_signal_spill_local_pressure_weight`,会把那些已经安静下来、但本体里仍保留局部来源残余的 resident 神经元,按连续压力轻微折算进 spill 触发里。这样系统不必死等外部冷信号表堆高,才能更早给这类 quiet-but-still-marked 的神经元腾出 resident 槽位。 - 这一步也仍然只围绕神经元信号传递。它没有指定“哪个神经元必须回冷”,只是说当某些 resident 神经元虽然外部表面上已经不太活跃,但本体里仍保留局部来源残余时,这段残余本身也应算作 resident 压力的一部分。当前 live 配置把 `cold_storage_signal_spill_local_pressure_weight` 设成 `0.90`,默认运行和 smoke 配置则更保守地设成 `0.50`。 - 最新这批 `./build/src/live_checkpoint_reactivation_probe` 结果已经开始显示这一步的效果:在保持 `eviction_disk=0`、`checkpoint_disk=2-3`、`signal_driven=2-3` 的同时,部分 run 的 `evictions` 已经重新升到 `4`,而且 `signal_target_cold_signal_anchor` 继续稳定出现 `42/28/31/61` 这类非零来源。当前结论是,这一步开始把“带来源残余的 resident 目标”更自然地推过 `resident -> cold` 时间窗,而且没有破坏既有推理、睡眠或运动边界。 - 再往前看 cold-to-runtime 这段交接后,这轮又补了一层更贴近局部信号传递的 resident 目标回响:过去 resident 目标收到 `cold_reactivation_signals` 时,主要是记录来源刻痕和外部短时表,但它自己的 `trace/recent_drive/dendritic_drive/calcium` 不一定会因此留住足够明显的本体回响,也不一定进入下一拍活跃队列。现在新增 `cold_storage_reactivate_resident_signal_hold_scale`,让 resident 目标在收到这类冷信号时,额外保留一小段 subthreshold 本体快变量回响;当这段回响高于局部地板时,还会把该神经元放入下一拍活跃队列。 - 这一步仍然不是规则系统,而是把“收到局部信号后,神经元自身会短暂更可激活”这件事再往前落实了一层。当前 live 配置把 `cold_storage_reactivate_resident_signal_hold_scale` 设成 `0.34`,默认运行和 smoke 配置则保持在 `0.16` 的更保守水平。 - 最新这批 `./build/src/live_checkpoint_reactivation_probe` 结果已经开始体现这层交接补强:在同样维持 `eviction_disk=0` 的前提下,`signal_target_found=1` 的 run 比上一轮更常出现,并且运行时也开始更稳定地看到 `signal_target_runtime_anchor_trace` 非零,例如 `0.446/0.485/1.344` 这类值。当前结论是,cold 记录里已经带来源和残余的目标,现在更有机会在运行时留下一个可见窗口,而不是到 probe 打印时又完全看不见。 - 继续沿同一条“只看神经元信号传递”主线往下核对后,这轮又纠正了一个更底层的探针偏差:过去 `cold_storage_last_signal_target_virtual_id` 更像“最后一次被写入冷信号表的目标”,并不一定还是 probe 打印时 resident 窗口里最可见、局部残余最强的那颗神经元。现在新增了 4 个 XML 参数 `cold_storage_runtime_target_signal_weight`、`cold_storage_runtime_target_residue_weight`、`cold_storage_runtime_target_anchor_weight`、`cold_storage_runtime_target_min_score`,并把目标追踪改成每次冷信号衰减/写入后都重新扫描 resident 窗口,按“当前活跃冷信号强度 + 神经元本体局部残余 + 本体来源刻痕”选出最可见的运行时目标。 - 这一步仍然不是规则系统,只是把 probe 盯住的对象,从“历史上最后一次被碰到的 id”改成“此刻仍保有更强局部可再激活性和来源残迹的 resident 神经元”。按生物原理核对,这更接近真实局部回路里“哪颗细胞此刻还留着更强的后电位、树突驱动和来源偏向,就更容易在下一拍继续被招募”的连续竞争,而不是高层规则。 - 最新重新连跑 `./build/src/live_checkpoint_reactivation_probe` 8 次后,这层修正已经直接体现在结果里:当前 8/8 都保持 `pass=1`、`eviction_disk=0`、`signal_target_found=1`,而且 `signal_target` 与 `resident_target` 已经统一到同一个当前 resident 可见目标,`signal_target_runtime_anchor_trace` 稳定落在 `0.510/0.533/0.539/1.394/1.308/1.368/1.282/0.556` 这组非零值上。连同本轮再次回归的 `./build/src/reasoning_probe = 6/6 aggregate_score=1.000`、`./build/src/motor_window_probe = 4/4`、`./build/src/sleep_memory_probe = 3/3`、`./build/src/rem_association_probe = 3/3`,当前结论可以继续前推:现在不只是 cold 记录里能保住来源和残余,probe 看到的运行时目标本身也已经更贴近“当前仍在传信号的那颗 resident 神经元”。 - 继续往下核对后,这轮又补了一处更基础但很关键的静默计数纠偏:不管是刚从 cold 恢复出来的神经元,还是当前 resident 窗口里收到冷信号并留住本体回响的目标,只要它这一拍确实被局部输入重新波及,就不应该继续背着旧的 `idle_ticks`。现在这两条路径都会把 `idle_ticks` 直接清成 `0`,避免“已经被真实信号带活,却仍被当成长期静默单元”的矛盾状态。 - 这一步也仍然是纯神经元原理层面的纠偏,不是规则系统。它表达的是一个很基础的事实:神经元一旦刚收到局部输入,它的“静默时长”就应该被打断,而不是等外层逻辑层手工判定。 - 最新重跑里,这个纠偏已经直接体现在输出上:例如新的 `live_checkpoint_reactivation_probe` 结果里,`resident_target_found=1 resident_target_idle=0 resident_target_runtime_anchor_trace=0.537` 已经能稳定打出来。当前结论是,这一步虽然小,但确实继续收紧了 cold-to-runtime 的真实交接。 - 继续往前核对后,这轮又把同样的纠偏补到了 resident echo 路径上。也就是说,现在只要神经元是因为这次局部冷信号或 resident echo 真正被波及,它的 `idle_ticks`` 都会被打断,而不会因为走的是另一条局部传播支路就继续背着旧静默历史。 - 这一步依然没有引入新规则,只是把“刚被真实输入碰过就不再算长期静默”这个同一条生理事实,在 `cold restore`、`resident signal hold` 和 `resident echo` 三条路径上补齐成一致行为。 - 这轮改动后的完整回归仍然稳住:`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/motor_window_probe = 4/4`,`./build/src/rem_association_probe = 3/3`,`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`,`./build/src/live_checkpoint_reactivation_probe = 1/1`。当前最值得继续推进的缺口因此也更明确了:下一步不该回头堆高层条件,而应继续让“带局部残余的 resident 目标”更自然地完成回冷,并在后续窗口里再次沿已有突触链被招回。 - 继续沿这条 `resident -> cold -> signal-driven reactivation` 主线往下推后,这轮又把回冷端的静默判定往“纯神经元信号尾迹”方向收紧了一步。过去即使某个 resident 神经元已经不再活跃、也没有近期放电,只要它还残留一点 `dendritic_drive/excitatory_current`,就常常要等到完整的 `cold_storage_evict_idle_ticks` 之后才会被认为足够安静,导致已经存在的局部信号尾迹在 resident 窗口里白白衰减掉。现在新增了 3 个 XML 参数 `cold_storage_evict_signal_idle_relief_ticks`、`cold_storage_evict_signal_dendritic_relief_weight`、`cold_storage_evict_signal_excitation_relief_weight`,让“已经带局部信号残余、但本拍并未活跃/放电”的 resident 神经元,在回冷筛选里得到一小段等效静默时长和树突/兴奋尾迹缓释。 - 这一步仍然不是规则系统,因为它没有指定“哪一个目标必须回冷”,也没有新增语义标签,只是把同一颗神经元体内已经存在的局部尾迹解释成“更接近一个即将被固化的静默单元”。按生物原理核对,这更接近真实局部回路里后电位和树突电流在停止放电后进入残余衰减期,并逐渐从运行时窗口退出的过程。 - 最新真实运行结果已经直接支持这层修正:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 现在在 `tick=400` 就已经出现 `checkpoint_disk=1 signal_driven=1 evictions=1`,说明带残余的 quiet resident 单元比前一轮更早跨过了回冷窗口;整段长跑仍保持 `eviction_disk=0`。同一轮连跑 `./build/src/live_checkpoint_reactivation_probe` 8 次后,仍然全部保持 `pass=1`、`signal_target_found=1`,并能看到多次 `checkpoint_disk=2-3 signal_driven=2-3`,例如 `last_reactivated=67 last_reactivated_signal_trace=0.769`、`signal_target_cold_signal_trace=0.939`、`signal_target_cold_signal_anchor=36` 这类更强的 cold-to-runtime 闭环信号。 - 这轮回归也继续全部通过:`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/motor_window_probe = 4/4`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/rem_association_probe = 3/3`。当前结论因此可以继续前推:现在不只是运行时更容易盯住当前最可见的 resident 目标,而且这类已经带局部信号尾迹的 quiet resident 神经元,也开始更早完成回冷并再次进入 signal-driven reactivation 闭环。 - 继续往同一条闭环再往下查后,这轮又纠正了维护期里的一个更底层缺口:过去部分 `trophic_support` 低、`idle_ticks` 长的神经元,会在 `run_neuron_maintenance()` 里被直接 `retire_neuron()` 清掉,即使它们身上还留着足够明显的局部信号尾迹。这样会让一段本来还可能跨过 `resident -> cold -> signal-driven reactivation` 的痕迹,在 resident 窗口里被直接删掉,而不是先固化进 cold storage。现在新增了 XML 参数 `cold_storage_maintenance_signal_min_score`,让这类“已经足够安静、但仍带局部信号分数”的神经元,在维护期先走 cold storage 迁移,再退出 resident。 - 这一步仍然不是规则系统。它没有新增谁必须被恢复的高层条件,只是把“仍带局部尾迹的静默神经元,退出 resident 前应该先把这段痕迹固化下来”这件事落到维护路径里。按生物原理核对,这更接近局部记忆痕迹先被稳定保存、然后神经元再从当前活动窗口退场,而不是把尚未完全衰减的痕迹直接抹掉。 - 最新真实结果已经把这层修正直接打出来了:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 现在在 `tick=800` 就达到 `checkpoint_disk=2 signal_driven=2`,到 `tick=2400` 已经推进到 `evictions=7 checkpoint_disk=2 signal_driven=2`;而重新连跑 `./build/src/live_checkpoint_reactivation_probe` 8 次后,仍然全部 `pass=1`、`signal_target_found=1`,并且已经出现 `checkpoint_disk=4 signal_driven=3 evictions=13`、`last_reactivated=44 last_reactivated_signal_trace=0.567 last_reactivated_signal_anchor=12` 这类更深的冷链路推进。对应的运行时目标和 cold 目标也继续保持非零来源与残余,例如 `signal_target_runtime_anchor_trace=1.500`、`signal_target_cold_signal_anchor=44`。 - 这轮完整回归依然稳住:`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/motor_window_probe = 4/4`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/rem_association_probe = 3/3`。当前结论因此可以继续前推:现在不只是 quiet resident 神经元更早回冷,而且连维护期本来会被直接清退的带尾迹单元,也开始先进入 cold storage,再沿已有突触链继续参与后续 signal-driven reactivation。 - 这轮还专门补过一次内存安全核查:最初的冷迁移版本在长时烟雾场景里暴露出 `active_next[]` 越界,根因是同一拍里 `active_next` 计数可能被重复推进。当前版本已经用 ASan 复核过,恢复了原有传播时序,同时保留数组上限保护,`sleep_memory_probe=3/3`、`rem_association_probe=3/3`、`motor_window_probe=4/4`、`reasoning_probe=6/6` 也都重新回到稳定通过。 - 这版冷存储仍然是“虚拟全脑映射骨架,而不是终版分页器”:它已经实现了目录创建、manifest、稳定虚拟 ID、按块索引和周期刷盘,说明“全脑目标放存储、内存只放当前驻留窗口”这条路已经开始落地;但它还没有做到真正的按块换入换出、按连接邻域懒加载、跨块轴突传播延迟和快变量恢复,所以当前驻留神经元数组仍然是 `max_neurons=8192` 级别的常驻窗口,而不是已经能在 860 亿虚拟神经元图谱上做连续事件级分页。 - 这轮真正的结构性调整不是再加一串离散高层规则,而是把睡眠期回放往“海马 `CA3/CA1` 到皮层 `L2/3/L5` 的局部传播 + 非 `motor` 突触记忆标签整固”收拢:`NREM` 入睡首拍允许从最新情景痕迹里点燃更安静的海马-皮层回放种子,整段 `NREM` 再做低强度、非运动、局部的痕迹整固;`REM` 则继续偏向海马到皮层、皮层层间的关联重组。这样更接近“信号沿局部回路传播并留下痕迹”,而不是用一个全局睡眠增益器把所有东西一起抬高。 - 本轮重新核对后,当前最不符合“纯神经元信号传递”的残余,已经进一步收口到动作读出层和容量压缩层:`motor_basis_drive`、`motor_basis_slow_bias` 和 `planned_motor_command` 仍然是对大规模神经活动的低维读出;与此同时,`episodic_traces`、`working_memory_slots`、`semantic_prototypes`、`relational_bindings`、`binding_workspace` 以及新加入的 `previous_motor_basis_trace` 虽然都已经改成连续行为通道痕迹,但它们仍然只有很小容量,还不是皮层/海马里的真实分布式记忆痕迹。当前版本已经把方向收敛到“局部信号传播 + 连续通道竞争 + 低层运动接力”,后续继续优化时应优先把更多控制效果下沉到局部神经元/突触传播,而不是重新往高层堆模板或规则表。 - 这轮继续只沿“神经元信号传播链”往前推,没有再加新的行为规则。新增的是 `cold_storage_reactivate_resident_echo_signal_scale`,让 checkpoint 锚点恢复后,对 resident 邻居产生的局部回响不只停留在 `trace/recent_drive/dendritic_drive/calcium` 的短时抬升里,还会按 XML 可调比例写回短寿命 `cold_reactivation_signal` 池。这样这些 resident 邻居后面如果自然转冷,冷记录里更可能带着“最近是被哪个锚点带响”的来源刻痕。 - 按生物原理逐一核对,这一步仍然是“神经元收到局部输入后留下可衰减的短时痕迹”,而不是规则系统。它没有指定哪一个邻居必须恢复,也没有引入语义标签,只是把一次真实局部回响留下来的来源偏置,继续保存在同一套会自然衰减的信号残余里。这个含义更接近突触后电位、树突电流和钙尾迹在短时间窗里的保留,而不是高层 if-else 决策。 - 最新实测结果也说明这一步确实在前推自然链路:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 现在把 `signal_emissions` 从前一轮常见的 `15` 抬到了 `47`,`active_signals` 一度达到 `17`,并把整段长跑里的 `checkpoint_disk` 重新推进到 `2`;对应 `./build/src/live_checkpoint_reactivation_probe` 也回到 `reactivations=2 checkpoint_disk=2 signal_driven=2`,而 `signal_target_runtime_anchor_trace=1.176`、`signal_target_cold_signal_anchor=61` 这类“resident 目标仍带锚点来源”的输出继续保持非零。 - 当前边界也要明确记下来:这轮之后,自然长跑里的 `checkpoint_neighbors` 仍然是 `0`,`signal_loadable` 也还没有在默认长跑里自然长出来。说明 resident 回响留下的锚点痕迹已经更强,checkpoint 盘恢复频次也确实增加了,但“同一锚点下的冷邻居在后续时窗里再次变成可加载并被真正恢复”这最后一段链路还没有打通。下一步最值得继续推进的方向,因此仍然是让这些带锚点痕迹的 resident 邻居在自然回冷后,更稳定地保留可加载冷突触摘要,而不是回头堆高层规则。 - 这轮完整回归也继续全部通过:`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/motor_window_probe = 4/4`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/rem_association_probe = 3/3`,`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`,`./build/src/live_checkpoint_reactivation_probe = 1/1`。所以当前结论可以写得更明确一点:新加入的 resident 回响锚点留痕,已经证明自己不会破坏推理、睡眠静默窗口或运动低肌张力边界,并且确实让冷链路往前走了一步。 - 这轮继续沿“神经元信号传播链”往前推时,又把冷写盘时的突触摘要保留顺序往当前锚点链路收紧了一步。新增了 `cold_storage_restore_synapse_anchor_match_score`、`cold_storage_restore_synapse_anchor_trace_weight`、`cold_storage_restore_synapse_signal_match_score` 3 个 XML 参数,让冷摘要评分不再只看 `strength/memory_tag/short_term_resources/age/idle`,还会额外偏向“owner 和对端最近是否共同带着同一个锚点来源”“对端是否就是当前锚点”“这条连接两端是否都还残留同一来源的冷信号”。 - 这一步依然符合生物原理,不是加规则。它表达的是:刚刚真实参与过同一局部传播链的连接,转冷时更应该保留在可恢复摘要里,因为它们更像仍带短时后电位、树突残余和来源偏置的局部回路边,而不是任意语义上被挑出来的“重要连接”。 - 最新实测结果已经支持这层收紧:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 现在已经推进到 `checkpoint_disk=3 reactivations=3 signal_driven=3 resident_echoes=13`,比上一轮继续前进;对应 `./build/src/live_checkpoint_reactivation_probe` 也推进到 `reactivations=3 checkpoint_disk=3 signal_driven=3`,并且 `signal_probe_neighbors=10 signal_probe_loadable=10`,说明最近一次信号锚点周围的冷邻域可见度比上一轮又更高了。 - 当前边界同样要记清楚:虽然这轮“锚点相关连接优先写进冷摘要”已经让自然长跑里的 `checkpoint_disk` 和 `signal_probe_neighbors` 继续上升,但默认自然长跑里的 `checkpoint_neighbors` 仍然还是 `0`,`signal_loadable` 也仍未在主程序长跑里转正。当前最值得继续推进的缺口因此更明确了: 不是再去找更多规则,而是继续提高“这些已经被保留下来的锚点相关冷邻居,在后续时窗里真正变成主程序可加载候选”的概率。 - 这轮继续沿“神经元信号残余自然衰减后还能再次命中后续转冷目标”这个方向收紧,又新增了 `cold_storage_reactivate_signal_rescan_budget` 和 `cold_storage_reactivate_signal_rescan_min_drive`。现在每次冷信号写入后,系统会在很小预算内重新扫描仍未过期、且当前已经不在 resident 的冷信号目标,尝试把那些“之前因为还在 resident 而被 `resident_skip` 掉、后来才自然转冷”的目标记成新的 loadable 冷目标。 - 这一步仍然不是规则系统,因为它没有指定哪个目标必须恢复,也没有新建语义标签,只是把尚未衰减完的局部冷信号残余,在后续几拍里继续沿同一个目标做一次低预算复查。按生物原理核对,这更接近“局部后电位和来源偏置在短时间窗里仍可能再次命中刚刚退出工作集的细胞”,而不是高层调度器硬塞恢复对象。 - 最新结果说明这条链已经接上,但当前 live 场景里真正被这条重扫命中的目标还很少:`./build/src/live_checkpoint_reactivation_probe` 这次收敛到了 `signal_probe_neighbors=1 signal_probe_loadable=1`,而主程序长跑里 `signal_loadable` 仍然没有转正。也就是说,新的 rescan 路径已经把“候选冷邻居”从大而散收紧成更窄的一条链,但它还没有把默认长跑推进到“主程序统计里也开始稳定记住 loadable 冷目标”的阶段。 - 这轮继续只围绕“神经元收到局部输入后,尾迹怎样跨 resident -> cold 边界继续衰减传播”往前推,新增了 XML 参数 `cold_storage_reactivate_cooling_signal_scale`。现在带局部锚点尾迹的 resident 神经元在被逐出到 cold storage 时,会把自己当前 `signal_trace` 按可调比例重新写回同一套短寿命 `cold_reactivation_signal` 池;这样它刚转冷后的几个时间窗里,系统还能继续沿同一个锚点来源去重扫它,而不是在 resident/cold 边界把这段尾迹直接断掉。 - 这一步按生物原理再次逐条核对,仍然不是规则系统。它没有新增任何“某类节点必须恢复”的语义条件,也没有塞新的高层 if-else,只是把已经存在于神经元本体里的局部锚点尾迹,继续保存在会自然衰减的冷信号池里。更贴近的生物含义是:细胞刚退出当前活动窗口时,膜/树突/钙相关的短时残余不会在边界上瞬间归零,而会在一小段时间窗里继续影响后续可再激活性。 - 新二进制下这条链已经真正把主程序统计推过了之前的卡点:`./build/src/live_checkpoint_reactivation_probe` 当前得到 `active_signals=6 main_signal_loadable=6 signal_probe_neighbors=5 signal_probe_loadable=5`,说明 probe 可见冷邻域和主程序当前窗口统计已经开始对齐;`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 也从过去整段 `signal_loadable=0`,推进到 `tick=800 signal_loadable=1`、`tick=2000 signal_loadable=2`、`tick=2400 signal_loadable=6`。这表示“后来转冷的带锚点尾迹目标”已经能自然进入主程序的 loadable 冷目标窗口,而不是只在 probe 里可见。 - 当前边界也要继续明确记下来:虽然 `signal_loadable` 已经在主程序自然长跑里转正,但 `checkpoint_neighbors` 仍然还是 `0`。所以这一步证明我们已经打通了“冷尾迹统计和真实可加载候选”这段链路,但“同一锚点下的冷邻居被真正一起恢复成 resident 局部回路”还没有在默认长跑里自然发生。下一步更值得继续推进的仍然是 checkpoint 邻居实际恢复时机,而不是回头加规则。 - 这轮完整回归再次保持不破坏原边界:`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`,`./build/src/motor_window_probe = 4/4`,`./build/src/sleep_memory_probe = 3/3`,`./build/src/rem_association_probe = 3/3`,`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`,`./build/src/live_checkpoint_reactivation_probe = 1/1`。所以当前可以更明确地说,这次 resident -> cold 尾迹接力仍然是纯神经元信号传播方向上的安全前推,没有破坏逻辑推理、睡眠静默窗口或运动低肌张力边界。 - 这轮继续只沿“神经元局部信号尾迹怎样在后续几拍把同锚点冷邻居真正拉回 resident 回路”往前推,没有加任何规则表。改动点有两个:一是 checkpoint 邻居恢复不再只押注锚点刚恢复的那一拍,而是只要当前活跃冷信号池里已经出现同锚点、可加载的冷目标,就允许用很小预算继续补一次邻居恢复;二是 checkpoint 邻居打分里额外并入“这个冷邻居此刻是否正被同一锚点冷信号真实带响”的连续分值。 - 这一步按生物原理再次核对,仍然只是局部残余驱动的延迟恢复,不是规则系统。它没有引入“某类节点必须恢复”的语义条件,也没有给某些虚拟 ID 特权,只是让已经存在的同锚点冷信号尾迹,在锚点恢复后的几个时间窗里继续影响局部回路补全。更贴近的生物含义是:局部传播链上的残余后电位/树突驱动,不会只在第一拍有效,而会在短时间窗里继续提高相关邻居被重新招回的概率。 - 新结果已经把这最后一段链真正推过了默认长跑边界:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 现在在 `tick=1200` 已经出现 `checkpoint_neighbors=1`,到 `tick=2400` 推进到 `checkpoint_neighbors=10 checkpoint_disk=11 reactivations=11 last_neighbor=18 neighbor_anchor=63`;对应 `./build/src/live_checkpoint_reactivation_probe` 也已经得到 `checkpoint_disk=6 checkpoint_neighbors=5 reactivations=6`。这说明“同一锚点下的冷邻居被真正一起恢复成 resident 局部回路”已经从确定性 probe 推进到了主程序自然运行。 - 当前边界也因此更新了:现在默认长跑里 `checkpoint_neighbors` 已经转正,但某些 run 里 `main_signal_loadable` 和 `signal_probe_neighbors` 反而会回落到 `0`。这不是回退成看不见,而更像“可加载冷邻居更早被真正恢复成 resident 了,所以不再停留在冷候选窗口里”。后面如果继续推进,最值得做的是把这两种观测面再更清晰地区分成“仍在冷态等待恢复的候选数”和“已经被补回局部回路的邻居数”。 - 这轮把这层观测拆分真正补到了运行时输出里。现在 `checkpoint_neighbors` 表示“累计有多少个 checkpoint 邻居已经被真正补回 resident 局部回路”,`current_checkpoint_neighbors` 表示“这些已恢复邻居里,此刻仍然驻留在当前活动窗口内的数量”,而 `signal_probe_neighbors/signal_probe_loadable` 则继续表示“围绕当前 probe 锚点,在 cold storage 里仍然存在、且已经能被当前冷信号尾迹看到/加载的候选邻居数”。 - 这样再看最新实测值就不会误读了。以这次刚复跑的 `./build/src/live_checkpoint_reactivation_probe` 为例,当前得到的是 `reactivations=9 checkpoint_disk=9 checkpoint_neighbors=8 current_checkpoint_neighbors=7 signal_driven=1 main_signal_loadable=0 probe_anchor=2 signal_probe_neighbors=3 signal_probe_loadable=3`。这组值的含义不是链路退回去了,而是“已经有 8 个同锚点冷邻居累计被补回过 resident,其中当前窗口里还留着 7 个;与此同时,同一锚点周围还有 3 个冷态候选仍在等后续尾迹命中”。`main_signal_loadable=0` 只说明主程序这一拍的活跃冷信号窗口里暂时没有新的可加载目标,不等于局部回路恢复能力消失。 - 主程序长跑的口径也同步一致了。以这次刚复跑的 `./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 为例,前几个采样点依次看到 `tick=400 checkpoint_neighbors=0 current_checkpoint_neighbors=0 signal_loadable=0 checkpoint_disk=1 reactivations=1`、`tick=1600 checkpoint_neighbors=0 current_checkpoint_neighbors=0 signal_loadable=0 checkpoint_disk=1 reactivations=1`、`tick=2400 checkpoint_neighbors=6 current_checkpoint_neighbors=5 signal_loadable=1 checkpoint_disk=7 reactivations=7`。也就是说,默认自然运行里已经不只是“冷候选变多”,而是“同锚点邻居真正被补回 resident 回路并持续驻留一段时间”;而 `signal_loadable` 会随着采样拍点落在“候选刚过门槛”还是“已经被补回 resident”两个相位之间而上下波动。 - 这轮又把最后一个容易混淆的口径补进了主程序和 `manifest.txt`: `current_checkpoint_loadable`。它表示“最近一次 checkpoint 邻居锚点对应的那一支局部冷信号链里,此刻仍在 active cold signal pool 中、已经达到 loadable 门槛、但还没回到 resident 的候选数”。和全局 `signal_loadable` 不同,后者会把别的锚点来源也算进去;和 `signal_probe_neighbors/signal_probe_loadable` 也不同,后者是从磁盘邻域角度看“这个锚点周围还潜伏着多少冷候选”,不要求这些候选此刻一定还挂在主程序活跃信号池里。 - 最新复跑值正好把这三层拆开了:`./build/src/live_checkpoint_reactivation_probe` 现在得到 `checkpoint_neighbors=4 current_checkpoint_neighbors=4 current_checkpoint_loadable=0 main_signal_loadable=2 signal_probe_neighbors=3 signal_probe_loadable=3`;对应 `./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 在 `tick=2400` 得到 `checkpoint_neighbors=4 current_checkpoint_neighbors=3 current_checkpoint_loadable=0 signal_loadable=2 checkpoint_disk=6 reactivations=6`,而 `cold_storage/live_checkpoint_probe/manifest.txt` 同时记录 `current_checkpoint_loadable_neighbors=0 signal_loadable_neighbors=2 reactivations_checkpoint_neighbors=2`。这组值的含义是:最近这条 checkpoint 锚点分支上的“主程序内生排队冷候选”已经清空,但系统里仍然存在其他锚点来源的 loadable 冷目标,同时磁盘邻域里也还能探到 3 个同锚点冷候选,只是它们此刻没有都处在活跃冷信号池窗口内。 - 接着这轮又沿同一条生物信号链做了一次更细的纠偏。起初我尝试让“刚被补回 resident 的 checkpoint 邻居”继续把自己的整份冷突触摘要重新发回活跃冷信号池,方向虽然仍是局部传播,但在 `checkpoint_neighbor_reactivation_probe` 这种确定性小场景里会把局部回路带得过宽,出现 `pair_connections=0` 的越界扩散。随后我把这一步收窄成更接近单神经元生理残余的版本:已恢复 checkpoint 邻居不再把整份冷摘要重新外扩,而只是给“它自身”留下一段以原锚点为来源、会自然衰减的短时尾迹。 - 这次收窄后的最新复跑已经把边界重新稳住:`./build/src/checkpoint_neighbor_reactivation_probe = 1/1` 恢复到 `anchor=50 neighbor=9 pair_connections=2 checkpoint_disk=1 neighbor_reactivations=1`;`./build/src/live_checkpoint_reactivation_probe` 当前得到 `checkpoint_neighbors=8 current_checkpoint_neighbors=8 current_checkpoint_loadable=0 main_signal_loadable=3 signal_probe_neighbors=10 signal_probe_loadable=10`;`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 在 `tick=2400` 当前得到 `checkpoint_neighbors=8 current_checkpoint_neighbors=7 current_checkpoint_loadable=0 signal_loadable=2 checkpoint_disk=9 reactivations=9`。也就是说,这次修正既保住了 deterministic 局部回路不被冲散,又把自然长跑里的同锚点邻居恢复继续维持在正值。 - 这一步按“神经元信号传递方式”再次逐条核对,也仍然不是规则系统。它没有新增“某类节点必须继续恢复”的名单,没有改 checkpoint 邻居选择判据,只是把“刚被局部输入重新带响的那一个神经元,本体短时残余会继续维持一小段时间”这件事编码得更保守、更贴近单细胞尾迹,而不让它直接演化成整片冷邻域的再次外扩。 - 这轮继续往下核对后,又发现一个更细的工程偏差:同一个冷目标如果连续收到不同锚点来源的短时尾迹,旧实现会直接把 `anchor_virtual_id` 改成最后一次写入的来源。按生物原理核对,这会把“当前主导来源”错误地退化成“最后一拍来源”,从而让同锚点尾迹在主程序活跃冷信号池里更容易被后续弱输入洗掉。 - 所以这轮把冷信号池里的来源保留逻辑收成了“主导来源优先”:对同一个冷目标,如果它已经带着某个锚点来源的尾迹,后续只有更强的新驱动才会改写这个 `anchor_virtual_id`;否则继续保留当前更强来源。这里没有增加任何恢复名单或语义规则,只是在同一个短时尾迹槽位里,把来源身份与当前主导驱动重新对齐。 - 最新复跑结果已经把这一步的收益直接打出来了:`./build/src/checkpoint_neighbor_reactivation_probe` 仍然保持 `1/1`;`./build/src/live_checkpoint_reactivation_probe` 当前得到 `checkpoint_neighbors=8 current_checkpoint_neighbors=6 current_checkpoint_loadable=1 main_signal_loadable=1 signal_probe_neighbors=5 signal_probe_loadable=5`;`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 在 `tick=2000` 已经出现 `checkpoint_neighbors=3 current_checkpoint_neighbors=2 current_checkpoint_loadable=1 signal_loadable=1 checkpoint_disk=6 reactivations=6`,到 `tick=2400` 保持 `checkpoint_neighbors=8 current_checkpoint_neighbors=6 current_checkpoint_loadable=1 signal_loadable=1 checkpoint_disk=11 reactivations=11`。这说明“同锚点主导来源”已经能在主程序当前活跃冷信号池里多留下一拍,而不只是停留在磁盘邻域探针里。 - 按生物原理再次逐条核对,这一步仍然属于神经元信号传递链的纠偏,而不是规则系统。它表达的是“一个冷尾迹槽位的来源身份应由当前主导输入决定,而不是简单被最后一拍覆盖”,更接近突触后残余/局部来源偏置在短时间窗里的竞争保留。 - 这轮又把 active/loadable 之间的相位差进一步拆开了。现在主程序和 live probe 都新增了 `current_checkpoint_active`,专门表示“最近一次 checkpoint 邻居锚点对应的那一支局部冷信号链里,此刻仍挂在 active cold signal pool 中、但还不一定已经 loadable 的候选数”。这样我们终于能把“根本没进信号池”和“已经进池但还没跨过 loadable 门槛”这两类情况分开看。 - 最新复跑值正好把这个差值打了出来:`./build/src/live_checkpoint_reactivation_probe` 这次得到 `checkpoint_neighbors=12 current_checkpoint_neighbors=10 current_checkpoint_active=0 current_checkpoint_loadable=0 main_signal_loadable=0 signal_probe_neighbors=6 signal_probe_loadable=6`,说明该次采样点落在“同锚点候选仍停留在磁盘邻域,但当前活跃冷信号池里已经没有这条锚点分支的尾迹”这一相位;而 `./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 的这次长跑在 `tick=2400` 则给出 `checkpoint_neighbors=14 current_checkpoint_neighbors=11 current_checkpoint_active=1 current_checkpoint_loadable=1 signal_loadable=1 checkpoint_disk=15 reactivations=15`,说明主程序自然长跑里已经能看到“同锚点候选先进入 active cold signal pool,再跨过 loadable 门槛”的连续链条。 - 这次补的仍然只是观测层,不是机制越界。按生物原理逐条核对,`current_checkpoint_active` 只是把同一条局部冷尾迹链再多切出一个瞬时相位: `磁盘邻域仍可见 -> 已进入活跃冷信号池 -> 已达到 loadable 门槛 -> 已补回 resident 回路`。它没有改变恢复判据,也没有给任何虚拟 ID 特权。 - 当前下一步也因此更明确了:后面最值得继续推进的,不再是盲目扩大同锚点候选数,而是专盯“为什么某些 run 里同锚点候选明明还在磁盘邻域可见,却没有稳定挂进 active cold signal pool,或者挂进池后没有稳定跨过 loadable 门槛”。这仍然是纯神经元局部尾迹与衰减窗口的问题,不是规则系统问题。 - 这次只是把观测面校准清楚,没有引入任何新的规则表或语义分支。按“神经元信号传递方式”逐条核对,这些新字段只是把同一条底层链拆成三个阶段来读: `cold candidate -> loadable cold target -> restored resident neighbor`。机制本身仍然完全由局部尾迹、冷信号衰减、锚点相关突触摘要和有限恢复预算驱动。 - 这轮回归也继续保持不变:`./build/src/checkpoint_neighbor_reactivation_probe = 1/1`、`./build/src/live_checkpoint_reactivation_probe = 1/1`、`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`、`./build/src/motor_window_probe = 4/4`、`./build/src/sleep_memory_probe = 3/3`、`./build/src/rem_association_probe = 3/3`。所以当前可以更明确地说,系统现在已经能在保守硬件预算下,把“局部冷邻居恢复”稳定推到默认自然长跑里,同时仍然守住逻辑推理、睡眠静默窗口和运动边界。 == 当前限制 虽然已经比初版更接近“脑系统”,但当前仍然没有覆盖真实生物脑的很多层次: - 还没有真实解剖拓扑精度,例如皮层柱、海马内部精细回返回路、丘脑核团 - 还没有更严格的脉冲模型,例如 Hodgkin-Huxley、Izhikevich - 还没有真实感觉器官和身体反馈闭环 - 还没有语言、社会认知和多主体交互层 - 还没有真正的长期记忆分层存储和按块换入换出的全脑活跃窗口调度;当前只有第一版冷存储检查点骨架 == 下一步更值得做的方向 如果继续往“更像一个完整大脑”推进,比较有价值的路线是: . 把脑区进一步拆细,例如皮层柱、齿状回回返回路、丘脑中继核 . 给运动输出接一个环境或身体模拟器 . 继续细化奖惩学习,把当前轻量基底节动作通道推进到更接近 D1/D2、STN/GPe/GPi 的环路 . 给皮层与海马体加更明确的短时记忆和长期记忆分工 . 做睡眠阶段的更复杂突触重整和梦境式回放 . 把大脑拆成多个时间片域,甚至多线程调度不同脑区 == 最新核对 - 这轮继续沿“不要再把四条动作通道写成四段小策略”往前推了一步:`update_action_selection_loop()` 和 `compute_motor_basis_readouts()` 里原先那段按 `b0/b1/b2/b3` 分别写 `if/else` 的仲裁/读出权重,已经改成统一的结构参数阵列与加权投影。也就是说,当前同一套局部竞争回路会先读取连续神经调质、目标/威胁/饥饿、工作记忆和预测误差信号,再通过每条通道各自的投射权重得到仲裁支持度与读出强度,而不是在代码里逐条写死“小通道规则”。 - 这一步的意义不是把四通道语义彻底拿掉,而是继续把它们从“控制逻辑分支”往“结构权重差异”收口。当前保留的仍然是 4 条低维动作通道近似,但仲裁和读出层已经更接近“同一回路在不同投射参数下竞争”,而不是“遇到某条通道就跑某段 if/else”。 - 最新回归也证明这一步只是结构化重排,没有把边界抬坏:`meson compile -C build` 通过;`./build/src/reasoning_probe = 6/6 aggregate_score=0.908`;`./build/src/developmental_coregulation_probe = 4/4 aggregate_score=0.863`;`./build/src/motor_window_probe = 4/4`;`./build/src/sleep_memory_probe = 3/3`;`./build/src/rem_association_probe = 3/3`,其中 `NREM/REM` 最坏运动窗口仍保持 `max_motor=0.00`。 - 这轮先把刚试探过的 `checkpoint neighbor relay` 机制整块撤掉了。原因不是它编译不过,而是按“神经元信号传递方式”逐条核对后,它表达成了“一个已恢复邻居再替自己挑选更多冷候选并回写尾迹”,这已经比单神经元本体残余更接近二次扩散选择,不适合作为当前默认机制继续保留。现在保留下来的仍然只有两条更保守的链路:一条是已恢复邻居给“自己”留下短时尾迹,另一条是对最近 checkpoint 同锚点分支额外延长 `cold_storage_reactivate_checkpoint_signal_bonus_ticks`。 - 这次撤回后重新完整验证,`meson compile -C build` 通过,`./build/src/checkpoint_neighbor_reactivation_probe` 当前稳定为 `pass=1 anchor=50 neighbor=9 pair_connections=2 checkpoint_disk=1 neighbor_reactivations=1`,说明 deterministic 局部回路仍然守住了;`./build/src/reasoning_probe` 继续保持 `passed=6/6 aggregate_score=1.000`,说明逻辑推理代理链没有被这次收口破坏。 - 最新 `./build/src/live_checkpoint_reactivation_probe` 这次得到 `checkpoint_neighbors=6 current_checkpoint_neighbors=5 current_checkpoint_active=0 current_checkpoint_loadable=0 main_signal_loadable=0 signal_probe_neighbors=10 signal_probe_loadable=10`。它的含义不是“同锚点冷邻域消失了”,而是这次采样点落在 `同锚点冷邻居已经累计恢复出一部分 resident 回路,但当前 active cold signal pool 里该锚点尾迹已淡出` 这个相位;与此同时,磁盘邻域里仍然能看到 10 个同锚点候选,说明 cold 邻域库存还在。 - 最新 `./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 也落在同一类相位:`tick=2400 checkpoint_neighbors=12 current_checkpoint_neighbors=12 current_checkpoint_active=0 current_checkpoint_loadable=0 signal_loadable=0 checkpoint_disk=14 reactivations=14`。所以当前最真实的边界应该更新成:系统已经能稳定把同锚点冷邻居补回 resident 局部回路,但“磁盘可见同锚点邻域 -> active cold signal pool -> loadable” 这三段仍有明显采样相位差,下一步该继续补的是尾迹寿命和本体残余如何更稳定跨进 active pool,而不是再加一层邻域 relay。 - 这轮继续只沿“同锚点尾迹在 active cold signal pool 里怎样多挂住几拍”往前推,没有恢复任何邻域扩散。新增的是 3 个 XML 参数:`cold_storage_reactivate_checkpoint_signal_refresh_ticks`、`cold_storage_reactivate_checkpoint_signal_refresh_scale`、`cold_storage_reactivate_checkpoint_signal_refresh_min_drive`。它们只在一种很窄的条件下生效: 某个冷尾迹已经被当前主程序证明确实 `loadable`、仍属于最近一次 checkpoint 邻居锚点、目标尚未回到 resident,而且驱动还高于最小地板时,允许把这条尾迹按衰减比例再续一个很短的寿命窗口。 - 这一步按生物原理核对,仍然只是“同一条已存在的局部亚阈值残余,在还没有彻底掉空前继续保持短时可激活性”,不是新增恢复名单,也不是再替邻居挑新候选。它补的是尾迹寿命,不是候选选择逻辑。 - 新结果已经把这一步的收益直接打出来了。`./build/src/live_checkpoint_reactivation_probe` 现在得到 `checkpoint_neighbors=11 current_checkpoint_neighbors=10 current_checkpoint_active=0 current_checkpoint_loadable=0 main_signal_loadable=1 signal_probe_neighbors=13 signal_probe_loadable=13`,说明虽然这次采样点仍落在 `current_checkpoint_active=0` 的相位,但主程序当前活跃冷信号池里已经重新出现了至少一个真实 `loadable` 目标。 - 主程序长跑也被真正推过了这个卡点:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 现在在 `tick=2000` 已经出现 `checkpoint_neighbors=2 current_checkpoint_neighbors=1 current_checkpoint_active=1 current_checkpoint_loadable=1 signal_loadable=1 checkpoint_disk=4 reactivations=4`,到 `tick=2400` 继续保持 `checkpoint_neighbors=10 current_checkpoint_neighbors=9 current_checkpoint_active=1 current_checkpoint_loadable=1 signal_loadable=1 checkpoint_disk=12 reactivations=12`。这说明同锚点尾迹已经不再只是“磁盘邻域可见”,而是能在主程序自然长跑里更稳定地跨进 `active -> loadable` 这两个相位。 - 后面这轮我又专门试了两条更激进的路线,但都已经撤回,不保留在当前树里。第一条是“给最近 checkpoint 分支的 loadable 重扫加优先预算”,结果 live 和主程序都更容易被新的采样抖动带偏;第二条是把 `checkpoint_signal_refresh_*` 再往上调得更强,结果 `tick=2400` 反而重新掉回 `current_checkpoint_active=0 current_checkpoint_loadable=0 signal_loadable=0`。这两条都说明:当前最值得保留的仍然是轻衰减续航本身,而不是继续加优先扫描或过强续航。 - 所以这轮收尾后的真实结论要更保守地写成这样:`refresh-only` 版本目前仍是最好的生物边界实现,既能在某些长跑里把 `tick=2000/tick=2400` 推到 `current_checkpoint_active=1 current_checkpoint_loadable=1 signal_loadable=1`,也仍然会在另一些 run 里落回 `current_checkpoint_active=0 current_checkpoint_loadable=0` 的相位;而最新一次 `./build/src/live_checkpoint_reactivation_probe` 就又回到了 `checkpoint_neighbors=14 current_checkpoint_neighbors=14 current_checkpoint_active=0 current_checkpoint_loadable=0 main_signal_loadable=0 signal_probe_neighbors=13 signal_probe_loadable=13`。这说明真正剩下的问题已经更明确了:不是缺少候选,也不是缺少恢复能力,而是同锚点尾迹的相位稳定性仍不足。 - 这轮继续往前推时,又把“当前 checkpoint 根锚点”从“只有邻居恢复成功后才存在”改成了“checkpoint 根节点一从磁盘恢复成功,当轮就立即登记”。对应实现里新增了内部状态 `cold_storage_current_checkpoint_anchor_virtual_id`,并让同锚点尾迹的保护、bonus、refresh 和计数都优先围绕这个根锚点工作,而不是被动等到某个 checkpoint 邻居先恢复成功。 - 这一步按生物原理核对后仍然成立。它不是新加一个恢复器,也不是引入语义规则,只是把“这条局部传播链当前的源头是谁”在根节点恢复那一拍就记清楚。更接近的生物含义是:局部回路被重新点亮时,源头神经元的亚阈值残余和树突来源偏置应当立刻开始影响后续几拍,而不该因为记账时序晚一拍就丢掉。 - 最新复跑结果已经把这步收益直接打出来了。`./build/src/live_checkpoint_reactivation_probe` 当前得到 `reactivations=1 checkpoint_disk=1 current_checkpoint_active=1 current_checkpoint_loadable=1 main_signal_loadable=7 probe_anchor=37 signal_probe_neighbors=8 signal_probe_loadable=8`,说明同锚点冷尾迹已经能在 live 运行里重新挂进 active cold signal pool,并跨过 loadable 门槛。 - 主程序长跑也重新回到正值:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 当前在 `tick=2400` 得到 `checkpoint_neighbors=0 current_checkpoint_neighbors=0 current_checkpoint_active=1 current_checkpoint_loadable=1 signal_loadable=7 checkpoint_disk=1 reactivations=1`。这组值的含义是:当前自然长跑虽然还没有把 checkpoint 邻居真正补回 resident,但“checkpoint 根锚点 -> 同锚点 active 冷尾迹 -> 同锚点 loadable 候选”这三段已经重新在主程序里接上了,后面继续推进就该专盯最后那一步 resident 补回,而不是回到 relay 或规则表。 - 继续沿这最后一段 resident 补回往下核对后,这轮又确认了真正的卡点不是“候选挑不出来”,而是 checkpoint 根神经元本体会在同锚点尾迹和直接可加载冷邻居还存在时被 resident 窗口提前驱逐。这样一来,哪怕后续重新出现 `current_checkpoint_loadable>0`,由于根神经元已不在内存里,邻居恢复重试也无法再执行。 - 因此这轮又补了一层很窄的 resident 保护:只有当某个 resident 神经元正好就是 `current_checkpoint_anchor_virtual_id`,并且当前仍满足 `current_checkpoint_active>0` 或 `current_checkpoint_loadable>0` 时,才暂时禁止把它作为 quiet eviction 或 maintenance eviction 的目标。这一步没有给任何语义类别特权,也没有扩大恢复范围,只是保证“还在发出同一条局部尾迹的源头神经元”不会先于这条尾迹本身被移出 resident 窗口。 - 同时,这轮也把 `current_checkpoint_loadable` 的口径纠正成更贴近单神经元信号传播的版本:它不再要求目标自己先带同锚点残余,而是只要“当前 checkpoint 根神经元到这个冷目标之间有直接冷突触连接,目标当前不在 resident,并且能从冷存储读回”,就计入当前可继续传播的 loadable 邻居。它表达的就是“当前源头神经元还能沿已有突触继续把信号送到哪些冷态邻居”,而不是额外附加一层规则。 - 这轮最新结果已经把最后一段真正打通。`./build/src/live_checkpoint_reactivation_probe` 当前得到 `reactivations=4 checkpoint_disk=4 checkpoint_neighbors=1 current_checkpoint_neighbors=1 current_checkpoint_anchor=20 neighbor_attempts=4 neighbor_candidate_misses=3 neighbor_candidate=55 neighbor_candidate_score=0.943 last_neighbor=55 neighbor_anchor=20`。这说明系统已经不再只是“数到可加载尾迹”,而是确实把同锚点局部链上的冷邻居 `55` 重新补回 resident,形成 `anchor=20 -> neighbor=55` 的真实局部回路。 - 主程序自然长跑也已经跟上:`./build/src/bio_brain --config config/live_checkpoint_reactivation_probe.xml 2400 64 1024 400` 当前在 `tick=2400` 得到 `checkpoint_neighbors=1 current_checkpoint_neighbors=1 current_checkpoint_anchor=20 neighbor_attempts=4 neighbor_candidate_misses=3 neighbor_candidate=55 neighbor_candidate_score=0.178 last_neighbor=55 neighbor_anchor=20 reactivations=4 checkpoint_disk=4`。这说明在默认保守硬件预算、`concurrency_budget=1` 的前提下,系统现在已经能把“checkpoint 根锚点 -> 同锚点冷尾迹 -> loadable 邻居 -> resident 邻居恢复”这四段链完整跑通。 - 这轮完整回归继续保持边界不破:`./build/src/reasoning_probe = 6/6 aggregate_score=1.000`。因此当前最合理的下一步,不是再加规则表、relay 扩散或 if/else 选择器,而是继续围绕这条已经打通的局部链,提升相位稳定性和重复性。 - 这轮继续往前推时,又新增了一个仍然严格受生物边界约束的 XML 时序参数:`cold_storage_reactivate_checkpoint_neighbor_retry_ticks`。它表达的不是“多试几种策略”,而是“当前 checkpoint 根神经元被重新点亮后,这颗源头神经元还保留多久的短时残余兴奋窗口”。在这个窗口里,如果根神经元短暂掉出 resident,但它的同锚点直接冷邻居仍然可加载,系统只允许沿已有直接突触把这颗根神经元本体补回,再继续尝试同一条局部链上的邻居恢复。 - 这一步按生物原理核对后仍然成立。它没有增加任何语义规则、类别优先级或 relay 扩散器;做的只是把“源头神经元在短暂残余兴奋期内,不应因为 resident 窗口抖动就彻底失去继续发放这条局部传播链的机会”落实成运行时时窗。更直白地说,这里补的是根神经元本体的短时残余,不是新的规则。 - 最新 `live_checkpoint_reactivation_probe` 已经直接把这层收益打出来:当前样本给出 `reactivations=3 checkpoint_disk=3 checkpoint_neighbors=1 current_checkpoint_neighbors=1 current_checkpoint_anchor=37 neighbor_attempts=3 neighbor_candidate_misses=2 last_neighbor=23 neighbor_anchor=37`;另一轮样本给出 `reactivations=4 checkpoint_disk=4 checkpoint_neighbors=1 current_checkpoint_anchor=20 current_checkpoint_active=1 current_checkpoint_loadable=2 neighbor_attempts=4 neighbor_candidate_misses=3 neighbor_candidate=37 neighbor_candidate_score=0.296`。这两组值的共同含义是:系统不再总是卡死在第一次失败后,而是已经能把“根本体短时补回 -> 再次尝试 -> 邻居 resident 恢复”这条链重复打出来。 - 主程序长跑的重复采样也支持同样结论。新样本之一在 `tick=2400` 给出 `checkpoint_neighbors=1 current_checkpoint_neighbors=1 current_checkpoint_anchor=37 neighbor_attempts=4 neighbor_candidate_misses=3 last_neighbor=23 neighbor_anchor=37 reactivations=4 checkpoint_disk=4`;另一样本在 `tick=2400` 给出 `checkpoint_neighbors=1 current_checkpoint_neighbors=0 current_checkpoint_anchor=20 current_checkpoint_active=1 current_checkpoint_loadable=2 neighbor_attempts=4 neighbor_candidate_misses=3 last_neighbor=37 neighbor_anchor=20 reactivations=4 checkpoint_disk=4`。这说明当前实现已经把重复性显著推前,但仍存在相位波动:有的 run 会在采样点看到邻居仍驻留,有的 run 会落在“邻居刚恢复过、根节点尾迹仍在继续传播”的相位。 - 因此当前真实状态要写得更准确一点:系统已经稳定跨过了旧卡点,不再总停在 `neighbor_attempts=1 checkpoint_neighbors=0`;但它还没有达到“每轮完全同相位”的程度。下一步继续优化时,仍应只围绕同一条直接突触链上的短时残余、根本体驻留时间和相位稳定性,不应回到规则表、人工推理分支或邻域扩散。 - 这轮继续核对后,又把“运行态真实锚点”和“冷盘里保留下来的旧锚点残留”分开观测了。现在 `live_checkpoint_reactivation_probe` 额外输出 `last_reactivated_runtime_anchor`,专门看最后一次被补回 resident 的神经元在当前运行态究竟挂着哪个局部来源。这样可以区分两类情况:一种是运行态已经沿当前 checkpoint 根继续传播,只是冷盘旧记录还没被新来源完全覆盖;另一种才是真正的运行态传播漂移。 - 这一步很关键,因为它把最近的偏差边界重新收窄了。以 `rng_seed=0xC0FFEE` 的 live probe 为例,当前结果是 `last_reactivated_signal_anchor=27`,但 `last_reactivated_runtime_anchor=37`,同时 `signal_target_runtime_anchor=37`。它的含义不是“邻居恢复方向又错了”,而是“运行态的局部信号来源已经纠正回当前 checkpoint 根 `37`,只是磁盘冷记录里还保留着较早一次来源 `27` 的残留”。这说明本轮围绕 `synchronize_checkpoint_anchor_signal_identity(...)` 做的修正,已经真实进入了 resident 传播链。 - 这轮还把一个新的纯观测字段记进了主程序和 live probe:`current_checkpoint_resident_support`。它表示“当前 checkpoint 根的一跳 resident 邻居里,仍然带着同锚点局部信号痕迹的数量”。这个字段不参与候选筛选,不再驱动额外磁盘恢复;它只是告诉我们“同一条局部回路在 resident 窗口里是否还有一跳支撑仍在带同源信号”。按生物原理核对,它仍然只是局部树突/短时尾迹的观测,不是规则。 - 最新默认 seed 的 live probe 已经把这个边界打得很清楚:连续样本都落在 `reactivations=1 checkpoint_disk=1 checkpoint_neighbors=0 current_checkpoint_anchor=37 current_checkpoint_loadable=0 current_checkpoint_resident_support=3 last_reactivated_signal_anchor=37 last_signal_driven_signal_anchor=37 signal_probe_neighbors=4 signal_probe_loadable=4`。这说明当前默认相位里,根本体的来源身份已经正确、冷盘里的一跳邻居也确实都还可读,但“根的一跳 resident 支撑”还没有稳定转成下一次实际邻居补回。 - 这轮专门把 `rng_seed` 也拆开做了交叉核对,而不再只看同一个固定种子。当前结果已经明显分成两类:`0xC0FFEF`、`0xC0FFF1` 这类 seed 能在 live probe 里得到 `checkpoint_neighbors=1`,并且 `last_reactivated_runtime_anchor` 已经与当前 checkpoint 根对齐;而默认 `0xC0FFEE` 这类相位则更容易落在“根身份正确、resident_support 仍在、但第一跳邻居尚未补回”的状态。换句话说,现在剩下的问题已经进一步收窄成“同一条局部链在不同初始噪声下的相位稳定性”,而不是“方法不对”。 - 主程序长跑的最新复核也和这条判断一致。默认 `config/live_checkpoint_reactivation_probe.xml` 这次在 `tick=400/800/1200` 都还是 `checkpoint_neighbors=0`,但到 `tick=2400` 已推进到 `checkpoint_neighbors=1 current_checkpoint_neighbors=1 current_checkpoint_anchor=37 current_checkpoint_resident_support=2 last_neighbor=21 neighbor_anchor=37 checkpoint_disk=3 reactivations=3`;而 `rng_seed=0xC0FFEF` 那条更难相位在 `tick=400` 仍是 `checkpoint_neighbors=0 current_checkpoint_resident_support=1`,说明当前工程已经能在一部分自然长跑里把同锚点局部链晚些接上,但还没有把所有 seed 都压到同一个稳定相位。 - 这轮回归里 `./build/src/reasoning_probe` 继续保持 `passed=6/6 aggregate_score=1.000`。因此当前最准确的项目状态可以更新成这样:运行态 checkpoint 根和已补回邻居的局部信号身份,已经基本收回到当前同锚点链上;剩余缺口主要是冷盘旧锚点残留何时被新来源刷新,以及为什么某些 seed 下“resident 一跳支撑”还不能稳定转成下一次邻居恢复。后面继续推进时,仍应只围绕这条直接局部链,不要回到规则表或更广的 relay 扩散。