Cockpit Agent Sim
Agent framework for smart-cockpit apps · 面向智能座舱业务的 Agent 框架:零后端、权限分级、确认流、卡片编排、快慢双层、真实三方集成,加能力=加数据不加代码
Cockpit Agent Sim is an open-source ai agent by yancent-dao, written mainly in TypeScript, with 97 GitHub stars and the MIT license. Its code was last updated Oct 23, 2026.
cockpit-agent-sim
一个面向智能座舱业务的 Agent 框架——车辆信号模拟、Agent 运行时、工具系统、记忆系统、AI HMI、TTS 全栈覆盖,新增场景理想情况下只需要新增一个 Skill。
<p> <img alt="tests" src="https://img.shields.io/badge/tests-1646%20passing-brightgreen" /> <img alt="runtime deps" src="https://img.shields.io/badge/runtime%20deps-0-blue" /> <img alt="backend" src="https://img.shields.io/badge/backend-none-blue" /> <img alt="signals" src="https://img.shields.io/badge/VSS%20signals-114-informational" /> <img alt="tools" src="https://img.shields.io/badge/tools-95-informational" /> <img alt="license" src="https://img.shields.io/badge/license-MIT-black" /> </p>能干什么 · 快速开始 · 系统架构 · 能力清单 · 设计文档
对话由 LLM 驱动,导航、天气、音乐、新闻、云端 TTS 接的都是真实服务。车机屏是独立窗口,可以直接投屏演示。

| 后台子 Agent 调研 + 生成式计算器卡 | 调研交付:生成式报告卡(canvas) |
|---|---|
![]() | ![]() |

