ChipCode 的七类 transport:一个 JSON 怎么统一九种工具链

简介: ChipCode 通过抽象出 CLI、HTTP、gRPC、MCP、MQTT、internal、backend 七类 transport,统一九种异构工具链交互,实现能力声明与执行解耦,支撑可审计、可复现的嵌入式 AI 开发闭环。(239字)

ChipCode 的七类 transport:一个 JSON 怎么统一九种工具链

ChipCode 接的九条工具链,交互方式几乎没有一处相同。

Arduino 是命令行,arduino-cli 跑完输出一堆文本;ESP-IDF 也是命令行,但构建系统是 CMake 套一层 Python;STM32Cube 生成 Makefile 再调 make;51 用 SDCC 编译、stcgal 烧录,两个独立进程;OpenSCAD 是渲染成图片;立创EDA 要走它自己的 HTTP 网关;Wokwi 是浏览器里的仿真;再加上插件开发脚手架和浏览器自动化。

九种东西,如果每个都写一套对接代码,插件层就会变成九个特例的集合。加第十个工具链的时候,你需要先读一遍前九个是怎么写的。

我们的解法是:先抽象“插件怎么跟外界说话”,而不是“插件是什么”。

抽象的落点:七个动词

把九种工具链的交互拆开,会发现它们跟宿主的接触面只有七类:

transport 含义 典型场景
cli 起一个进程,读它的 stdout/stderr 和退出码 arduino-cli、make、sdcc、stcgal
http 发请求等响应 立创EDA 网关、自建的本地服务
grpc 长连接、强类型 需要流式返回的后端
mcp 走 Model Context Protocol 把外部工具当工具调用
mqtt 发布订阅,设备侧 板子联调、远程设备
internal 复用宿主自己的能力 文件系统、串口、编译缓存
backend 挂一个长驻 stdio 后端 需要保持状态的子进程

这个分类不是先验设计出来的,是把九个实现摊在桌上,把重复的部分圈出来,发现刚好七堆。

清单怎么表达

插件的 capabilities 是“能力名 → 通道描述”的映射:

{
   
  "capabilities": {
   
    "compile": {
   
      "transport": "cli",
      "command": "arduino-cli",
      "args": ["compile", "--fqbn", "{fqbn}", "{sketchDir}"],
      "placement": "cwd"
    },
    "flash": {
   
      "transport": "cli",
      "command": "arduino-cli",
      "args": ["upload", "-p", "{port}", "--fqbn", "{fqbn}", "{sketchDir}"]
    },
    "monitor": {
   
      "transport": "internal",
      "service": "serial",
      "method": "open"
    }
  }
}

{fqbn}、{port}、{sketchDir} 这些是宿主注入的占位符,来自当前项目的板卡配置和用户选择的端口。

注意 compile 和 flash 用的是同一个 command,只是参数不同。这不是巧合——通道描述的是“怎么执行”,不是“执行什么”。同一份执行机制可以被多个能力复用。

运行时怎么路由

宿主侧有一个 capability key 到 driver 的映射:

const drivers: Record<Transport, Driver> = {
   
  cli: cliDriver,
  http: httpDriver,
  grpc: grpcDriver,
  mcp: mcpDriver,
  mqtt: mqttDriver,
  internal: internalDriver,
  backend: backendDriver,
};

async function invoke(cap: Capability, ctx: InvokeContext) {
   
  const driver = drivers[cap.transport];
  if (!driver) throw new Error(`no driver for ${
     cap.transport}`);
  return driver.run(cap, ctx);
}

每个 driver 的职责是统一的:接收能力描述和上下文,返回一个 ToolResult。ToolResult 里固定包含三样东西:退出状态、标准输出/错误、以及一个可选的产物列表。

统一返回类型是这套设计能成立的关键。因为上层(证据账本、阶段状态机)不关心你用的是 cli 还是 mqtt,它只关心“这次调用成没成、产出了什么”。

代价:测试矩阵翻倍

说实话,这套设计有它的账单。

七个 driver,每个都要处理:超时、取消、编码(Windows 下的 GBK 输出是个老问题)、退出码语义、错误信息格式化。加一条通道,测试矩阵就多一层——不是七乘九,是七种通道行为各自要覆盖所有调用方的场景。

我们为此付出的具体代价是:cli driver 里光“进程被用户取消”这一种情况就有三个测试用例(进程未启动、启动后未退出、退出但未收完输出)。这些用例不好写,但不写就会在真机上偶发卡死。

