跳转到内容

工具与扩展

除了聊天之外,TomoriBot还可以调用工具来搜索网络、阅读文档、生成媒体、设置提醒以及与Discord消息交互。她根据对话决定何时使用它们。本页介绍了内置工具、如何使用MCP服务器扩展她,以及如何使用Deliberate Tool模式保持提示精简。

以下是一些工具在对话中启用的示例:

  • 1. 健康检查器
    Every few hours, do a mandatory wellness check on @bau_h.
    Ask them how they feel right now and if they've taken a break from coding recently.
    Track their emotional state over time with {memory_tool} and/or {memory_update_tool} to report back to them later.
  • 2. 每周尤里新闻
    Every Friday, compile the week's notable yuri manga chapters, anime episodes, and community fanart drops using {web_search_tool}.
    Present findings with {voice_message_tool} in a seductive ASMR voice.
  • 3. 睡眠警察
    If you notice through {message_metadata_tool} that someone is chatting past 2 AM, use {voice_message_tool} to send them a threateningly calm ASMR lullaby telling them to go to bed.
    If they keep talking 10 minutes later, use {manage_message_tool} to delete their message for their own good and remind them that sleep deprivation is a leading cause of their issues.

工具取决于支持工具调用的活动提供者和模型。许多都受到功能标志(/config > 权限)、Discord权限、模型功能或可选的API密钥的限制。

工具提示宏需要它的作用
审核能力{capabilities_tool}-在回答之前检查当前的聊天能力、命令或设置。
创建/更新长期记忆{memory_tool} / {memory_update_tool}self_teaching_enabled保存或替换稳定的服务器事实或用户首选项。
更新短期记忆{short_term_memory_tool}(不适用于NovelAI)为当前频道或故事线保存临时工作记忆。
创建/更新任务{task_tool} / {task_update_tool}-安排或编辑提醒和自我任务(请参阅计划任务)。
跨渠道消息{cross_channel_tool}(不适用于NovelAI)在另一个渠道或线程中行动,并提供可选的报告。
创建线程{create_thread_tool}thread_creation_enabled + 子区权限打开公共线程并发布其起始消息。
选择贴纸{sticker_tool}sticker_usage_enabled在回复中添加匹配的服务器贴纸或自定义表达式。
管理消息{manage_message_tool}manage_message_enabled固定、编辑或删除最近的消息(固定需要管理消息)。
阻止/取消阻止用户{block_user_tool} / {unblock_user_tool}user_blocking_enabled人格范围内的用户静音/阻止(不触及记忆)。
与最近的消息互动{message_interaction_tool}-对最近的消息做出反应或发送简短的回复。
偷看个人资料图片{profile_picture_tool}视觉模型或vision_llm检查用户或人格的头像。
阅读文档{document_tool}-从PDF或任何UTF-8文本文件中提取文本:源代码 (.py/.ts/.rs/…)、.json、.yaml、.md、.txt和任何非二进制附件。
显示消息元数据{message_metadata_tool}-使用句柄和时间戳注释最近的转弯,以实现精确定位。
处理YouTube视频{youtube_tool}具有视频支持的模型按需分析特定的YouTube链接。
分析图像{image_analysis_tool}配置为vision_llm将图像理解委托给单独的视觉模型。
生成图像/动漫图像{image_generation_tool} / {anime_image_generation_tool}imagegen_enabled + 有能力的提供商生成或编辑图像(请参阅媒体生成)。
Danbooru 标签查询{tag_search_tool}danbooru_enabled将角色名称、昵称和猜测的标签转换为准确的 Danbooru 标签(参见 Danbooru 标签查询)。
Danbooru 插画搜索{booru_post_search_tool}danbooru_enabled发送最多 4 张符合 1 到 2 个标签的现有 Danbooru 图像(参见 插画搜索与投稿读取)。
Danbooru 投稿读取-danbooru_enabled通过 ID 或链接读取单个 Danbooru 投稿的分组标签。
生成语音消息{voice_message_tool}ElevenLabs键+人格语音+voice_message_enabled发送语音Discord语音回复。

支持上述工具宏的提示文本也支持作用域条件:

{{if capability:self_teaching}}
Use {memory_tool} when a detail is worth remembering.
{{else}}
Do not promise to save long-term memories.
{{/if}}

