认知内核和训练
认知内核(代码里叫 NHCX)把每条消息、每个念头变成一个认知事件,跑专家、护栏、打分,给出一个可审计的决定。它有四个接管档位;手写的规则策略之外,还能离线训练一个学出来的策略,过了生产关卡才会被加载。
一个决定是怎么出来的
- 事件:消息、念头、工具结果都变成
CognitiveEvent(谁、在哪、内容、风险等级、对话链的深度和额度……)。 - 专家:
cognition/experts/里十六位各提做法(ExpertProposal:做法、想做的程度、把握、代价、风险、理由码)(2.7)。 - 护栏:
GuardEvaluator逐个检查,拦下的连同规则码记进账本。 - 挑:
arbitration.utility_score打分,取最高;router.MetacognitiveRouter决定走快路还是先让模型规划。 - 执行前最后一关:
FinalExecutionGuard再核一遍:被选中的就是要执行的那个、护栏都过了、这一档有权管行为。
每一步的理由码都进决策记录(后台「决策记录」「认知观测台」)。
接管档位
[nhcx].authority_mode:
SHADOW:内核照常算、照常记,但不管行为;行为由旧的本地打分决定。CANARY:只在canary_guild_ids/canary_channel_ids/canary_user_ids列出的范围里、低风险、几种允许的做法上接管,其余照旧。HYBRID(默认):内核说了算;出故障、超时(decision_timeout_seconds,默认 1.5 秒)退回本地打分(fallback_to_legacy)。AUTHORITATIVE:只听内核。
学出来的策略(R1-N)
手写的规则策略编号是 r1-h-v1(policy/heuristic.py)。旁边留了一个学出来的策略的位置(policy/neural.py):
- 训练数据从影子记录里导出(
training.export_shadow_training_records),离线训练:
aeria-nhcx-train --records-jsonl <记录.jsonl> --dataset-version <数据版本> --model-version <模型版本> \
--checkpoint <输出.pt> --registry <登记表.json> --report <报告.json>
- 训练完写进模型登记表(
model_registry.py);运行时启动时经过ProductionModelGate检查,过了才加载,没过就记一行原因、照用规则策略。 - 登记表和检查点的位置:环境变量
NHCX_MODEL_REGISTRY、NHCX_R1N_CHECKPOINT,不写就在人格库旁边找。
看它、调它
- 后台「认知观测台」「事件流」「人格状态」「社交上下文」:实时看事件和状态。
- 「回放实验室」:拿一条历史事件,换种子、换实验组重新跑一遍,不发、不写记忆。
- 「事后复盘」:回头看过去的决定。
对应的代码
src/aeria/cognition/:kernel.py、events.py、experts/、guards.py、arbitration.py、router.py、authority.py(AuthorityController、FinalExecutionGuard)、policy/、training.py、training_pipeline.py、model_registry.py、goldset.py。- 训练命令:
src/aeria/nhcx_train.py(aeria-nhcx-train);运行时加载:bot.py里ProductionModelGate.load。 - 测试:
tests/test_nhcx_v2_authority.py、tests/test_nhcx_v2_modes.py、tests/test_nhcx_v2_experts_workspace.py、tests/test_nhcx_v2_final_engine.py。
没做到的
- 学出来的策略还没有一个过了生产关卡的版本:标注数据不够,现在用的都是规则策略。
- 语义复核(本地拿不准时问一次模型)写好了,默认关着,值不值得开还没量。
- 专家里认「像问题」「要查东西」的几处还靠中文词表。