这里填的是控制台账号,不是 Second Life 账号。
SL 账号在登录之后的设置里填写。
这个 NPC 用来登录 SL 的账号。密码在浏览器端就转成哈希再上传,明文不会离开你的电脑。修改后需要重新上线才生效。
支持 SillyTavern 的 V1/V2/V3 角色卡,PNG 或 JSON 均可。导入后这个账号扮演卡上的角色,下方手写人设让位。各账号的角色卡互不影响。
附近聊天里被叫到这些称呼才会接话。私聊不看称呼,收到就算在跟她说话(要不要回由「说话范围」决定)。
两个频道各自决定:谈不谈工作、闲不闲聊。两个都不勾,这个频道就整个关掉。判定在调模型之前,所以关掉的部分是真的不花 token,不是「回得短一点」。
| 谈工作 | 闲聊 | |
|---|---|---|
| 附近聊天 | ||
| 私聊 |
决定这个 NPC 什么时候开口,只影响附近的公共聊天。上面「说话范围」先决定理不理,这里决定在一屋子人里怎么判断这句是不是在跟她说。判定为工作的话不受这里影响,一律接得住。
有人习惯一句话拆成好几条发。开着的话它会等对方说完,把这几句当成一段话一次性回复,而不是逐条抢答。对方还在打字就继续等。
Scripted Agent 的发送量有配额,消息拆得越碎越容易撞上限制;对方也读不过来。默认攒长一点、发慢一点。
有人走进区域时主动招呼一句。默认关闭 —— 这是最容易变成骚扰的功能,一个人来回穿区域会连着触发。
多人在附近闲聊时,听着不说话;聊到跟自己有关的事,偶尔插一句。默认关闭。
最近这些附近聊天各自是怎么判的。参数调不动的时候看这里,别猜。
打开后,这个账号在私聊里可以进行成人向的角色扮演:措辞直白、不回避身体描写,动作的长度与频率限制一并放开。附近聊天不受影响,始终按常规规则说话。
不上 SL,直接在网页里以访客身份跟它说话,用来验证上面这些规则调出来是什么效果。试聊的记录和记忆单独存,真人的记录不受影响。
坐在物体上可以防止被人撞开,物体里的脚本还能给它播动画,不至于傻站着。
它站的地方是什么样,尤其是有没有能坐的东西。SL 的协议读不出「这个物体能不能坐」,只能由你交代 —— 不填就一律不招呼客人坐下。
没有"站在锚点被撞开自动走回"这个模式,因为 node-metaverse 不提供自身坐标,漂移检测无从做起。想防撞请把地块设为禁止推撞(Restrict Pushing),配合坐下即可。
SL 的区域每周会重启一次。收到重启警告后按下面的方式处理,全程只记控制台日志,不会在 SL 里说话,也不会私信主人。
每个账号有自己独立的记忆数据库,进程重启不会丢,账号之间也不互通。
这两件事跟回话没关系,但都在后台花钱。只用来展示商品的 NPC 不需要记住谁是谁,关掉能省下相当一部分账单。
按见面次数和聊天量自动累积,态度差会扣分(每次整理记忆时由模型给这段对话的态度打 -5 到 5 分)。长期不见会慢慢回落,一周掉 1 点。好感度按角色分开算,换角色卡后重新来过。
对话和摘要按当时扮演的角色名分开存。换过角色卡的话,旧角色名下的记录还留在库里,可以单独删掉。「记住的事」按人存,不属于任何角色,不在这里删。
给 NPC 一份能查的资料:商品表、店规、常见问答。库是全局的,每个账号挂哪几个各自决定 —— 一个店同时挂店长和客服两个 bot 时,商品表只维护一份。
让 NPC 能回答「那件东西摆在哪」,并把位置链接发给客人。这一步还在做,目前只有巡场试扫:把相机在区域上空走一圈,看看到底能扫到多少物体、有没有坐标。
主人不看好感度,邀请传送、请它坐下一律放行;驻守目标丢了这类情况也会私信通知他们。填 UUID 而不是名字 —— SL 的显示名可以随时改,UUID 不会变。
别人邀请它传送过去时怎么办。主人始终放行,其余人看好感度。无论接受还是拒绝,它都会用角色的口吻回一句,不会干晾着。
对方可以直接说「坐到那把椅子上」。它会扫描附近的物体、按对方所在位置由近到远排,匹配名字后坐上去。坐到别处期间驻守会让位 10 分钟,之后自己回岗。
对方说「陪我去温泉」时,它会真的传送过去,不再只是嘴上答应。只能去下面登记过的地点。对方离开视线满 2 分钟,或者说了要走,它自己回店。
好友申请、物品投递、群邀请、脚本权限。选「等我处理」时会挂在「居民 - 待办请求」里,同时给主人发一条私信。主人发来的请求不受「一律拒绝」限制。
把链接发给别人,他们不用登录控制台,凭你给的昵称和口令就能跟这个 NPC 说话。对方在网页里聊,不经过 Second Life;这个账号不上线也能用。
一人一个昵称和口令。昵称就是身份 —— 换设备换浏览器还是同一个人,NPC 的记忆接得上。
对外页每说一句都要调模型,账单记在你头上。这三个数是拦住脚本刷量的唯一一道闸门。
所有账号共用这份配置,API key 只需填一次。每个账号在「账号」页里选用其中哪一条。
开启后 NPC 能回想起久远的对话细节,而不只是最近几轮和摘要。需要一个提供 embeddings 接口的来源 —— DeepSeek 没有,SiliconFlow 的 BGE-m3 免费可用。
所有走模型的调用都记在这里:聊天、整理记忆、连通性测试各自分开算。数据只保留 90 天,删掉不影响任何功能。
评估一个 NPC 要多少资源、一台机器能放几个,看这一页。CPU 只统计得到本程序自己的同步代码,SL 协议解码和垃圾回收归不到具体账号头上,所以进程那一段另有一栏「未归属」—— 别把已归属当成全部。
| 账号 | CPU | 磁盘 | 记忆 / 向量 | 收 / 发 | token |
|---|
这里管的是「谁能登录这个控制台」,和 SL 账号是两回事。每个用户登录后看到的是他自己那一份数据:自己的 SL 账号、自己的模型来源、自己的记忆,互相看不见。
.env 里的 MAX_BOTS_PER_USER。.env 里的那个)不能在这里删改,它是万一锁死自己时的后路,改密码请改 .env 后重启。全站所有用户的 NPC 聊天记录,包含网页试聊和 SL 里的真实对话。只读 —— 这里不能删改任何记录,要删得由数据的主人在他自己的控制台里做。
一台机器上可以同时挂多个 SL 账号,各自独立的角色卡、记忆和驻守设置,互不干扰。
自动策略在「设置 - 主人与权限」里配。这里只列出需要人工决定的。掉线或重启后旧请求会失效 —— 会话 ID 只在本次连接内有效,对方那边会自行超时。
当前区域里的其他头像,每 5 秒刷新一次。不显示距离 —— SL 协议不向脚本代理提供自身坐标,没有参照点就算不出距离。
名单来自登录时的好友表,离线好友也在其中。在线状态只有在对方授予「可以看到我在线」时才拿得到。
这个账号加入的群。当前只读,加群退群请用官方客户端。
来自记忆库,不依赖 SL 连接,离线时也能查看。
与 SL 服务端的屏蔽名单同一份,用官方客户端改了这里也会跟着变。被屏蔽的居民说话,NPC 不回复、不写进记忆、不触发进店打招呼。
让 NPC 用对话驱动带脚本的商品(乐器、道具)。你在这里定义一套命令,顾客说「弹一首」「停下」时,NPC 就把对应的那句话发到 SL 聊天里,商品的脚本收到后照做。
发送内容按你在 viewer 里的打法填:/9 play 表示发到 9 频道,STOP 表示发到公屏。带 {value} 的地方会替换成取值,比如 /9 play {value} 配上曲目清单,就能点曲。
「名称」是 NPC 认得的那个说法,也用来判断顾客这句话算不算生意。「什么时候用」写清楚就少误触发 —— 这一栏比名称更重要。
曲目名只有脚本自己知道。开启后 NPC 会发一条查询命令,脚本把清单报回来,自动填进下面指定的那条命令的取值里。只对实现了 AI 回执协议的脚本有效(我们自己写的那些)—— 第三方商品把这里关掉,手工填取值即可。
不经过模型,直接让这个账号把命令发出去。上线之后想让它弹就点一下,不用先跟它说话。乐器没反应时也靠它把问题切成两半——下面会显示实际发出去的原文和频道,发出去了而乐器不动,那就是脚本或频道的事。
指令集是共用的,多个 NPC 可以用同一套。选「不使用」则这个号完全看不到这组能力,模型连工具都拿不到。
读的是这个 SL 账号「我的装扮」里保存的套装。要先在 viewer 里把装扮存好,这里才看得到。读取和换装都需要 NPC 在线。
到点自己换一套。只换上面勾了「参与轮换」的那些,少于两套不动。
两种触发方式,可以只开一种。都只在附近聊天生效,私聊里永远不认 —— 换装是当场看得见的动作,人得站在旁边才有意义。
/outfits 报出清单,/wear 3 或 /wear navy 换指定的一套(编号、全名、前缀、包含都能匹配)。中文别名 /套装、/换装 也认。从零到 NPC 开口说话,六步。驻守、知识库、指令集、套装这些进阶功能不在这里讲,设置里每个页签顶部都有自己的说明。
每个 SL 账号都要在 secondlife.com 的 sisa.php 页面注册为 Scripted Agent,这是 Linden Lab 的要求,不注册会被封号。
设置 → 账号管理:填一个显示名,点「添加账号」。然后切到「账号」页,填 SL 的名字、姓氏(新式用户名固定填 Resident)、密码和上线位置,保存。
密码在浏览器里就转成哈希再上传,明文不会离开你的电脑。
NPC 说的每一句话都由大模型生成,所以你需要一家模型服务商的账号和它的 API key。预置支持 DeepSeek、xAI (Grok)、OpenAI、Anthropic (Claude)、Moonshot (Kimi)、智谱 GLM、SiliconFlow、OpenRouter、Ollama(本地);其它提供 OpenAI 兼容接口的服务选「自定义」。
key 加密存在服务器上,所有 SL 账号共用;每个 SL 账号可以在「账号」页单独选用哪一条。
可选:「向量化」让 NPC 记得久远的对话细节,需要一个提供 embeddings 接口的来源。DeepSeek 没有这个接口,SiliconFlow 的 BGE-m3 免费可用。不配也能正常聊天。
设置 → 角色:导入 SillyTavern 角色卡(PNG 或 JSON),或者直接在「手写人设」里填角色名和人设正文。
「别名」决定附近聊天里叫到哪些称呼它才接话,多填几个常见叫法。
顶栏的「上线」按钮让当前选中的 SL 账号登录,登录后同一个按钮变成「下线」。多个账号可以在账号管理页「全部上线」「全部下线」。
不回话的时候先看左侧「系统日志」有没有报错,再看设置 → 对话 → 「判定记录」,那里写着每一句为什么回了或没回。