API 列表

August 14, 2026 · View on GitHub

本插件 API 的权威参考(版本 0.1.0,源码 src/)。README 为用户导向的精简版;两者冲突以本文件为准。 类型信息以构建产物 lib/types/*.d.ts 为准;本文档为人工维护的概要。

1. 插件入口(src/index.ts

1.1 Cordis 插件契约

导出类型说明
namestring'koboldcpp-tool'
injectstring[]['tools']
Configz<Config>schemastery schema(见 1.2)
apply(ctx, config)(ctx: Context, config: Config) => void插件入口

1.2 Config(插件配置;也作为 llm-koboldcpp: settings 段 schema)

字段类型默认说明
baseURLstringhttp://127.0.0.1:5001服务器端点;/v1/chat/completions 被追加
modelstringkoboldcpp发送给服务器的 wire model id
toolNamestringkoboldcpp_run文本工具名
toolDescriptionstring内置覆盖文本工具描述
enableVisionToolbooleantrue是否注册视觉工具
visionToolNamestringkoboldcpp_vision视觉工具名
visionToolDescriptionstring内置覆盖视觉工具描述
exePathstring—(或 $KOBOOLDCPP_EXEkoboldcpp 可执行文件绝对路径
kcppsPathstring—(或 $KOBOOLDCPP_KCPPSkcpps 启动配置绝对路径
extraArgsstring[][]追加的 CLI 参数(排在 --port 之后)
autoStartbooleantrue无服务器时按需拉起
stopBehavior'never'|'idle'|'exit''exit'服务器停止策略
idleStopMinutesnumber30idle 策略的空闲窗口(分钟)
launchTimeoutMsnumber300000拉起后等待健康的总预算(ms)
healthIntervalMsnumber2000健康探测间隔(ms)
timeoutMsnumber120000单次本地模型调用预算(ms)
maxTokensnumber8192请求默认输出上限(tokens)

1.3 resolveOptions(config, environment?)

(config: Config, environment?: LaunchEnvironmentSnapshot) => ResolvedOptions

配置的唯一显式解析步骤:验证 baseURL/端口/工具名/数值边界,合并环境变量(KOBOOLDCPP_EXE / KOBOOLDCPP_KCPPS),组装 launch 事实。失败抛 Error(fail loud)。

1.4 ResolvedOptions

baseURL: string
model: string
toolName: string
toolDescription: string
enableVisionTool: boolean
visionToolName: string
visionToolDescription: string
timeoutMs: number
maxTokens: number
launch: KoboldCppLaunchOptions

2. 工具(模型可见 API)

2.1 koboldcpp_run — 文本工具

参数

参数类型必填说明
promptstring发给本地模型的指令/文本(user 消息)
systemstring系统指令
temperaturenumber采样温度 0–2
max_tokensinteger输出上限(默认 maxTokens
stopstring[]停止序列

返回值(canonical value)

{
  text: string            // 模型原始文本输出
  reasoning?: string      // 思考文本(模型输出时)
  model: string           // 服务器报告的模型 id
  usage: { promptTokens: integer, completionTokens: integer }
  elapsedMs: integer
}

rendertext + 脚注 (ran on local <model> · <in> in / <out> out tokens · <ms>ms)

2.2 koboldcpp_vision — 多模态/OCR 工具

参数

参数类型必填说明
mode'analyze'|'ocr'|'compare'内置提示词模板(默认 analyze
promptstring自定义指令(覆盖模板)
image_pathsstring[]本地图片绝对路径(png/jpg/jpeg/webp/gif/bmp,≤20 MB/张)
image_urlsstring[]data:image/...http(s):// URL
temperaturenumber采样温度(OCR 建议 ~0.2)
max_tokensinteger输出上限
stopstring[]停止序列

图片来源解析顺序image_paths + image_urls(合并)→ 会话内附件(最近的图像,经 ctx.attachments.readImage)→ 失败(isError + 清晰消息)。

返回值:同 2.1 加 images: integer(处理的图片数)。

提示词模板mode 对应 src/prompts.ts 的三个内置模板(analyze = 8 段 # Image Analysis Reportocr = 逐字提取;compare = 5 段 # Image Comparison Report),完整文本见 §6。

3. 进程生命周期(src/launch.ts

3.1 KoboldCppServer

成员签名说明
constructor(ctx: Context, options: () => KoboldCppLaunchOptions)options 为 thunk,每次操作重新解析(支持设置热更新)
status()() => KoboldCppServerStatus{ running, owned, pid? } 当前事实
healthy()() => Promise<boolean>探测 GET /v1/models(超时 = healthIntervalMs
ensure()() => Promise<void>确保健康服务器可达:复用外部 → 否则按 autoStart/exePath 拉起(单飞并发保护)
stop()() => Promise<void>停掉 owned 服务器;Windows 上 taskkill /T /F 杀进程树;外部服务器 no-op
dispose()() => Promise<void>全量清理(stopBehavior !== 'never' 时停服),幂等
beginStream() / endStream()() => void工具执行期间的空闲保护(进行中的调用不会被 idle 停掉)
touch()() => void重置空闲计时器(stopBehavior: 'idle' 时)

3.2 纯函数

导出签名说明
portOf(baseURL: string) => number从 baseURL 解析端口;缺省 5001
buildLaunchArgs(options: KoboldCppLaunchOptions) => string[][kcppsPath?, '--port', port, ...extraArgs]

3.3 常量

SERVER_NOT_RUNNING_CODE / MISCONFIGURED_CODE / LAUNCH_FAILED_CODE'SERVER_NOT_RUNNING' / 'MISCONFIGURED' / 'LAUNCH_FAILED')。

4. 客户端(src/koboldcpp.ts

导出签名说明
chatCompletion(baseURL: string, request: ChatCompletionRequest) => Promise<ChatCompletion>非流式 /v1/chat/completions;多模态时发送 OpenAI content 数组
httpErrorCode(status: number, error?: {message?; type?; code?}) => KoboldCppErrorCodeHTTP 状态 → 稳定错误码

ChatCompletionRequest

model: string
system?: string
prompt: string
images?: string[]          // data:image/... URL;存在时 prompt+images 组成 content 数组
temperature?: number
maxTokens?: number
stop?: string[]
signal: AbortSignal        // 必须;内部合并超时

ChatCompletion{ text, reasoning?, model, usage: { promptTokens, completionTokens } }

KoboldCppErrorCodeSERVER_NOT_RUNNING | LAUNCH_FAILED | MISCONFIGURED | TIMEOUT | ABORTED | TRANSPORT | AUTH | QUOTA | RATE_LIMIT | CONTEXT_WINDOW_EXCEEDED | INVALID_REQUEST | SERVER | EMPTY_RESPONSE | HTTP_<n>

错误语义(抛 LlmError,code 稳定):

code触发
TRANSPORT网络失败(DNS/拒绝连接/TLS)
ABORTED调用方取消
TIMEOUTAbortSignal.timeout 到期
AUTH / RATE_LIMIT / CONTEXT_WINDOW_EXCEEDED / INVALID_REQUEST / SERVER / HTTP_<n> / QUOTAHTTP 状态映射(含 provider 错误正文识别)
EMPTY_RESPONSE模型空输出

5. 图像准备(src/images.ts

导出签名说明
MAX_IMAGE_BYTESconst20 * 1024 * 1024
mimeOf(path: string) => string | undefined扩展名 → MIME
isSupportedImagePath(path: string) => boolean格式支持判断
imageFileToDataUrl(path: string, signal?: AbortSignal) => Promise<string>本地文件 → data URL(校验存在/大小/格式)
imageUrlToDataUrl(url: string, signal: AbortSignal) => Promise<string>data: 透传;http(s) 下载转 data URL
collectSessionImageDataUrls(ctx: Context, exec: VisionExecContext) => Promise<string[]>会话内图片(最新优先,去重;无 attachment 服务时返回空)

6. 提示词模板(src/prompts.ts

导出说明
VisionMode'analyze' | 'ocr' | 'compare'
ANALYZE_PROMPT / OCR_PROMPT / COMPARE_PROMPT内置模板(8 段 / 逐字 / 5 段)
VISION_FIDELITY_RULEfidelity 规则文本
resolveVisionPrompt(mode: VisionMode, prompt?: string) => string(自定义优先)

7. 其他导出

  • KoboldCppLaunchOptions(类型):baseURL / port / exePath? / kcppsPath? / extraArgs / autoStart / stopBehavior / idleStopMinutes / launchTimeoutMs / healthIntervalMs
  • KoboldCppServerStatus(类型):{ running, owned, pid? }
  • VisionExecContext(类型):{ signal: AbortSignal; agent?: { session: { events: readonly unknown[] } } }

8. 环境变量

变量用途优先级
KOBOOLDCPP_EXEexePath 兜底settings > cordis config > 环境变量
KOBOOLDCPP_KCPPSkcppsPath 兜底同上