-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathpackage.json
More file actions
433 lines (433 loc) · 17 KB
/
Copy pathpackage.json
File metadata and controls
433 lines (433 loc) · 17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
{
"name": "claude-code-chatui",
"displayName": "Claude Code GUI / ChatUI",
"description": "Full-featured GUI for Claude Code CLI — Windows (no WSL) & macOS. Third-party API support, MCP plugins, Skills & Hooks system, Undo/Redo, real-time token tracking. Actively maintained.",
"version": "5.0.8",
"publisher": "lkbaba",
"author": "lkbaba",
"repository": {
"type": "git",
"url": "https://github.com/LKbaba/Claude-code-ChatInWindows"
},
"license": "SEE LICENSE IN LICENSE",
"engines": {
"vscode": "^1.94.0"
},
"categories": [
"AI",
"Chat",
"Machine Learning",
"Other"
],
"keywords": [
"claude code",
"claude code gui",
"claude code windows",
"claude code chat",
"claude code ui",
"claude gui",
"anthropic",
"ai coding assistant",
"no wsl",
"mcp",
"third party api",
"skills",
"hooks",
"undo redo",
"token tracking",
"cursor",
"vibe coding",
"ai agent",
"copilot alternative",
"ai programming"
],
"icon": "icon.png",
"main": "./out/extension.js",
"extensionKind": [
"ui"
],
"os": [
"win32",
"darwin"
],
"activationEvents": [
"onStartupFinished"
],
"contributes": {
"commands": [
{
"command": "claude-code-chatui.openChat",
"title": "Open Claude Code Chat",
"category": "Claude Code Chat",
"icon": "icon.png"
}
],
"keybindings": [
{
"command": "claude-code-chatui.openChat",
"key": "ctrl+shift+c",
"mac": "cmd+shift+c"
}
],
"menus": {
"commandPalette": [
{
"command": "claude-code-chatui.openChat"
}
],
"editor/context": [
{
"command": "claude-code-chatui.openChat",
"group": "claude@1",
"when": "editorTextFocus"
}
],
"editor/title": [
{
"command": "claude-code-chatui.openChat",
"group": "navigation@1",
"when": "true"
}
],
"editor/title/context": [
{
"command": "claude-code-chatui.openChat",
"group": "claude@1"
}
],
"explorer/context": [
{
"command": "claude-code-chatui.openChat",
"group": "claude@1"
}
],
"scm/title": [
{
"command": "claude-code-chatui.openChat",
"group": "navigation@1",
"when": "true"
}
],
"view/title": [
{
"command": "claude-code-chatui.openChat",
"group": "navigation@1",
"when": "view == workbench.explorer.fileView"
}
],
"touchBar": [
{
"command": "claude-code-chatui.openChat",
"group": "editing",
"when": "true"
}
],
"menuBar/file": [
{
"command": "claude-code-chatui.openChat",
"group": "1_new@1"
}
]
},
"views": {
"claude-code-chatui": [
{
"id": "claude-code-chatui.chat",
"name": "Claude Code Chat",
"when": "true",
"icon": "icon.png",
"contextualTitle": "Claude Code Chat"
}
]
},
"viewsContainers": {
"activitybar": [
{
"id": "claude-code-chatui",
"title": "Claude Code Chat",
"icon": "icon.png"
}
]
},
"configuration": {
"title": "Claude Code Chat",
"properties": {
"claudeCodeChatUI.windows.gitBashPath": {
"type": "string",
"default": "C:\\Program Files\\Git\\bin\\bash.exe",
"description": "Path to git-bash.exe on Windows. This is required for non-WSL execution to provide a Posix-like shell environment for the Claude CLI."
},
"claudeCodeChatUI.permission.mode": {
"type": "string",
"enum": [
"bypassPermissions",
"auto",
"acceptEdits",
"plan",
"default"
],
"enumDescriptions": [
"绕过所有权限确认,自动执行全部操作(等价于旧版 --dangerously-skip-permissions,体验最顺滑但风险最高)",
"由 Claude 内置分类器自动审批(需 claude v2.1.83+)",
"自动接受文件编辑,其它操作仍需确认",
"计划模式:只读分析、提出计划,不直接改动",
"默认模式:按 Claude CLI 默认策略逐项确认"
],
"default": "bypassPermissions",
"scope": "resource",
"markdownDescription": "Claude 交互模式的权限档位,作为 `--permission-mode` 传给 CLI。默认 `bypassPermissions` 保持原有顺滑体验,但会自动执行所有操作(包括写文件、运行命令),请确保在受信任的工作区使用。本期不提供交互审批 UI,仅切换模式。"
},
"claudeCodeChatUI.completion.useStopHookFallback": {
"type": "boolean",
"default": false,
"scope": "resource",
"markdownDescription": "启用「Stop hook 兜底完成检测」(B2)。主完成信号来自 transcript 的 `end_turn`(B1);开启此项会在 `~/.claude/settings.json` 注入一个一次性 Stop hook(与你已有 hooks 合并、幂等、可清理),每轮结束写入哨兵文件作为兜底解锁信号,仅在 B1 漏判时生效且与之去重。关闭时完全不修改你的 settings.json。"
},
"claudeCodeChatUI.backup.enabled": {
"type": "boolean",
"default": false,
"scope": "resource",
"markdownDescription": "发送消息前自动创建「恢复检查点」(Restore):把工作区当前状态提交到一个独立的备份 git 仓库(不影响你项目自己的 `.git`),便于一键回滚 Claude 的改动。**默认关闭**——实际使用中价值有限且会带来额外 git 耗时。开启后即可使用一键回滚;即使开启,单次 git 操作超过 12 秒也会自动放弃、继续发送,绝不冻结界面。"
},
"claudeCodeChatUI.contextWindowTokens": {
"type": "number",
"default": 400000,
"minimum": 1000,
"maximum": 1000000,
"scope": "resource",
"markdownDescription": "Context Window 进度条的总容量(分母),单位 tokens。默认 `400000`。Claude Opus 4.6+ / Sonnet 4.6 的 1M 上下文已正式 GA(不再需要 beta header),实际窗口可达 `1000000`;但建议在 ~400K 处主动压缩对话,模型召回率与成本更划算,因此默认按 `400000` 作为分母。可按需调高到 `1000000`,或调低以更早提示压缩。"
},
"claudeCodeChatUI.disableAutoCompact": {
"type": "boolean",
"default": true,
"scope": "resource",
"markdownDescription": "禁用 Claude Code 框架在上下文接近窗口上限时的**自动压缩**(auto-compact)。本扩展按设计复用单个长生命周期的交互式 `claude` 会话,上下文会跨回合持续累积,涨到阈值后 CLI 会自行 `/compact`——这是有损压缩,且会造成「界面显示完整历史、模型其实只记得 summary」的割裂(`-p` 时代不会发生)。开启此项后,spawn 时注入进程级环境变量 `DISABLE_AUTO_COMPACT=1`,**只禁自动压缩,手动 `/compact` 仍可用**。因走进程级 env、不写任何 `settings.json`,别人直接用 CLI **不受影响**。**代价**:长会话上下文涨满会撞硬上限,需配合主动 New Chat 或手动 `/compact`。"
},
"claudeCodeChatUI.enable1MContext": {
"type": "boolean",
"default": true,
"scope": "resource",
"markdownDescription": "启用 **1M token 上下文窗口**。开启后,spawn `claude` 时给支持 1M 的模型(`opus` / `sonnet` 别名,以及 Opus 4.6/4.7/4.8、Sonnet 4.6)的 `--model` 参数追加 `[1m]` 后缀(如 `claude-opus-4-8[1m]`),真实窗口从 200K 提升到 1M。4.5 及更早模型、Haiku 不支持 1M,不会被加后缀。1M 现已 GA,**无需 beta header**。\n\n**配合 `contextWindowTokens`**:进度条分母应同步设为 `1000000`,否则显示仍按旧分母。\n\n**⚠️ 计费提醒**:1M 上下文仅在 **Max/Team/Enterprise 计划 + Opus 模型**下含在订阅内;**Pro 计划、或任意计划用 Sonnet 1M,都会额外消耗 usage credits**(超出订阅池计费)。若你只想走订阅池、不额外花钱,请关闭此项或仅在 Max+Opus 下使用。\n\n**默认开启**。关闭后恢复 200K 窗口。"
},
"claudeCodeChatUI.autoAcceptEditGate": {
"type": "boolean",
"default": true,
"scope": "resource",
"markdownDescription": "自动应答「编辑自身配置确认门」。当 Claude 编辑 `.claude/` 目录下的文件(skills / hooks / settings)时,CLI 会弹出一个**即使 `bypassPermissions` 也不自动通过**的确认菜单(`Do you want to make this edit to X? / 1. Yes / 2. Yes, and allow Claude to edit its own settings for this session / 3. No`)——因为改 `.claude` 等于能注入可执行代码。PTY 驱动答不了该菜单,导致**修改技能/钩子时回合卡死**(约 69 秒,直到下一条消息的 Enter 误确认)。开启此项后,检测到该菜单即自动选**选项 2(本会话授权)**,后续 `.claude` 编辑不再弹门。**关闭**则恢复卡死行为(需你手动在别处确认)。仅在已 `bypassPermissions` 的前提下有意义。"
},
"claudeCodeChatUI.thinking.enabled": {
"type": "boolean",
"default": false,
"scope": "resource",
"description": "Enable thinking mode for Claude responses. Can be configured per-workspace."
},
"claudeCodeChatUI.thinking.intensity": {
"type": "string",
"enum": [
"think",
"think-hard",
"think-harder",
"ultrathink",
"xhigh",
"sequential-thinking"
],
"default": "think",
"scope": "resource",
"description": "Thinking mode intensity level. Higher levels provide more detailed reasoning but consume more tokens. Sequential thinking uses MCP-based reasoning."
},
"claudeCodeChatUI.mcp.enabled": {
"type": "boolean",
"default": false,
"scope": "resource",
"description": "Enable Model Context Protocol (MCP) integration. Can be configured per-workspace in .vscode/settings.json"
},
"claudeCodeChatUI.mcp.servers": {
"type": "array",
"default": [],
"scope": "resource",
"description": "MCP server configurations. Can be configured per-workspace in .vscode/settings.json",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "MCP server name"
},
"type": {
"type": "string",
"enum": [
"stdio",
"http",
"sse"
],
"default": "stdio",
"description": "Transport type: stdio (local process), http (HTTP protocol), sse (Server-Sent Events)"
},
"command": {
"type": "string",
"description": "Start command (required for stdio mode)"
},
"args": {
"type": "array",
"items": {
"type": "string"
},
"description": "Command arguments (stdio mode)"
},
"url": {
"type": "string",
"format": "uri",
"description": "Server URL (required for http/sse mode)"
},
"headers": {
"type": "object",
"description": "HTTP headers (optional for http/sse mode), such as authentication info"
},
"env": {
"type": "object",
"description": "Environment variables"
},
"disabled": {
"type": "boolean",
"default": false,
"description": "Set to true in workspace config to disable a server inherited from user config"
}
},
"required": [
"name"
]
}
},
"claudeCodeChatUI.language.enabled": {
"type": "boolean",
"default": false,
"scope": "resource",
"description": "Enable language mode for Claude responses. Can be configured per-workspace."
},
"claudeCodeChatUI.language.selected": {
"type": [
"string",
"null"
],
"default": null,
"scope": "resource",
"enum": [
"zh",
"es",
"ar",
"fr",
"de",
"ja",
"ko",
null
],
"enumDescriptions": [
"中文",
"Español",
"العربية",
"Français",
"Deutsch",
"日本語",
"한국어",
"Auto-detect"
],
"description": "Selected language for Claude responses. Can be configured per-workspace."
},
"claudeCodeChatUI.language.onlyCommunicate": {
"type": "boolean",
"default": false,
"scope": "resource",
"description": "When enabled, only communication language changes; code comments remain in English. Can be configured per-workspace."
},
"claudeCodeChatUI.api.useCustomAPI": {
"type": "boolean",
"default": false,
"description": "Use custom API endpoint instead of official Claude account"
},
"claudeCodeChatUI.api.key": {
"type": "string",
"default": "",
"description": "API key for custom API endpoint (e.g., sk-ant-xxxxxxxxxx)",
"markdownDescription": "API key for custom API endpoint. This will be stored securely."
},
"claudeCodeChatUI.api.baseUrl": {
"type": "string",
"default": "https://api.anthropic.com",
"description": "Base URL for custom API endpoint (e.g., https://v3.codesome.cn)",
"format": "uri"
},
"claudeCodeChatUI.api.cliCommand": {
"type": "string",
"default": "claude",
"description": "CLI command name (e.g., 'xxxxclaude' if using a mirror service)"
},
"claudeCodeChatUI.geminiIntegrationEnabled": {
"type": "boolean",
"default": false,
"description": "Enable Gemini Integration to automatically inject API key into gemini-assistant MCP server"
},
"claudeCodeChatUI.grokIntegrationEnabled": {
"type": "boolean",
"default": false,
"description": "Enable Grok Integration to automatically inject API key into grok-assistant MCP server"
},
"claudeCodeChatUI.gemini.vertexProject": {
"type": "string",
"default": "",
"description": "GCP Project ID for Vertex AI (auto-extracted from imported JSON, or entered manually for ADC / file-path modes)"
},
"claudeCodeChatUI.gemini.authMode": {
"type": "string",
"enum": [
"api-key",
"vertex-json",
"adc"
],
"default": "api-key",
"description": "Gemini authentication mode: 'api-key' (AI Studio), 'vertex-json' (Vertex AI with imported JSON), 'adc' (Vertex AI with Application Default Credentials)"
},
"claudeCodeChatUI.debug.enabled": {
"type": "boolean",
"default": false,
"description": "Enable debug logging to file. When enabled, logs will be written to debug_log.txt in the workspace root for debugging purposes."
},
"claudeCodeChatUI.debug.maxLines": {
"type": "number",
"default": 500,
"minimum": 100,
"maximum": 5000,
"description": "Maximum number of lines to keep in the debug log file (default: 500)"
}
}
}
},
"scripts": {
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"pretest": "npm run compile && npm run lint",
"lint": "eslint src",
"test": "vscode-test",
"test:hooks": "mocha --require ts-node/register --timeout 10000 src/test/HooksConfigManager.test.ts",
"package": "vsce package",
"package:win": "vsce package --target win32-x64"
},
"dependencies": {
"glob": "^10.3.10",
"node-pty": "^1.1.0"
},
"devDependencies": {
"@types/mocha": "^10.0.10",
"@types/node": "20.x",
"@types/vscode": "^1.94.0",
"@typescript-eslint/eslint-plugin": "^8.31.1",
"@typescript-eslint/parser": "^8.31.1",
"@vscode/test-cli": "^0.0.10",
"@vscode/test-electron": "^2.5.2",
"@vscode/vsce": "^3.5.0",
"eslint": "^9.25.1",
"playwright": "^1.40.0",
"ts-node": "^10.9.2",
"typescript": "^5.8.3"
}
}