Skip to content

Commit d5e3abe

Browse files
committed
feat(cli): enhance setup command to include optional Chrome MCP tool installation
feat(desktop): add preset icons for environment dialog and improve layout fix(core): update KIMI and MiniMax model versions in presets
1 parent ba3501d commit d5e3abe

4 files changed

Lines changed: 66 additions & 17 deletions

File tree

apps/cli/src/index.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -933,9 +933,11 @@ setupCmd
933933

934934
setupCmd
935935
.command('init')
936-
.description('初始化 Claude Code 全局配置(跳过 onboarding、禁用遥测、安装 MCP 工具)')
937-
.action(async () => {
938-
await runSetupInit();
936+
.description('初始化 Claude Code 全局配置(跳过 onboarding、禁用遥测)')
937+
.option('--chrome', '同时安装 chrome-devtools MCP 工具')
938+
.action(async function(this: any) {
939+
const options = this.opts();
940+
await runSetupInit({ chrome: !!options.chrome });
939941
});
940942

941943
setupCmd

apps/cli/src/setup.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ const setupMcpTool = (): Promise<boolean> => {
157157
/**
158158
* 执行完整的 setup init 流程
159159
*/
160-
export const runSetupInit = async (): Promise<void> => {
160+
export const runSetupInit = async (options: { chrome?: boolean } = {}): Promise<void> => {
161161
console.log(chalk.bold('\n🔧 Claude Code 初始化设置\n'));
162162

163163
// 步骤 1
@@ -168,9 +168,14 @@ export const runSetupInit = async (): Promise<void> => {
168168
console.log(chalk.cyan('\n2. 配置隐私设置'));
169169
const step2 = setupEnvSettings();
170170

171-
// 步骤 3
172-
console.log(chalk.cyan('\n3. 安装 MCP 工具'));
173-
const step3 = await setupMcpTool();
171+
// 步骤 3(可选)
172+
let step3 = true;
173+
if (options.chrome) {
174+
console.log(chalk.cyan('\n3. 安装 MCP 工具'));
175+
step3 = await setupMcpTool();
176+
} else {
177+
console.log(chalk.gray('\n3. 安装 MCP 工具(已跳过,使用 --chrome 启用)'));
178+
}
174179

175180
// 总结
176181
console.log('');

apps/desktop/src/components/EnvironmentDialog.tsx

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,20 @@ import {
3131
Zap,
3232
} from "lucide-react";
3333
import { toast } from "sonner";
34+
import { Zhipu, Moonshot, Minimax, DeepSeek, Qwen, OpenRouter as OpenRouterIcon } from "@lobehub/icons";
3435
import type { Environment } from "@/store";
3536

37+
const PRESET_ICONS: Record<string, { icon: any; color?: string; needsContrastBg?: boolean }> = {
38+
GLM: { icon: Zhipu, color: '#3859FF' },
39+
KIMI: { icon: Moonshot, color: '#fff', needsContrastBg: true },
40+
KimiCodePlan: { icon: Moonshot, color: '#fff', needsContrastBg: true },
41+
MiniMax: { icon: Minimax, color: '#F23F5D' },
42+
DeepSeek: { icon: DeepSeek, color: '#4D6BFE' },
43+
Bailian: { icon: Qwen, color: '#615CED' },
44+
BailianCodePlan:{ icon: Qwen, color: '#615CED' },
45+
OpenRouter: { icon: OpenRouterIcon, color: '#6467F2' },
46+
};
47+
3648
interface EnvironmentDialogProps {
3749
open: boolean;
3850
onOpenChange: (open: boolean) => void;
@@ -387,7 +399,7 @@ export function EnvironmentDialog({
387399
return (
388400
<Dialog open={open} onOpenChange={onOpenChange}>
389401
<DialogContent
390-
className={mode === "add" ? "sm:max-w-[560px]" : "sm:max-w-[520px]"}
402+
className={`flex flex-col ${mode === "add" ? "sm:max-w-[560px]" : "sm:max-w-[520px]"}`}
391403
>
392404
<DialogHeader>
393405
<DialogTitle>
@@ -402,6 +414,7 @@ export function EnvironmentDialog({
402414
</DialogDescription>
403415
</DialogHeader>
404416

417+
<div className="flex-1 overflow-y-auto min-h-0">
405418
{mode === "add" ? (
406419
<Tabs value={activeTab} onValueChange={setActiveTab}>
407420
<TabsList className="grid w-full grid-cols-3">
@@ -437,9 +450,25 @@ export function EnvironmentDialog({
437450
className="group flex flex-col items-start gap-1.5 rounded-lg border border-border bg-surface-raised p-3 text-left transition-colors hover:border-primary/50 hover:bg-primary/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
438451
>
439452
<div className="flex w-full items-center justify-between">
440-
<span className="text-sm font-medium text-foreground">
441-
{metadata?.displayName[lang] ?? key}
442-
</span>
453+
<div className="flex items-center gap-2">
454+
{(() => {
455+
const entry = PRESET_ICONS[key];
456+
if (!entry) return <Bot className="h-5 w-5 text-muted-foreground" />;
457+
const IconComp = entry.icon;
458+
const iconEl = <IconComp size={20} style={entry.color ? { color: entry.color } : undefined} />;
459+
if (entry.needsContrastBg) {
460+
return (
461+
<span className="inline-flex items-center justify-center rounded-md bg-black/75 dark:bg-black/50 p-0.5">
462+
{iconEl}
463+
</span>
464+
);
465+
}
466+
return iconEl;
467+
})()}
468+
<span className="text-sm font-medium text-foreground">
469+
{metadata?.displayName[lang] ?? key}
470+
</span>
471+
</div>
443472
<ArrowRight className="h-3.5 w-3.5 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100" />
444473
</div>
445474
<span className="line-clamp-1 text-xs text-muted-foreground">
@@ -556,6 +585,7 @@ export function EnvironmentDialog({
556585
) : (
557586
formFields
558587
)}
588+
</div>
559589

560590
<DialogFooter>
561591
<Button variant="outline" onClick={() => onOpenChange(false)}>

packages/core/src/presets.ts

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,23 @@ export const ENV_PRESETS: Record<
1919
},
2020
'KIMI': {
2121
ANTHROPIC_BASE_URL: 'https://api.moonshot.cn/anthropic',
22-
ANTHROPIC_DEFAULT_OPUS_MODEL: 'kimi-k2-thinking-turbo',
23-
ANTHROPIC_DEFAULT_SONNET_MODEL: 'kimi-k2-thinking-turbo',
24-
ANTHROPIC_DEFAULT_HAIKU_MODEL: 'kimi-k2-turbo-preview',
22+
ANTHROPIC_DEFAULT_OPUS_MODEL: 'kimi-k2.5',
23+
ANTHROPIC_DEFAULT_SONNET_MODEL: 'kimi-k2.5',
24+
ANTHROPIC_DEFAULT_HAIKU_MODEL: 'kimi-k2.5',
25+
ANTHROPIC_MODEL: 'opus'
26+
},
27+
'KimiCodePlan': {
28+
ANTHROPIC_BASE_URL: 'https://api.kimi.com/coding/',
29+
ANTHROPIC_DEFAULT_OPUS_MODEL: 'kimi-for-coding',
30+
ANTHROPIC_DEFAULT_SONNET_MODEL: 'kimi-for-coding',
31+
ANTHROPIC_DEFAULT_HAIKU_MODEL: 'kimi-for-coding',
2532
ANTHROPIC_MODEL: 'opus'
2633
},
2734
'MiniMax': {
2835
ANTHROPIC_BASE_URL: 'https://api.minimaxi.com/anthropic',
29-
ANTHROPIC_DEFAULT_OPUS_MODEL: 'MiniMax-M2.5',
30-
ANTHROPIC_DEFAULT_SONNET_MODEL: 'MiniMax-M2.5',
31-
ANTHROPIC_DEFAULT_HAIKU_MODEL: 'MiniMax-M2.5-highspeed',
36+
ANTHROPIC_DEFAULT_OPUS_MODEL: 'MiniMax-M2.7',
37+
ANTHROPIC_DEFAULT_SONNET_MODEL: 'MiniMax-M2.7',
38+
ANTHROPIC_DEFAULT_HAIKU_MODEL: 'MiniMax-M2.7-highspeed',
3239
ANTHROPIC_MODEL: 'opus'
3340
},
3441
'DeepSeek': {
@@ -72,6 +79,11 @@ export const ENV_PRESET_METADATA: Record<string, EnvPresetMetadata> = {
7279
description: { zh: '月之暗面 Kimi 对话模型', en: 'Moonshot Kimi' },
7380
credentialUrl: 'https://platform.moonshot.cn/console/api-keys',
7481
},
82+
'KimiCodePlan': {
83+
displayName: { zh: 'Kimi Code Plan', en: 'Kimi Code Plan' },
84+
description: { zh: 'Kimi Code 订阅套餐入口', en: 'Kimi Code Subscription Plan' },
85+
credentialUrl: 'https://kimi.com/code',
86+
},
7587
'MiniMax': {
7688
displayName: { zh: 'MiniMax', en: 'MiniMax' },
7789
description: { zh: 'MiniMax 大模型服务', en: 'MiniMax LLM Service' },

0 commit comments

Comments
 (0)