feat(settings): 默认权限模式改为批准、消息流默认极简模式

- personalization_manager:default_permission_mode 默认与 sanitize 兜底 → approval;block_display_mode → minimal
- stores/personalization.ts:同步默认值、缓存加载兜底与一次性迁移条件
- 快速模式描述「低思考」→「无思考」(中英 appCore 同步)

Co-authored-by: Astrion powered by Kimi-K3 <astrion-agent@users.noreply.github.com>
This commit is contained in:
JOJO 2026-09-04 03:02:31 +08:00
parent a1c9ac565b
commit fe7896e29f
4 changed files with 15 additions and 15 deletions

View File

@ -79,7 +79,7 @@ DEFAULT_PERSONALIZATION_CONFIG: Dict[str, Any] = {
"skills_catalog_snapshot": None,
"default_run_mode": "thinking",
"default_reasoning_effort": None, # 默认推理强度None=默认(不传参)
"default_permission_mode": "unrestricted",
"default_permission_mode": "approval",
"default_work_mode": "plan", # 默认运行模式plan / ask / execute
"auto_generate_title": True,
"title_model": "", # 对话标题生成使用的子智能体模型条目名(空=跟随主对话默认模型)
@ -107,7 +107,7 @@ DEFAULT_PERSONALIZATION_CONFIG: Dict[str, Any] = {
"hide_tool_approval_panel": True, # 自动审核模式下不自动打开工具审核面板(默认开启)
"enhanced_tool_display": True, # 增强工具显示
"compact_message_display": "full", # 简略消息显示full-完整原始内容 / brief-一行概要
"block_display_mode": "stacked", # 堆叠块显示模式traditional-传统列表 / stacked-堆叠动画 / minimal-极简模式
"block_display_mode": "minimal", # 堆叠块显示模式traditional-传统列表 / stacked-堆叠动画 / minimal-极简模式
"show_status_avatar": True, # 是否显示助手状态形象
"stacked_hide_borders": False, # 堆叠块隐藏边线
"minimal_expand_height_limited": True, # 极简模式展开摘要行时限制最大高度
@ -366,7 +366,7 @@ def sanitize_personalization_payload(
if isinstance(permission_mode, str) and permission_mode in ALLOWED_PERMISSION_MODES:
base["default_permission_mode"] = permission_mode
elif base.get("default_permission_mode") not in ALLOWED_PERMISSION_MODES:
base["default_permission_mode"] = "unrestricted"
base["default_permission_mode"] = "approval"
work_mode = data.get("default_work_mode", base.get("default_work_mode"))
if isinstance(work_mode, str) and work_mode.strip().lower() in ALLOWED_WORK_MODES:
@ -518,7 +518,7 @@ def sanitize_personalization_payload(
if isinstance(block_display_mode, str) and block_display_mode.strip().lower() in ALLOWED_BLOCK_DISPLAY_MODES:
base["block_display_mode"] = block_display_mode.strip().lower()
else:
base["block_display_mode"] = "stacked"
base["block_display_mode"] = "minimal"
# 堆叠块隐藏边线
if "stacked_hide_borders" in data:

View File

@ -27,7 +27,7 @@ export default {
// Header run mode / model (computed.ts)
fastMode: 'Fast mode',
fastModeDesc: 'Low reasoning, faster responses',
fastModeDesc: 'No reasoning, faster responses',
thinkingModeDesc: 'Continuous reasoning for complex tasks',
modelNotSelected: 'No model selected',
// Plural forms in English; callers should pass both {n} and {count}.

View File

@ -31,7 +31,7 @@ export default {
// ── 头部运行模式 / 模型computed.ts ──
fastMode: '快速模式',
fastModeDesc: '思考,响应更快',
fastModeDesc: '思考,响应更快',
thinkingModeDesc: '持续推理,适合复杂任务',
modelNotSelected: '未选择模型',
// 复数:英文用管道(调用方需同时传 {n} 与 {count});中文不区分

View File

@ -215,12 +215,12 @@ const loadCachedStackedHideBorders = (): boolean => {
const loadCachedBlockDisplayMode = (): BlockDisplayMode => {
if (typeof window === 'undefined' || !window.localStorage) {
return 'stacked';
return 'minimal';
}
try {
const raw = window.localStorage.getItem(EXPERIMENT_STORAGE_KEY);
if (!raw) {
return 'stacked';
return 'minimal';
}
const parsed = JSON.parse(raw);
if (
@ -232,7 +232,7 @@ const loadCachedBlockDisplayMode = (): BlockDisplayMode => {
} catch (error) {
console.warn('读取堆叠块显示模式缓存失败:', error);
}
return 'stacked';
return 'minimal';
};
const persistStackedHideBorders = (value: boolean) => {
@ -337,7 +337,7 @@ const defaultForm = (): PersonalForm => ({
disabled_tool_categories: [],
default_run_mode: null,
default_reasoning_effort: null,
default_permission_mode: 'unrestricted',
default_permission_mode: 'approval',
default_work_mode: 'plan',
versioning_enabled_by_default: true,
versioning_backup_mode: 'shallow',
@ -370,7 +370,7 @@ const defaultForm = (): PersonalForm => ({
});
const defaultExperimentState = (): ExperimentState => ({
blockDisplayMode: 'stacked',
blockDisplayMode: 'minimal',
compactMessageDisplay: 'full'
});
@ -543,7 +543,7 @@ export const usePersonalizationStore = defineStore('personalization', {
data.block_display_mode === 'stacked' ||
data.block_display_mode === 'minimal'
? data.block_display_mode
: 'stacked',
: 'minimal',
show_status_avatar: data.show_status_avatar !== false,
show_git_status_bar: data.show_git_status_bar !== false,
auto_open_terminal_panel: data.auto_open_terminal_panel !== false,
@ -593,7 +593,7 @@ export const usePersonalizationStore = defineStore('personalization', {
data.default_permission_mode === 'auto_approval' ||
data.default_permission_mode === 'unrestricted'
? data.default_permission_mode
: 'unrestricted',
: 'approval',
default_work_mode:
data.default_work_mode === 'plan' ||
data.default_work_mode === 'ask' ||
@ -678,9 +678,9 @@ export const usePersonalizationStore = defineStore('personalization', {
this.form = { ...this.form, compact_message_display: 'brief' };
void this.persistCompactMessageDisplay('brief');
}
// 一次性迁移:堆叠块显示模式旧版仅在 localStorage 保存,后端默认 stacked 时回写本地缓存值。
// 一次性迁移:堆叠块显示模式旧版仅在 localStorage 保存,后端默认 minimal 时回写本地缓存值。
const cachedBlockMode = this.experiments.blockDisplayMode;
if (this.form.block_display_mode === 'stacked' && cachedBlockMode !== 'stacked') {
if (this.form.block_display_mode === 'minimal' && cachedBlockMode !== 'minimal') {
this.form = { ...this.form, block_display_mode: cachedBlockMode };
}
this.experiments = {