指南

调试与排障

从日志到请求落盘,定位 Ishiki 的各类问题

Ishiki 的调试面有三层:日志、请求落盘、流式分片。

打开调试开关

插件级配置(koishi.yml 或控制台插件配置页):

ishiki:
  logLevel: 3          # 0=ERROR 1=WARN 2=INFO 3=DEBUG,默认 2
  dumpRequests: true   # 每次模型请求/响应落盘
  debugStream: true    # 模型流分片实时打到控制台

三者成本递增:logLevel: 3 常驻无妨;dumpRequests 每请求写两个文件;debugStream 只适合本地盯着看。排障结束记得关掉后两个。

看某次请求发了什么

dumpRequests: true 时,每次模型调用在 <dataPath>/requests/ 下写一对文件:

1760000000000-1-request.json
1760000000000-1-response.sse

*-request.json 是发出的请求体,*-response.sse 是原始 SSE 响应流。

文件名前缀是时间戳加序号,按时间排序即可回放一次对话的所有请求。这能直接回答:系统提示词长什么样、工具目录给了哪些、历史投影后剩了什么、附件消息在不在。

密钥在请求头而不在请求体里;但响应与历史可能含聊天内容,注意文件安全。

看模型每步在想什么

debugStream: true 时控制台实时输出流分片:文本增量、工具调用、每步用量(输入/输出/缓存 token)。判断「模型为什么这么做」看这里最快。

按启动日志定位装配问题

启动期的报错集中且信息明确,对照速查:

日志含义处理
Model config file not found … creating an empty one已有数据目录缺少模型配置填写新建的 models.yaml
[<ID>] missing required service "…"; profile is waitingprofile 声明的扩展/引擎服务不存在按名补装对应插件或改正拼写;装好后重载自动装配
[<ID>] profile skipped: …该 profile 解析失败或频道冲突,被整体跳过看冒号后的具体原因
toolcall runtime unavailable, nothing loaded工具调用运行时加载失败,全部 profile 未装载检查依赖安装是否完整
[<ID>] profile activation failed: …profile 装配中途失败(如图片能力校验不过)按原因修 profile
profile loading failed, nothing loadedprofiles 根目录整体加载失败检查目录权限与 YAML 语法

运行期问题

数据目录的调试视角

<dataPath> 下的产物都可以直接查看,布局见参考:数据目录。两个常用点:

  • <profile>/runtimes/<实例>/events.jsonl 是实例的完整事件流(JSONL),一行一个 JSON,是还原一次对话的最终事实。
  • <profile>/runtimes/<实例>/resources/ 下的 assets/、artifacts/ 是媒体与工具输出的落盘字节。asset 使用 <uuid>.<实际扩展名> 与 <uuid>.metadata.json,artifact 使用内容寻址文件名与 <name>.json 元数据。

On this page