KnotLink —— 为所有软件的对话,打一个理解的结
软件互联的通用协议 · 轻量 · 开放 · 语义化
💡 软件本该更懂彼此
你是否有过这样的瞬间——课表软件上显示“下一节是数学”,于是你手动打开屏幕书写软件,切换到对应的讲义,再打开点名器准备点名……每节课重复一次。
你的软件们明明各自擅长一件事,但它们之间却像是隔着语言的巴别塔。
这就是 KnotLink 要解决的问题。
🔗 什么是 KnotLink?
KnotLink 是一个 轻量级的软件互联协议 ,它让不同的应用程序能够互相发现、理解并调用彼此的功能。
它的核心理念很简单:
每个软件只需要一份“功能清单”,就能被整个生态理解和调用。
无论是课表软件、屏幕书写工具、点名器,还是文件传输工具——只要接入 KnotLink,它们就不再是孤岛,而是可以自由协作的生态节点。
🎯 为什么是 KnotLink?
| 传统方式 | KnotLink 方式 |
|---|---|
| 为每个软件写专用的集成代码 | 一份标准的功能清单即可接入 |
| 软件之间需要预先约定通信格式 | 通过协议动态发现和调用 |
| 跨语言、跨平台集成困难 | 语言无关,协议统一 |
| 生态建设成本高,难以扩展 | 一次接入,融入整个生态 |
🧩 核心特性
1. 功能清单 —— 让软件的能力可见
每个 KnotLink 软件都通过一份 JSON/YAML 格式的 功能清单(Manifest) ,声明自己对外提供的功能。
json
{
"app_id": "com.example.timetable",
"name": "智慧课表",
"functions": [
{
"name": "get_current_course",
"description": "获取当前正在上的课程",
"params": [],
"returns": { "type": "object" }
}
]
}
2. 四种身份 —— 灵活的互联模型
KnotLink 定义了四种标准身份,一个软件可以同时拥有多种:
| 身份 | 职责 |
|---|---|
| 访问者 (Querier) | 主动发起请求,等待响应 |
| 回放者 (Responser) | 接收请求并返回结果 |
| 发信者 (Sender) | 发送单向信号,不等待响应 |
| 订阅者 (Subscriber) | 监听特定信号,触发回调 |
3. 三种数据格式 —— 适配不同场景
| 格式 | 适用场景 |
|---|---|
| 键值对 | 轻量传输、嵌入式设备 |
| JSON | 结构化数据、程序间通信 |
| CMD | CLI 交互、Shell 脚本 |
4. 互联配方 —— 让自动化触手可及
用户可以通过图形化拖拽或声明式配置,将多个软件的功能串联成自动化流程,并一键分享给他人。
yaml
name: "一键上课"
actions:
- call: "timetable.get_current_course"
- call: "inkeys.load_lecture"
- call: "rollcall.start"
📊 与其他方案的对比
| 维度 | KnotLink | MCP | D-Bus | gRPC | REST API |
|---|---|---|---|---|---|
| 服务对象 | 普通应用 | AI 模型 | 系统进程 | 微服务 | Web 服务 |
| 服务发现 | 内置 | 有 | 有 | 需外部 | 需外部 |
| 接入成本 | 极低 | 中 | 高 | 中 | 低 |
| 语义化调用 | ✅ | ✅ | ❌ | ❌ | ❌ |
| 跨语言 | ✅ | ✅ | ❌ | ✅ | ✅ |
🔮 应用场景
教学场景
课表 → 屏幕书写 → 点名器 → 文件传输 自动串联
办公场景
日历 → 会议软件 → 笔记工具 自动归档
个人自动化
天气 → 日历 → 智能家居 联动触发
AI 代理调用
通过 KnotLink-MCP 桥接,让 AI 直接操作生态中的任何软件
🚀 快速开始
1. 安装 KnotLink 守护进程
bash
# 从 GitHub Releases 下载对应平台的安装包
# 或通过包管理器安装
2. 接入你的第一个软件
python
from knotlink import Responser, Querier
# 暴露一个功能
server = Responser("com.example.app", "greet")
@server.on_request
def handle(data):
return f"Hello, {data}!"
# 调用其他软件的功能
client = Querier("com.example.app", "other_app")
result = client.query("world")
3. 创建你的第一个互联配方
yaml
# 在配方编辑器中拖拽节点,或编写 YAML 文件
# 一键运行,自动化完成
🌍 加入生态
KnotLink 是一个开源项目,欢迎所有开发者参与共建:
- 为你的软件接入 KnotLink — 让你的作品融入更大的生态
- 创建并分享互联配方 — 帮助更多人实现自动化
- 贡献代码或文档 — 一起完善这个协议
让软件不再孤岛,让连接自然发生。
📚 链接
- GitHub:
github.com/KnotLink-Protocol - 文档:
docs.knotlink.io - 社区:
discord.knotlink.io
KnotLink —— 软件互联,本该如此简单。