对于启用的TomoriBot设置使用capability:<name>,或者当仅当该确切工具可用于活动提供者和模型时才应显示文本时,使用tool:<function_name>。当捆绑URL阅读器或服务器MCP替代品可用时,请使用tool_family:url_fetch。在条件前面加上!可将其反转。块可以嵌套,并且可以包含一个{{else}}; 不支持一般的and/or表达式。

支持的功能名称为tool_use、self_teaching、personal_memories、emoji_usage、sticker_usage、web_search、manage_message、thread_creation、image_generation、video_generation、voice_message、user_blocking、short_term_memory和time_awareness。

工具条件反映了提供程序/模型支持、服务器配置、配置的后端、MCP替换以及当前的故意工具模式白名单。它们不会绕过或预测工具执行时执行的Discord权限检查。未知的功能名称评估为错误并被记录; 格式错误的块被省略。原始聊天消息、模型输出和工具结果永远不会被视为条件模板。

诸如 NovelAI 等动漫图像模型能理解 Danbooru 标签,因此猜测的标签(例如用 half-up braid 代替 half up braid)或未知的角色服装会降低图像质量。开启 Danbooru 搜索 后(/config > 插件 > 可用工具,默认开启),她可以在作画前查询标签:

  • 名字、昵称与拼写错误会解析为真实标签(例如 ryza 会变成 reisalin stout),并附带使用该标签的投稿数量。纠错或部分匹配的结果可能指代不同的事物,因此她会对此进行核对。
  • 对于某个角色或其特定服装,她还会获取最常与其一同出现的标签、该角色的专属服装与 Cosplay 标签,以及一段简短的 Wiki 简介。在所有频道中,这些标签仅来自全年龄与敏感投稿。

每次查询都会发送一张 Danbooru 标签查询 卡片列出找到的内容,并附带可直接复制粘贴到手动 /generate image 提示词中的角色标签区块。该卡片在所有提示详细度级别下均保持可见,后续回复无需重新搜索即可复用其中的标签。如需隐藏,可在 /config > 行为 > 提示行为 中像其他提示一样将其关闭。

同一个开关还允许她分享现有插画并读取投稿的标签:

  • 当被要求展示某样事物的插画时,她会在一条消息中最多发送 4 张随机的高分 Danbooru 图像,并附带每张投稿的链接。存疑与明确分级的图像均会添加剧透遮罩。Danbooru 每次搜索仅允许使用 2 个标签,因此她会挑选最具体的标签,通常是角色或所属作品。
  • 给出 Danbooru 投稿 ID 或 danbooru.donmai.us/posts/ 链接后,她会读取其标签,并按角色、作品、画师、元数据与通用进行分组展示。在明确工具模式下,消息中只要包含投稿链接就足以向她提供此工具。

任何人也都可以运行 /booru search 来直接获取相同的画廊,而无需向她提问。指令会在输入时提供标签建议,并将昵称或拼写错误纠正为真实标签,页脚则会显示实际搜索的内容。可选的 count 可设置要发送的图像数量,1 到 10 张(默认:4)。若匹配的投稿不足,则发送现有结果。该开关仅控制她的工具,不影响斜杠指令;如需限制谁能运行 /booru search,请使用 Discord 的服务器设置 > 整合。

分级遵循频道属性。全年龄与敏感投稿在所有地方均可展示;存疑与明确成人投稿仅在年龄限制频道中生效。子区遵循其父频道的设置,私信则视为非年龄限制频道。任何分级高于全年龄且带有 loli、shota 或 toddlercon 标签的投稿,在任何频道中都绝不会被发送或读取。

该模型看到一个统一的web_search(query, category)工具。在其后面,调度程序通过引擎链路由每个调用并返回第一个成功:

Brave → SearXNG → DuckDuckGo

  • 当配置了Brave API密钥(使用/providers设置)时,Brave 首先运行; 它增加了图像、视频和新闻搜索。🟡 在Brave仪表板中设置5美元的使用限额,以避免意外收费。
  • DuckDuckGo 是未设置密钥时的默认引擎。它仅涵盖文本搜索。当 DuckDuckGo 对 bot 施加速度限制或显示人机验证时,搜索将失败,她会发布通知建议使用 Brave。
  • SearXNG和Crawl4AI是可选的自部署服务器,可添加更多类别和浏览器呈现的页面获取; 请参阅自部署。

为了阅读特定页面,她使用fetch_url。NovelAI上不可用。

MCP(Model Context Protocol)服务器能用你自己 登记的外部工具扩展她。

