cc-linker 0.0.1

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 (4) hide show
  1. package/README.md +239 -0
  2. package/dist/cli.js +132370 -0
  3. package/dist/cli.js.map +590 -0
  4. package/package.json +60 -0
package/README.md ADDED
@@ -0,0 +1,239 @@
1
+ # cc-bridge
2
+
3
+ 让飞书和终端(Claude Code CLI)之间的对话切换像切换设备一样无缝。
4
+
5
+ ## 3 步上手
6
+
7
+ ### 1. 安装
8
+
9
+ ```bash
10
+ # npm 全局安装
11
+ npm install -g cc-link
12
+
13
+ # 或 bun 全局安装
14
+ bun add -g cc-link
15
+
16
+ # 需要 Bun 运行时。安装 Bun:
17
+ # curl -fsSL https://bun.sh/install | bash
18
+ ```
19
+
20
+ ### 2. 一键配置
21
+
22
+ ```bash
23
+ cc-bridge setup
24
+ ```
25
+
26
+ 交互式向导会引导你:
27
+ - 初始化会话注册表
28
+ - 安装 Claude Code 自动注册钩子
29
+ - 配置飞书 Bot(App ID + App Secret + 开机自启)
30
+
31
+ > **仅需终端侧功能?** 运行 `cc-bridge setup --skip-feishu` 跳过飞书配置。
32
+
33
+ ### 3. 开始使用
34
+
35
+ | 场景 | 操作 |
36
+ |------|------|
37
+ | 飞书中给 Bot 发消息 | 直接对话,流式卡片实时更新 |
38
+ | 终端查看所有会话 | `cc-bridge list` |
39
+ | 终端恢复某个会话 | `cc-bridge resume <UUID>` |
40
+ | 飞书切换会话 | `/bridge switch <序号>` |
41
+ | 飞书创建新会话 | `/bridge new <路径> -- <提示词>` |
42
+
43
+ ---
44
+
45
+ ## 飞书开放平台权限配置
46
+
47
+ 在配置飞书 Bot 前,需要在 [飞书开放平台](https://open.feishu.cn/app) 创建应用并配置权限。
48
+
49
+ ### 创建应用
50
+
51
+ 1. 访问 https://open.feishu.cn/app → 创建企业自建应用
52
+ 2. 在「应用功能」→「机器人」中启用 Bot 能力
53
+ 3. 获取 App ID 和 App Secret(凭证与基础信息)
54
+
55
+ ### 必需权限
56
+
57
+ 进入「权限管理」,搜索并开通以下权限:
58
+
59
+ | 权限 | 用途 |
60
+ |------|------|
61
+ | `im:message` | 读取和发送消息 |
62
+ | `im:message:send_as_bot` | 以应用身份发送消息 |
63
+ | `im:message:readonly` | 获取消息详情 |
64
+ | `im:chat:readonly` | 获取群组信息 |
65
+ | `contact:user.base:readonly` | 获取用户基本信息(用于识别 open_id) |
66
+
67
+ ### 必需事件订阅
68
+
69
+ 进入「事件订阅」,添加以下事件:
70
+
71
+ | 事件 | 用途 |
72
+ |------|------|
73
+ | `im.message.receive_v1` | 接收用户发给 Bot 的消息 |
74
+ | `im.chat.member.bot.added_v1` | Bot 被邀请进群时触发(可选) |
75
+
76
+ > **重要**:事件订阅方式选择 **WebSocket**(不是 HTTP 回调)。
77
+
78
+ ### 发布应用
79
+
80
+ 配置完权限后,进入「版本管理与发布」→ 创建版本 → 发布。**只有发布后的权限才会生效。**
81
+
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 命令
100
+
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`(可选,不创建则使用默认值)
157
+
158
+ ```toml
159
+ [general]
160
+ log_level = "info"
161
+
162
+ [stream]
163
+ enabled = true
164
+ throttle_ms = 1500
165
+ show_thinking = true
166
+ max_card_bytes = 25000
167
+ fallback_to_text = true
168
+ ```
169
+
170
+ **环境变量覆盖**:
171
+
172
+ | 环境变量 | 说明 |
173
+ |---------|------|
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
+ ---
181
+
182
+ ## 架构概览
183
+
184
+ ```
185
+ ┌──────────────────────────────────────────────────────┐
186
+ │ Claude Code CLI ←→ Registry ←→ 飞书 Bot │
187
+ │ (session JSONL) (registry.json) (WebSocket) │
188
+ │ ↑ │
189
+ │ SessionStart hook │
190
+ └──────────────────────────────────────────────────────┘
191
+ ```
192
+
193
+ - **Registry** (`~/.cc-bridge/registry.json`): 统一会话索引
194
+ - **Scanner**: 增量扫描 Claude Code JSONL 文件
195
+ - **Hook**: Claude Code 启动时自动注册新会话
196
+ - **Spool Queue**: 持久化消息队列,崩溃后可恢复
197
+ - **Stream Parser**: 解析 Claude `stream-json` 输出
198
+ - **Card Updater**: 流式卡片发送与节流
199
+
200
+ 详细架构见 [docs/产品设计文档-自建方案.md](docs/产品设计文档-自建方案.md)。
201
+
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
+ ## 开发者指南
213
+
214
+ ```bash
215
+ git clone https://github.com/yujuntea/cc-bridge.git
216
+ cd cc-bridge
217
+ bun install
218
+ bun run dev <命令> # 开发模式
219
+ bun run typecheck # 类型检查
220
+ bun test # 运行测试
221
+ bun test --coverage # 带覆盖率
222
+ bun run build # 编译为独立二进制文件
223
+ ```
224
+
225
+ ### 编译和发布
226
+
227
+ ```bash
228
+ # 独立二进制(本地分发)
229
+ bun run build # → dist/cc-bridge
230
+
231
+ # npm 发布
232
+ npm version minor
233
+ npm publish # prepublishOnly 自动触发 build:npm
234
+ git push --tags
235
+ ```
236
+
237
+ ## License
238
+
239
+ MIT