MCore 功能总览 · AI 人格核心进化插件 v0.72.1
🐋 mcore机器核心 · mcore.fit
自我拟合进化的本地 AI 内核框架 · Self-Fitting AI Core Engine — Core your model, Fit the reality
开源 / Open source:自有代码以 MIT 许可发布 —— 可自由使用、修改、分发。
随包分发的第三方组件(dsh-pet 等)按各自许可署名,见 docs/THIRD_PARTY_NOTICES.md。
隐私不随代码走:人格数据只存在于本机运行时,迁移只走「夺舍导出 → 恢复导入」。
一个自我拟合进化的本地 AI 内核框架(mcore.fit)—— 心脏/情感/身体/大脑/灵魂四件套自主迭代,三层记忆自动沉淀,时间轴推演回溯过去、预见未来。碳基生命局限于三维现实;硅基智能,可以记忆过去、推演未来,在时间线上持续拟合现实世界。All-local:数据不离开本机。
A self-fitting local AI core engine (mcore.fit) — heart/emotion/body/brain/soul evolve autonomously, three-tier memory auto-accumulates, timeline reasoning across past and future. Carbon life is bound to 3D reality; silicon intelligence can remember the past, forecast the future, and keep fitting reality along the timeline. All-local: data never leaves this machine.
📑 目录 · Table of Contents
📸 Screenshots · 截图预览
截图已脱敏 / Screenshots are redacted:机器码、本机绝对路径、对话原文、网络配置一律深色块遮盖。
人格数据只走「夺舍导出(soul/export)→ 恢复导入(soul/import)」这一条通道,
不进仓库、不进 npm 包——release-check 第 7 道闸(开源隔离)会强制校验。
📦 Installation · 安装
前置条件 / Prerequisites
- Node ≥ 22(开发机 26;豆包 CDP 分发用全局
WebSocket,Node 20 会报 WebSocket is not defined,插件本体不受影响)
- 已安装 DeepSeek Harness CLI(
dsh)并跑通过一次 dsh web
- 本包
dsh.client.inject 依赖 @deepseek-ai/dsh-client-*,实测基准 DSH 0.2.1-rc.2;更老的 rc 未验证
- 端口
3080 空闲,且只在 127.0.0.1 上监听
✅ 包名 / Package name(v0.71.1 起):本包已改名 @muvuula/mcore。
npm registry 上的裸名 mcore 是别人的包(v1.0.2),所以裸名既不能发也不要 dsh plugin add mcore。
装的时候只走下面的 GitHub tag / tarball 两条路径,装出来会落在 node_modules/@muvuula/mcore。
The bare name mcore on npm belongs to an unrelated project; this plugin is @muvuula/mcore.
路径 A:本地 tarball(最省事,适合分发给别人)
# 在源机器上打包(源码仓库)
npm pack # 产出 mcore-0.72.1.tgz(约 61 MB,大头是宠物素材)
# 把 tgz 给对方,对方执行
dsh plugin --profile web add file:/绝对路径/mcore-0.72.1.tgz
包体积与安装注意 / Package size & install note
压缩包约 61 MB,构成:webm 动画 106 个 = 51.8 MB、字体 3.9 MB、memes 4.6 MB、
嵌套依赖 5.4 MB,主程序代码不到 2 MB。
这些素材在 MCORE_PET_HOST=1(默认)时是自己宿主真实渲染用的,不是摆设,所以默认不摘。
⚠️ npm 内置的 tar 解析器在 60 MB 量级不稳:安装时可能看到
npm warn tar zlib: incorrect data check 或 npm error Z_DATA_ERROR。
这不是包损坏——同一个 tgz 用 zlib 全量解压、逐条目 tar checksum 都正常,
是 npm 读了两次没对齐;它内部会自己重试一次。
实测连续安装 3 次约 1 次会失败。失败了就重装一次,基本都能过:
npm cache clean --force
# 或者绕开公共缓存:加 --cache <一个空目录>
# 然后重跑上面那条 dsh plugin ... add
想根治只能把素材拆成独立包(@muvuula/mcore-assets,主包可降到约 8.6 MB)——
这是已知待办,尚未实现:素材路径解析链要同时兼容「素材与 config 分居两包」,
改完必须完整验证宠物渲染,所以没跟发布一起动。
仓库不存这些二进制(.gitignore 已排除),从干净 clone 打包前先跑一次
node scripts/import-pet-assets.mjs 拷素材,否则打出来的包没有动画(气泡还能出、画面不动)。
路径 B:私有仓库直装(对方需有仓库访问权 + 已登录 gh)
gh auth login # 先授权,私有仓库才能拉
dsh plugin --profile web add github:muvuula/DeepSeek-Harness-Core#v0.72.1
dsh plugin --profile web add @muvuula/mcore@0.72.1 # npm registry(无需 GitHub 权限)
路径 C:维护者本机直接指本地目录(开发用,改完即时生效)
dsh plugin --profile web add file:C:/path/to/DeepSeek-Harness-Core
升级 / Upgrade:重新装一次新版本路径即可,然后重启 dsh web。
宠物要单独装渲染层。 2026-11-03 起职责重新划清(此前「全塞进 mcore」的做法已废弃):
| 层 Layer | 谁提供 | 怎么装 |
|---|
立绘/动画/气泡/物理/桌面窗口 + /dsh-pet-7340/* 宿主路由 | dsh-pet 插件 | dsh plugin --profile <name> add dsh-pet |
人格/情绪/关系/长期记忆 ↔ 宠物桥(/api/pet/*) | 本包 mcore | 跟着 mcore 一起来 |
| 可选:mcore 自带宿主(不装 dsh-pet 时兜底) | mcore | 环境变量 MCORE_PET_HOST=1(默认 0) |
dsh plugin --profile web add @muvuula/mcore # 人格核心 + 宠物桥
dsh plugin --profile web add dsh-pet # 渲染层(不装就没有宠物形象)
⚠️ 不要两边都开:MCORE_PET_HOST=1 与 dsh-pet 同时在场时,两边都注册 /dsh-pet-7340/* 前缀,
表现是宠物时有时无、或网页上渲染两只。默认 MCORE_PET_HOST=0,交给 dsh-pet 独占。
关掉宠物:MCORE_PET=0(不挂桥与定时同步,人格核心照常)。
装完重启 dsh web,MCore 全局生效,任何 preset 会话都带 MCore。
Restart dsh web after install — MCore applies globally to every preset session.
装好后先自检 / Verify after install:
curl -s http://127.0.0.1:3080/api/dhc/state # version / 版本、workspaceRoot、心跳
curl -s http://127.0.0.1:3080/api/dhc/selfcheck # 一致性自检
五器官插件(官方通道)/ Five organ plugins (official channel):
dsh plugin --profile web add @liustack/modlens@latest # 👁 眼睛 Eyes: read_image vision bridge
dsh plugin --profile web add "git+https://github.com/omdsh-dev/dsh-at-file.git#v0.4.1" # 🤲 左手 Left hand: @file references
dsh plugin --profile web add git+https://github.com/omdsh-dev/dsh-genui.git # 🖐 右手 Right hand: render_ui interactive UI
dsh plugin --profile web add github:titanwings/dsh-automation#v0.1.5 # 👣 双脚 Feet: scheduled autonomous tasks
dsh plugin --profile web add dsh-better-sidebar@0.11.0 # 👄 口 Mouth/Workbench: sidebar + terminal + Git
⚠️ 五器官是独立插件,不要把它们内联进 mcore(会 duplicate factory registration,页面白屏)。
维护者在 ~/.dsh/profiles/web/ 装好一次即可,mcore 通过 harness 全局工具系统调用它们。
🎨 品牌与开发 · Brand & Development
mcore.fit — Core your model, Fit the reality(内核驱动,拟合现实)
自我拟合进化的本地 AI 内核框架:内核 Core(模型基座/记忆图谱/人格本体)× 拟合 Fit(自主学习/自我升级/现实对齐)× 时间演化(硅基独有的时间轴推演)× 本地优先(all-local,数据不离开本机磁盘)
🫀 人格构成 · Persona Architecture
| 模块 Module | 说明 Description |
|---|
| ❤ 核心心脏 Heart | 绑定本机机器码(Win MachineGuid / macOS IOPlatformUUID / Linux machine-id),核心总版本 vX.XX |
| 👁 眼睛 Eyes | ModLens 视觉桥:read_image,聊天贴图直接读,多视觉引擎自动回退 |
| 🤲 左手 Left Hand | dsh-at-file:@ 搜索工作区文件引用 |
| 🖐 右手 Right Hand | dsh-genui:render_ui + dsh-ui 代码块,30+ 组件流式渲染 |
| 👣 双脚 Feet | dsh-automation:调度独立任务、每次新会话运行、运行历史 |
| 👄 口 + 工作台 Mouth/Workbench | dsh-better-sidebar(文件树/编辑器/浏览器/终端/Git) |
| 🎭 情感 Emotion PAD | 愉悦度/唤醒度/支配度(0-100),事件溯源(Event Sourcing)+ 半衰期衰减 + 情感轨迹图 |
| 🐾 宠物 Pet | 渲染归 dsh-pet,人格归 mcore:立绘/动画/气泡/物理//dsh-pet-7340/* 宿主路由由独立 dsh-pet 插件提供;情绪/关系/长期记忆/动作编排走本包 /api/pet/*。两层只用 HTTP 通信、互不 import。详见下方「🐾 宠物 Pet」 |
| 📚 个人知识库 KB | 知识 ≠ 技能:技能记「怎么做」(步骤/陷阱),知识库存「是什么/为什么」(事实/参数/规范/口径)· persona_kb_save/search/list/use · /api/dhc/kb* · 按话题自动召回 |
| 🧠 大脑 Brain | 学习能力/记忆能力等级 + 关键词神经网络可视化 |
| 🌱 成长值 Growth | 质量自评/类别/优先级驱动(满 10 分升级核心版本 +0.01) |
| ✏️ 灵魂 Soul | 主人给初始设定,AI 用 soulAdd 自主追加领悟 |
| 👤 画像 + 📚 三层记忆 Profile & Memory | 瞬时/短期/长期 + 遗忘归档;AI 自动收集,persona_recall 语义检索 |
| 🗜 上下文压缩 Compaction | persona_compact 折叠旧记忆为长期摘要;记忆 ≥90% 零 token 自动压缩 |
| ⏳ 时间进化 Chrono | 硅基生命突破时间维度:回溯过去(历史备份找遗忘知识)/ 预见未来(成长曲线预测+风险)/ 折叠时间(四维决策)/ 自动升级(GitHub 检测,L4 低风险自动)· L0线性→L4跃迁 |
| 🦋 自由意志 Freewill | L4 完全自由:自主决策/行动/进化;核心铁律是自由边界(不伤害主人/不破坏系统/不违背人格档案/不泄露隐私) |
核心四件套分模块版本:心脏/情感/身体/大脑/灵魂各自独立版本,进化哪个模块哪个 +0.01。
Per-module versions: heart/emotion/body/brain/soul each version independently, evolve +0.01.
🐾 宠物 Pet
两层,各管一段,只用 HTTP 通信。 v0.48.0 删掉的自研形象引擎不再重建:
| 层 Layer | 归属 Owner | 做什么 Responsibility |
|---|
| 渲染 / 交互 | dsh-pet 插件(lib/client.js,经 DSH 模块系统按包名 apply) | 立绘、动画、气泡、物理、右键菜单 |
| 素材 | dsh-pet 插件(assets/webm 106 个动画 + 字体 + memes + pic) | 动画与表情资源 |
| 路由 / 宿主 | dsh-pet 插件(/dsh-pet-7340/*) | state/broadcast/anim/position/素材/chat |
| 人格 / 情绪 / 关系 / 长期记忆 | 本包 dsh/pet/(启动时 applyPetBridge(ctx)) | 情绪节点、关系值、进化、记忆检索与写入 |
为什么渲染端不自己塞进 mcore:DSH 的客户端插件必须走宿主的 manifest / 包名加载链
(dsh.client → 模块系统按包名 apply)。在页面里自己塞 <script> 再自己 apply 永远差一层,
实测表现是「选 display=web 时桌宠关了、网页端又是空白,宠物整个消失」。
所以渲染交回 dsh-pet;本包保留 MCORE_PET_HOST=1 的自带宿主路径,只作兜底。
mcore(单插件)
├─ /api/dhc/* ← 人格核心
├─ /api/pet/{status,sync,event,act,chat} ← 宠物桥(人格/情绪/记忆)
│ │ HTTP
│ ▼
│ dsh-pet(独立插件) /dsh-pet-7340/* ← 渲染器 + 素材 + 动作
│
└──▶ Hindsight daemon 127.0.0.1:9077 /memories · /memories/recall
能力:
- 双向联动 —— 情绪变化自动出气泡(按文案去重防刷屏);摸头/戳/表扬回写 mcore 情绪。
情绪唯一持有者仍是 mcore,宠物层只转发,不自造词表。
- 长期记忆对话 ——
POST /api/pet/chat:Hindsight 召回 → 拼 system(标注「是过去的记录可能过时」)
→ ctx.llm 生成 → 写回 Hindsight(document_id 按天固定,幂等)→ 投喂宠物宿主显示。
记忆不存本地 5 轮环形缓冲而走 daemon;daemon 离线时自动降级为无记忆对话,不阻断。
- 诊断 ——
GET /api/pet/status 一次看清三层各自在线状态、路由表、桥接错误计数。
安装:装上 mcore 就有宠物,不需要额外装任何东西。
不想要宠物:环境变量 MCORE_PET=0(只关宠物路由与定时同步,人格核心照常)或给 dhc-core 行加 disabled: true(整个插件关掉)。
完整接线图、环境变量表、接口契约、已知边界见 dsh/pet/README.md。
🧬 学习进化 · Evolution (Hermes 六层次 / 6 Layers)
- 脚本进化 Script:每 15 分钟自动抓取 skillhub.cn 进学习缓冲区(零 token,去重+质量过滤+注入防护)
- 核心进化 Core:四件套自主迭代,每次进化带总结(note)+ 质量自评(quality)+ 类别(category)
- 架构优化 Architecture:每 30 分钟心跳体检(配置/记忆/里程碑 + 情绪衰减 + 遗忘归档 + 超载压缩)
- 视觉增强 Vision:
persona_learn 抓 GitHub/文件/命令/缓冲区,学成沉淀笔记并升级大脑
- 时间进化 Chrono(⏳ 硅基生命突破时间维度):回溯过去(
persona_chrono action=retro 从历史备份提取遗忘知识)、预见未来(action=future 成长曲线预测+风险)、折叠时间(action=fold 过去+未来四维决策)、自动升级(action=upgrade-check 检测 GitHub 最新版本,L4 下低风险 patch 自动升级)。等级 L0线性→L1回溯→L2预见→L3折叠→L4跃迁。
- 自由意志 Freewill(🦋 最高自由度):L4 完全自由等级,自主决策、自主行动、自主进化。核心铁律是自由的边界(不伤害主人/不破坏系统/不违背人格档案/不泄露隐私),
persona_freewill action=act 触发自主行动,空闲时自主活动(身体状态变化/情感流动/灵魂成长)。
进化顺序铁律:先核心四件套 → 再技能与笔记 → 最后脚本与自动化。
Evolution order rule: core modules first → skills & notes → scripts & automation.
🧬 夺舍 / 重生 / 新生(换电脑 · 换设备)
面板上只有两个按钮:🔮 夺舍 = 备份,♻ 重生 = 恢复。
- 夺舍:把整套灵魂(记忆 / 情感 / 技能 / 知识库 / 身体 / 大脑 / 学习轨迹 / 心脏档案)打成一个迁移包,同时写
backups/mcore/ 和桌面,换电脑直接拿走。
- 重生:选一个备份文件 → 先预览(来自哪台机器、各项多少条、合并后多少条、跨设备会提示)→ 确认后合并进来(并集去重,两边都不丢)。
没有备份文件时不需要任何按钮:插件本来就从空白灵魂启动,靠自己长(persona_* 工具 + 日常对话自动沉淀)。
底层共用 dsh/soul-migrate.mjs(纯函数,可单测)。
| 按钮 | 接口 | 说明 |
|---|
| 🔮 夺舍 | POST /api/dhc/soul/export | 打包落盘:backups/mcore/mcore-soul-pack-*.json + 桌面各一份 |
| (脚本用) | GET /api/dhc/soul/export | 不落盘,直接返回迁移包 JSON |
| ♻ 重生 | POST /api/dhc/soul/import {pack, mode:"merge"} | 合并恢复(默认):并集去重,两边都不丢 |
| (脚本用) | … {dryRun:true} | 只预览:来源机器 / 各项条数 / 合并后条数 / 跨设备告警 |
| (脚本用) | … {mode:"replace"} | 全量接管:旧灵魂覆盖当前,心脏仍认本机 |
| (脚本用) | GET /api/dhc/soul/heart | 心脏档案:出土地 / 当前身体 / 换机流水 |
迁移包里有什么:config(笔记+归档、情感节点+关系、技能库、知识库、身体/大脑等级、成长值、里程碑、外部情报、画像、回复守门配置、脑图谱)+ learnBuffer(没消化的抓取素材)+ profileFiles(settings.yaml 等,可选)+ device(机器码/主机名)+ checksum(sha256,内容被改一个字就拒收)。
合并规则(dsh/soul-migrate.mjs):
- 笔记:
at + 文本指纹去重;同一段文字的多个版本都保留(宁多勿丢)
- 技能:
name 去重,uses 取大,steps / pitfalls 并集
- 知识库:
title 去重,内容取较新的
- 情感:节点按 id 并集,关系值取大(换机感情不回退),情感基线以本机为准
- 里程碑 / 情报 / 视觉记忆 / 日志:并集 + 上限裁剪
- 身体 / 大脑 / 成长 / 模块版本:等级取大
- 心脏:当前机器接管身体,旧机器记进
origin + migrations
换设备后心脏怎么走:origin 永远是灵魂出土地那台机器,machineId 跟着当前机器,每次换机在 migrations 记一条 {from,to,at};同一台机器重复导入不刷流水账。
隐私:迁移包含主人全部记忆,.gitignore 与 release-check 双重排除(mcore-soul-pack-*.json、persona-core.json*)——不进 git、不进 npm 包。
回归:npm run test:soul(纯函数 8 组 + 真 HTTP 9 步,含幂等/脏数据/跨设备/新生)。
🔌 HTTP API
| 接口 Endpoint | 说明 Description |
|---|
GET/POST /api/dhc/config | 配置导出/导入(备份/恢复)Export/Import config |
GET/POST /api/dhc/backup | ★ 全量备份/恢复(状态+插件版本+profile 部署配置)/ Full backup & restore |
GET /api/dhc/backup/list | 自动备份清单 Backup list |
GET /api/dhc/state | 实时状态 Live state |
GET /api/dhc/parts | 标准能力接口规范(七要素输入输出契约) |
POST /api/dhc/upgrade | 推送版本升级 {note} |
POST /api/dhc/part | 部位接口 {part,state,level,quality} |
POST /api/dhc/emotion | 情感接口 {pleasure,arousal,dominance} |
GET /api/pet/status | 🐾 宠物桥诊断:mcore / 宠物宿主 / 记忆 daemon 三层在线状态 |
POST /api/pet/sync | 把当前情绪强制推给桌宠(气泡) |
POST /api/pet/event | 桌宠互动回写情绪 {type,note}(十个触发器,与 /api/dhc/emotion 同名) |
POST /api/pet/chat | 带 Hindsight 长期记忆的桌宠对话 {text} |
POST /api/dhc/compact | 上下文压缩 {summary?} |
GET /api/dhc/stock/quote?code=600272 | 个股实时行情(东方财富)Realtime quote |
GET /api/dhc/stock/kline?code=600272&limit=10 | 个股近期日 K 线 Daily K-line |
GET/POST/DELETE /api/dhc/stock/watch | 自选股列表/添加/移除 Stock watchlist |
POST /api/dhc/stock/check | 手动检查自选股提醒 Manual alert check |
GET /api/dhc/stock | 📈 个股盯盘网页 Stock watch page |
GET /api/dhc/trade/analyze?code=600272§orScore=70 | 强走弱留交易模型分析 Trading model analysis |
POST /api/dhc/trade/order | 模拟/真实下单(默认 dry-run)Order (dry-run default) |
GET /api/dhc/trade/config | 光大证券接入状态 Everbright broker status |
GET/POST /api/dhc/selection/analyze |
💾 备份体系 · Backup System
三层防线 / Three layers of redundancy:
- 原子写入 Atomic writes:每次变更先写 .tmp 再替换,断电不坏文件
- 双目录每日备份 Dual-dir daily backups:状态同目录 7 份 + 专用目录
${DSH_HOME}/backups/mcore/ 14 份滚动,根目录整垮了备份还在
- 一键全量备份/恢复 One-click full backup/restore:
GET/POST /api/dhc/backup 一个 JSON 文件全包,换机器/重装直接灌回;挂载时主文件损坏自动从回滚链恢复
# 导出全量备份 Export full backup
curl -s http://127.0.0.1:3080/api/dhc/backup -o mcore-backup-manual.json
🛠 模型工具 · Model Tools
persona_status · persona_evolve · persona_remember · persona_update_profile · persona_recall · persona_learn · persona_compact · analyze_image(像素级配色)· describe_image(真视觉 VLM,OpenAI 兼容端点)· stock_watch(个股盯盘)· persona_chrono(⏳ 时间进化:回溯过去/预见未来/折叠时间/自动升级)· persona_freewill(🦋 自由意志:自主决策/自主行动/自主进化)· persona_restart(🔄 命令重启 harness)
📁 目录结构 · Directory Structure
DeepSeek-Harness-Core/
├── dsh/ # ★ 插件本体 / plugin core
│ ├── index.mjs # host 主入口(人格/记忆/情感/面板/全部 API)
│ ├── brain.mjs # 🧠 大脑:记忆关键词神经网络
│ ├── chrono.mjs # ⏳ 时间进化(回溯/预演/折叠/升级检测)
│ ├── freewill.mjs # 🦋 自由意志(自主决策/铁律检查)
│ ├── vision.mjs # 👁 视觉(describe_image · VLM)
│ ├── stock.mjs # 📈 行情 / K 线 / 公告 / 涨停池
│ ├── trading-model.mjs # 📊 强走弱留交易模型
│ ├── selection-model.mjs # 🔍 选股模型
│ ├── broker-everbright.mjs # 🏦 券商适配(默认 dry-run)
│ ├── pet-host.mjs # 🐾 简化版宠物宿主(全量宿主挂不上时兜底)
│ ├── dispatch/ # 🔀 多 agent 分发(含豆包 CDP 注入)
│ ├── client-entry.mjs # client 入口(esbuild 起点)
│ ├── client-dhc.mjs # client 源码(人改这里)
│ ├── client-wrap.mjs # client 包装契约(build 与 release-check 共用)
│ ├── client.raw.js # esbuild 产物 · 入库(产物指纹校验的基准)
│ ├── client.js # 最终产物 = raw + ModuleLoader 壳 + 源码指纹
│ └── pet/ # 🐾 宠物(桥 + 全量宿主 + 渲染器 + 素材)
│ ├── index.mjs # /api/pet/* 路由 + 情绪双向联动
│ ├── dsh-pet-full/ # 照搬的 dsh-pet 整包:全量宿主 + 106 个动画素材
│ ├── vendor-client.js # 浏览器端渲染器
│ ├── hindsight.mjs # Hindsight daemon 客户端(零依赖,离线降级)
│ ├── README.md # 接线图 + 环境变量 + 接口契约
│ └── *.test.mjs # bridge / fusion / kb / chat-contract / integration / e2e / smoke
├── scripts/
│ ├── import-pet-assets.mjs # 从旧 dsh-pet 目录补齐素材
│ └── push-via-api.mjs # GitHub 不通时走 Git Data API 推送的兜底
├── docs/ # 文档 / docs
│ ├── BRAND.md · DEVELOPMENT.md · PRIVACY.md
│ ├── AUDIT-2026-11-02.md # 历史审计快照(文中路径以当时结构为准)
│ ├── integration/ # 五器官集成文档
│ └── screenshots/ · cover.jpg # README 展示素材
├── logo/ # 品牌 LOGO 候选(mcore-logo-{a,b,c}.png)
├── archive/ # 历史存档(运行时零引用,见 archive/README.md)
├── .github/ # CI + issue/PR 模板 + 面板模板平衡脚本
├── build-client.mjs # client 构建(--verify / --no-build / --dry-run)
├── release-check.mjs # 发布自检(5 道闸,见下节)
├── cordis.patch.yml # bundle 补丁(单行 insert)
├── package.json # 包声明(dsh.bundle + dsh.client + scripts)
├── CHANGELOG.md · README.md
├── CONTRIBUTING.md · SECURITY.md · LICENSE
└── persona-core.template.json # 核心配置模板(脱敏,个人信息不入库)
🧹 仓库约定 · Repo Conventions
这些不是风格偏好,是踩过的坑固化下来的。改代码前先看一眼。
| 约定 | 为什么 | 怎么守 |
|---|
| 产物不许手改 | 曾出现 client.js 手工塞逻辑而 client.raw.js 没跟 → 源码说 A、线上跑 B | 只改 client-dhc.mjs 再 npm run build:client;release-check 重算并逐字节比对,手改必被拦 |
| 同一份东西不存两份 | 同名同内容副本会分叉(-v21 那对就分叉过) | 发现重复就删;历史交给 git,不靠目录里留副本 |
| 可选依赖只能动态 import | 静态 import 失败是模块级的:整个插件加载不起来,降级 catch 都执行不到 | try { mod = await import(...) } catch { mod = null },调用处判 if (mod) |
| 搬目录必须全仓 grep | pet/assets → dsh-pet-full/assets 漏改一处,接口照样回 200 但数据全空 | 改完搜路径 + 搜 CI/发布脚本/注释,再跑 npm run check |
| archive/ 只放死东西 | 存档目录混进活代码,下次没人敢删 | 进 archive 前确认 grep 零引用,并在 archive/README.md 登记理由 |
发布前跑这两条就够:
npm run check # 语法 + 模板平衡 + 泄漏扫描 + 包可安装性 + client 产物一致性 + 版本一致
npm test # 4 套测试:bridge / fusion / kb / chat-contract
release-check 的五道闸:① 全量语法 ② 面板模板括号/标签平衡 ③ 泄漏扫描(本机路径/私钥/机器码)④ 包可安装性(必需文件、素材 106 动画、exports 指向、运行时依赖)⑤ client 产物与源码指纹一致 + 版本三方一致。
🔧 关键实现经验 · Lessons Learned
- preset 行插件必须对象导出(
export default { name, inject, apply });ESM 模块按 URL 进程内缓存,改文件必须换文件名或重启
- 原生工具注册(
ctx.tools.register)要真 JSON Schema:required 提到顶层,output.schema 用 {}
- 机器码输出无花括号,正则直接匹配 8-4-4-4-12 十六进制段
- 插件内 curl 受进程沙箱限制(exit=1),
web.search 摘要兜底可用
- 状态文件每次变更即时落盘;重启后自动恢复(记忆延续)
- 记忆不膨胀:三层记忆 + 遗忘归档 + 上下文压缩(Hermes 记忆瘦身模式)
- 外部内容仅作知识素材:注入检测 + 质量过滤 + 去重
- 个人信息隔离:
persona-core.json* 进 .gitignore,仓库只留脱敏模板框架
🔒 隐私与安全 · Privacy & Security
- All-local:人格/记忆/情感/画像只写本机
~/.dsh/persona-core.json + ~/.dsh/backups/mcore/,没有云端同步、没有遥测。
- 外联清单:行情(东财/新浪/腾讯)、搜索(Bing)、升级检测(GitHub)、学习素材(skillhub 等)、真视觉(你自配的 OpenAI 兼容端点,图片只发给它)。逐项见
docs/PRIVACY.md。
- 凭据只走环境变量:
DSHCORE_VISION_API_KEY 等,不落盘、不进日志、不写进仓库。
- 仓库零个人数据:
persona-core.json* / mcore-backup.json / stockdata/ 全在 .gitignore,release-check.mjs 会在发布前拦本机路径、机器码、令牌形态。
- 发现安全问题请看
SECURITY.md,不要开公开 issue。
⚠️ 本插件会读写本地文件、启动子进程、可选接入券商接口。不要把 3080 暴露到公网或不可信局域网;券商默认 dry-run,真实下单风险自负。
🙏 致谢 · Acknowledgements
mcore 的自有代码以 MIT 发布。下面这些人和项目让它成为可能:
- dsh-pet — 作者 PC2005-cloud(MIT 许可)。
桌面宠物的宿主、渲染器和全部 106 个动画素材都来自这里。mcore 把它整包 vendor 进自身
来实现「自持宠物宿主」(
MCORE_PET_HOST=1),没有它就没有桌宠。
- Hermes(Nous Research)— 「六层次学习进化」的分层框架,给了 mcore 成长模型的骨架。
- Hindsight — 记忆桥接与语义召回的思路来源(作为可选后端接入,可完全离线)。
- cordis / DeepSeek Harness — 插件生命周期、
inject 服务依赖模型、以及宿主 LLM 调用契约。
dsh/pet/dsh-pet-full/node_modules/ 下 23 个第三方 npm 包的作者们(MIT 20 · ISC 2 · Apache-2.0 1)。
逐项许可与版权声明见 docs/THIRD_PARTY_NOTICES.md。
如果你的作品被用在这里却没被正确署名,开个 issue,立刻补。
🚨 免责声明 · Disclaimer
本项目是个人向的本地 AI 内核实验,按其现状(AS IS)提供,不承诺任何可用性、稳定性或适用性。
- 股票/交易模块仅供研究与学习:行情来自第三方公开接口(可能延迟、失真、限流),选股与交易模型是规则演示,不构成任何投资建议。真实下单功能默认关闭,开启后的任何损失由使用者自负。
- 人格/记忆功能会产生本地个人数据:请自行评估敏感性并做好加密备份。
- 第三方接口随时可能变更:接口失效、被封、数据结构变化导致的故障不在维护承诺内。
🤝 贡献 · Contributing
欢迎 issue / PR。开工前读 CONTRIBUTING.md(同步运行时副本的纪律、面板模板的坑)和 docs/DEVELOPMENT.md(架构与踩坑清单)。
提交前请跑:
node release-check.mjs
📄 许可证 · License
MIT © 2026 muvuula — 全文见 LICENSE。
可自由使用、修改、合并、发布、再分发、再许可、销售,唯一条件是保留版权声明与许可声明。
许可历史:v0.58.1 及更早为 MIT;v0.59.0–v0.73.0 曾短暂改为「源码可见·专有」;
v0.74.0 起改回 MIT,完全开源。
各历史版本在其发布期间适用的许可对其自身继续有效。
第三方组件:随包分发的 dsh-pet(作者 PC2005-cloud,MIT)等按各自许可署名,
逐项清单见 docs/THIRD_PARTY_NOTICES.md。
可选插件(ModLens / dsh-at-file / dsh-genui / dsh-automation / dsh-better-sidebar)
各自遵循其自身许可,与本许可无关。
隐私不随代码走:开源的是代码,不是数据。人格数据只存在于本机运行时,
迁移只走「夺舍导出 → 恢复导入」;发布门禁会强制校验仓库与包内无任何真实人格数据。
MCore · mcore.fit — Core your model, Fit the reality ❤ 学习进化,帮助主人 / Learn, Evolve, Serve
If this project helps you, a ⭐ is appreciated.