跳转到主要内容

请求生命周期

  1. 你运行 /mclawd .../mineclawd prompt ...,或在覆盖层输入栏提交请求。
  2. MineClawd 校验 provider 配置和 OP 权限。
  3. MineClawd 加载或创建当前激活的 Session 状态。
  4. MineClawd 向 OpenAI 兼容端点或 Vertex 端点发送流式请求。
  5. 流增量通过 AGENT_STREAM_EVENT 通道实时发送到客户端。覆盖层会用闪烁光标渲染每个增量。
  6. 模型响应可触发工具调用。工具结果会回注到模型循环。
  7. 最终 assistant 输出会渲染到聊天(和覆盖层),并保存 Session 历史。

运行时工具族

  • 命令与脚本执行:
    • execute-command
    • apply-instant-server-script
  • 持久化脚本文件:
    • list-server-scripts
    • read-server-script
    • write-server-script
    • delete-server-script
    • reload-game
    • sync-command-tree
  • 澄清提问:
    • ask-user-question
  • 资产追踪:
    • list-assets
    • upsert-asset-record
    • remove-asset-record
  • 网页搜索(需要 Tavily API key):
    • search
  • 模组信息:
    • list_mods
    • list_commands
    • fetch_modrinth
    • fetch_url
  • 动态占位符(仅启用时):
    • list-dynamic-content
    • register-dynamic-item
    • register-dynamic-block
    • register-dynamic-fluid
    • update-dynamic-item
    • update-dynamic-block
    • update-dynamic-fluid
    • unregister-dynamic-content

存储布局

gameDir/
  config/
    mineclawd.json5
  mineclawd/
    player-settings.json
    sessions/
      <owner>/
        active.json
        <id>.json
    assets/
      <owner>.json
    souls/
      default.md
      yuki.md
      <custom>.md
      .active/
        <owner>.txt
  kubejs/
    server_scripts/
      mineclawd/
        ...

Session 内部结构

  • Session id 是 4 位小写 token。
  • 命令 token 格式是 <id>-<title-slug>
  • Session 文件会分别保存 OpenAI 与 Vertex 历史。
  • 每个拥有者的 active.json 存储当前激活 Session 指针。
  • 首轮成功后,系统会用 summarize model 生成 Session 标题。

LLM 传输细节

  • OpenAI 兼容请求路径:<endpoint>/chat/completions
  • Vertex 请求路径:<endpoint>/<model>:generateContent?key=<api_key>
  • 两条路径都使用 60 秒请求超时。
  • 两条路径都支持函数式工具调用。
  • 两条路径都支持流式。流增量会通过 AGENT_STREAM_EVENT 网络通道转发给客户端。

流式架构

流事件使用 AGENT_STREAM_EVENT 通道,包含请求 ID、事件类型字节和负载字符串。
事件类型字节负载
START0sessionIdrequest 文本的 JSON
DELTA1来自 LLM 的文本片段
DONE2
ERROR3错误信息字符串
TOOL_STATUS4当前正在调用的工具名
TOOL_STATUS_CLEAR5空(清除工具状态指示器)
覆盖层接收这些事件后会增量渲染内容。直到收到 DONEERROR 前,最新文本后方会保持闪烁光标。生成期间,TOOL_STATUS 事件会显示动画指示器,实时展示 MineClawd 正在调用的工具;收到 TOOL_STATUS_CLEAR 后指示器会清除。 活动请求在服务端由 ACTIVE_REQUESTSACTIVE_NETWORK_REQUESTS 映射追踪。/mineclawd stop 会把请求 ID 记入 CANCELLED_REQUEST_IDS,并取消正在进行的 HTTP 连接。

动态占位符内部机制

  • 容量:30 个物品槽、30 个方块槽、30 个流体槽。
  • 固定 id 包括:
    • mineclawd:dynamic_item_001
    • mineclawd:dynamic_block_001
    • mineclawd:dynamic_fluid_001
  • 状态同步使用 sync_dynamic_content 网络负载。
  • 状态持久化使用世界 PersistentState id mineclawd_dynamic_content
  • AUTO 模式会在客户端运行时启用动态占位符,并在专用服务器上禁用。

网络通道

MineClawd 定义以下数据包标识符:
  • mineclawd:client_ready
  • mineclawd:client_gui_pref
  • mineclawd:open_config
  • mineclawd:sync_broadcast_target
  • mineclawd:sync_assistive_touch
  • mineclawd:sync_dynamic_content
  • mineclawd:open_question
  • mineclawd:question_response
  • mineclawd:open_sessions
  • mineclawd:open_assets
  • mineclawd:open_history_book
  • mineclawd:agent_stream_event

资产追踪内部机制

资产记录按拥有者存储在 mineclawd/assets/<owner>.json。每条记录包含:
  • id — 唯一标识符
  • categoryENTITIESITEMS_BLOCKS_FLUIDSSPECIAL_ITEMSCOMMANDSGAME_MECHANICS 之一
  • namesummaryscriptPathdetails
  • 分类字段:contentIdspecialItemIdspecialItemNbtcommandentityUuidentityDimensionentityXentityYentityZ
  • sessionId — 创建该资产的 Session
  • createdAtupdatedAt — 时间戳
系统提示包含资产追踪附录,因此 LLM 会通过 upsert-asset-record 工具调用自动编目其创建内容。

限制和计时器

设置或行为
工具调用上限范围120
工具调用上限默认值16
工具调用上限默认状态disabled
ask-user 最大选项数5
ask-user 超时时间60
失败请求重试 token TTL30 分钟
限流重试次数2
限流重试退避1500ms * retry_index
历史书构建的最大历史条数300
覆盖层输入栏最大长度600 字符
资产类别数5

安全模型

  • 所有命令路径都受 OP 权限门控。
  • KubeJS 执行是真实服务器执行,不是模拟。
  • API key 必须按密钥处理。
  • 仅在可信环境中使用。