另一个代价是抽象泄漏。mqtt 通道的“一次调用”其实是发布一条消息然后等回复,天然是异步的;cli 是同步阻塞的。把它们塞进同一个 invoke 签名里,就必须给 mqtt driver 加一个内部的请求-响应关联层(用消息 id 匹配)。这层东西纯属为了对齐接口而存在,写起来不爽。

为什么不做成万能适配器

有人问过:为什么不搞一个通用的“命令模板 + 输出正则提取”,一个通道打天下?

因为它会在错误处理上崩掉。

cli 的失败有明确信号:退出码。http 的失败是状态码。mqtt 的失败是超时。grpc 的失败是状态枚举。这四者的“失败”语义完全不同,强行统一成一个“成功/失败”布尔值,会丢掉“失败得多严重”这个信息——而这个信息决定了下一步该重试、该换路子、还是该让人来看。

我们现在保留的粒度是:pass / fail / inconclusive 三态。inconclusive 专指“没拿到有效结论”——超时属于这一类,输出格式对不上也属于这一类。

把“不知道”和“失败”分开,是这套东西里最不起眼但最有用的一条设计。

现在的样子

九条工具链,七个 driver。新增一条工具链的平均成本是一次清单编写加零行业务代码——前提是它的交互能落进这七类里。

落不进去的时候,就加第八类。加之前我们会先问一句:是确实多了一种交互方式,还是前七类里某一类的实现不够好。

目前为止答案是后者居多。

相关文章
|
12天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
4789 29
|
12天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
4520 51
|
7天前
|
存储 弹性计算 人工智能
2026 年阿里云双十一活动入口攻略,新客服务器优惠通道、三大会场入口梳理
综合来看,2026年阿里云双十一活动入口清晰: 阿里云轻量应用服务器、阿里云ECS云服务器、阿里云GPU云服务器、阿里云百炼大模型服务平台 活动会场、综合权益中心、99计划专场三大入口覆盖服务器、AI权益与续费特价;新用户通过控制台首页banner、权益中心、产品页三处路径进入专属专场,老用户通过控制台弹窗和费用中心权益中心进入老客专区,企业用户做企业实名后解锁专属满减与阶梯折扣。
830 0
|
13天前
|
iOS开发 Docker MacOS
【2026实测】Docker Desktop下载、安装、汉化、配置教程(附官网安装包)
Docker Desktop 是 Docker 官方推出的桌面容器管理工具,集成引擎、CLI、图形界面与 Kubernetes,支持 Win/macOS/Linux。2026 最新版 4.88.1 强化 ARM 原生运行、镜像加速及资源可视化,附中文汉化与国内镜像配置指南。
2176 7
|
7天前
|
云安全 人工智能 安全
|
7天前
|
Linux 开发工具 iOS开发
2026最新codex下载安装保姆级使用教程(下载+安装+登录+使用,含所有历史版本)
本文详解OpenAI Codex国内快速上手指南:提供Win/macOS/Linux全平台免安装包、npm/Homebrew等多方式安装、账号/API Key双登录、简体中文切换,覆盖下载、安装、汉化、使用及高频避坑(如微软商店失败、npm超时等),10分钟即可跑通。
1531 3
|
4天前
|
人工智能 安全 API
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(dsh)是DeepSeek AI于2026年开源的轻量级Agent运行框架,基于Cordis内核,践行“一切皆插件”理念。支持Web/桌面双端,开箱即用;内置多模型接入、丰富插件生态(超3.5万),适配编程、办公、创作等场景。(239字)
1046 0
|
13天前
|
安全 算法 定位技术
《高性价比人生指南》完整原版:普通人用最少的资源,过好这一生的底层逻辑~How To Live Better
📖《高性价比人生指南》是一份基于实证、拒绝焦虑的生存手册,倡导以“人生时薪”为视角,重新计算时间、金钱与精力的成本与收益。它不承诺逆袭,只教人算清账:省下的钱若耗掉时间便亏;买体验比买物品更值;睡眠是最高杠杆的健康投资;关系贵在情绪价值而非表面热络;学习重在改变行为而非自我安慰。核心理念:用低成本、高回报的微小行动,换取长期的选择权——不是成为谁,而是掌控自己人生的主动权。
2204 6
|
6天前
|
人工智能 并行计算 调度
本地 AI 一键部署工具 LocModel:Windows 端集成画图、视频生成、Agent 的开源模型运行方案
LocModel 是专为 Windows 设计的一站式本地 AI 工具,支持零配置启动、自动硬件检测、GGUF 模型一键加载、文生图/视频生成及 Agent 自动化任务。适配 8G 显存,内置显存分片调度,轻松实现 AI 漫剧批量创作与离线大模型调用。(239 字)