能干什么
- 说话控车:车窗、空调、座椅、氛围灯、除雾……"后排冷了"知道该关谁的窗。涉及安全的(车门、后备箱)先弹卡确认。
- 真地图导航:搜地点、设目的地、对比路线、沿途搜充电站、导航中加删途经点不动终点。地图是高德活瓦片。
- 听歌看闻:音乐、电台、播客、新闻、短视频,一套播控通吃;歌词逐句点亮,放完自动接下一首。
- 给孩子讲绘本:孩子照片画成主角、边讲边画插图、孩子说的点子写进故事,成书导出 H5 发给家人。
- 旅行管家:一起把攻略从"想去云南"聊成按天日程,认可后自动盯机票酒店价,每天天气对齐到行程。
- 自动化情景:"每天四点开空调""下雨自动关窗",用嘴建规则,规则可导出分享。
- 生成式卡片:报告、图表、小游戏——模型现写 HTML 上屏,有消毒和溢出闸兜底。
- 记得住你:"记住我喜欢 24 度"下次直接照做;几十轮长对话有议程位保线,不会聊着聊着忘了正在干嘛。
[!NOTE] 这是一个演示底座而非量产产品:没有 ASR(文字输入代替)、没有后端、机酒价格暂为带标记的示例数据。它优化的目标是"每次做新 Demo 不用从零开始"。
快速开始
npm install
cp .env.local.example .env.local # 填入你自己的 Key(见文件内注释)
npm run dev # → http://localhost:5173
没有做 ASR,直接在控制面板里输入文字即可。
[!TIP] Key 的门槛很低:一个 OpenRouter 的 Key 就能启动。导航和地图要高德的 Key;天气、音乐、电台、歌词、汇率、股价用的都是免注册服务,什么都不用配。
[!NOTE] 模型有能力下限:架构假设模型会正常调用 tools 字段里的工具、能遵守约 30 行的技能章法。gemini-2.5-flash 档及以上实测可用;GPT-4.1-mini 这类轻量档会出现"假装执行"(不调工具空口报成),不建议用于演示。
npm test # 批量测试
npx tsc --noEmit # 类型检查
npm run pilot [场景id] # 自动化体验闭环(⚠ 消耗真实 API 额度,不进 npm test)
node build-single.mjs # 单文件版 → single/(双击可开;注意读不到 .env,Key 相关能力不可用)
系统架构
五条核心原则(改任何东西前先对照):
- Tools = 机制,Agent = 策略。 Tool 里不写一行"贴心逻辑":
climate.set绝不因为外面冷就自己多加两度。贴心归 Prompt,这样才分得清是模型聪明还是代码作弊。 - 平台不认识任何具体 Agent。 Agent 靠
agents/*/manifest.ts注册。验收标准:新建一个只挂 3 个 Tool 的 Agent,不改平台一行代码就能跑。 - 不发明命名,不发明协议。 能对齐行业标准的全部对齐(见下表)。
- 拒绝必须携带机器可读原因。 统一返回
{code, message, suggestion},message写人话不写日志——它会直接进模型上下文,模型拿着它下一轮就能自己修。缺参一次报全、枚举错附可选值、找不到的 id 附现有清单,都是同一条的推论。 - 「该执行什么」和「该显示什么」是两类决策,分开建模。 执行归工具与约束,显示归卡片规则与编排器,互不越界。
四条硬约束:
- 零后端。 只有开发服务器带一个纯转发代理来绕开 CORS,代理里只做转发、改 header、藏 Key 三件事,出现业务逻辑即违规。
- 加能力 = 加数据,不加代码。 新增信号、约束、Tool 都只动
src/config/;需要动src/core/就说明抽象错了。 - 代码里不许出现意图分支。 出现
if (intent === ...)、关键词匹配即违规。模型表现不好,只改 Prompt 或工具描述,不在代码里兜底。允许的是数据形状与系统状态判据:{item:[…]}剥壳、"24"→24、poiId 按B开头识别、"pending 确认时新输入直达慢层"——协议适配和状态分支不是意图分支。 - 运行时依赖为零。 只有 vite、vitest、typescript 三个 devDependency。加依赖前先问:不加它要多写多少行?少于 200 行就自己写。(唯一例外:导航卡的高德地图 JS SDK,运行时
<script>动态加载,不进 package.json。)
不发明协议:标准对齐表
| 这里的东西 | 对齐的行业标准 | 为什么 |
|---|---|---|
| 113 个车辆信号 | COVESA VSS v6.0 路径命名 | 信号是行业的公共语言,自造命名迁移成本全在未来 |
| 工具元数据 | AAOS 属性三元组(access/changeMode/permission) | 车机属性该有的描述维度早被定义过了 |
| 灰权限二次确认流 | MCP 的 MRTR(确认 token 往返) | 确认不是弹窗,是带 token 的协议往返,模型和人各按各的通道回答 |
| 播控工具面 | MediaSession / MPRemoteCommandCenter | 传输控制(播放/暂停/跳转)与内容源解耦是移动端验证过的分法 |
| 卡片体系 | Generative UI 的 Static 模式 + CarPlay/AAOS 模板方法论 | 模板卡保证可预测,生成式卡(canvas)是唯一例外且有闸(见下) |
"纯转发代理":
flowchart LR
fe["前端 api(name)"] -- "http(s) 开发/预览" --> proxy["vite 同源代理<br/>只转发 · 改 header · 塞 Key"]
fe -- "file:// 单文件版" --> up["三方服务"]
proxy --> up
proxy -.->|"国外服务才绕,国内的直连"| vpn["走系统代理出口"]
vpn --> up
flowchart TB
subgraph UI["两块屏(同源双窗口,BroadcastChannel 通信)"]
director["src/director/ 控制面板<br/>模型选择 · 车辆状态注入 · 全链路追踪"]
screen["src/screen/ 车机屏(可投屏)<br/>卡片桌面 · 语音条 · 横幅 · 覆盖层"]
end
subgraph AGENT["src/agent/ 快慢双层 pipeline"]
fast["快层:小模型<br/>彩权限工具先斩后奏"]
slow["慢层:大模型<br/>校验 · 接力 · 交付"]
sub["子 Agent(task.delegate)<br/>独立轮次预算,后台并行"]
fast -- "agent.handoff<br/>共享 thread" --> slow
slow --> sub
end
subgraph PLATFORM["平台机制(不认识任何具体 Agent)"]
tools["src/tools/ 注册表<br/>权限三级 · MRTR 确认流 · 返回契约"]
core["src/core/ 状态引擎<br/>信号 Store · 约束引擎 · 过渡仿真"]
cards["src/cards/ 卡片编排<br/>布局仲裁 · 抢占 · 等位区 · 布局重力"]
state["src/state/ 记忆四级<br/>瞬时 · 会话 · 领域 · 长期"]
end
subgraph DATA["src/config/ 数据(越多越好)+ agents/ 实例"]
config["114 信号(VSS) · 95 Tool · 约束 · 卡片规则/模板契约"]
manifest["manifest + 人设 + 快层微人设 + 技能包"]
end
integrations["src/integrations/ 三方适配<br/>高德 · Open-Meteo · iTunes/播客 · Radio Browser · NewsAPI · Pexels · 腾讯行情 · frankfurter · lrclib · 豆包 TTS · OpenRouter 图像/视频/音乐"]
director --> AGENT
screen <--> cards
AGENT --> tools --> core --> cards
tools --> integrations
AGENT --> state
DATA -.声明注入.-> PLATFORM
DATA -.注册.-> AGENT
Agent 的组成部分
快慢双层。 简单任务快层执行,复杂任务慢层执行。(快层目前默认关闭、全走慢层——实测可用的小模型要么比大模型还慢、要么爱把工具调用念出来;机制全保留,面板一键可开,换到真正快的模型即可启用。)快层会把执行结果转交给慢层:两层共享同一份对话记录,慢层对着快层的调用记录做校验,错了就改,剩下的活接着干;否则保持沉默。快层碰到自己无权调的工具会立刻收手转交,被拒的工具名直接预载给慢层。
sequenceDiagram
participant U as 用户 / 系统事件
participant S as Scheduler
participant F as 快层
participant R as Registry
participant L as 慢层
U->>S: 说话 · 点屏 · 自动任务触发
Note over S: 人说话立刻放行,系统事件排队等人说完再插队
S->>F: 交给快层
F->>R: 调彩权限工具
R-->>F: 结果
F-->>U: 能办的立刻办、立刻回话
F->>L: 转交(不管办没办成)
L->>R: 校验、补办剩下的
L-->>U: 该说话就说,没啥可补充就沉默
Note over F,L: Turn 记着这轮撞墙几次、谁说过话,快慢两层共用一份
工具按粒度装载,没有"域"的概念。 慢层常驻的只有一份工具目录(每个工具一行简介)和几个高频管道(语音、卡片、记忆),要用什么就调 tools.load 获取。转交、装载、取技能、派任务这几个元工具由 pipeline 注入,不占业务工具表。装载有三层记忆:会话级 LRU(load 过的下一轮还在手边,闲置 8 轮自动退场)、技能包附带装载(取剧本顺带拿到工具,零额外轮次)、sticky 声明(工具自带 [信号,比较,值] 三元组,导航中"取消导航"、播放中"别放了"这类应急动作自动在手边,不用先装载一轮)。
回合有自我保护。 每轮对话是一个 Turn 对象:同工具同错误连撞 3 次直接跳到收场轮(撤掉工具逼模型说人话);相邻两轮同参数且上轮已成功的调用被熔断(防止原地打转烧轮次);出声权是单一谓词——快层已报过结果、慢层没干新活,慢层的复述在文本和工具两条通道上同时被静音。收场兜底也讲诚实:收尾一轮全失败就说"没弄成",不许因为中途办成过一件事而说"办好了"。
耗时的重活派给子 Agent。 联网查证、写调研报告这类活走 task.delegate:怎么拆归慢层模型决定,一轮连发几个就是并行;后台模式立即返回,完成后自动交付(卡片、播报、横幅),不叫醒主模型。子 Agent 有边界:深度只有一层,并发最多三个,没有危险权限,也不能出声。
Skill 工具是能力,技能是章法,人设是品格,记忆是事实——四样东西各归各的地方,不许混。技能包放在 agents/main-agent/skills/(导航、媒体、调研报告、儿童绘本),平时只有目录行在场,用到了再取正文执行。
用户随时可以插话。 每轮对话带标签。用户追加一句,旧的那轮活照干完、只是不再抢占,迟到的话术降级进横幅;清空会话则整轮直接作废。
记忆分四级。 瞬时是信号 Store(对齐 VSS);会话是域仓结论加对话滑窗摘要,由小模型异步压缩;领域是播放队列、历史、收藏,落 localStorage;长期是用户明说要记的偏好,注入 system,最多十条。偏好的自动学习不做。
长对话(几十轮的功能巡演)另有三道保线:压缩滞后批量化(攒够十轮才折叠一次,摘要不被反复复印丢细节);议程位 agenda.set——模型给自己记一条跨轮主线备忘,每轮随状态注入回到眼前、不经过压缩;上下文三层化——system 只放逐字稳定的人设与目录(prompt cache 整段命中),车辆状态、桌面、议程这些易变态以 system 角色贴在消息末尾,每轮现拼现贴。
flowchart LR
a["瞬时<br/>信号 Store"] --> b["会话<br/>结论 + 对话摘要"] --> c["领域<br/>队列/历史/收藏"] --> d["长期<br/>用户明说的偏好"]
约束引擎只认三元组。 行车约束(行驶中禁视频、高速上开窗要确认)全部写成 [信号路径, 比较符, 值] 的声明式三元组,不支持嵌套逻辑;复杂场景写具名谓词函数登记白名单,绝不引入 eval 或表达式引擎。约束的解释权在返回里:拦下时带人话原因和替代建议,模型拿着就能换个说法跟用户交代。
权限分黑灰彩三级。 彩色直接执行;灰色要二次确认,判据是不可逆、涉安全、涉钱、涉他人;黑色永不注册给 Agent,比如刹车、转向。
flowchart LR
a["模型调灰权限工具<br/>比如开车门"] --> b["先不执行<br/>弹一张确认卡"]
b --> c{"用户点确认还是拒绝"}
c -- "确认" --> d["真正执行"]
c -- "拒绝" --> e["按用户说的来,不执行"]
语音链路
全系统只有一个"麦克风"。任何出声(对话回复、绘本朗读、后台任务交付、确认询问)先过纯函数仲裁:优先级 confirm > turn > story > delivery,外加两条特例——对话不许打断绘本正文(画外音一插,故事就断了,直接丢弃不排队);被确认打断的绘本页从头重读(从半句接着念,孩子接不上)。用户开口不是声源,是最高打断力。任何 TTS 出声时媒体自动 duck 到 20%,乘在用户音量上、不动设定本身。
Barge-in 不是取消。 用户追加一句话时,旧一轮的活照干完(车控这类明确要做的事绝不因为用户多说了一句而丢掉),只是不再抢麦——迟到的话术降级进横幅;只有清空会话才让副作用一起作废。这两种"作废"处置相反,混为一谈的每个地方都出过实拍事故。
长播报不跑马灯:按标点切成分句窗,跟着音频时间轴逐句换页;界面上的 AI 形象是一枚星河角标,状态到形态是纯函数(思考加速旋转、聆听收拢、确认停转变琥珀),确认按钮是确认卡选项的投影,点它和点卡片走完全相同的通道。
卡片编排
桌面不归模型管。桌面等于车辆状态的函数:导航卡、车控回执这些基础内容由声明式规则驱动,编排器负责调和,模型全程零参与;模型只为规则覆盖不到的临场内容建卡(候选列表、生成式小组件),而且走同一套布局仲裁,不开后门。栅格 12×8,十四种形状,每种形状只有一种几何,跨度与起点都取偶数——空隙的宽高必为偶数,最小的卡永远填得上,不出现死缝。不追求最优解,追求可预测解:演示者能预判结果比空间利用率重要。
- 紧急度正交于来源。
kind说谁建的卡,urgency说这事有多急,权重差一个数量级——车门没关且已起步的安全告警不会和天气卡按同一优先级抢位。critical 放不下改走覆盖层,绝不返回"桌面满了"。 - 三条显示通道。 卡片放内容;横幅放解释与回执("车窗已开"是对动作的说明不是内容,一句话换一张常驻卡是设计失败);覆盖层留给危急告警和全屏内容。判据只看卡片自己的字段。
- 模板契约三件套。 每张模板声明数据形状(fields)、形态(forms:每个档位放哪些块)、交互(interactions:哪里可点、点了走哪条路由)。两条形态纪律有测试盯着:相邻两档的内容必须不同(同样的东西放大只产生空白);阅读方向决定长轴(从上往下读的列表用竖卡,从左往右比的对比用横卡)。
- 触控三类路由,手势层零决策。 回答类(点候选)合成一句话进对话;操控类(播放键)直调工具不叫醒模型;管理类(关卡、缩放)直调桌面记入用户意愿层。尺寸优先级:物理(仲裁缩放)> 意愿(用户手调,
sizeLocked防止 ETA 一跳就弹回)> 建议(模板默认)。 - 等位区与重力。 放不下是状态不是失败:卡进等位区排队,有空位自动上台,用户点名可召回;布局重力让卡片只往左上流动、方向唯一,洞不会攒在桌面中间。仲裁有事务边界——试探只动副本,成功才提交。
- 生成式卡是唯一的例外,且有五道闸。
card.generate让模型直出 HTML/SVG,渲染进 Shadow DOM——它和"可预测优先"正面冲突,产品明知并接受,代价被闸住:① 消毒白名单(解析重序列化,fail-closed)② 容量契约(各档位像素和约几行一起给——模型不做排版计算,但会数行)③ 尺寸自愈升档 ④ 轻微溢出整体缩放(一屏看全优于动手)⑤ 严重溢出开纵向滚动(行驶中不给——滚动要眼睛加手),滚也救不了才剥到纯文字。 - 版式必须用眼睛看。
gallery.html把每张模板在每个声明档位下真渲染一遍按真实像素排开——"相邻两档内容不同"单测只能验到数据块,挤不挤、空不空只有眼睛知道。它抓到过的真问题:条件块留下的空白文本节点在 flex 容器里变成匿名 flex item,指标卡因此溢出 6px。
flowchart LR
a["一张卡要上桌"] --> b{"试放得下吗?<br/>先在草稿上试,不动真桌面"}
b -- "放得下" --> c["提交,桌面真的变"]
b -- "放不下" --> d{"能挤走优先级更低的卡吗"}
d -- "能" --> c
d -- "不能" --> e["先进等位区排队<br/>不是消失,是排队"]
e -- "腾出空位了" --> c
c --> f["卡片们再往左上靠一靠<br/>不留散落的空洞"]
三个长出来的场景
平台的验收方式是往上长场景。三个代表性场景各自带出了一块通用机制:
自动化任务(替代情景模式)。 用嘴建规则:"每天四点开空调""下雨自动关窗""开车时推荐股票"。规则是用户数据(localStorage 可导出分享),引擎是约束引擎的姐妹——边沿触发(条件从不满足到全满足那一刻 fire 一次,时间条件带"日期+分钟"身份,隔天同一时刻算新沿);动作分两类:{tool,args} 机制直调零模型,{prompt} 委托叫醒模型跑一句。
AI 儿童绘本「路上的故事」。 孩子是主角,车窗外的真实世界是布景,故事是大人、孩子和 AI 一段段接着写的。角色一致性靠一条架构选择:每页都拿定妆照当参考图,不是拿上一页——误差不累积,某页画歪单页重画($0.04)不用整本重来。一章的插图并发画(串行 61 秒,并发 25 秒),本页图没到就先不开口(差 12 秒封顶——画面和声音对不上它就只是有声书)。定妆必须停下来等家长点头,这是全书唯一要把关的一步。交付物是自包含 H5 单文件,封底单列"孩子想出来的",让他看见书里有他写的部分。
旅行助手。 分步共建不审讯:宽泛目的地先给几条线收敛,选定交按天草稿,一轮最多问一个问题,用户认可即自动接管盯价——收尾告知不询问,opt-in 变 opt-out。一张 trip 卡是一次旅行的家:卡 = f(旅行任务仓),选线、全文、盯价、到价四个阶段全是数据形状不是状态机;随意变动是常态(改行程重交完整日程、换住宿段撤旧盯新),没有"锁定"。确认后机制自动拉每日天气对齐到行程日,预报窗外的日子存 null 不编造。
质量闭环
- TDD,先红后绿,1646 个测试全绿才算完成。真实抓到过的 bug:批量写入的部分提交、通配符跨段不匹配、eta 超 range 导致途经点静默蒸发。
- Pilot 用户机器人。
npm run pilot用独立 LLM 扮"坐在车里的真人"(可以给性格指令,比如"被连环问就发火")跟真实 Agent 跑多轮对话,落盘结构化快照。检测分两级:硬伤(导航中无导航卡、话术说"第几个"但屏上没编号、thinking 标签泄漏)机器判,好不好由人对着评审清单看。机器人只负责说人话,不做判断。 - 全链路可观测。 每轮 trace 带 runId 与来源标签(语音/点屏/系统事件),prompt 字数分三段报(稳定 system + 易变状态 + 工具 schema),记忆压缩折了几轮、摘要多长都有事件。排查不靠猜。
设计文档
关键决策都有记录:需求规格说明书 · 工程约束 · Agent 开发流程(从旅行助手完整开发提炼,每条注意事项背后都有一次实拍事故)· 市场调研与对标,以及 docs/superpowers/specs/ 下的专题设计(卡片编排、尺寸自适应、媒体域、快慢双层、等位区、自动化、语音链路、融合旅行卡等十余篇)。
能力清单(95 Tools)
下面是全部工具,按域分组。⚡ 表示挂在快层,能先斩后奏。
<details> <summary><b>车控与车辆状态</b>(19 个)</summary>| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
vehicle.getState | 读车辆当前状态 | 彩 | ⚡ |
capability.list | 屏上显示能力目录 | 彩 | |
window.set | 控制车窗开度 | 彩 | ⚡ |
climate.set | 空调温度风量出风 | 彩 | ⚡ |
seat.set | 座椅加热通风调节 | 彩 | ⚡ |
steeringWheel.set | 方向盘加热 | 彩 | ⚡ |
sunroof.set | 天窗开合 | 彩 | ⚡ |
mirror.set | 后视镜折叠与加热 | 彩 | ⚡ |
airPurifier.set | 空气净化器开关档位 | 彩 | ⚡ |
wiper.set | 雨刷挡位 | 彩 | ⚡ |
defrost.set | 前后风挡除雾 | 彩 | ⚡ |
door.set | 开关车门,需确认 | 灰 | |
trunk.set | 开关后备箱,需确认 | 灰 | |
chargePort.set | 开关充电口,需确认 | 彩 | |
childLock.set | 儿童锁开关 | 彩 | ⚡ |
ambientLight.set | 氛围灯开关颜色亮度 | 彩 | ⚡ |
fragrance.set | 香氛开关香型浓度 | 彩 | ⚡ |
light.set | 大灯与后备箱灯 | 彩 | ⚡ |
driveSetting.set | 驾驶模式回收悬架 | 彩 | ⚡ |
| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
navigation.search | 搜地点出候选列表 | 彩 | |
navigation.setDestination | 设目的地开始导航 | 彩 | |
navigation.modifyRoute | 导航中改路不动终点:加删途经点、换偏好 | 彩 | |
navigation.searchAlong | 沿途周边搜服务点 | 彩 | |
navigation.compareRoutes | 多路线方案对比 | 彩 | |
navigation.control | 暂停恢复结束导航 | 彩 | |
navigation.getStatus | 读导航当前状态 | 彩 | |
map.control | 地图缩放/全览/2D3D/朝向 | 彩 | |
traffic.status | 查路况拥堵情况 | 彩 | |
region.districts | 查周边区县列表 | 彩 | |
places.save | 存常用地址 | 彩 | |
places.list | 列常用地址 | 彩 | |
places.remove | 删一条常用地址 | 彩 | |
weather.query | 查城市天气预报 | 彩 | ⚡ |
weather.nearby | 查周边区县天气,一张对比卡不刷屏 | 彩 | ⚡ |
| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
media.control | 播放暂停上下曲 | 彩 | ⚡ |
media.volume | 调音量 | 彩 | ⚡ |
media.seek | 跳播放进度 | 彩 | |
media.mode | 循环随机播放模式 | 彩 | ⚡ |
media.queue | 看播放队列 | 彩 | |
media.favorite | 收藏当前曲目 | 彩 | |
media.favorites | 列收藏列表 | 彩 | |
music.search | 搜歌不播 | 彩 | |
music.play | 搜歌并播放入队 | 彩 | ⚡ |
radio.search | 搜网络电台 | 彩 | |
radio.play | 搜台并播放 | 彩 | ⚡ |
podcast.search | 搜播客节目 | 彩 | |
podcast.play | 播播客最新一集 | 彩 | ⚡ |
news.headlines | 今日头条新闻 | 彩 | ⚡ |
news.search | 按话题搜新闻 | 彩 | ⚡ |
news.read | 念一条新闻正文 | 彩 | |
video.search | 搜短视频 | 彩 | |
video.play | 搜视频并播放 | 彩 | ⚡ |
web.search | 联网搜索现查 | 彩 |
| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
video.generate | AI 生成一段视频 | 彩 | |
music.generate | AI 写一段音乐 | 彩 |
| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
automation.create | 建自动任务(情景模式) | 彩 | |
automation.list | 看已有的自动任务 | 彩 | |
automation.toggle | 启停自动任务 | 彩 | |
automation.delete | 删自动任务 | 彩 | |
automation.run | 立即运行一条任务 | 彩 |
| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
stock.query | 查股价指数汇率 | 彩 | ⚡ |
holiday.query | 查节假日调休 | 彩 | |
poem.today | 来一句今日诗词 | 彩 | |
time.now | 查现在的日期时间星期(模型没有内置时钟) | 彩 | ⚡ |
| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
theme.set | 切日间/夜间主题 | 彩 | ⚡ |
wallpaper.set | 换壁纸(可 AI 生成) | 彩 | |
voice.speak | 主动播报一句话 | 彩 | |
voice.ask | 向用户提问出选择卡 | 彩 | |
voice.config | 换朗读音色、调语速 | 彩 | |
card.show | 建卡片上屏(现成模板) | 彩 | |
card.generate | 生成式卡:模型直出 HTML/SVG 自由排版或 iframe 小应用 | 彩 | |
card.update | 更新卡片数据 | 彩 | |
card.resize | 调卡片大小 | 彩 | |
card.dismiss | 撤掉卡片 | 彩 | |
card.focus | 高亮提示一张卡 | 彩 | |
desktop.getLayout | 读桌面布局 | 彩 |
| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
memory.remember | 记住用户偏好 | 彩 | |
memory.forget | 删掉记住的偏好 | 彩 | |
memory.list | 列出记住的事 | 彩 |
| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
travel.plan | 交攻略:宽泛目的地先给几条线收敛,选定后按天日程上卡 | 彩 | |
travel.create | 建旅行任务并配齐监控,返回首采参考价 | 彩 | |
travel.watch | 盯一项(机票/分段住宿/汇率),可设阈值 | 彩 | |
travel.unwatch | 撤一项监控,样本保留 | 彩 | |
travel.list | 查全景:30 天事实(极值/分位/走向),可钻取走势卡 | 彩 | |
travel.refresh | 立即采一轮最新价 | 彩 | |
travel.update | 改日期/人数/目的地,监控与天气自动重算 | 彩 | |
travel.delete | 删任务连监控,需确认 | 灰 |
价格数据源说明:汇率是 frankfurter 真实历史;机票酒店暂为带标记的示例数据(RapidAPI 免费层 + 国内覆盖 + 历史价格三者不可兼得),接口已留槽,Key 到位换一行。
</details> <details> <summary><b>AI 儿童绘本「路上的故事」</b>(7 个)</summary>| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
story.profile | 记下孩子的名字年龄和这次想讲明白的道理 | 彩 | |
story.cast | 把孩子的照片画成故事主角 | 彩 | |
story.begin | 开一本新绘本,讲第一章 | 彩 | |
story.continue | 接着孩子说的往下写一章 | 彩 | |
story.finish | 收尾成书 | 彩 | |
story.export | 把这本书做成可以发给别人的网页 | 彩 | |
story.page | 翻页/暂停(屏幕按钮直调,不叫醒模型) | 彩 |
| Tool | 说明 | 权限 | 快层 |
|---|---|---|---|
brake.apply | 黑名单占位:刹车这类工具永不注册给 Agent,留在配置里只为标出禁区 | 黑 |
Key 与第三方服务
| 服务 | 用途 | Key | 条款须知 |
|---|---|---|---|
| OpenRouter | 对话 + 绘本插图 | 必填 | 图像 $0.07/张左右,面板有花费显示 |
| 高德开放平台 | 导航、地名解析、活地图 | 可选,两个 Key | 控制台需把 localhost 加入域名白名单 |
| Open-Meteo | 天气(逐时/多日) | 零 Key | 数据 CC BY 4.0,对外材料请注明 weather data by Open-Meteo |
| iTunes Search | 音乐(30 秒试听) | 零 Key | 仅试听片段,无完整播放 |
| Radio Browser | 网络电台 | 零 Key | 社区节点,可用性有波动 |
| NewsAPI | 新闻 | 可选 | ⚠ 免费层仅限 localhost,禁止部署 |
| Pexels | 短视频 | 可选 | — |
| 豆包(火山)TTS | 云端 TTS(主对话流式播报) | 可选 | Key 经代理注入 header,不进前端;控制台需给 Key 授权语音资源 |
| 讯飞开放平台 | 云端超拟人 TTS(豆包之前的方案,单文件版仍可用) | 可选,三个值 | 免费额度以控制台为准 |
| frankfurter | 汇率(含 30 天真实历史) | 零 Key | — |
| lrclib | 歌词(播放器逐句显示) | 零 Key | — |
| 腾讯行情 | 股价指数 | 零 Key | — |
Key 放本地的 .env.local(已 gitignore)或控制面板,不经过任何后端。
隐私须知(绘本功能)
[!IMPORTANT] 「路上的故事」会把儿童照片发给第三方图像模型(OpenRouter)生成动漫形象。项目本身不存照片——没有后端,
public/hero/也在 gitignore 里——但照片会发给模型。演示或部署给别人用之前,需确认监护人知情同意;界面里的授权勾选是一次性动作,不是默认开关。
明确不做
后端、数据库、多屏、CAN 报文级仿真、偏好自动学习——明确不做,理由见 docs/工程约束_v1.1.md。
License
MIT。接的第三方服务各有各的条款,见上面那张表。
Cockpit Agent Sim alternatives
View more →Similar ai agents in Developer Tools, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| Cockpit Agent Sim (this page) yancent-dao | 97 | MIT | Oct 23, 2026 | Scanned, no flagged issues |
| Deepseek Harness deepseek-ai | 268k | MIT | Oct 30, 2026 | Scanned, no flagged issues |
| Ponytail DietrichGebert | 182k | MIT | Oct 29, 2026 | Scanned, no flagged issues |
| Orca stablyai | 112k | MIT | Nov 1, 2026 | Scanned, no flagged issues |
| Deer Flow bytedance | 85k | MIT | Nov 1, 2026 | Scanned, no flagged issues |
| Ruflo ruvnet | 80k | MIT | Nov 1, 2026 | Scanned, no flagged issues |