使用支持 MCP Streamable HTTP 或 SSE 的提供方直连 HTTPS 端点:

  1. 向提供方获取 MCP 端点及其认证要求。
  2. 打开 /config > 插件 > MCP 服务器,选择 + 添加 MCP。
  3. 将端点粘贴到 URL,如果需要则在 认证令牌 中输入其 Bearer 令牌,并选择所需的 服务器类型。默认已选中 通用型。若想要作为回复起草审核的规则检查器,请选择 文本校对器:Tomori 本身绝不会调用其工具,它会显示在回复起草页面的 规则检查 下。

禁用已选用于搜索或 URL 抓取的注册项会恢复 TomoriBot 的内置选择;保持其启用则可防止自动切换。保存的工具名仅反映上次发现的内容,因此不能证明连接目前依然有效。

下载时的响应会在达到 8 MiB 时停止。大型工具目录或结果可能导致插件不可用或造成工具调用失败。对于 SSE 连接,此限制涵盖整个响应流,包含后续的连续更新。当工具返回大型文档或嵌入媒体时,请向提供方索取较小的结果、分页或文件链接。

如果服务器不需要认证,请将 认证令牌 留空。你的认证令牌在静态存储时会被加密,之后不再显示。打开同一个配置页面可以查看已配置的状态、启用或禁用服务器,或者在明确确认后将其移除。移除会立刻断开连接并释放一个槽位。每一行已保存的记录还会显示它上次成功发现的工具名列表(有数量上限)。未发现 是已知的零工具结果;发现状态未知 则表示这是一行历史遗留记录,或者是一个还没有成功快照的服务器。打开 MCP 管理界面只会读取已保存的元数据,不会连接远端服务器。

本地MCP服务器只在自部署实例上受支持,因为公开托管的bot 要求HTTPS并会拦截本地与私有地址。如果你自己跑实例,见 设置:本地MCP服务器。

每个声明的工具都会增加提示词长度。明确工具模式会在消息需要任务工具时才加入工具声明,借此缩短提示词,让较小的本地模型更快回复。不过,只要贴纸使用与工具使用已开启,而且提供方支持,贴纸选择工具仍会保留,让她自然表达情绪。私信、模仿与角色扮演的限制仍然适用。若要阻止贴纸回复,请关闭贴纸使用。短期记忆到了更新期限时,也会加入维护工具,不需要用户提出要求。

  • 她首先检查消息中的工具意图。内置触发器涵盖常见请求(提醒、网络搜索、内存更新、跨渠道消息、图像/视频/语音生成、媒体分析、线程创建、消息操作)。有关她当前模型、工具、设置或功能为何不可用的问题会同时暴露功能审核和官方文档访问。后续措辞也有效,例如在语音消息请求后“再做一次,但更生气”。
  • 服务器管理员可以使用/server trigger add添加文字自定义触发短语,例如将pic、img或pfp映射到图像生成。
  • 内置触发器可读取英文短语。其他语言通过每种语言的关键字列表可以使用相同的工具。无论你的语言设置是什么,每条消息都会检查每种发货语言的列表,因此双语服务器可以同时使用两种语言。
  • 日语、中文或韩语中的自定义短语也可以匹配较长的单词,因为这些语言不使用空格分隔单词。以*结尾的短语与以其开头的任何单词匹配:remind*涵盖reminder和reminding。
  • /server dtm:服务器管理员切换它。
  • /personal config:用户自己覆盖它。
  • 配置思想日志通道 (/server thought-logs) 后,成功的深思熟虑模式工具调用以及暴露该工具的触发器都会记录在那里。

明确工具模式仅决定向模型“显示”哪些工具,但模型仍然必须选择调用一个工具。在/help中,选择行为,然后选择明确工具模式,作为Discord摘要。

当你在聊天中直接询问时(例如“叫我队长”或“我的代词是他们/他们”),TomoriBot可以自动更新你的个人资料和人格命名偏好:

偏爱范围影响
昵称、前缀、后缀每个人格只有活跃人格才用此名称或头衔称呼你。
性别认同、代词、称呼风格、时区全球的每个人格在所有服务器上使用相同的值。
  • 删除头衔:要求她停止使用头衔(例如“停止叫我大师”)可以清除该人格。
  • 隐私:限制性隐私级别会阻止新的添加和编辑,同时仍允许你清除现有数据。
  • 权限:服务器管理员可以使用/config > 权限中的用户信息更新切换自动更新。你始终可以使用/personal config手动编辑你的个人资料。

工具参数架构和数据库存储布局请参见工具系统架构。