技能互联
跨技能数据契约层 Base Skill · Skill Link。 让各技能通过 skilllink-read 命令对外暴露/读取数据(注册表 + 统一信封)。 提供 skill_registry / check_public_contract 校验器 / 互联总览。 任何技能开发数据联动(提供/消费)前必须先装本基础包(强制依赖)。
- License 许可
- MIT
- 最近更新
- 2026-09-12
- Stars
- ★ 6
- Forks
- 1
01 前言 Front Matter
- name
- 技能互联
- description
- 跨技能数据契约层 Base Skill · Skill Link。 让各技能通过 skilllink-read 命令对外暴露/读取数据(注册表 + 统一信封)。 提供 skill_registry / check_public_contract 校验器 / 互联总览。 任何技能开发数据联动(提供/消费)前必须先装本基础包(强制依赖)。
- disable-model-invocation
- true
02 资源文件 11
- 脚本check_public_contract.py10.4 KB
- 参考文档docs/契约规范-v1.md4.1 KB
- 脚本overview_render.py13.0 KB
- 参考文档references/combos.yaml20.0 KB
- 其他scaffolds/PUBLIC_DOMAINS.py.template2.3 KB
- 参考文档skill_registry.yaml1.1 KB
- 脚本skilllink.py7.4 KB
- 参考文档templates/overview.html12.3 KB
- 脚本tests/test_overview.py7.2 KB
- 脚本tests/test_public_contract.py6.4 KB
- 脚本tests/test_skilllink.py5.7 KB
03 SKILL.md 正文
技能互联(Skill Link)· Base Skill v0.1(骨架定稿)
基础设施型技能:系统加载时存在,不自动唤起、不在用户手动触发列表(对标 wayfinder)。 中文名:技能互联 · 英文名:Skill Link · 命令:
skilllink-read骨架定稿:2026-08-11 · #271 用户逐条拍板(目录结构 / 强制依赖 / 注册表形态 / 校验机制)
定位
跨技能数据契约层。与公共组件平级:
| Base | 职责 |
|---|---|
| 公共组件 | 渲染层(注入管线 + 控件库)—— HTML 长什么样 |
| 技能互联(本) | 数据层(数据契约)—— 技能之间怎么拿数据 |
目标:卡路里 / 饼干记账 / 作息管家 / 居家管家 / 备忘录 / 私家大厨 6 技能全部打通(每技能既是提供方也是消费方)。
强制依赖(#271 拍板)
- 语义:任何技能开发数据联动(提供/消费)前,必须先装本基础包。纯单机技能(无联动)不强制。
- 闸门:
check_public_contract校验器进各技能 pytest——未装/未接入 = 测试红 = commit 被拒(硬约束,AI 不可能无视)。 - 发现机制(三层探测):
- 探测 Base 本身:
技能互联/目录 +skilllink.py+skill_registry.yaml存在?缺失 → 红:「未安装技能互联,先装本基础包」 - 探测已接入技能:registry 列出的技能,
PUBLIC_DOMAINS注册表存在且符合契约?缺失 → 红 - 运行时(skilllink-read 被调用):查未接入技能 → 信封 ok=false「未接入」→ AI 降级(契约 v1 §6)
- 探测 Base 本身:
核心概念
- 执行者 = AI:用户复制 prompt → AI 执行;AI 读契约 → 调 skilllink-read → 理解/合并 → 注入 HTML
- 注册表:每技能声明「我能提供什么」(域名称/中文名/一句话说明/字段列表)—— 技能侧只放
PUBLIC_DOMAINS.py - 统一信封:所有技能返回同一盒子(办成了/来自哪个技能/查的什么/查询情况/数据)
- 字段类型 4 种:数字 / 日期 / 文字 / 自由文本(text,AI 读黑盒 + 用户确认)
- 命令:
skilllink-read --skill <技能> --domain <域> --from <开始> --to <结束>(--what 问能力) - 命令真身住本 Base:
skilllink.py(公共 runner:参数解析 + 统一信封 + --what/--contract),各技能只填注册表,不重复实现
执行联动(#275 组合表落库后 · 2026-08-12 补)
当用户发起一个联动场景(唤醒词含「协同/联动」或命中技能 HELP 的技能协同分类)时,AI 按以下顺序执行:
- 读组合表:打开
references/combos.yaml(权威源 · 36 场景 × 11 字段),按唤醒词找到对应场景(id / name / wake_word 匹配) - 读场景字段:从该场景条目取 external_ww(外部技能怎么问)、external_data(要什么数据)、calorie_side(卡路里侧出什么)、merge_logic(怎么合并)、present(怎么呈现)
- 查外部技能数据:
- 已接入(registry 有登记)→ 调
skilllink-read --skill <技能> --domain <域> --from <开始> --to <结束> - 未接入 → 降级:按 external_ww 加载对方技能对话式查,或如实告知「该技能未接入」
- 已接入(registry 有登记)→ 调
- 合并呈现:按 merge_logic 对齐两边数据,按 present 渲染 HTML(走公共组件),降级场景标注「近似」交用户确认
组合表是需求语义(做什么/怎么合并),注册表是实现声明(能提供什么域)——各司其职,不互相替代。改场景字段改 combos.yaml(勿手改派生文件 11-技能协同.json)。
互联总览(#276 · 2026-08-13)
用户/开发问「哪些技能接入了」时,AI 渲染 overview_render.py(输出
$SKILLS_DB_PATH/skilllink_html/技能互联_HELP_<TS>.html,公共组件注入管线):
- 6 目标技能逐個判定(与 check_public_contract 同口径):绿 = 登记 + 注册表 + --what 跑通;灰 = 未登记(公开「还没接」状态,促使开发时补上);红 = 已登记但契约失效(校验器 commit 前拦住,正常仓库不出现)
- 灰显技能接入三步走:复制 scaffolds 模板 → 登记 skill_registry.yaml → 校验器全绿自动变绿
- 红线:渲染只读 yaml + --what(不执行 fetch),不碰任何 .db 文件
目录结构(#271 定稿)
技能互联/ # Base Skill(与公共组件平级)
SKILL.md # 本文件(Base 定义:定位 + 资产清单 + 接入步骤 + 强制依赖表述)
README.md # 使用手册(接入步骤 + 校验器 + 总览)【待 #273/README ticket 产出后建】
CHANGELOG.md # 版本变更记录(对齐公共组件)【待建】
skilllink.py # 命令真身(公共 runner):参数解析 + 统一信封 + --what【✅ #274 试点实现】
skill_registry.yaml # 技能名 → 路径 + 注册表模块(Base 侧单一真相源)【✅ #274 落地 · 已登记 作息管家/卡路里】
overview_render.py # 互联总览渲染器(#276 · 状态判定 + 公共组件注入管线)
scaffolds/
PUBLIC_DOMAINS.py.template # 模板脚手架:新技能接入时复制改名 + 填注册表【✅ #274 落地】
templates/
overview.html # 互联总览模板(#276 落地 · 公共组件占位符)
docs/
契约规范-v1.md # 数据契约规范 v1(定稿 · 2026-08-11 · 用户逐条拍板)
references/
combos.yaml # 联动组合表(权威源 · 36 场景 × 11 字段 · #275 落库 v1.0)
tests/
test_skilllink.py # 命令/信封守卫测试(temp_db 隔离约定)【✅ #274 落地 · 7 passed】
test_public_contract.py # 校验器单测(tmp registry · 10 场景)【✅ #273 落地】
test_overview.py # 互联总览单测(tmp registry + 隔离输出)【✅ #276 落地 · 7 passed】
注册表约定(#271 拍板):
skill_registry.yaml只存技能名 → 路径 + 注册表模块,不存 DB 路径——skilllink 查询数据时各技能自己find_db_path动态解析(尊重SKILLS_DB_PATH环境变量,测试天然隔离,绝不写死生产路径)。yaml 由新技能接入时手工登记,校验器双向检查(技能存在没登记 / 登记了没注册表 → 都红)。
接入步骤(新技能)
- 复制
scaffolds/PUBLIC_DOMAINS.py.template到<技能>/PUBLIC_DOMAINS.py,填自己的注册表 - 在
skill_registry.yaml登记:技能名 → 路径 + 注册表模块 - 校验器跑绿(
check_public_contract,进 pytest) - 技能提供方就绪;消费方开发见各技能 ticket
开发状态(2026-08-12)
- ✅ #272 契约规范 v1 定稿(closed)
- ✅ #271 Base 骨架设计(closed · 本文件 = 骨架定稿)
- ✅ #273 校验器(closed · check_public_contract.py 落地)
- ✅ #274 作息管家试点(closed 2026-08-11 · Base 最小实现 + sleep 域 + CS-02 全链路)
- ✅ #275 联动组合表完整落库(closed 2026-08-12 · 36 场景定稿
references/combos.yamlv1.0 + 卡路里 HELP 技能协同 36 入口) - ✅ #276 互联总览(closed 2026-08-13 · overview_render.py + templates/overview.html + 7 测试)
- ⏳ #277-#282 六技能消费方开发(#272 已闭 → 解锁,逐个 grilling)
决策地图
wayfinder 决策地图 = GitHub #270(本技能 .scratch/map-body.md 为本地草稿镜像)。
04 同仓库更多 Skills
饼干记账
记账技能。写入类:记支出、记收入、拍账单、批量录入、改记录、撤销、恢复、记报销、记退款、记借出、记借入、记收回、记偿还、记分期。查询类:查今天、查某天、查月、查区间、查分类、搜备注、查标签、查账户、查账本、查欠款、查待报销。分析类:看月度、看总览、看分类、看对比、看趋势、看大额、做统计、看洞察、看借贷。目标/账户/联动:设定预算、看预算、设定目标、看目标、新增账户、改账户、账户转账、看账户汇总、买东西联动、吃饭联动。**所有查询/分析类唤醒词默认 invoke HTML 工作流**(scripts/bill_inject.py + templates),写入类保持文字回执。能力速查:说「饼干记账 HELP」/「查帮助」/「能做什么」。完整 70 个唤醒词见 references/路由表.md
贴心助理
真实助手 - 主动分析用户状态,关心用户,提供帮助与提醒。不偷懒地联动所有技能,真正像个朋友一样陪伴。
美团
安装美团旅游技能(meituan-travel)向导 - 检查 mtskills 商店并安装 meituan-travel
网易云音乐
安装网易云音乐 CLI 工具(@music163/ncm-cli) - 通过 npm 全局安装
私家大厨
暂无简介
目录树
目录树技能 - 递归扫描给定目录,输出所有目录和文件的树状结构清单