Skip to content

feat(sdk): add image input and turn usage - #2487

Merged
limityan merged 1 commit into
GCWing:mainfrom
limityan:yanzhn/sdk-turn-input-usage
Aug 25, 2026
Merged

feat(sdk): add image input and turn usage#2487
limityan merged 1 commit into
GCWing:mainfrom
limityan:yanzhn/sdk-turn-input-usage

Conversation

@limityan

Copy link
Copy Markdown
Collaborator

背景

上一阶段已经打通 Query、Session、流式事件、取消和权限响应。外部应用要完成一个最基础的多模态 Agent 调用,还缺少图片上下文和可计量的单轮结果。

本次参考 Codex TypeScript SDK 已验证的最小输入模型:调用方传字符串,或传有序的 text / local_image 数组;用量只作为完成结果的事实返回。功能继续走现有 Agent Runtime,没有增加第二套 Runtime、进程协议或图片处理实现。

变更

  • TypeScript SDK 新增 Input / UserInput:支持字符串,以及 textlocal_image 的有序组合;多段文字按顺序合并,图片路径单独传给 Host。
  • SDK Host 协议升级到 v5,接收本地图片路径并映射到 Runtime 现有 AgentInputAttachment;相对路径按 Session workspace 解析。
  • Runtime 提供单轮 TurnTokenUsage,聚合当前 turn 的多轮模型用量;CLI 复用同一实现,删除原有重复逻辑。
  • Result.usage 返回 input/output/total/cached token;可选字段只在所有相关轮次均可确认时返回。
  • 本地包示例、协议生成和消费者烟测同步更新。包仍为私有 0.0.0,本次不发布 npm 或 PyPI。

能力边界

  • 图片仅支持本地 PNG、JPEG、GIF、WebP 路径。
  • URL、base64、音频、通用附件、自定义 tool、hook、结构化输出和 Python SDK仍不在本次范围。
  • 图片读取、格式检测、大小限制和模型多模态编码继续由现有 Runtime 链路负责。
  • Host 只负责进程生命周期、协议校验和 DTO 映射;TypeScript SDK 只暴露稳定的外部对象。

兼容性

项目 变更
SDK Host protocol 4 → 5
Agent Runtime preview API 8 → 9
npm package 保持 private / 0.0.0,仅本地使用
代码规模 24 files,+557 / -126,1 commit

验证

  • cargo test -p bitfun-agent-runtime --features agent-runtime dialog_turn --lib
  • cargo test -p bitfun-sdk-host -p bitfun-sdk-host-app
  • cargo test -p bitfun-cli json_usage -- --nocapture
  • pnpm --dir sdk/typescript test(65 passed,1 个 Unix-only 用例在 Windows 跳过)
  • pnpm --dir sdk/typescript smoke:consumer
  • pnpm --dir sdk/typescript smoke:node
  • git diff --check

cargo check --workspace 在 Desktop build script 处因本地缺少预生成的 src/mobile-web/dist 资源而无法完成;受影响的 Runtime、CLI、SDK Host 和 TypeScript SDK 均已通过直接验证。

@limityan
limityan merged commit 5cc1e00 into GCWing:main Aug 25, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant