feat: v0.3.17 修复多项问题(sandbox/全局配置层/继承选项/配置刷新/附件提示/content_filter 错误处理)
- fix: sandbox: true → false(ESM preload 不兼容 sandbox 导致 window.metona 不可用,选择文件夹按钮无反应) - feat: 全局配置层(GlobalConfigService)— LLM/Agent 等配置跨工作空间共享,切换工作空间后不再丢失 - 读取时工作空间 DB 空值或默认值回退到全局 JSON - 写入时双写(DB + 全局 JSON) - 首次启动迁移旧配置到全局层 - fix: 工作空间继承选项显示条件放宽 + push 前校验避免覆盖目标已有文件(SOUL.md/agent.db) - fix: config:changed IPC 广播 + 前端监听,修改 Agent 配置后详情栏 maxIterations 实时刷新 - feat: 上传图片/文件时在 System Prompt 注入附件提示,避免 AI 在工作空间查找用户上传的文件 - feat: content_filter 错误识别(ContentFilterError)+ 友好提示,替代原始 JSON 错误体透传 - fix: JSDoc 注释中 llm.* / agent.* / onboarding.completed 中的 */ 被解析为注释结束符
This commit is contained in:
@@ -400,10 +400,15 @@ export function useAgentStream(): void {
|
||||
getStore().setCurrentRunId(null);
|
||||
getStore().setAgentStatus('error');
|
||||
getStore().updateLastTraceStep({ completedAt: Date.now() });
|
||||
// v0.3.17: 对 content_filtered 错误码显示更友好的提示
|
||||
const errorCode = data.error?.code;
|
||||
const errorMessage = data.error?.message ?? '未知错误';
|
||||
getStore().addMessage({
|
||||
id: genMsgId('error'),
|
||||
role: 'system',
|
||||
content: `错误: ${data.error?.message ?? '未知错误'}`,
|
||||
content: errorCode === 'content_filtered'
|
||||
? `⚠️ ${errorMessage}`
|
||||
: `错误: ${errorMessage}`,
|
||||
timestamp: Date.now(),
|
||||
});
|
||||
break;
|
||||
@@ -596,4 +601,23 @@ export function useAgentStream(): void {
|
||||
|
||||
return () => unsubscribe();
|
||||
}, []);
|
||||
|
||||
// v0.3.17: 监听配置变更广播,实时更新 store 中的配置字段
|
||||
// 解决场景:用户在 SettingsModal 修改 agent.maxIterations 后,详情栏分母不刷新
|
||||
useEffect(() => {
|
||||
if (!window.metona?.config?.onChanged) return;
|
||||
|
||||
const unsubscribe = window.metona.config.onChanged((data: { key: string; value: unknown }) => {
|
||||
const store = useAgentStore.getState();
|
||||
const { key, value } = data;
|
||||
|
||||
// 按需更新 store 中缓存的配置字段
|
||||
if (key === 'agent.maxIterations' && typeof value === 'number') {
|
||||
store.setMaxIterations(value);
|
||||
}
|
||||
// 其他 agent.* 配置项若 store 有对应字段,可在此扩展
|
||||
});
|
||||
|
||||
return () => unsubscribe();
|
||||
}, []);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user