cc-linker 0.0.1 → 0.0.3

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.
Files changed (5) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -117
  3. package/dist/cli.js +20422 -24037
  4. package/dist/cli.js.map +87 -52
  5. package/package.json +11 -9
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 yujuntea
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 CHANGED
@@ -1,17 +1,89 @@
1
- # cc-bridge
1
+ # cc-linker
2
2
 
3
- 让飞书和终端(Claude Code CLI)之间的对话切换像切换设备一样无缝。
3
+ > 让手机聊天应用和终端(Claude Code CLI)之间的对话切换,像切换设备一样无缝。
4
+ >
5
+ > **目前已接入飞书**,更多聊天平台持续扩展中。
4
6
 
5
- ## 3 步上手
7
+ [![npm version](https://img.shields.io/npm/v/cc-linker)](https://www.npmjs.com/package/cc-linker)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
9
+
10
+ **语言:** 中文 | [English](README_en.md)
11
+
12
+ ## 💡 为什么需要 cc-linker?
13
+
14
+ 你是否遇到过这样的场景:
15
+
16
+ - **通勤路上用手机聊,到公司终端继续** — 地铁上用手机飞书给 Bot 发消息讨论技术方案,到公司打开终端 `cc-linker list` 找到会话,`resume` 一键恢复上下文
17
+ - **飞书快速提问,终端深度调试** — 在飞书里快速问了个 API 用法,发现需要本地调试,终端 `cc-linker resume` 切换到同一会话继续让 Claude 帮你写代码
18
+ - **多项目并行,会话不乱** — 同时在 `project-a` 和 `project-b` 两个目录与 Claude 对话,`/list` 清晰展示每个会话的目录和状态,卡片按钮一键切换不混淆
19
+
20
+ **cc-linker 就是解决这些痛点的桥接工具。** 它在你电脑上维护一个统一的会话注册表,让手机聊天应用和 Claude Code CLI 共享同一套会话状态——无论你在哪个端发起对话,都能无缝切换到另一端继续。
21
+
22
+ > **当前已接入飞书**,更多聊天平台持续扩展中。
23
+
24
+ ## ✨ 核心特性
25
+
26
+ | 特性 | 说明 |
27
+ |------|------|
28
+ | 🔄 **跨端无缝切换** | 聊天应用发起的对话,终端一键恢复(含上下文和目录);终端创建的会话,聊天应用随时查看 |
29
+ | 💬 **流式卡片交互** | 聊天应用中实时看到 Claude 的 thinking 和回复,不再是"转圈等待" |
30
+ | 📋 **统一会话管理** | 自动扫描、增量同步,无需手动维护会话列表 |
31
+ | 🎛 **多模型切换** | 在卡片中一键切换模型,无需改配置 |
32
+ | 🛡 **持久化不丢消息** | 文件级消息队列,进程崩溃、重启后消息不丢失 |
33
+ | 🚀 **3 步上手** | `install → setup → start`,5 分钟完成配置 |
34
+
35
+ ## 📸 效果展示
36
+
37
+ ### 聊天应用端体验(飞书)
38
+
39
+ > 当前已支持飞书,更多平台开发中。
40
+
41
+ <table>
42
+ <tr>
43
+ <td align="center"><b>会话列表</b><br><code>/list</code> 查看所有会话</td>
44
+ <td align="center"><b>开始处理</b><br>消息发出后即时反馈</td>
45
+ <td align="center"><b>流式实时反馈</b><br>实时看到 thinking 过程</td>
46
+ </tr>
47
+ <tr>
48
+ <td align="center"><img src="docs/images/feishu-list.png" alt="飞书会话列表" width="280"></td>
49
+ <td align="center"><img src="docs/images/feishu-start-processing.png" alt="开始处理" width="280"></td>
50
+ <td align="center"><img src="docs/images/feishu-streaming-thinking.png" alt="流式 thinking" width="280"></td>
51
+ </tr>
52
+ </table>
53
+
54
+ <table>
55
+ <tr>
56
+ <td align="center"><b>处理完成</b><br>token / 耗时 / 轮数统计</td>
57
+ <td align="center"><b>处理完成(长回复)</b><br>长文本同样展示</td>
58
+ <td align="center"><b>模型切换</b><br>卡片按钮一键切换</td>
59
+ </tr>
60
+ <tr>
61
+ <td align="center"><img src="docs/images/feishu-complete.png" alt="处理完成" width="280"></td>
62
+ <td align="center"><img src="docs/images/feishu-complete-long.png" alt="处理完成-长回复" width="280"></td>
63
+ <td align="center"><img src="docs/images/feishu-model.png" alt="模型选择" width="280"></td>
64
+ </tr>
65
+ </table>
66
+
67
+ ### 终端端体验
68
+
69
+ **查看所有会话** — 清晰的表格展示,状态一目了然:
70
+
71
+ <img src="docs/images/cli-list.png" alt="终端会话列表" width="700">
72
+
73
+ **一键恢复会话** — 支持前缀匹配,自动切换目录并恢复上下文:
74
+
75
+ <img src="docs/images/cli-resume.png" alt="终端恢复会话" width="700">
76
+
77
+ ## 🚀 快速开始
6
78
 
7
79
  ### 1. 安装
8
80
 
9
81
  ```bash
10
82
  # npm 全局安装
11
- npm install -g cc-link
83
+ npm install -g cc-linker
12
84
 
13
85
  # 或 bun 全局安装
14
- bun add -g cc-link
86
+ bun add -g cc-linker
15
87
 
16
88
  # 需要 Bun 运行时。安装 Bun:
17
89
  # curl -fsSL https://bun.sh/install | bash
@@ -20,29 +92,71 @@ bun add -g cc-link
20
92
  ### 2. 一键配置
21
93
 
22
94
  ```bash
23
- cc-bridge setup
95
+ cc-linker setup
24
96
  ```
25
97
 
26
- 交互式向导会引导你:
98
+ 交互式向导会引导你完成:
27
99
  - 初始化会话注册表
28
100
  - 安装 Claude Code 自动注册钩子
29
- - 配置飞书 BotApp ID + App Secret + 开机自启)
101
+ - 配置聊天应用 Bot(当前仅飞书:App ID + App Secret + 开机自启)
30
102
 
31
- > **仅需终端侧功能?** 运行 `cc-bridge setup --skip-feishu` 跳过飞书配置。
103
+ > **仅需终端侧功能?** 运行 `cc-linker setup --skip-feishu` 跳过聊天应用配置。
32
104
 
33
105
  ### 3. 开始使用
34
106
 
35
107
  | 场景 | 操作 |
36
108
  |------|------|
37
- | 飞书中给 Bot 发消息 | 直接对话,流式卡片实时更新 |
38
- | 终端查看所有会话 | `cc-bridge list` |
39
- | 终端恢复某个会话 | `cc-bridge resume <UUID>` |
40
- | 飞书切换会话 | `/bridge switch <序号>` |
41
- | 飞书创建新会话 | `/bridge new <路径> -- <提示词>` |
109
+ | 聊天应用中给 Bot 发消息(飞书) | 直接对话,流式卡片实时更新 |
110
+ | 终端查看所有会话 | `cc-linker list` |
111
+ | 终端恢复某个会话 | `cc-linker resume <UUID>` |
112
+ | 聊天应用切换会话(飞书) | `/switch <序号>` |
113
+ | 聊天应用创建新会话(飞书) | `/new <路径> -- <提示词>` |
114
+
115
+ ## 📋 命令参考
116
+
117
+ ### CLI 命令
118
+
119
+ ```bash
120
+ cc-linker list # 列出所有会话
121
+ cc-linker resume <UUID> # 恢复指定会话到终端(支持前缀匹配)
122
+ cc-linker show <UUID> # 查看会话详情
123
+ cc-linker sync # 手动同步两端会话
124
+ cc-linker search <关键词> # 搜索会话
125
+ cc-linker export <UUID> # 导出会话为 Markdown/JSON/Text
126
+ cc-linker clean # 清理无效记录
127
+ cc-linker status # 查看桥接状态
128
+ ```
129
+
130
+ ### 聊天应用 Bot 命令(飞书)
131
+
132
+ 在飞书私聊中给 Bot 发送:
133
+
134
+ | 命令 | 说明 |
135
+ |------|------|
136
+ | `/help` | 显示帮助 |
137
+ | `/list` | 列出会话(带切换/恢复按钮卡片) |
138
+ | `/new [路径] [-- 提示词]` | 创建新会话 |
139
+ | `/switch <序号\|UUID>` | 切换会话 |
140
+ | `/resume <序号\|UUID>` | 获取终端恢复命令 |
141
+ | `/model` | 查看/设置默认模型 |
142
+ | `/status` | 查看状态 |
143
+ | `/whoami` | 获取你的 open_id |
42
144
 
43
- ---
145
+ ### Bot 运行管理
44
146
 
45
- ## 飞书开放平台权限配置
147
+ | 命令 | 说明 |
148
+ |------|------|
149
+ | `cc-linker start` | 前台启动(阻塞终端) |
150
+ | `cc-linker start --daemon` | 后台守护进程模式 |
151
+ | `cc-linker stop` | 停止后台 Bot |
152
+ | `cc-linker restart` | 重启 Bot 服务 |
153
+ | `cc-linker daemon install` | 配置开机自动启动 |
154
+ | `cc-linker daemon uninstall` | 移除开机自启 |
155
+ | `cc-linker daemon status` | 查看后台服务状态 |
156
+
157
+ ## 🔧 接入飞书(第一个支持的聊天平台)
158
+
159
+ cc-linker 的架构设计支持接入多种聊天应用,**飞书是第一个已实现的平台**。后续可扩展支持其他 IM 平台。
46
160
 
47
161
  在配置飞书 Bot 前,需要在 [飞书开放平台](https://open.feishu.cn/app) 创建应用并配置权限。
48
162
 
@@ -62,7 +176,7 @@ cc-bridge setup
62
176
  | `im:message:send_as_bot` | 以应用身份发送消息 |
63
177
  | `im:message:readonly` | 获取消息详情 |
64
178
  | `im:chat:readonly` | 获取群组信息 |
65
- | `contact:user.base:readonly` | 获取用户基本信息(用于识别 open_id) |
179
+ | `contact:user.base:readonly` | 获取用户基本信息 |
66
180
 
67
181
  ### 必需事件订阅
68
182
 
@@ -79,81 +193,9 @@ cc-bridge setup
79
193
 
80
194
  配置完权限后,进入「版本管理与发布」→ 创建版本 → 发布。**只有发布后的权限才会生效。**
81
195
 
82
- ---
83
-
84
- ## 详细使用
85
-
86
- ### 常用命令
87
-
88
- ```bash
89
- cc-bridge list # 列出所有会话
90
- cc-bridge resume <UUID> # 恢复指定会话到终端(支持前缀匹配)
91
- cc-bridge show <UUID> # 查看会话详情
92
- cc-bridge sync # 手动同步两端会话
93
- cc-bridge search <关键词> # 搜索会话
94
- cc-bridge export <UUID> # 导出会话为 Markdown/JSON/Text
95
- cc-bridge clean # 清理无效记录
96
- cc-bridge status # 查看桥接状态
97
- ```
98
-
99
- ### 飞书 Bot 命令
196
+ ## 📖 配置说明
100
197
 
101
- 在飞书私聊中给 Bot 发送:
102
-
103
- | 命令 | 说明 |
104
- |------|------|
105
- | `/bridge help` | 显示帮助 |
106
- | `/bridge list` | 列出会话(带切换/恢复按钮卡片) |
107
- | `/bridge new [路径] [-- 提示词]` | 创建新会话 |
108
- | `/bridge switch <序号\|UUID>` | 切换会话 |
109
- | `/bridge resume <序号\|UUID>` | 获取终端恢复命令 |
110
- | `/bridge model` | 查看/设置默认模型 |
111
- | `/bridge status` | 查看状态 |
112
- | `/bridge whoami` | 获取你的 open_id |
113
-
114
- ### 流式响应体验
115
-
116
- 当 `stream.enabled = true`(默认开启)时,飞书消息会触发流式卡片:
117
-
118
- 1. **⏳ 正在处理...** — Claude 进程启动后立即出现
119
- 2. **💭 处理中** — 实时展示 thinking 和回复内容,底部显示已用时间
120
- 3. **✅ 处理完成** — 展示最终回复 + 费用/耗时/轮数统计
121
-
122
- ### Bot 运行管理
123
-
124
- | 命令 | 说明 |
125
- |------|------|
126
- | `cc-bridge start` | 前台启动(阻塞终端) |
127
- | `cc-bridge start --daemon` | 后台守护进程模式 |
128
- | `cc-bridge stop` | 停止后台 Bot |
129
- | `cc-bridge daemon install` | 配置开机自动启动 |
130
- | `cc-bridge daemon uninstall` | 移除开机自启 |
131
- | `cc-bridge daemon status` | 查看后台服务状态 |
132
-
133
- ### 分步配置(替代 setup 向导)
134
-
135
- 如果不想使用一键配置,也可以分步执行:
136
-
137
- ```bash
138
- # 1. 初始化注册表
139
- cc-bridge init
140
-
141
- # 2. 安装 Claude Code 钩子(可选但推荐)
142
- cc-bridge hook install
143
-
144
- # 3. 配置飞书 Bot
145
- cc-bridge init-feishu
146
-
147
- # 4. 启动 Bot
148
- cc-bridge start --daemon
149
-
150
- # 5. 配置开机自启
151
- cc-bridge daemon install
152
- ```
153
-
154
- ### 配置说明
155
-
156
- 配置文件:`~/.cc-bridge/config.toml`(可选,不创建则使用默认值)
198
+ 配置文件:`~/.cc-linker/config.toml`(可选,不创建则使用默认值)
157
199
 
158
200
  ```toml
159
201
  [general]
@@ -171,27 +213,25 @@ fallback_to_text = true
171
213
 
172
214
  | 环境变量 | 说明 |
173
215
  |---------|------|
174
- | `CC_BRIDGE_FEISHU_APP_ID` | 飞书 App ID |
175
- | `CC_BRIDGE_FEISHU_APP_SECRET` | 飞书 App Secret |
176
- | `CC_BRIDGE_FEISHU_OWNER_OPEN_ID` | 限制仅指定用户使用 |
177
- | `CC_BRIDGE_STREAM_ENABLED` | 流式响应开关 |
178
- | `CC_BRIDGE_LOG_LEVEL` | 日志级别 |
179
-
180
- ---
216
+ | `CC_LINKER_FEISHU_APP_ID` | 飞书 App ID |
217
+ | `CC_LINKER_FEISHU_APP_SECRET` | 飞书 App Secret |
218
+ | `CC_LINKER_FEISHU_OWNER_OPEN_ID` | 限制仅指定用户使用 |
219
+ | `CC_LINKER_STREAM_ENABLED` | 流式响应开关 |
220
+ | `CC_LINKER_LOG_LEVEL` | 日志级别 |
181
221
 
182
- ## 架构概览
222
+ ## 🏗 架构概览
183
223
 
184
224
  ```
185
225
  ┌──────────────────────────────────────────────────────┐
186
- │ Claude Code CLI ←→ Registry ←→ 飞书 Bot
187
- │ (session JSONL) (registry.json) (WebSocket) │
226
+ │ Claude Code CLI ←→ Registry ←→ 聊天应用 Bot
227
+ │ (session JSONL) (registry.json) (当前: 飞书) │
188
228
  │ ↑ │
189
229
  │ SessionStart hook │
190
230
  └──────────────────────────────────────────────────────┘
191
231
  ```
192
232
 
193
- - **Registry** (`~/.cc-bridge/registry.json`): 统一会话索引
194
- - **Scanner**: 增量扫描 Claude Code JSONL 文件
233
+ - **Registry** (`~/.cc-linker/registry.json`): 统一会话索引,带文件锁和自动备份
234
+ - **Scanner**: 增量扫描 Claude Code JSONL 文件,保持注册表最新
195
235
  - **Hook**: Claude Code 启动时自动注册新会话
196
236
  - **Spool Queue**: 持久化消息队列,崩溃后可恢复
197
237
  - **Stream Parser**: 解析 Claude `stream-json` 输出
@@ -199,21 +239,11 @@ fallback_to_text = true
199
239
 
200
240
  详细架构见 [docs/产品设计文档-自建方案.md](docs/产品设计文档-自建方案.md)。
201
241
 
202
- ## 完整文档索引
203
-
204
- | 文档 | 说明 |
205
- |------|------|
206
- | [docs/产品设计文档-自建方案.md](docs/产品设计文档-自建方案.md) | 产品设计文档 |
207
- | [docs/验收指南.md](docs/验收指南.md) | 功能验收指南 |
208
- | [docs/验收测试报告.md](docs/验收测试报告.md) | 验收测试结果 |
209
- | [docs/Product.md](docs/Product.md) | 产品需求文档 |
210
- | [docs/model-switch-design.md](docs/model-switch-design.md) | 模型切换设计 |
211
-
212
- ## 开发者指南
242
+ ## 💻 开发者指南
213
243
 
214
244
  ```bash
215
- git clone https://github.com/yujuntea/cc-bridge.git
216
- cd cc-bridge
245
+ git clone https://github.com/yujuntea/cc-linker.git
246
+ cd cc-linker
217
247
  bun install
218
248
  bun run dev <命令> # 开发模式
219
249
  bun run typecheck # 类型检查
@@ -226,7 +256,7 @@ bun run build # 编译为独立二进制文件
226
256
 
227
257
  ```bash
228
258
  # 独立二进制(本地分发)
229
- bun run build # → dist/cc-bridge
259
+ bun run build # → dist/cc-linker
230
260
 
231
261
  # npm 发布
232
262
  npm version minor
@@ -234,6 +264,16 @@ npm publish # prepublishOnly 自动触发 build:npm
234
264
  git push --tags
235
265
  ```
236
266
 
267
+ ## 📚 详细文档
268
+
269
+ | 文档 | 说明 |
270
+ |------|------|
271
+ | [docs/产品设计文档-自建方案.md](docs/产品设计文档-自建方案.md) | 产品设计文档 |
272
+ | [docs/验收指南.md](docs/验收指南.md) | 功能验收指南 |
273
+ | [docs/验收测试报告.md](docs/验收测试报告.md) | 验收测试结果 |
274
+ | [docs/Product.md](docs/Product.md) | 产品需求文档 |
275
+ | [docs/model-switch-design.md](docs/model-switch-design.md) | 模型切换设计 |
276
+
237
277
  ## License
238
278
 
239
279
  MIT