QILIN ENGINE · 引擎介绍
麒麟引擎
QiLin(麒麟引擎)是一个开源的自主智能体引擎(agent harness)。智能体在可持久化的会话中工作:读写与编辑文件、执行 shell 命令和持久终端、搜索网络、查询语言服务器,并把工作委派给子智能体与后台任务;所有模型可见的输入与输出都记录到可重放的会话日志中。
01一切皆插件
麒麟引擎构建在「一切皆插件」的架构之上,由 Kylin 插件框架驱动(Kylin 源自开源的 Cordis,以 vendor 方式收入仓库)。模型适配器、工具注册表、会话日志以及智能体循环(agent loop)本身都是插件,每一个都可以从配置中替换。
不存在需要打补丁的特权内核:扩展麒麟引擎的方式是把插件挂载到其他插件旁边,而各项注册都是可逆的副作用,会在其插件卸载时自动撤销。这让引擎的任何一个环节——从提示词组装、工具执行到模型流式输出——都能被第三方实现替换或增强,而不必改动核心代码。
02NMO 产品理念
麒麟引擎是 NMO 产品线的锚:引擎本身与运行其上的每个产品都遵循三条原则。新产品在开发功能之前先写明如何遵循;设计争议以三条仲裁;违背任一条的功能不发布。
NATIVE · 事实原生
你拥有
会话、领域与插件的事实由自己的运行时持有,绝不寄存于第三方服务或用户记忆。任意会话可从本地日志完整重建。
MINIMAL · 操作极简
用户只花任务允许的最少操作
自然语言是主操作面;系统负责推断、匹配与执行,打断只发生在不可逆、高成本或诚信关键的决策点。
OPEN · 开放扩展
世界进得来
官方、第三方与用户的能力都经公开契约进入;能力由契约定义,不由实现定义,同一契约下官方实现可被替换。
03核心能力
从一次对话到一个多小时的工作流,引擎把复杂任务拆成可观察、可干预、可复跑的一步步执行。
TOOLS
工具与执行
覆盖一次性与持久 PTY 两种形式的 bash 与 PowerShell、文件读写编辑与图片读取、基于内置 ripgrep 的 glob/grep 发现、LSP 查询、网络搜索与抓取、技能加载、todo/plan/goal 跟踪以及向用户提问的 ask-user 交互。
MODELS
多模型支持
DeepSeek 适配器与多提供方适配器覆盖 Anthropic、OpenAI、Kimi、GLM、豆包、Gemini 等内置提供方,也支持自定义的 OpenAI 或 Anthropic 兼容网关,按会话切换。
SANDBOX
执行世界与沙箱
文件系统、子进程与沙箱 provider 构成可替换的执行世界:默认本机、经成对 provider 的 SSH 远程主机、以 bwrap/Landlock/Seatbelt 为后端的进程隔离;实验包通过注册 provider 提供浏览器与电脑交互。
MEMORY
长短期记忆
跨会话的长短期记忆让智能体持续理解你的偏好与上下文;会话支持 fork、恢复与全文检索,历史即资产。
AGENTS
子智能体与工作流
工作可委派给后台任务、支持模型选择与中途引导的子智能体、脚本化多智能体工作流或定时跟进;目标、清单与定时任务直接进入对话,随时查看、修改、续跑。
SKILLS · MCP
技能与开放生态
内置技能库按需渐进加载;外部 MCP 服务器挂载为原生工具;既有 Claude Code 与 Codex 的 shell 钩子无需修改即可运行;经验证的 webhook 可从外部事件启动会话。
04Kylin 插件内核
引擎底层的 Kylin 框架源自上游 Cordis 的 vendor 源码,其设计参见论文《A Programming Paradigm for Spatiotemporal Composability》。插件作者需要了解五个核心概念:
- 插件是实现 Service 的对象。它可以是一个带有可选
inject和apply(ctx)字段的函数,也可以是一个Service子类,其生命周期由 Kylin 挂载到当前上下文中。 - 上下文是服务的容器。一个服务占据一个稳定的
ctx.<key>(如ctx.tools、ctx.llm、ctx.sessions);其他插件通过 key 查找服务,而非导入具体实现。 - 通过
inject声明服务依赖。插件声明所需的服务后,会等待这些服务就绪才启动;加载顺序通过服务依赖表达,而非手动编排。 - 类型化事件用于通信。服务注册事件名后以五种模式分发:观察、包装、并行扇出、按序执行或停在首个 bail 值。
- 注册是可逆的副作用。提示词片段、工具 schema、适配器与监听器通过
ctx.effect()或ctx.on()安装,reload 和 teardown 时按预期撤销。
事件分发模式
| 模式 | 是否 await | 分发顺序 | 是否有返回值 |
|---|---|---|---|
emit | 否 | 监听器按注册顺序观察 | 否 |
waterfall | 否 | 监听器按注册顺序包装 | 是 |
parallel | 是 | 所有监听器并行观察事件 | 否 |
serial | 是 | 监听器按注册顺序观察 | 是 |
bail | 否 | 按注册顺序,直到某个监听器返回 bail 值 | 是 |
分发模式是事件公开约定的一部分:策略监听器在拥有决策权时可以短路(不调用 next() 直接返回),仅做观察的监听器则必须委托。拦截和策略优先使用事件;直接能力调用优先使用服务方法。
05入口模式与部署形态
同一棵插件树,多种启动方式:CLI 通过具名 profile 从同一基座启动所有模式,一套能力覆盖从浏览器到无人值守的各类场景。
| Profile | 形态 | 适用场景 |
|---|---|---|
qilin web | 浏览器 GUI | 会话与聊天、模型配置、插件与设置管理、文件预览、终端、会话历史 |
--profile headless | 一次性运行 | 执行单个任务,打印最终回答后退出 |
--profile sdk | JSON-RPC 服务器 | TypeScript 与 Python SDK 驱动的程序化集成 |
--profile acp | ACP 服务器 | 面向自动化客户端的 Agent Client Protocol |
同一套基座以两种形态交付:Web 多租户——为多个账户服务同一个入口,每个账户一个隔离的运行时,会话、工作区、用量账本、插件与模型设置都归属各自的租户;桌面单用户——把一个本地引擎包进一个窗口,服务于一个人,没有名册、没有账户门,整套基座在本地对着一个数据目录运行。组合机制与各层如何叠加,见技术架构。