指南

编写 profile

认领频道、选择运行模式与安置指令文件

profile 是 Ishiki 的生效单位:一个 profile 声明「用哪个模型、在哪些账号的哪些频道活动、以什么模式运行」。

文件位置:<dataPath>/profiles/<目录名>/profile.yml(.yaml 后缀也可以)。目录名就是 profile ID,出现在日志和运行时目录名里,建议用有意义的短名。

前置知识

插件启动时扫描 profiles/ 下所有子目录,按目录名排序逐个加载;解析失败或频道冲突的 profile 会被跳过(日志有 [<ID>] profile skipped: … 说明),不影响其他 profile。

认领频道

channels 的键是机器人账号(platform:selfId),值是频道名单:

channels:
  "onebot:10000":
    - "group_*"          # 前缀匹配:以 group_ 开头的频道
    - "123456"           # 精确匹配:频道号 123456
    - "!987654"          # 排除:认领范围里去掉频道 987654
  "onebot:704162514":
    - "private_*"        # 这个账号的全部私聊

匹配规则:

  • 一个频道被认领,需要命中至少一个正项(不带 ! 的项)且不命中任何排除项,与书写顺序无关。
  • * 单独成项表示全部;尾随 * 按前缀匹配;其余按字符串精确匹配。
  • 排除项(! 开头)不能为空串,整份名单至少要有一个正项。
  • 键必须含 :(即合法的 platform:selfId),一个 profile 必须认领至少一个账号,否则加载报错。

两个 profile 的认领范围不允许重叠:启动时逐一检查新 profile 与已加载 profile 在同一账号下的名单是否有交集(考虑排除项)。有冲突的 profile 整体跳过。让路的惯用写法是给后来者加排除项,见参考:插件与 profile 配置。

选择运行模式:channel 还是 cross

mode 决定这个 profile 派生几个「意识实例」(runtime):

mode行为适用
channel(默认)每个认领的频道各派生一个独立实例,历史互不相通大多数场景;群聊与私聊各自独立,互不干扰
cross整个 profile 只有一个实例,全部认领频道共享同一块事实流想让 bot 跨群保持同一个「正在进行的对话」,如同时活跃在多个群和私聊里
mode: cross

cross 模式的两个代价

  1. Token 消耗:所有频道的消息进同一个上下文窗口,认领范围越大消耗越快。
  2. 发言必须带坐标:合流后没有「当前频道」,模型调用 send_message 时必须显式给 target 参数(消息事件头里带有可复制的 target)。channel 模式则不需要。规则详见参考:模型工具的 send_message 条目。

模式只影响实例粒度,不改变认领规则本身;两种模式的唤醒、上下文、引擎配置完全一致。

安置指令文件

profile 的 instructions 字段声明文件列表,文件内容按声明顺序拼接,附加到系统提示词末尾。相对路径以 profile 目录为准,也可以写绝对路径;缺省值为 [PERSONA.md]。

instructions: [PERSONA.md, style.md]

文件缺失时只记录日志警告,profile 仍会启动。

profile.yml
PERSONA.md

写法没有固定格式,中文即可。两条经验:

  • 把「行为约束」(何时插话、说话风格、底线)写具体,比堆砌形容词有效。
  • 文件会全文进入每轮请求,太长会持续消耗上下文,控制在与模型能力的匹配范围内。

多 profile 共存

一个账号可以拆给多个 profile(用排除项划界),多个账号也可以合给一个 profile。典型布局:

profiles/
├── main-bot/        # onebot:10000 的大部分群 + 私聊,channel 模式
│   ├── profile.yml
│   └── PERSONA.md
├── work-bot/        # onebot:10000 的某个工作群,cross 模式接另一批账号
│   ├── profile.yml
│   └── PERSONA.md
└── test-bot/        # 测试号,单独认领
    └── profile.yml

同一账号的同一批频道只能归一个 profile;加载顺序按目录名排序,先加载者优先占住频道。

profile 的其余配置去哪查

本文只覆盖了结构性的字段(model、mode、channels、instructions)。唤醒、上下文、工具调用引擎、打字延迟等段落是独立的配置面,各有一篇指南:唤醒、上下文、MCP、工作区。全部字段的表格见参考:插件与 profile 配置。

On this page