リソース詳細 · 人格系统
一个尊重边界的语气状态机
用明确事件切换温和、轻松和认真的表达风格,短期状态到期后自然回落,并持续记住是否允许玩笑;不需要分析或保存聊天原文。
本文・例・ライセンスは原文のままです。コードを表示するだけで、オンライン実行やAI呼び出しは行いません。
リソース詳細
适合学习纯函数、有限状态和过期时间处理。调用方负责把用户明确请求转成事件,状态只用于组织表达方式,不用于判断真实心理,也不应让用户的沉默触发负面反应。
始める前に
- 対応環境
- Windows · macOS · Linux
- 更新日
- 准备 Node.js 24 和文本编辑器;本站仅在 Node.js v24.19.0 的本地环境核对附带示例。
- 先理解函数输入、返回状态和 jokes-off / celebrate 等明确事件。
node tone-state.mjs先在文件所在文件夹打开终端。本例无需 npm install,不联网、不调用 AI 接口;不含真实平台接入。
よくある注意点
- 保存为指定 .mjs 文件,避免变成 .mjs.txt;不要复制 Markdown 的三反引号。
- 它只计算语气状态,不识别真实情绪、不生成回复;状态保存需应用另做。
本文全文
// SPDX-License-Identifier: MIT
// 原创教学示例:事件由调用方提供,不从文本猜测情绪。
export function nextTone(previous = {}, options = {}) {
const { event = "idle", nowMs = Date.now() } = options;
const events = new Set([
"idle", "celebrate", "support", "focus", "jokes-off", "jokes-on",
]);
if (!Number.isSafeInteger(nowMs) || nowMs < 0 || !events.has(event)) {
throw new TypeError("事件或时间无效");
}
const old = previous && typeof previous === "object" ? previous : {};
const anchor = Number.isSafeInteger(old.updatedAt) ? old.updatedAt : 0;
const now = Math.max(nowMs, anchor); // 时钟回拨不会延长剩余时间。
const modes = new Set(["neutral", "warm", "playful", "serious"]);
const state = {
mode: modes.has(old.mode) ? old.mode : "neutral",
jokesAllowed: old.jokesAllowed !== false,
until: Number.isSafeInteger(old.until) ? old.until : 0,
updatedAt: now,
};
if (state.until <= now) state.mode = "neutral";
if (event === "jokes-off") state.jokesAllowed = false;
if (event === "jokes-on") state.jokesAllowed = true;
const requested = {
celebrate: state.jokesAllowed ? "playful" : "warm",
support: "warm",
focus: "serious",
"jokes-off": "serious",
"jokes-on": "neutral",
}[event];
if (requested) {
state.mode = requested;
state.until = now + 10 * 60 * 1000;
}
if (!state.jokesAllowed && state.mode === "playful") state.mode = "warm";
return state;
}
const quiet = nextTone({}, { event: "jokes-off", nowMs: 0 });
console.log(nextTone(quiet, { event: "celebrate", nowMs: 1000 }).mode);
// 输出 warm:庆祝也会尊重明确的玩笑边界。使い方
先运行资源自带的例子:用户已经要求不要开玩笑,随后即使收到庆祝事件,也只切换成温和语气。
保存完整代码
复制本页教学代码,保留许可证声明和自带示例,保存为 tone-state.mjs。确认不是 tone-state.mjs.txt;文件内容不要加上 Markdown 的三反引号。
在所在目录运行
打开终端并进入保存文件的文件夹,执行下方命令。本例不需要 npm install,也不需要任何平台账号或密钥。
对照状态变化
预期输出 warm,表示尊重了之前的 jokes-off 请求。理解后可把事件改成 focus 再观察 serious;事件必须由你的程序明确提供。
- 保存ファイル名
tone-state.mjs- 実行環境
- Node.js 24;本站实际核验版本为 v24.19.0。使用 .mjs 文件直接运行,不需要安装第三方 npm 依赖。
- 依存関係と費用
- 这段示例不联网、不调用 AI 接口,不产生模型接口费用。运行设备、电力由使用者自行承担;接入真实模型或平台后的费用需另行核对。
実行コマンド
node tone-state.mjs期待される出力
warmローカル検証
2026-10-22 · Node.js v24.19.0
已在本站本地运行资源中原样附带的教学片段,核对下方控制台输出;不代表已验证生产环境、平台接入或所有边界情况。
適した用途
- 学习纯函数与有限状态机
- 为应用组织表达风格提供一个教学起点
使用前の注意
- 只返回状态,不生成聊天回复,也没有对接微信或其他平台。
- 不从聊天文本判断真实心理,不会自动记忆或存储状态。
- 单次演示输出已经核验;正式接入前还需测试时间回拨、无效输入、状态持久化等场景。
作者と出典
- クレジット
- 包子海梦 · AI辅助开发
- 作者と出典
- 提示集贡献者
通知と変更内容
新编写的通用教学示例,发布前仍需核对来源与运行效果。
ライセンス全文
MIT
MIT License Copyright (c) 2026 提示集贡献者 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
検証範囲
教学代码已运行
已运行完整带许可的教学文件并核对输出;不代表生产部署、平台接入或全部边界情况都已验证。
2026-10-23 Node.js v24.19.0