@sinm/kai 1.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +219 -0
- package/bin/kai-cli.js +21 -0
- package/dist-cli/kai-cli.js +218494 -0
- package/dist-electron/renderer/assets/_baseUniq-C3qTPmDE.js +660 -0
- package/dist-electron/renderer/assets/arc-BNCDL4e8.js +131 -0
- package/dist-electron/renderer/assets/architectureDiagram-Q4EWVU46-BdbGbDeJ.js +8718 -0
- package/dist-electron/renderer/assets/blockDiagram-DXYQGD6D-QiXI7ilT.js +3637 -0
- package/dist-electron/renderer/assets/c4Diagram-AHTNJAMY-BddxtMgY.js +2482 -0
- package/dist-electron/renderer/assets/channel-C_JLiB8I.js +7 -0
- package/dist-electron/renderer/assets/chunk-4BX2VUAB-s-dHrXuO.js +16 -0
- package/dist-electron/renderer/assets/chunk-4TB4RGXK-vzGbJGfp.js +1920 -0
- package/dist-electron/renderer/assets/chunk-55IACEB6-DS6S48ws.js +13 -0
- package/dist-electron/renderer/assets/chunk-EDXVE4YY-CkjF90gW.js +24 -0
- package/dist-electron/renderer/assets/chunk-FMBD7UC4-BXvIgVUY.js +19 -0
- package/dist-electron/renderer/assets/chunk-OYMX7WX6-YZbrtKSv.js +1939 -0
- package/dist-electron/renderer/assets/chunk-QZHKN3VN-BbLYRfB3.js +19 -0
- package/dist-electron/renderer/assets/chunk-YZCP3GAM-JVGt9SK_.js +116 -0
- package/dist-electron/renderer/assets/classDiagram-6PBFFD2Q-BwZMRjub.js +23 -0
- package/dist-electron/renderer/assets/classDiagram-v2-HSJHXN6E-BwZMRjub.js +23 -0
- package/dist-electron/renderer/assets/clone-BC-6Iyrf.js +8 -0
- package/dist-electron/renderer/assets/cose-bilkent-S5V4N54A-C3CGX8BH.js +4942 -0
- package/dist-electron/renderer/assets/cytoscape.esm-D6E6cAed.js +30246 -0
- package/dist-electron/renderer/assets/dagre-KV5264BT-DXOCL1ZZ.js +694 -0
- package/dist-electron/renderer/assets/defaultLocale-B2RvLBDe.js +206 -0
- package/dist-electron/renderer/assets/diagram-5BDNPKRD-B9dghm7-.js +171 -0
- package/dist-electron/renderer/assets/diagram-G4DWMVQ6-DDupyCeT.js +853 -0
- package/dist-electron/renderer/assets/diagram-MMDJMWI5-Bagr5R3p.js +303 -0
- package/dist-electron/renderer/assets/diagram-TYMM5635-YL5sCgeo.js +214 -0
- package/dist-electron/renderer/assets/erDiagram-SMLLAGMA-CHytCe4p.js +1227 -0
- package/dist-electron/renderer/assets/flowDiagram-DWJPFMVM-BJgPbbzi.js +2332 -0
- package/dist-electron/renderer/assets/ganttDiagram-T4ZO3ILL-BN-Vq0iy.js +3714 -0
- package/dist-electron/renderer/assets/gitGraphDiagram-UUTBAWPF-CbUpEcLb.js +1375 -0
- package/dist-electron/renderer/assets/graph-Di49T8Ee.js +953 -0
- package/dist-electron/renderer/assets/index-C55TZN9T.css +14105 -0
- package/dist-electron/renderer/assets/index-D-H_6heO.js +91405 -0
- package/dist-electron/renderer/assets/infoDiagram-42DDH7IO-BPl-rsFx.js +33 -0
- package/dist-electron/renderer/assets/init-ZxktEp_H.js +16 -0
- package/dist-electron/renderer/assets/ishikawaDiagram-UXIWVN3A-C8ly-VN_.js +967 -0
- package/dist-electron/renderer/assets/journeyDiagram-VCZTEJTY-nUjo5Mzy.js +1255 -0
- package/dist-electron/renderer/assets/kanban-definition-6JOO6SKY-DWVGGGQB.js +1052 -0
- package/dist-electron/renderer/assets/katex-CYis69t2.js +14301 -0
- package/dist-electron/renderer/assets/layout-BO15dWax.js +2217 -0
- package/dist-electron/renderer/assets/linear-bwcJeNAk.js +340 -0
- package/dist-electron/renderer/assets/min-CSnTolL5.js +41 -0
- package/dist-electron/renderer/assets/mindmap-definition-QFDTVHPH-WJVpu9VT.js +1186 -0
- package/dist-electron/renderer/assets/ordinal-CxptdPJm.js +76 -0
- package/dist-electron/renderer/assets/pieDiagram-DEJITSTG-DF_DZ5Q4.js +248 -0
- package/dist-electron/renderer/assets/quadrantDiagram-34T5L4WZ-UhXGuJcr.js +1342 -0
- package/dist-electron/renderer/assets/requirementDiagram-MS252O5E-BtD6ux77.js +1204 -0
- package/dist-electron/renderer/assets/sankeyDiagram-XADWPNL6-CC4IbM1T.js +1205 -0
- package/dist-electron/renderer/assets/sequenceDiagram-FGHM5R23-Da4bQBSu.js +4502 -0
- package/dist-electron/renderer/assets/stateDiagram-FHFEXIEX-zEkMqOXM.js +452 -0
- package/dist-electron/renderer/assets/stateDiagram-v2-QKLJ7IA2-DpXHvwUL.js +21 -0
- package/dist-electron/renderer/assets/timeline-definition-GMOUNBTQ-DJnjzEUR.js +1596 -0
- package/dist-electron/renderer/assets/vennDiagram-DHZGUBPP-f6WAsZFS.js +2486 -0
- package/dist-electron/renderer/assets/wardley-RL74JXVD-pTLEMWKj.js +24199 -0
- package/dist-electron/renderer/assets/wardleyDiagram-NUSXRM2D-GRV6kOg2.js +901 -0
- package/dist-electron/renderer/assets/xychartDiagram-5P7HB3ND-BAcUBgxf.js +1932 -0
- package/dist-electron/renderer/index.html +13 -0
- package/package.json +52 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CassClaw Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# KAi
|
|
2
|
+
|
|
3
|
+
> 开启思考。不是帮你做事,是帮你想得更深、更远。
|
|
4
|
+
|
|
5
|
+
KAi 是一款**多 AI Agent 协作桌面应用**。你可以创建多个拥有独立人格、记忆和技能的 Agent,让它们在你的桌面上像一个真正的团队一样协作——讨论、交接、互审、分工。
|
|
6
|
+
|
|
7
|
+
## 为什么
|
|
8
|
+
|
|
9
|
+
用 ChatGPT 聊天,你得到的是一个无所不能但什么都记不住的通用助手。
|
|
10
|
+
|
|
11
|
+
KAi 不一样。你可以让一个"乔布斯"负责产品思考,一个"Anders Hejlsberg"把控架构,一个"TJ Holowaychuk"写代码,一个"Robert C. Martin"写审查。它们各有各的记忆、工具权限和个性。它们会 @mention 彼此,会交接任务,会监督结果。
|
|
12
|
+
|
|
13
|
+
**一个人,一支团队。**
|
|
14
|
+
|
|
15
|
+
## 特性
|
|
16
|
+
|
|
17
|
+
### 🧠 Agent 系统
|
|
18
|
+
|
|
19
|
+
- **独立身份** — 每个 Agent 有自己的名字、头像、个性描述,甚至可以自定义 SOUL(行为准则)
|
|
20
|
+
- **持久记忆** — Agent 自主维护 MEMORY.md(长期记忆)和每日笔记,跨会话记住上下文
|
|
21
|
+
- **工作空间** — 每个 Agent 拥有独立的文件工作空间(`~/.kai/agents/{id}/workspace/`)
|
|
22
|
+
- **Skill 技能系统** — 可扩展的技能包,Agent 按需加载,提升专业领域表现
|
|
23
|
+
|
|
24
|
+
### 👥 多 Agent 协作
|
|
25
|
+
|
|
26
|
+
- **群聊模式** — 多个 Agent 在同一个对话中协作,支持 sequential / parallel / broadcast 策略
|
|
27
|
+
- **Handoff 交接** — Agent 之间可以主动交接任务,附带原因和上下文摘要
|
|
28
|
+
- **@mention** — 在回复中 `@AgentName` 触发自动交接
|
|
29
|
+
- **Supervisor 监督** — 指定一个 Agent 作为监督者,评估执行结果是否达成目标
|
|
30
|
+
- **子任务分派** — Agent 可以创建前台/后台子任务,委托给其他 Agent 执行
|
|
31
|
+
|
|
32
|
+
### 🛠 内置工具
|
|
33
|
+
|
|
34
|
+
Agent 开箱即用的能力:
|
|
35
|
+
|
|
36
|
+
| 工具 | 功能 |
|
|
37
|
+
|------|------|
|
|
38
|
+
| **Shell** | 执行终端命令 |
|
|
39
|
+
| **Read/Write/Edit File** | 读写和精确编辑本地文件 |
|
|
40
|
+
| **Web Search** | 网络搜索 |
|
|
41
|
+
| **Web Fetch** | 抓取和解析网页内容 |
|
|
42
|
+
| **Database** | 查询应用数据库(只读) |
|
|
43
|
+
| **Scheduler** | 创建和管理定时任务 |
|
|
44
|
+
| **Skill** | 加载和执行技能包 |
|
|
45
|
+
| **MCP** | 通过 Model Context Protocol 连接外部工具服务器 |
|
|
46
|
+
|
|
47
|
+
### 💬 聊天体验
|
|
48
|
+
|
|
49
|
+
- 流式输出,实时渲染 Markdown / 代码高亮 / 推理过程
|
|
50
|
+
- 支持图片附件
|
|
51
|
+
- 明暗主题自适应
|
|
52
|
+
- 中英文国际化(i18n)
|
|
53
|
+
|
|
54
|
+
## 技术栈
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Electron 40 + React 19 + TypeScript 5
|
|
58
|
+
Vercel AI SDK + SQLite3 + Zustand + CSS Modules
|
|
59
|
+
electron-vite + Vitest
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
- **主进程**:Agent 执行引擎、IPC、数据库、文件系统、MCP 客户端
|
|
63
|
+
- **渲染进程**:React UI,沙箱化运行(`contextIsolation: true`)
|
|
64
|
+
- **预加载层**:`contextBridge` 安全桥接
|
|
65
|
+
|
|
66
|
+
## 快速开始
|
|
67
|
+
|
|
68
|
+
### 环境要求
|
|
69
|
+
|
|
70
|
+
- Node.js >= 22
|
|
71
|
+
- Yarn
|
|
72
|
+
|
|
73
|
+
### 安装
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
git clone https://github.com/your-org/kai.git
|
|
77
|
+
cd kai
|
|
78
|
+
yarn install
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 开发
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
yarn dev # 启动开发服务器(支持 HMR)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 构建
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
yarn build # 构建生产版本
|
|
91
|
+
yarn package # 打包为平台安装包(输出到 release/)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 测试
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
yarn test # 运行测试
|
|
98
|
+
yarn test:ui # 测试 UI
|
|
99
|
+
yarn test:coverage # 覆盖率报告
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 架构
|
|
103
|
+
|
|
104
|
+
### Agent 执行层
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
SoloExecutor ← 单 Agent 对话
|
|
108
|
+
SwarmExecutor ← 多 Agent 群聊(管理 handoff 循环)
|
|
109
|
+
├── AgentExecutor ← 单次 LLM 调用(流式 + 工具执行循环)
|
|
110
|
+
├── SupervisorLoop ← 监督评估循环
|
|
111
|
+
├── TaskOrchestrator ← 子任务创建和管理
|
|
112
|
+
└── SwarmContext ← 共享状态(handoff chain、task map)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 消息压缩管线
|
|
116
|
+
|
|
117
|
+
长对话自动压缩,4 级策略管道:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
ToolResultSpill(合并冗长工具结果)
|
|
121
|
+
→ ReasoningRemoval(移除推理过程)
|
|
122
|
+
→ Summarization(摘要旧消息)
|
|
123
|
+
→ Pruning(裁剪最旧消息)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 数据存储
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
~/.kai/
|
|
130
|
+
├── kai.db # SQLite 主数据库
|
|
131
|
+
├── config/ # 应用配置(加密存储 API Key)
|
|
132
|
+
├── agents/
|
|
133
|
+
│ └── {agentId}/
|
|
134
|
+
│ └── workspace/ # Agent 工作空间
|
|
135
|
+
│ ├── IDENTITY.md # 身份定义
|
|
136
|
+
│ ├── SOUL.md # 行为准则
|
|
137
|
+
│ ├── MEMORY.md # 长期记忆
|
|
138
|
+
│ ├── USER.md # 用户信息
|
|
139
|
+
│ ├── AGENTS.md # 工作指南
|
|
140
|
+
│ ├── TOOLS.md # 环境配置
|
|
141
|
+
│ └── memory/ # 每日笔记
|
|
142
|
+
├── attachments/ # 对话附件
|
|
143
|
+
└── sessions/ # 会话消息存储
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## 支持的 LLM
|
|
147
|
+
|
|
148
|
+
KAi 通过 Vercel AI SDK 连接大语言模型,支持:
|
|
149
|
+
|
|
150
|
+
- OpenAI Compatible(OpenAI、DeepSeek、Moonshot、MiniMax 等)
|
|
151
|
+
- Anthropic Claude
|
|
152
|
+
- Google Gemini
|
|
153
|
+
- 任何兼容 OpenAI API 的模型
|
|
154
|
+
|
|
155
|
+
在设置的 LLM 通道中配置 API Key 即可使用。
|
|
156
|
+
|
|
157
|
+
## MCP(Model Context Protocol)
|
|
158
|
+
|
|
159
|
+
KAi 内置 MCP 客户端支持。在设置中配置 MCP 服务器,即可让 Agent 使用外部工具:
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{
|
|
163
|
+
"mcp": {
|
|
164
|
+
"servers": {
|
|
165
|
+
"my-server": {
|
|
166
|
+
"command": "npx",
|
|
167
|
+
"args": ["-y", "@my/mcp-server"]
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## 项目结构
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
src/
|
|
178
|
+
├── main/ # Electron 主进程
|
|
179
|
+
│ ├── agent/ # Agent 执行引擎
|
|
180
|
+
│ │ ├── SoloExecutor # 单 Agent 执行器
|
|
181
|
+
│ │ ├── SwarmExecutor # 群聊执行器
|
|
182
|
+
│ │ ├── AgentExecutor # LLM 调用执行器
|
|
183
|
+
│ │ ├── SupervisorLoop # 监督循环
|
|
184
|
+
│ │ ├── TaskOrchestrator # 任务编排
|
|
185
|
+
│ │ ├── SwarmContext # 共享上下文
|
|
186
|
+
│ │ ├── HandoffResolver # Handoff 解析
|
|
187
|
+
│ │ └── factory/ # Prompt/Tools 构建
|
|
188
|
+
│ ├── compression/ # 消息压缩管线
|
|
189
|
+
│ ├── config/ # 配置管理(加密)
|
|
190
|
+
│ ├── db/ # SQLite 数据层
|
|
191
|
+
│ ├── handlers/ # IPC 处理器
|
|
192
|
+
│ ├── mcp/ # MCP 客户端
|
|
193
|
+
│ ├── scheduler/ # 定时任务系统
|
|
194
|
+
│ ├── skill/ # Skill 技能系统
|
|
195
|
+
│ ├── storage/ # 会话/附件存储
|
|
196
|
+
│ ├── tools/ # 内置工具
|
|
197
|
+
│ └── workspace/ # Agent 工作空间管理
|
|
198
|
+
├── renderer/ # React 渲染进程
|
|
199
|
+
│ └── src/
|
|
200
|
+
│ ├── components/ # UI 组件
|
|
201
|
+
│ ├── stores/ # Zustand 状态管理
|
|
202
|
+
│ ├── locales/ # i18n 翻译文件
|
|
203
|
+
│ └── styles/ # 设计令牌 + CSS Modules
|
|
204
|
+
├── preload/ # 安全桥接层
|
|
205
|
+
└── shared/ # 主进程/渲染进程共享类型
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## 安全模型
|
|
209
|
+
|
|
210
|
+
KAi 采用 Electron 三进程安全架构:
|
|
211
|
+
|
|
212
|
+
- **渲染进程**:完全沙箱化,无 Node.js 访问
|
|
213
|
+
- **预加载层**:`contextIsolation: true` + `nodeIntegration: false`
|
|
214
|
+
- **主进程**:所有文件系统、网络操作通过 IPC 暴露给渲染进程
|
|
215
|
+
- **API Key**:AES-256 加密存储,使用机器唯一标识派生密钥
|
|
216
|
+
|
|
217
|
+
## License
|
|
218
|
+
|
|
219
|
+
MIT
|
package/bin/kai-cli.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* kai-cli 入口脚本
|
|
5
|
+
*
|
|
6
|
+
* 先检查 renderer 产物是否存在,然后启动 CLI 服务。
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const { existsSync } = require('fs')
|
|
10
|
+
const { resolve, dirname } = require('path')
|
|
11
|
+
|
|
12
|
+
// 检查 renderer 产物
|
|
13
|
+
const rendererDir = resolve(__dirname, '../dist-electron/renderer')
|
|
14
|
+
if (!existsSync(resolve(rendererDir, 'index.html'))) {
|
|
15
|
+
console.error('Error: Renderer build not found.')
|
|
16
|
+
console.error('Please run "yarn build" or "yarn build:cli" first.')
|
|
17
|
+
process.exit(1)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// 动态 require CJS 入口
|
|
21
|
+
require(resolve(__dirname, '../dist-cli/kai-cli.js'))
|