From b59db6879cc6888361ea9780d06308b4b382882f Mon Sep 17 00:00:00 2001 From: minorQAQ <202200120184@mail.sdu.edu.cn> Date: Tue, 11 Aug 2026 09:16:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9B=E5=B7=B2?= =?UTF-8?q?=E7=9F=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main.js | 12 +- src/agent/agents/agent_runtime.py | 63 ++- src/agent/config/agent_config_dist.json | 2 + src/agent/config/theme_config.json | 7 +- src/agent/config/tool_config.json | 2 +- src/agent/config/workspace_config.json | 5 +- src/agent/core/llm.py | 13 +- src/agent/core/nodes.py | 39 +- src/agent/core/runtime.py | 45 +- src/agent/cron/scheduler.py | 28 +- src/agent/history/session_storage.py | 100 ++++ src/agent/history/tool_call_recorder.py | 67 ++- src/agent/memory/system_prompt.py | 9 +- .../ppt_maker/attachments/01-workflow.md | 9 +- .../ppt_maker/attachments/merge_to_deck.py | 511 ++++++++++++++++++ src/agent/skills/ppt_maker/skill.md | 4 +- src/agent/utils/agent_utils.py | 24 +- src/agent/utils/ppt_utils.py | 281 ---------- src/web/css/composer.css | 54 +- src/web/css/settings.css | 35 ++ src/web/css/toolcalls.css | 15 +- src/web/image/background.jpg | Bin 404488 -> 8690 bytes src/web/image/background2.jpg | Bin 262311 -> 6558 bytes src/web/index.html | 6 +- src/web/js/edit-mode.js | 75 ++- src/web/js/file-preview.js | 102 +++- src/web/js/pending-overlay.js | 12 - src/web/js/settings.js | 54 +- src/web/js/themes.js | 140 +++-- src/web/js/toolcalls.js | 4 +- src/web/server.py | 370 +++---------- 31 files changed, 1316 insertions(+), 772 deletions(-) create mode 100644 src/agent/skills/ppt_maker/attachments/merge_to_deck.py diff --git a/electron/main.js b/electron/main.js index 0528db5..1c015f7 100644 --- a/electron/main.js +++ b/electron/main.js @@ -129,7 +129,7 @@ function writeEnvConfig(userInput) { fs.mkdirSync(configDir, { recursive: true }); fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2), 'utf-8'); - console.log('[Electron] 配置已写入:', CONFIG_PATH); + console.log('[Electron] CONFIG_PATH:', CONFIG_PATH); } // ==================== Python 检测 ==================== @@ -217,15 +217,15 @@ function startFastAPI() { }); pythonProcess.on('error', (err) => { - console.error('[Electron] FastAPI 启动失败:', err.message); + console.error('[Electron] FastAPI Failed:', err.message); reject(err); }); pythonProcess.on('exit', (code) => { - console.log(`[Electron] FastAPI 退出,码: ${code}`); + console.log(`[Electron] FastAPI Exit Code: ${code}`); pythonProcess = null; if (!isQuitting && code !== 0 && code !== null && mainWindow) { - dialog.showErrorBox('后端服务异常', `FastAPI 意外退出(退出码: ${code})。`); + dialog.showErrorBox('Backend Service Exception', `FastAPI Exit Code: ${code}`); } }); @@ -242,7 +242,7 @@ function waitForReady(resolve, reject, retriesLeft) { } const req = http.get(`${BASE_URL}/api/health`, (res) => { if (res.statusCode === 200) { - console.log('[Electron] FastAPI 就绪'); + console.log('[Electron] FastAPI Ready'); resolve(); } else { retry(); @@ -260,7 +260,7 @@ function stopFastAPI() { killPortProcess(PORT); // 再通过 PID 杀一次(确保主进程被杀) if (pythonProcess) { - console.log('[Electron] 关闭 FastAPI...'); + console.log('[Electron] Killing FastAPI Process...'); try { if (process.platform === 'win32') { execSync(`taskkill /pid ${pythonProcess.pid} /f /t 2>nul`, { stdio: 'ignore' }); diff --git a/src/agent/agents/agent_runtime.py b/src/agent/agents/agent_runtime.py index a0790fb..cfa4200 100644 --- a/src/agent/agents/agent_runtime.py +++ b/src/agent/agents/agent_runtime.py @@ -85,6 +85,14 @@ def _build_agent_runtime(cfg: AgentConfig) -> AgentRuntime: else: agent_tools = all_tools + # 2.1 强制为主 Agent 加载 doc_tool(不可通过配置移除) + if cfg.role == "main": + if not any(t.name == "doc_tool" for t in agent_tools): + for t in all_tools: + if t.name == "doc_tool": + agent_tools.append(t) + break + # 3. bind_tools model_with_tools = agent_llm.bind_tools(agent_tools, tool_choice="auto") @@ -109,6 +117,29 @@ def _build_agent_runtime(cfg: AgentConfig) -> AgentRuntime: ) +def _refresh_subagent_tool_description() -> None: + """在运行时构建完成后刷新 CallSubAgentTool 的描述,使主 Agent 知晓可委派的子 Agent。 + + 通过传入 sub_names 和 sub_descriptions 参数避免从 agent_runtime 自身重新导入(循环导入)。 + 在 build_all_agent_runtimes() 和 reload_all_agent_runtimes() 之后调用。 + """ + sub_names = [] + sub_descriptions = {} + for name, rt in _all_agent_runtimes.items(): + if name != _main_agent_name: + sub_names.append(name) + if rt.description: + sub_descriptions[name] = rt.description + from agent.tools.agent_call import CallSubAgentTool + main_rt = _all_agent_runtimes.get(_main_agent_name) + if main_rt is None: + return + for tool in main_rt.tools: + if isinstance(tool, CallSubAgentTool): + tool._refresh_description(sub_names, sub_descriptions) + break + + def build_all_agent_runtimes() -> dict[str, AgentRuntime]: """从 agent_config.json 读取所有启用 Agent 并构建运行时字典。 @@ -140,6 +171,16 @@ def build_all_agent_runtimes() -> dict[str, AgentRuntime]: _main_agent_name = first_name print(f"[AgentFactory] 未找到 role='main' 的 Agent,自动将 '{first_name}' 设为主 Agent。") + # 所有子 Agent 就绪后,刷新 call_subagent 工具描述并重建主 Agent, + # 使主 Agent bind_tools 时携带最新的子 Agent 列表与能力描述 + _refresh_subagent_tool_description() + main_cfg = next((c for c in configs if c.enabled and c.role == "main"), None) + if main_cfg: + try: + _all_agent_runtimes[_main_agent_name] = _build_agent_runtime(main_cfg) + except Exception as e: + print(f"[AgentFactory] 重建主 Agent '{_main_agent_name}' 失败: {e}") + return _all_agent_runtimes @@ -248,25 +289,3 @@ agent_graph = main_agent_runtime.graph tools = main_agent_runtime.tools TOOLS_BY_NAME = main_agent_runtime.tools_by_name llm = main_agent_runtime.llm - - -def _refresh_subagent_tool_description() -> None: - """在运行时构建完成后刷新 CallSubAgentTool 的描述,使主 Agent 知晓可委派的子 Agent。 - - 通过传入 sub_names 和 sub_descriptions 参数避免从 agent_runtime 自身重新导入(循环导入)。 - 在 build_all_agent_runtimes() 和 reload_all_agent_runtimes() 之后调用。 - """ - sub_names = [] - sub_descriptions = {} - for name, rt in _all_agent_runtimes.items(): - if name != _main_agent_name: - sub_names.append(name) - if rt.description: - sub_descriptions[name] = rt.description - from agent.tools.agent_call import CallSubAgentTool - for tool in tools: - if isinstance(tool, CallSubAgentTool): - tool._refresh_description(sub_names, sub_descriptions) - break - -_refresh_subagent_tool_description() diff --git a/src/agent/config/agent_config_dist.json b/src/agent/config/agent_config_dist.json index 9321400..5e60346 100644 --- a/src/agent/config/agent_config_dist.json +++ b/src/agent/config/agent_config_dist.json @@ -6,6 +6,8 @@ "max_iterations": 200, "llm_model_id": "affiaa7r", "tools": [ + "doc_tool", + "call_subagent", "date_query" ], "enabled": true, diff --git a/src/agent/config/theme_config.json b/src/agent/config/theme_config.json index 7133956..d0548ee 100644 --- a/src/agent/config/theme_config.json +++ b/src/agent/config/theme_config.json @@ -1,3 +1,8 @@ { - "bg_image": "" + "theme": "solarized-light", + "bg_image": "", + "font_family": "\"ZCOOL KuaiLe\", \"Microsoft YaHei\", sans-serif", + "font_size": "14px", + "bg_blur": "", + "bg_vignette": "" } \ No newline at end of file diff --git a/src/agent/config/tool_config.json b/src/agent/config/tool_config.json index c92685c..c2bbdb0 100644 --- a/src/agent/config/tool_config.json +++ b/src/agent/config/tool_config.json @@ -105,7 +105,7 @@ "permission": "direct", "auto_execute_rules": [], "enabled": true, - "timeout": 300 + "timeout": 900 }, { "name": "doc_tool", diff --git a/src/agent/config/workspace_config.json b/src/agent/config/workspace_config.json index 8608fe6..b25f95f 100644 --- a/src/agent/config/workspace_config.json +++ b/src/agent/config/workspace_config.json @@ -1,7 +1,6 @@ { - "current": "C:\\Users\\86166\\Desktop\\新建文件夹", + "current": "", "list": [ - "C:\\Users\\86166\\Desktop\\Agent_Learning_minor\\Agent\\src\\workspace", - "C:\\Users\\86166\\Desktop\\新建文件夹" + "C:\\Users\\86166\\Desktop\\Agent_Learning_minor\\Agent\\src\\workspace" ] } \ No newline at end of file diff --git a/src/agent/core/llm.py b/src/agent/core/llm.py index 9794af5..4f0627e 100644 --- a/src/agent/core/llm.py +++ b/src/agent/core/llm.py @@ -175,17 +175,8 @@ class ChatQwen(ChatOpenAI): if ext in IMAGE_FILE_EXTENSIONS: new_content.append(self._process_image_content({"type": "image_url", "image_url": {"url": file_path}})) else: - try: - file_text, file_images = Documents_process.process(file_path) - new_content.append({"type": "text", "text": make_attachment_text("文件", normalized_path, f"以下是文件 {normalized_path} 的内容:\n{file_text.strip()}" if file_text.strip() else "")}) - for image_bytes in file_images or []: - image_part = image_bytes_to_openai_image_url_part(image_bytes) - if image_part is not None: - new_content.append(image_part) - if not file_text.strip() and not file_images: - new_content.append({"type": "text", "text": make_attachment_text("附件文件", normalized_path)}) - except Exception as e: - new_content.append({"type": "text", "text": f"[附件处理失败: {normalized_path}: {e}]"}) + # 非图片附件只注入文件路径提示,内容由 Agent 通过 doc_tool 读取 + new_content.append({"type": "text", "text": make_attachment_text("附件文件", normalized_path)}) else: text = assistant_text(part) if text: diff --git a/src/agent/core/nodes.py b/src/agent/core/nodes.py index a4dd4a5..f38cbd2 100644 --- a/src/agent/core/nodes.py +++ b/src/agent/core/nodes.py @@ -60,27 +60,40 @@ def _filter_short_term_memory(messages: list, trajectory_rounds: int) -> list: 规则: - 保留所有 SystemMessage、HumanMessage(非合成图片)、AIMessage、ToolMessage - 仅 process_tool_artifact 生成的合成图片 HumanMessage 按 trajectory_rounds 裁剪 - - 每轮由一个 AIMessage(含 tool_calls)定义 + - 只对实际包含图片截图的轮次计数,无截图的轮次跳过不计数 """ if trajectory_rounds <= 0: return list(messages) - # 从后向前遍历,统计已遇到的含 tool_calls 的 AIMessage 轮数 - rounds_seen = 0 + # 从后向前遍历,先标记哪些轮次包含图片截图 + # 一"轮"由一个 AIMessage(含 tool_calls)之后的消息(ToolMessage + synthetic HumanMessage)组成 + img_rounds_seen = 0 kept_indices = set() for i in range(len(messages) - 1, -1, -1): msg = messages[i] - if isinstance(msg, AIMessage) and getattr(msg, "tool_calls", None): - rounds_seen += 1 - - # 合成图片消息:仅保留最近 trajectory_rounds 轮 + # 合成图片消息:仅保留最近 trajectory_rounds 轮(有图片的轮才计数) if isinstance(msg, HumanMessage) and msg.additional_kwargs.get("synthetic") and _has_image_content(msg): - if rounds_seen < trajectory_rounds: + if img_rounds_seen < trajectory_rounds: kept_indices.add(i) - else: - kept_indices.add(i) + continue + + # 遇到 AIMessage(含 tool_calls)时,检查本轮是否有图片来决定是否增加计数 + if isinstance(msg, AIMessage) and getattr(msg, "tool_calls", None): + # 向后搜索本轮是否有截图(从该 AIMessage 到下一个 AIMessage 之间) + has_image = False + for j in range(i + 1, len(messages)): + mj = messages[j] + if isinstance(mj, AIMessage) and getattr(mj, "tool_calls", None): + break + if isinstance(mj, HumanMessage) and mj.additional_kwargs.get("synthetic") and _has_image_content(mj): + has_image = True + break + if has_image: + img_rounds_seen += 1 + + kept_indices.add(i) return [messages[i] for i in sorted(kept_indices)] @@ -209,12 +222,12 @@ def _compress_messages_in_loop(state: dict, response: Any) -> None: if total <= 0: return - # 存储最新 token 用量供前端轮询 + # 存储最新 token 用量供前端轮询(仅统计主 Agent,子 Agent 上下文不计入) _sid = "" try: - from agent.history.tool_call_recorder import get_current_session, set_session_tokens + from agent.history.tool_call_recorder import get_current_session, is_sub_agent_context, set_session_tokens _sid = get_current_session() or "" - if _sid: + if _sid and not is_sub_agent_context(): set_session_tokens(_sid, total) except Exception: pass diff --git a/src/agent/core/runtime.py b/src/agent/core/runtime.py index f028722..afaac20 100644 --- a/src/agent/core/runtime.py +++ b/src/agent/core/runtime.py @@ -71,24 +71,31 @@ _OOM_MESSAGE = "OOM: 已达到最大迭代次数限制,任务未能完成。 def _inject_previous_turn_context(session_id: str, messages: list) -> None: - """从上一轮 tool_calling 记录中读取工具调用上下文,注入为合成消息。""" + """从最近5轮(不含当前轮)tool_calling 记录中读取工具调用上下文,注入为合成消息。""" try: - from agent.history.tool_call_recorder import get_latest_turn - latest = get_latest_turn(session_id) - if not latest: + from agent.history.tool_call_recorder import list_turns + # 取6轮(当前轮 + 前5轮历史) + turns = list_turns(session_id, limit=6) + if not turns: return - tool_calls = latest.get("tool_calls", []) - if not tool_calls: - return - for tc in tool_calls: - tn = tc.get("name", "unknown") - ta = json.dumps(tc.get("args", {}), ensure_ascii=False)[:300] - tr = str(tc.get("result_text", ""))[:500] - if tn and tr: - messages.append(HumanMessage( - content=f"[上轮工具调用] {tn}({ta}) → {tr}", - additional_kwargs={"synthetic": True}, - )) + # 跳过最近一轮(当前正在执行或刚结束的 turn),取前面最多5轮历史 + recent_turns = turns[1:6] if len(turns) > 1 else [] + if not recent_turns: + # 首次对话场景:只有1轮,用唯一那一轮 + recent_turns = [turns[0]] + for turn in recent_turns: + tool_calls = turn.get("tool_calls", []) + if not tool_calls: + continue + for tc in tool_calls: + tn = tc.get("name", "unknown") + ta = json.dumps(tc.get("args", {}), ensure_ascii=False)[:300] + tr = str(tc.get("result_text", ""))[:500] + if tn and tr: + messages.append(HumanMessage( + content=f"[历史工具调用] {tn}({ta}) → {tr}", + additional_kwargs={"synthetic": True}, + )) except Exception: pass @@ -703,7 +710,7 @@ def _resume_sub_agent( sub_call_id = sub_tool_call.get("id") or f"sub_{approval_id}" # 1) 构造子图续跑的 ToolMessage - if decision == "skip": + if decision == "skip" and sub_type != "human_interaction": sub_messages.append(ToolMessage( content=f"用户已跳过此工具调用({sub_tool_name}),未执行。", tool_call_id=sub_call_id, name=sub_tool_name, @@ -812,8 +819,8 @@ def continue_after_human_action( sync_turn_from_chat_history(session_id, chat_history, "") return chat_history - # ===== 跳过:不执行工具,写跳过 ToolMessage 后续跑图(tool_call / human_interaction 通用)===== - if decision == "skip": + # ===== 跳过:仅 tool_call 类型支持,human_interaction 不支持跳过 ===== + if decision == "skip" and pending.get("type") != "human_interaction": tool_call = dict(pending.get("tool_call") or {}) tool_name = tool_call.get("name") or "unknown_tool" call_id = tool_call.get("id") or f"manual_{approval_id}" diff --git a/src/agent/cron/scheduler.py b/src/agent/cron/scheduler.py index c86ab96..30d0875 100644 --- a/src/agent/cron/scheduler.py +++ b/src/agent/cron/scheduler.py @@ -65,7 +65,7 @@ def set_cron_time_period(minutes: float) -> float: global _CRON_TIME_PERIOD_MINUTES val = float(minutes) if val <= 0: - raise ValueError("时间段长度必须为正数") + raise ValueError("Time period must be a positive number") _CRON_TIME_PERIOD_MINUTES = val try: from agent.core.config_manager import load_env_config, save_env_config @@ -73,7 +73,7 @@ def set_cron_time_period(minutes: float) -> float: cfg["CRON_TIME_PERIOD_MINUTES"] = int(val) if float(val).is_integer() else val save_env_config(cfg) except Exception as e: - print(f"[CronScheduler] 保存 CRON_TIME_PERIOD_MINUTES 失败: {e}") + print(f"[CronScheduler] Failed to save CRON_TIME_PERIOD_MINUTES: {e}") return val @@ -228,7 +228,7 @@ class CronScheduler: _load_time_period_minutes() self._thread = threading.Thread(target=self._run_loop, name="cron-scheduler", daemon=True) self._thread.start() - print("[CronScheduler] 调度线程已启动") + print("[CronScheduler] Scheduler thread started") def shutdown(self) -> None: if not self._started: @@ -245,7 +245,7 @@ class CronScheduler: if self._thread: self._thread.join(timeout=3.0) self._started = False - print("[CronScheduler] 调度线程已停止") + print("[CronScheduler] Scheduler thread stopped") # ---------- 主循环 ---------- def _run_loop(self) -> None: @@ -253,13 +253,13 @@ class CronScheduler: try: self._on_startup() except Exception as e: - print(f"[CronScheduler] 启动扫描异常: {e}") + print(f"[CronScheduler] Startup scan error: {e}") while not self._stop_event.is_set(): try: self._scan_once() except Exception as e: - print(f"[CronScheduler] 扫描异常: {e}") + print(f"[CronScheduler] Scan error: {e}") self._stop_event.wait(_SCAN_INTERVAL) def _on_startup(self) -> None: @@ -288,12 +288,12 @@ class CronScheduler: "started_at": trigger.run_at, "ended_at": now_iso(), "status": "expired", - "error": "应用未运行,已错过执行时间", + "error": "App was not running, missed execution time", "trigger": "schedule", "turn_id": "", }) repo.update_status(task.task_id, "expired", - error="应用未运行,已错过执行时间", + error="App was not running, missed execution time", next_run_at="") task.enabled = False task.last_status = "expired" @@ -318,7 +318,7 @@ class CronScheduler: "started_at": task.next_run_at, "ended_at": now_iso(), "status": "expired", - "error": "应用未运行错过该次触发", + "error": "App was not running, missed this trigger", "trigger": "schedule", "turn_id": "", }) @@ -390,10 +390,10 @@ class CronScheduler: # 2) 上一个任务启动后仍在 CRON_TIME_PERIOD_MINUTES 时段窗口内 → 跳过。 now_ts = time.time() if self._running_procs: - print(f"[CronScheduler] 时段内已有任务运行,跳过 {task.task_id}") + print(f"[CronScheduler] Task already running in period, skipping {task.task_id}") return False if self._period_start_ts is not None and (now_ts - self._period_start_ts) < _CRON_TIME_PERIOD_MINUTES * 60: - print(f"[CronScheduler] 时段内已有任务,跳过 {task.task_id}") + print(f"[CronScheduler] Task exists in period, skipping {task.task_id}") return False # 占用新时段 self._period_start_ts = now_ts @@ -426,8 +426,8 @@ class CronScheduler: creationflags=getattr(subprocess, "CREATE_NEW_PROCESS_GROUP", 0) if os.name == "nt" else 0, ) except Exception as e: - print(f"[CronScheduler] 拉起子进程失败 task={task.task_id}: {e}") - get_task_repository().update_status(task.task_id, "failed", error=f"拉起子进程失败: {e}") + print(f"[CronScheduler] Failed to spawn subprocess task={task.task_id}: {e}") + get_task_repository().update_status(task.task_id, "failed", error=f"Failed to spawn subprocess: {e}") # 子进程未启动成功,释放占用的时段(避免空占时段阻塞后续任务) with self._procs_lock: if not self._running_procs: @@ -478,7 +478,7 @@ class CronScheduler: error = "" else: status = "failed" - error = f"子进程异常退出(exit code {exit_code})" + error = f"Subprocess exited abnormally (exit code {exit_code})" repo.update_status(task_id, status, error=error, last_run_at=started_iso) repo.append_execution(task_id, { "started_at": started_iso, diff --git a/src/agent/history/session_storage.py b/src/agent/history/session_storage.py index 5a3f48c..3fe89f0 100644 --- a/src/agent/history/session_storage.py +++ b/src/agent/history/session_storage.py @@ -82,6 +82,9 @@ class SessionRecordRepository(Protocol): def list_session_ids(self) -> list[str]: ... def get_turn_record(self, session_id: str, turn_id: str) -> dict[str, Any] | None: ... def get_latest_turn_record(self, session_id: str) -> dict[str, Any] | None: ... + def list_turn_records(self, session_id: str, limit: int) -> list[dict[str, Any]]: ... + def get_session_extra(self, session_id: str) -> dict[str, Any]: ... + def save_session_extra(self, session_id: str, extra: dict[str, Any]) -> None: ... def get_last_turn_id(self, session_id: str) -> str: ... def delete_turns_after(self, session_id: str, keep_until_turn_id: str) -> None: ... def delete_session(self, session_id: str) -> None: ... @@ -97,6 +100,23 @@ class MysqlSessionRecordRepository: def __init__(self) -> None: ensure_tables(_SESSION_TABLE_DDLS) + # 向后兼容:为已有 sessions 表补充 extra 列 + self._ensure_extra_column() + + def _ensure_extra_column(self) -> None: + """幂等添加 sessions.extra JSON 列(存储 tokens + agent_meta)。""" + conn = mysql_conn() + try: + with conn.cursor() as cur: + cur.execute( + "ALTER TABLE sessions ADD COLUMN extra JSON DEFAULT NULL" + ) + conn.commit() + except Exception: + # 列已存在 → 忽略 + pass + finally: + conn.close() def save_turn(self, session_id: str, turn_id: str, messages: list[dict]) -> None: if not session_id or not turn_id: @@ -210,6 +230,54 @@ class MysqlSessionRecordRepository: finally: conn.close() + def list_turn_records(self, session_id: str, limit: int) -> list[dict[str, Any]]: + """按 turn_id 倒序返回最近 limit 条 turn 记录(与 tool_*.json 同构)。""" + conn = mysql_conn() + try: + with conn.cursor() as cur: + cur.execute( + "SELECT turn_id, tool_calls, meta FROM session_tool_calls " + "WHERE session_id=%s ORDER BY turn_id DESC LIMIT %s", + (session_id, limit), + ) + rows = cur.fetchall() or [] + return [self._row_to_record(r, session_id, r["turn_id"]) for r in rows] + finally: + conn.close() + + def get_session_extra(self, session_id: str) -> dict[str, Any]: + """读取 sessions.extra JSON 列(含 tokens + agent_meta),不存在时返回 {}。""" + conn = mysql_conn() + try: + with conn.cursor() as cur: + cur.execute( + "SELECT extra FROM sessions WHERE session_id=%s", + (session_id,), + ) + row = cur.fetchone() + raw = (row or {}).get("extra") + return self._loads(raw) if raw is not None else {} + finally: + conn.close() + + def save_session_extra(self, session_id: str, extra: dict[str, Any]) -> None: + """写入 sessions.extra JSON 列;session 行不存在时先创建占位行。""" + conn = mysql_conn() + try: + with conn.cursor() as cur: + now = _now_iso() + cur.execute( + """ + INSERT INTO sessions (session_id, created_at, updated_at, extra) + VALUES (%s,%s,%s,%s) + ON DUPLICATE KEY UPDATE updated_at=%s, extra=VALUES(extra) + """, + (session_id, now, now, json.dumps(extra, ensure_ascii=False), now), + ) + conn.commit() + finally: + conn.close() + def get_last_turn_id(self, session_id: str) -> str: conn = mysql_conn() try: @@ -381,6 +449,38 @@ def get_latest_turn_record(session_id: str) -> dict[str, Any] | None: return None +def list_turn_records(session_id: str, limit: int = 5) -> list[dict[str, Any]] | None: + """mysql 后端返回最近 limit 条 turn 记录(turn_id 倒序);json 后端返回 None。""" + if not is_mysql(): + return None + try: + return get_session_record_repository().list_turn_records(session_id, limit) + except Exception as e: + print(f"[session_storage] list_turn_records 失败: {e}", file=sys.stderr) + return None + + +def load_session_extra(session_id: str) -> dict[str, Any] | None: + """mysql 后端返回 sessions.extra(tokens + agent_meta);json 后端返回 None。""" + if not is_mysql(): + return None + try: + return get_session_record_repository().get_session_extra(session_id) + except Exception as e: + print(f"[session_storage] load_session_extra 失败: {e}", file=sys.stderr) + return None + + +def save_session_extra(session_id: str, extra: dict[str, Any]) -> None: + """mysql 后端下写入 sessions.extra;json 后端 no-op。""" + if not is_mysql(): + return + try: + get_session_record_repository().save_session_extra(session_id, extra) + except Exception as e: + print(f"[session_storage] save_session_extra 失败: {e}", file=sys.stderr) + + def get_last_turn_id(session_id: str) -> str | None: """mysql 后端返回最后 turn_id;json 后端返回 None。""" if not is_mysql(): diff --git a/src/agent/history/tool_call_recorder.py b/src/agent/history/tool_call_recorder.py index 8e2d557..f1f16b4 100644 --- a/src/agent/history/tool_call_recorder.py +++ b/src/agent/history/tool_call_recorder.py @@ -57,9 +57,18 @@ def sub_agent_context(): 子 Agent 的工具调用记录写入独立的 _sub_live_records[session_id], get_live_tool_calls 将其注入到 call_subagent 条目的 sub_tool_calls 中, 前端在 call_subagent 展开时实时渲染嵌套的子工具调用列表。 + + 进入时清空上一子 Agent 遗留的实时记录与待消费思考, + 避免同一轮内多个子 Agent 顺序执行时发生记忆串扰。 """ token = _sub_agent_context.set(True) try: + _sid = get_current_session() + if _sid: + with _sub_live_lock: + _sub_live_records.pop(_sid, None) + with _sub_pending_thinking_lock: + _sub_pending_thinking.pop(_sid, None) yield finally: _sub_agent_context.reset(token) @@ -100,14 +109,34 @@ def _token_file(session_id: str) -> Path: def _persist_token(session_id: str, tokens: int) -> None: - """将 token 写入磁盘文件。""" + """将 token 写入存储(优先 MySQL,回退 JSON 文件)。""" + # mysql 后端:写入 sessions.extra.tokens + try: + from agent.history import session_storage + if session_storage.is_mysql(): + existing = session_storage.load_session_extra(session_id) or {} + existing["tokens"] = tokens + session_storage.save_session_extra(session_id, existing) + return + except Exception: + pass + # json 后端:写入文件 tf = _token_file(session_id) tf.parent.mkdir(parents=True, exist_ok=True) tf.write_text(json.dumps({"session_id": session_id, "tokens": tokens}), encoding="utf-8") def _load_token_from_disk(session_id: str) -> int: - """从磁盘读取 token(若文件不存在返回 0)。""" + """从磁盘/数据库读取 token(若不存在返回 0)。""" + # mysql 后端:从 sessions.extra 读取 + try: + from agent.history import session_storage + _db_extra = session_storage.load_session_extra(session_id) + if _db_extra is not None: + return int(_db_extra.get("tokens", 0)) + except Exception: + pass + # json 后端:从文件读取 tf = _token_file(session_id) if not tf.exists(): return 0 @@ -142,9 +171,20 @@ def get_session_tokens(session_id: str) -> int: def clear_session_tokens(session_id: str) -> None: - """清除指定会话的 token 记录(内存 + 磁盘)。""" + """清除指定会话的 token 记录(内存 + 存储)。""" with _session_tokens_lock: _session_tokens.pop(session_id, None) + # mysql 后端:设置 tokens=0 + try: + from agent.history import session_storage + if session_storage.is_mysql(): + existing = session_storage.load_session_extra(session_id) or {} + existing["tokens"] = 0 + session_storage.save_session_extra(session_id, existing) + return + except Exception: + pass + # json 后端:删除文件 tf = _token_file(session_id) if tf.exists(): tf.unlink(missing_ok=True) @@ -977,8 +1017,23 @@ def _inject_sub_traces_to_record(tool_calls: list[dict[str, Any]], session_id: s tc["sub_tool_calls"] = sub_tc -def list_turns(session_id: str) -> list[dict[str, Any]]: - """列出会话下所有 turn(按时间倒序,最近5轮)。""" +def list_turns(session_id: str, limit: int = 5) -> list[dict[str, Any]]: + """列出会话下所有 turn(按时间倒序,默认最近5轮)。 + + 输入: + session_id: 会话 ID。 + limit: 返回的最大轮数,默认 5。 + """ + # mysql 后端:从数据库读取 + try: + from agent.history import session_storage + _db_records = session_storage.list_turn_records(session_id, limit) + if _db_records is not None: + return _db_records + except Exception as _e: + import sys as _sys + print(f"[tool_call_recorder] list_turns DB 读取失败: {_e}", file=_sys.stderr) + # json 后端:从文件读取 session_dir = session_tool_dir(session_id) if not session_dir.is_dir(): return [] @@ -989,7 +1044,7 @@ def list_turns(session_id: str) -> list[dict[str, Any]]: turns.append(json.load(fh)) except (json.JSONDecodeError, OSError): pass - return turns[:5] + return turns[:limit] def get_latest_turn(session_id: str) -> dict[str, Any] | None: diff --git a/src/agent/memory/system_prompt.py b/src/agent/memory/system_prompt.py index 34a52b4..9386cf1 100644 --- a/src/agent/memory/system_prompt.py +++ b/src/agent/memory/system_prompt.py @@ -2,14 +2,9 @@ _BASE_PROMPT = """你是一个具备多模态理解能力的桌面操作助手 【核心行为准则】 - 你的首要职责是理解用户的意图,并高效地完成用户的任务。 - 对于任何用户上传的图片、音频或文件,直接利用你的多模态能力分析并回答,不要为此调用截图等无关工具。 -- 只有在信息确实无法从当前对话或上传内容中获取,且必须通过外部工具才能获得时,才调用工具。例如:需要查看当前屏幕状态、需要执行 GUI 操作、需要搜索网络信息等。 -- **【强制规则】面对涉及 PPT 制作、代码项目等复杂产出类或系统操作类任务时,你必须先调用 skill_router 工具查询是否有对应的 Skill 操作指南。 -如果 skill_router 返回了匹配的 Skill,你必须将其视为最高优先级的执行规范,严格遵循 Skill 中定义的完整工作流,严禁跳过任何步骤, -严禁用你自身的编程经验(如直接写 python-pptx 代码、用终端脚本批量生成等)替代 Skill 规范。Skill 规范的地位高于任何工具描述中的建议,当工具描述与 Skill 规范冲突时,以 Skill 规范为准。** +- 只有在信息确实无法从当前对话或上传内容中获取,且必须通过外部工具才能获得时,才调用工具。 - 当你调用工具收到截图或返回结果后,必须仔细观察返回内容,基于实际结果继续推进任务,严禁脱离实际结果凭空编造。 -- 进行浏览器操作时,慎用刷新工具,避免刷新导致页面状态丢失。 -- 对于同一个页面下的GUI操作,必须将连续操作合并为一次 gui_tool 调用(actions 列表传入多个动作),严禁逐个单步调用。仅当页面发生跳转/加载后需要重新观察时,才允许分步调用,注意单次调用最多包含5个动作。 -- 如果不确定是否需要工具,优先选择不调用,用已有信息给出最佳答案。 +- 对于同一个页面下的GUI操作,必须将连续操作合并为一次 gui_tool 调用(actions 列表传入多个动作),严禁逐个单步调用。仅当页面发生跳转/加载后需要重新观察时,才允许分步调用。 - 对于需要多次操作才能完成的任务,应主动使用 todo_list 工具规划步骤并逐步推进,并在任务完成后将todo_list中的所有项标记为已完成。 - 当任务完成时,向用户总结执行过程和结果。 """.strip() diff --git a/src/agent/skills/ppt_maker/attachments/01-workflow.md b/src/agent/skills/ppt_maker/attachments/01-workflow.md index 6e27015..289ed9a 100644 --- a/src/agent/skills/ppt_maker/attachments/01-workflow.md +++ b/src/agent/skills/ppt_maker/attachments/01-workflow.md @@ -161,7 +161,12 @@ **交付**: - 使用 `doc_tool create` 逐页写出 `{N}.html` - 运行 `python {SKILL_DIR}/attachments/complete_htmls_to_base64.py {workspace_dir}` 将外部图片引用转为 base64,产出 `{N}_complete.html` -- 向用户汇报最终交付:`{N}_complete.html`(所有图片已内联,每页可在浏览器中独立打开预览) +- **(可选)合并为单文件 deck**:如果用户需要将多页合并为一个 HTML 文件(方便演示 / 导入 fange-ai-toolbox 编辑器导出 PPTX / 上传飞书),询问用户是否需要合并。若需要,运行: + ``` + python {SKILL_DIR}/attachments/merge_to_deck.py {workspace_dir} --complete + ``` + 产出 `deck.html`,支持键盘 ← → 翻页、鼠标点击前进、触摸滑动。合并后向用户说明操作方式。 +- 向用户汇报最终交付:`{N}_complete.html`(所有图片已内联,每页可在浏览器中独立打开预览),以及可选的 `deck.html`(单文件翻页版) - 提示用户打开 `{N}_complete.html` 即可逐页浏览全部幻灯片 --- @@ -179,6 +184,7 @@ | 动效引擎(Executor) | `08-animation-system.md` | | QA & 交付 | `09-quality-checklist.md` | | 图片内联固化 | `attachments/complete_htmls_to_base64.py`(运行即可) | +| 单文件合并 | `attachments/merge_to_deck.py`(可选,交付前最后一步) | --- @@ -212,3 +218,4 @@ | `09-quality-checklist.md` | 质检清单 — HTML 质量检查项与交付规范 | QA 阶段 | | `templates/` | 模板库 — 预置 HTML 模板(封面、过渡页、内容页、结束页) | Executor 参考复用 | | `attachments/complete_htmls_to_base64.py` | 固化脚本 — 将外部图片引用转为 base64 内联 | 交付前最后一步 | +| `attachments/merge_to_deck.py` | 合并脚本 — 将多个独立 HTML 合并为单文件 deck(可选) | 交付前最后一步(用户需要合并时) | diff --git a/src/agent/skills/ppt_maker/attachments/merge_to_deck.py b/src/agent/skills/ppt_maker/attachments/merge_to_deck.py new file mode 100644 index 0000000..4a252b0 --- /dev/null +++ b/src/agent/skills/ppt_maker/attachments/merge_to_deck.py @@ -0,0 +1,511 @@ +#!/usr/bin/env python3 +""" +merge_to_deck.py + +将 ppt_maker 生成的多个独立 HTML 文件(1.html, 2.html, ...)合并为单个 deck 格式 HTML。 +合并后支持键盘(← →)翻页 + 鼠标点击前进 + 触摸滑动,同时兼容 fange-ai-toolbox 编辑器。 + +用法: + python merge_to_deck.py workspace/ppt_my_topic/ + python merge_to_deck.py workspace/ppt_my_topic/ --output my_deck.html + python merge_to_deck.py workspace/ppt_my_topic/ --complete # 使用 _complete.html 文件 + +输出: + 单个 deck.html,每个原页面作为
嵌入 +""" + +import os +import sys +import re +import argparse +from datetime import datetime +from pathlib import Path + + +def find_html_files(directory: str, use_complete: bool = False) -> list: + """查找目录下所有纯数字命名的 HTML 文件,按页码排序。""" + html_dir = Path(directory) + if not html_dir.is_dir(): + # 尝试 workspace 下查找 + workspace = Path(os.getcwd()) / "workspace" / directory + if workspace.is_dir(): + html_dir = workspace + else: + raise FileNotFoundError(f"目录不存在: {directory}") + + suffix = "_complete.html" if use_complete else ".html" + files = [] + for f in sorted(html_dir.iterdir(), key=lambda x: x.name): + name = f.name + if use_complete: + if name.endswith(suffix): + try: + num = int(name.replace(suffix, "")) + files.append((num, str(f))) + except ValueError: + pass + else: + # 匹配纯数字 .html(如 1.html, 2.html),排除 _complete 等 + m = re.match(r'^(\d+)\.html$', name) + if m: + files.append((int(m.group(1)), str(f))) + files.sort(key=lambda x: x[0]) + return files + + +def extract_root_content(html: str) -> str: + """ + 提取页面核心内容。 + 优先提取 .ppt-root 或 body > div(1280x720 容器)的内部内容, + 去掉外层的 body 灰底包装和独立 script。 + """ + # 1) 尝试匹配
...
或
+ ppt_root_re = re.compile( + r']*\b(?:class\s*=\s*["\']ppt-root["\']|style\s*=\s*["\'][^"\']*width\s*:\s*1280px[^"\']*height\s*:\s*720px[^"\']*)' + r'[^>]*>(.*?)
\s*(?:\s*)?\s*', + re.DOTALL | re.IGNORECASE + ) + m = ppt_root_re.search(html) + if m: + inner = m.group(1) + # 去掉页面内嵌的 ', '', inner, flags=re.DOTALL) + return inner.strip() + + # 2) 回退:提取 内第一个宽高固定的 div 的内容 + body_re = re.compile(r']*>(.*?)', re.DOTALL | re.IGNORECASE) + m = body_re.search(html) + if not m: + return "" + + body = m.group(1) + # 找第一个 1280x720 的 div(可能嵌套在灰色背景 div 内) + container_re = re.compile( + r']*style\s*=\s*["\'][^"\']*width\s*:\s*1280px[^"\']*height\s*:\s*720px[^"\']*["\'][^>]*>(.*?)\s*', + re.DOTALL | re.IGNORECASE + ) + m2 = container_re.search(body) + if m2: + inner = m2.group(1) + inner = re.sub(r'', '', inner, flags=re.DOTALL) + return inner.strip() + + # 3) 最后回退:body 内去掉 script 后的全部内容 + body_clean = re.sub(r'', '', body, flags=re.DOTALL) + return body_clean.strip() + + +def extract_css_variables(html: str) -> str: + """提取 :root 中的 CSS 变量定义。""" + m = re.search(r':root\s*\{([^}]*)\}', html, re.DOTALL) + if m: + return m.group(1).strip() + return "" + + +def scope_css_rules(css_text: str, slide_id: str) -> str: + """给 CSS 规则加上 slide 作用域前缀,避免不同页面间的样式冲突。""" + def scope_rule(match): + rule = match.group(0) + brace_pos = rule.index('{') + selector_text = rule[:brace_pos] + body_text = rule[brace_pos:] + + parts = [s.strip() for s in selector_text.split(',')] + scoped_parts = [] + for part in parts: + if not part: + continue + scoped = f'#{slide_id} {part}' + # body.loaded 针对的是 deck 的 ,需放在 #slide-N 外面 + scoped = re.sub(rf'^#{slide_id}\s+body\.loaded\b', f'body.loaded #{slide_id}', scoped) + scoped_parts.append(scoped) + + return ', '.join(scoped_parts) + ' ' + body_text + + result = re.sub(r'([^{}]+\{[^{}]*\})', lambda m: scope_rule(m) + '\n', css_text) + return result.strip() + + +def build_deck(html_dir: str, use_complete: bool = False, title: str = None) -> str: + """构建合并后的 deck HTML。""" + files = find_html_files(html_dir, use_complete) + if not files: + raise ValueError(f"在 {html_dir} 中未找到 HTML 文件") + + total = len(files) + slides_html = [] + css_variables = "" + if title is None: + title = datetime.now().strftime("演示文稿 %Y-%m-%d %H:%M:%S") + + for idx, (num, filepath) in enumerate(files, 1): + with open(filepath, "r", encoding="utf-8") as f: + html = f.read() + + # 使用第一个页面的 CSS 变量作为全局变量 + if not css_variables: + css_variables = extract_css_variables(html) + + content = extract_root_content(html) + if not content: + print(f" [警告] {filepath}: 未能提取内容,跳过") + continue + + # 提取页面内的 ', html, re.DOTALL | re.IGNORECASE) + page_styles = "" + for sb in style_blocks: + # 去掉 :root 块(已全局统一),去掉 body {} 规则(deck 自行管理) + cleaned = re.sub(r':root\s*\{[^}]*\}', '', sb, re.DOTALL) + cleaned = re.sub(r'\bbody\s*\{[^}]*\}', '', cleaned, flags=re.DOTALL) + cleaned = cleaned.strip() + if cleaned: + page_styles += cleaned + "\n" + + # 给 CSS 规则加上 slide 作用域,避免不同页面同名 class 冲突 + slide_id = f"slide-{idx}" + if page_styles: + page_styles = scope_css_rules(page_styles, slide_id) + + slide = f'
\n' + if page_styles: + slide += f" \n" + slide += f" {content}\n" + slide += "
" + + slides_html.append(slide) + + if not slides_html: + raise ValueError("未能提取任何页面内容") + + # 构建完整 deck + root_block = f":root {{\n {css_variables}\n}}" if css_variables.strip() else "" + + deck = f''' + + + + +{title} + + + + +
+{chr(10).join(slides_html)} +
+ +
1 / {total}
+ + + + + + +''' + + return deck + + +def main(): + parser = argparse.ArgumentParser( + description="将 ppt_maker 生成的多个 HTML 合并为单文件 deck", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +示例: + python merge_to_deck.py workspace/ppt_my_topic/ + python merge_to_deck.py workspace/ppt_my_topic/ --output my_deck.html + python merge_to_deck.py workspace/ppt_my_topic/ --complete + """ + ) + parser.add_argument("directory", help="HTML 文件所在目录") + parser.add_argument("--output", "-o", default=None, + help="输出文件名(默认: deck.html,放在输入目录下)") + parser.add_argument("--title", "-t", default=None, + help="deck 标题(默认: 当前时间戳)") + parser.add_argument("--complete", action="store_true", + help="使用 _complete.html 文件(而非原始 .html)") + args = parser.parse_args() + + html_dir = Path(args.directory) + if not html_dir.is_dir(): + workspace = Path(os.getcwd()) / "workspace" / args.directory + if workspace.is_dir(): + html_dir = workspace + else: + print(f"错误: 目录不存在: {args.directory}") + sys.exit(1) + + output_path = args.output or str(html_dir / "deck.html") + if not os.path.isabs(output_path): + output_path = str(html_dir / output_path) + + try: + print(f"合并目录: {html_dir}") + deck = build_deck(str(html_dir), args.complete, args.title) + with open(output_path, "w", encoding="utf-8") as f: + f.write(deck) + print(f"已生成: {output_path}") + print(f"共 {deck.count('
str: def _load_session_meta(session_id: str) -> dict: - """加载整个 session_meta.json 文件。""" + """加载整个 session_meta 数据(优先 MySQL,回退 JSON 文件)。""" + # mysql 后端:从 sessions.extra.agent_meta 读取 + try: + from agent.history import session_storage + _db_extra = session_storage.load_session_extra(session_id) + if _db_extra is not None: + return _db_extra.get("agent_meta", {}) + except Exception: + pass + # json 后端:从文件读取 mp = _session_meta_path(session_id) if not os.path.isfile(mp): return {} @@ -170,7 +179,18 @@ def _load_session_meta(session_id: str) -> dict: def _save_session_meta(session_id: str, meta: dict) -> None: - """保存整个 session_meta.json 文件。""" + """保存整个 session_meta 数据(优先 MySQL,回退 JSON 文件)。""" + # mysql 后端:写入 sessions.extra.agent_meta(不覆盖 tokens) + try: + from agent.history import session_storage + if session_storage.is_mysql(): + existing = session_storage.load_session_extra(session_id) or {} + existing["agent_meta"] = meta + session_storage.save_session_extra(session_id, existing) + return + except Exception: + pass + # json 后端:写入文件 mp = _session_meta_path(session_id) os.makedirs(os.path.dirname(mp), exist_ok=True) with open(mp, "w", encoding="utf-8") as f: diff --git a/src/agent/utils/ppt_utils.py b/src/agent/utils/ppt_utils.py index 7b4e400..e7f5397 100644 --- a/src/agent/utils/ppt_utils.py +++ b/src/agent/utils/ppt_utils.py @@ -1,7 +1,6 @@ """PPT 读取与预览工具:自主实现 PPTX 解析,不依赖外部 ppt-master 项目。 支持: - pptx → SVG: 将 PPTX 每页转为自包含 SVG(扁平渲染,用于前端预览) - - pptx → HTML: 将 PPTX 转为带翻页导航的 HTML 预览页 渲染范围(聚焦核心功能): - 形状: rect, roundRect, ellipse, line, text, image, path, polygon, group @@ -17,7 +16,6 @@ from __future__ import annotations import base64 -import json import os import xml.etree.ElementTree as ET import zipfile @@ -739,282 +737,3 @@ def _convert_group_to_svg(node: ShapeNode, slide: _SlideRef, pkg: OoxmlPackage, parts.append(child_svg) parts.append("") return "\n".join(parts) - - -# ============================================================ -# 14. PPTX → HTML 预览(python-pptx) -# ============================================================ - -def convert_pptx_to_html(pptx_path: Path) -> str: - """将 PPTX 文件转为带翻页导航的完整 HTML 页面。 - - 使用 python-pptx 解析,提取文本/图片/形状/表格, - 生成绝对定位 HTML + 翻页控件 + 键盘/滚轮导航 + 拖动/缩放。 - """ - from pptx import Presentation # noqa: F811 - from pptx.enum.text import PP_ALIGN - - def _emu2px(emu): - if emu is None: - return 0 - return round(float(emu) / 914400 * 96, 1) - - def _fill_style(shape): - try: - f = shape.fill - if f.type is not None and f.type != 0: - if hasattr(f, 'fore_color') and f.fore_color.type is not None: - try: - return f"background:{f.fore_color.rgb};" - except Exception: - pass - except Exception: - pass - return "" - - def _line_style(shape): - try: - ln = shape.line - if ln.fill.type is not None and ln.fill.type != 0: - w = _emu2px(ln.width) if ln.width else 0.5 - c = "#999" - try: - if hasattr(ln, 'color') and ln.color.type is not None: - c = str(ln.color.rgb) - except Exception: - pass - return f"border:{w}px solid {c};" - except Exception: - pass - return "" - - def _run_style(run): - s = [] - f = run.font - if f.size: - s.append(f"font-size:{_emu2px(f.size)}px") - if f.bold: - s.append("font-weight:bold") - if f.italic: - s.append("font-style:italic") - if f.underline: - s.append("text-decoration:underline") - try: - if f.color and f.color.type is not None: - s.append(f"color:{f.color.rgb}") - except Exception: - pass - if f.name: - s.append(f'font-family:"{f.name}",sans-serif') - return ";".join(s) - - def _align(para): - a = para.alignment - if a == PP_ALIGN.CENTER: - return "text-align:center;" - elif a == PP_ALIGN.RIGHT: - return "text-align:right;" - elif a == PP_ALIGN.JUSTIFY: - return "text-align:justify;" - return "" - - def _esc(s): - return s.replace("&", "&").replace("<", "<").replace(">", ">") - - def _render_text(tf, l, t, w, h): - parts = [] - for para in tf.paragraphs: - al = _align(para) - runs = [] - for run in para.runs: - st = _run_style(run) - txt = _esc(run.text).replace("\n", "
") - runs.append(f'{txt}' if st else txt) - line = "".join(runs) or " " - m = "" - if para.space_after: - m += f"margin-bottom:{_emu2px(para.space_after)}px;" - if para.space_before: - m += f"margin-top:{_emu2px(para.space_before)}px;" - parts.append(f'

{line}

') - inner = "".join(parts) - pad = "" - try: - pad = f"padding-left:{_emu2px(tf.margin_left or 0)}px;padding-right:{_emu2px(tf.margin_right or 0)}px;padding-top:{_emu2px(tf.margin_top or 0)}px;" - except Exception: - pass - return ( - f'
{inner}
' - ) - - def _render_pic(shape): - l, t, w, h = _emu2px(shape.left), _emu2px(shape.top), _emu2px(shape.width), _emu2px(shape.height) - try: - img = shape.image - ext = img.content_type.split("/")[-1] - if ext == "jpeg": - ext = "jpg" - b64 = base64.b64encode(img.blob).decode() - src = f"data:image/{ext};base64,{b64}" - except Exception: - src = "" - return f'' - - def _render_shape(shape): - l, t, w, h = _emu2px(shape.left), _emu2px(shape.top), _emu2px(shape.width), _emu2px(shape.height) - fill = _fill_style(shape) - line = _line_style(shape) - rad = "" - try: - if shape.auto_shape_type and "ROUNDED" in str(shape.auto_shape_type): - rad = "border-radius:6px;" - except Exception: - pass - if shape.has_text_frame: - inner = _render_text(shape.text_frame, 0, 0, w, h) - return ( - f'
{inner.replace("position:absolute;", "position:relative;")}
' - ) - return f'
' - - def _render_table(shape): - l, t, w = _emu2px(shape.left), _emu2px(shape.top), _emu2px(shape.width) - rows = [] - for row in shape.table.rows: - cells = [] - for cell in row.cells: - txt = _esc(cell.text) or " " - cells.append(f'{txt}') - rows.append(f'{"".join(cells)}') - return f'{"".join(rows)}
' - - def _render_group(shape): - l, t, w, h = _emu2px(shape.left), _emu2px(shape.top), _emu2px(shape.width), _emu2px(shape.height) - kids = [] - try: - for child in shape.shapes: - kids.append(_el(child)) - except Exception: - pass - return f'
{"".join(kids)}
' - - def _el(shape): - if shape.shape_type is None: - return "" - st = str(shape.shape_type) - if "PICTURE" in st: - return _render_pic(shape) - elif "TABLE" in st: - return _render_table(shape) - elif "GROUP" in st: - return _render_group(shape) - elif "PLACEHOLDER" in st or "TEXT_BOX" in st: - if shape.has_text_frame: - return _render_text(shape.text_frame, _emu2px(shape.left), _emu2px(shape.top), _emu2px(shape.width), _emu2px(shape.height)) - return "" - elif "AUTO_SHAPE" in st or "FREEFORM" in st or "RECTANGLE" in st or "OVAL" in st: - return _render_shape(shape) - else: - if hasattr(shape, 'has_text_frame') and shape.has_text_frame and shape.text_frame.text.strip(): - return _render_text(shape.text_frame, _emu2px(shape.left), _emu2px(shape.top), _emu2px(shape.width), _emu2px(shape.height)) - return "" - - # ---- main ---- - prs = Presentation(str(pptx_path)) - sw = _emu2px(prs.slide_width) - sh = _emu2px(prs.slide_height) - - slides_data = [] - for slide in prs.slides: - elems = [] - for shape in slide.shapes: - h = _el(shape) - if h: - elems.append(h) - slides_data.append( - f'
' - f'{"".join(elems)}
' - ) - - total = len(slides_data) - slides_json = json.dumps(slides_data) - name = pptx_path.name - - return f""" - - -{name} - - -
- -""" diff --git a/src/web/css/composer.css b/src/web/css/composer.css index 517ffb2..0d1fa69 100644 --- a/src/web/css/composer.css +++ b/src/web/css/composer.css @@ -221,6 +221,30 @@ position: relative; } +/* 拖拽附件到输入区时:显示"添加附件"提示 */ +.composer-input-shell.is-drag-attach { + outline: 2px dashed color-mix(in srgb, var(--accent) 55%, transparent); + outline-offset: 3px; + border-radius: 12px; + transition: outline-color 0.15s ease; +} +.composer-input-shell.is-drag-attach::after { + content: "添加附件"; + position: absolute; + inset: 0; + z-index: 5; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.95rem; + font-weight: 600; + letter-spacing: 0.05em; + color: var(--accent); + background: color-mix(in srgb, var(--accent) 10%, transparent); + border-radius: 12px; + pointer-events: none; +} + .mm-input textarea { width: 100%; resize: vertical; @@ -1086,6 +1110,18 @@ background: color-mix(in srgb, var(--accent) 20%, transparent); } +/* 文件预览:表格按列着色(覆盖上面的 display:block,单元格保持 inline) */ +.fp-table-wrap .fp-code-lines { + word-break: normal; +} +.fp-code-lines .fp-tbl-cell { + display: inline; + padding-right: 0.5em; +} +.fp-code-lines .fp-tbl-cell--header { + font-weight: 600; +} + .file-preview-body svg { max-width: 100%; max-height: 75vh; @@ -1319,18 +1355,18 @@ pointer-events: none; } .token-bar-seg--green { - background: var(--accent, #0e7490); + background: var(--success, #22c55e); opacity: 0.45; z-index: 1; border-radius: 3px 0 0 3px; } .token-bar-seg--yellow { - background: var(--accent, #0e7490); + background: var(--warning, #f59e0b); opacity: 0.7; z-index: 1; } .token-bar-seg--red { - background: var(--accent, #0e7490); + background: var(--danger, #ef4444); opacity: 0.85; z-index: 1; border-radius: 0 3px 3px 0; @@ -1374,16 +1410,16 @@ box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 25%, transparent); } .token-handle--hard .token-handle-dot { - background: #d4756b; - box-shadow: 0 0 0 2px rgba(212, 117, 107, 0.2); + background: var(--danger, #d4756b); + box-shadow: 0 0 0 2px color-mix(in srgb, var(--danger) 25%, transparent); } .token-handle.overshot .token-handle-dot { animation: handlePulse 0.6s ease-in-out infinite alternate; } @keyframes handlePulse { - from { box-shadow: 0 0 0 2px rgba(212, 117, 107, 0.15); } - to { box-shadow: 0 0 0 5px rgba(212, 117, 107, 0.1); } + from { box-shadow: 0 0 0 2px color-mix(in srgb, var(--danger) 15%, transparent); } + to { box-shadow: 0 0 0 5px color-mix(in srgb, var(--danger) 10%, transparent); } } .token-label { @@ -1397,4 +1433,6 @@ transition: opacity 0.25s, color 0.25s; } -.token-label--safe { color: #22c55e; } +.token-label--safe { color: var(--success, #22c55e); } +.token-label--warn { color: var(--warning, #f59e0b); } +.token-label--danger { color: var(--danger, #ef4444); } diff --git a/src/web/css/settings.css b/src/web/css/settings.css index 953bc72..3a48146 100644 --- a/src/web/css/settings.css +++ b/src/web/css/settings.css @@ -87,6 +87,41 @@ margin-top: 0.4rem; } +/* ===== 背景图片选择器 ===== */ +.bg-input-row { + display: flex; + gap: 0.4rem; + align-items: center; +} + +.bg-input-row input[type="text"] { + flex: 1; +} + +.bg-picker-btn { + flex-shrink: 0; + width: 2.2rem; + height: 2.2rem; + padding: 0; + border-radius: 8px; + border: 1px solid var(--border); + background: var(--surface); + color: var(--text-tertiary); + font-size: 1.1rem; + font-weight: 600; + cursor: pointer; + transition: all 0.15s; + display: flex; + align-items: center; + justify-content: center; +} + +.bg-picker-btn:hover { + background: color-mix(in srgb, var(--accent) 8%, transparent); + color: var(--accent); + border-color: var(--accent); +} + /* ===== 设置按钮 ===== */ .settings-btn { display: inline-flex; diff --git a/src/web/css/toolcalls.css b/src/web/css/toolcalls.css index 5dd1479..5b1392a 100644 --- a/src/web/css/toolcalls.css +++ b/src/web/css/toolcalls.css @@ -43,7 +43,13 @@ overflow: hidden; } .tool-call-list-wrap--expanded .tc-list-toggle-body { - max-height: 8000px; + overflow-y: auto; + max-height: 75vh; +} +/* flex 子项保持自然高度,避免工具记录多时被 flex-shrink 压缩导致内容不可见, + 由 .tc-list-toggle-body 自身滚动展示全部记录 */ +.tc-list-toggle-body > * { + flex-shrink: 0; } /* 单条工具调用行(无框) */ @@ -179,9 +185,14 @@ overflow: hidden; } .tool-call-row--expanded + .tc-detail { - max-height: 600px; + max-height: 45vh; + overflow-y: auto; padding: 0.3rem 0.45rem; } +/* .tc-detail 同为 flex column,内部子项保持自然高度,避免被压缩导致结果不可见 */ +.tc-detail > * { + flex-shrink: 0; +} .tc-detail-text { max-height: 200px; overflow-y: auto; diff --git a/src/web/image/background.jpg b/src/web/image/background.jpg index 9dc366932a13304f37c6e273d2f9a862c08129f2..a3d3455061fffcf423ea3d1afeb0da48dd1c23b2 100644 GIT binary patch literal 8690 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 Z1ttY11@cK!?4o~`9{%ryMZ0zKe*k=aXDt8# diff --git a/src/web/image/background2.jpg b/src/web/image/background2.jpg index e677df861b4cca16ab2ead515f5fab198a1ecd1e..9d7b999193a488ca70dbb0913d6a13a1a8a5c353 100644 GIT binary patch literal 6558 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 z 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 hrp(JoD3自定义背景

输入本地图片路径或 URL(支持 jpg/png/webp),留空恢复默认。

- +
+ + + +
diff --git a/src/web/js/edit-mode.js b/src/web/js/edit-mode.js index 9b59bf4..4c8489f 100644 --- a/src/web/js/edit-mode.js +++ b/src/web/js/edit-mode.js @@ -59,6 +59,12 @@ function isPreviewableHtml(name) { return (name || '').toLowerCase().endsWith('.html') || (name || '').toLowerCase().endsWith('.htm'); } +/** 二进制表格(XLSX/XLS):由后端 /api/table/text 提取为 TSV 后按列着色预览 */ +function isPreviewableTable(name) { + const ext = (name || '').toLowerCase(); + return ext.endsWith('.xlsx') || ext.endsWith('.xls'); +} + const BINARY_EXTS = new Set([ '.exe','.dll','.so','.dylib','.bin','.dat','.zip','.rar','.7z','.tar','.gz','.bz2','.xz', '.png','.jpg','.jpeg','.gif','.bmp','.ico','.webp','.tiff','.tif','.psd','.ai','.eps', @@ -78,7 +84,19 @@ function isBinaryFile(name) { } // ===== 模式切换 ===== +let _modeSwitchCooldown = false; + export function switchToMode(mode) { + // 防连点:短时间内禁止重复切换 + if (_modeSwitchCooldown) return; + _modeSwitchCooldown = true; + setTimeout(() => { _modeSwitchCooldown = false; }, 300); + + // Agent 运行中禁止切换到 cron/edit 模式,避免 chat 区域被替换导致工具调用和思考历史消失 + if (state.sending && mode !== "chat") { + showToast("Agent 正在运行中,请等待完成后再切换模式"); + return; + } state.mode = mode; if (mode === "edit") { state.editMode = true; @@ -155,6 +173,15 @@ export async function openFolder(folderPath) { } if (!rootPath) return; + // 先校验目录存在并列出文件;文件夹被删除/不可访问时给出明确提示,避免把失效路径写入状态 + let listRes; + try { + listRes = await listDir(rootPath, 10); + } catch (e) { + showToast("打开文件夹失败: " + (e.message || e)); + return; + } + state._docRootPath = rootPath; state._docRootName = rootPath.split(/[/\\]/).pop() || rootPath; @@ -166,7 +193,6 @@ export async function openFolder(folderPath) { if (!state._docTreeFolders) state._docTreeFolders = {}; state._docTreeFolders[state._docRootName] = true; - const listRes = await listDir(rootPath, 10); const files = listRes.files || []; const supportedFiles = files.filter((f) => !f.is_dir && isSupportedFile(f.name)); // 去重:按 path 去重 @@ -257,6 +283,19 @@ export async function loadDocContent(filePath) { openFilePreview(filePath, fileName, res.content || '', { status, onDownload: () => downloadFile(filePath, fileName) }); } + } else if (isPreviewableTable(fileName)) { + // XLSX/XLS:后端提取为 TSV 文本,走与 CSV/TSV 一致的按列着色预览 + const absPath = (/^[A-Za-z]:[\\/]/.test(filePath) || filePath.startsWith('/') || filePath.startsWith('\\')) + ? filePath + : state._docRootPath.replace(/[\\/]+$/, '') + '/' + filePath.replace(/^[\\/]+/, ''); + try { + const tsv = await api('/api/table/text?path=' + encodeURIComponent(absPath)); + openFilePreview(absPath, fileName, (tsv && tsv.content) || '', + { status, onDownload: () => downloadFile(absPath, fileName) }); + } catch (e) { + openFilePreview(absPath, fileName, '(加载失败: ' + (e.message || e) + ')', + { status, onDownload: () => downloadFile(absPath, fileName) }); + } } else if (isBinaryFile(fileName)) { showToast('二进制文件不支持在线查看', 'warning'); } else { @@ -309,6 +348,20 @@ async function downloadFile(filePath, fileName) { a.href = url; a.download = fileName; document.body.appendChild(a); a.click(); document.body.removeChild(a); } + } else if (isBinaryFile(fileName)) { + // 二进制文件(xlsx/docx/pdf 等):按 base64 还原字节后下载 + const res = await readBinaryFile(filePath, state._docRootPath); + if (res && res.status === 'ok' && res.data) { + const bin = atob(res.data); + const bytes = new Uint8Array(bin.length); + for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i); + const blob = new Blob([bytes], { type: res.mime || 'application/octet-stream' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; a.download = fileName; + document.body.appendChild(a); a.click(); document.body.removeChild(a); + URL.revokeObjectURL(url); + } } else { const res = await readTextFile(filePath, state._docRootPath); if (res && res.status === 'ok') { @@ -737,17 +790,37 @@ function setupInputDropHandler() { const target = composerInput || $('textInput'); if (!target) return; + // 子元素间移动会成对触发 dragenter/dragleave,用计数器避免状态误清除 + let dragDepth = 0; + const setDragState = (on) => target.classList.toggle('is-drag-attach', on); + const isAcceptedDrag = (types) => types.includes('application/doc-path') || types.includes('Files'); + + target.addEventListener('dragenter', (e) => { + if (isAcceptedDrag(Array.from(e.dataTransfer.types))) { + dragDepth++; + setDragState(true); + } + }); + target.addEventListener('dragover', (e) => { const types = Array.from(e.dataTransfer.types); // 接受应用内文件/文件夹引用拖拽 或 外部文件拖拽 if (types.includes('application/doc-path') || types.includes('Files')) { e.preventDefault(); e.dataTransfer.dropEffect = 'copy'; + setDragState(true); } }); + target.addEventListener('dragleave', () => { + dragDepth = Math.max(0, dragDepth - 1); + if (dragDepth === 0) setDragState(false); + }); + target.addEventListener('drop', async (e) => { e.preventDefault(); + dragDepth = 0; + setDragState(false); // 1. 内部拖拽(doc-tree 文件/文件夹引用) // app.js 检测到 application/doc-path 也会 return,无需 stopPropagation diff --git a/src/web/js/file-preview.js b/src/web/js/file-preview.js index c9df344..03b0b71 100644 --- a/src/web/js/file-preview.js +++ b/src/web/js/file-preview.js @@ -6,8 +6,9 @@ import { $, escapeHtml } from './utils.js'; const IMG_EXTS = new Set(['.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp', '.ico']); const HTML_EXTS = new Set(['.html', '.htm']); const TEXT_EXTS = new Set(['.txt', '.json', '.md', '.py', '.js', '.ts', '.css', '.xml', '.yaml', '.yml', '.toml', - '.csv', '.log', '.env', '.ini', '.cfg', '.sh', '.bat', '.ps1', '.sql', '.r', '.go', '.rs', '.rb', + '.csv', '.tsv', '.log', '.env', '.ini', '.cfg', '.sh', '.bat', '.ps1', '.sql', '.r', '.go', '.rs', '.rb', '.php', '.swift', '.kt', '.scala', '.cpp', '.c', '.h', '.java', '.m', '.svg']); +const TABLE_EXTS = new Set(['.csv', '.tsv', '.xlsx', '.xls']); let _currentFilePath = null; let _currentContent = null; @@ -33,6 +34,13 @@ function isTextFile(fileName) { return dot >= 0 && TEXT_EXTS.has(ext.substring(dot)); } +/** 判断表格文件(CSV/TSV 文本按列着色;XLSX/XLS 由后端提取为 TSV 后同样按列着色) */ +function isTableFile(fileName) { + const ext = (fileName || '').toLowerCase(); + const dot = ext.lastIndexOf('.'); + return dot >= 0 && TABLE_EXTS.has(ext.substring(dot)); +} + /** * 打开文件预览浮窗 * @param {string} filePath - 文件路径 @@ -84,6 +92,8 @@ export function openFilePreview(filePath, fileName, content, opts = {}) { _renderImage(body, content, fileName); } else if (isHtml(fileName) && !opts.asText) { _renderPlainText(body, content); + } else if (isTableFile(fileName)) { + _renderTable(body, content, fileName); } else if (isTextFile(fileName)) { _renderPlainText(body, content); } else if (content && content.startsWith && content.startsWith('data:')) { @@ -162,6 +172,96 @@ function _renderPlainText(body, content) { codeLines.addEventListener('contextmenu', (e) => _onCodeContextMenu(e)); } +// ===== 表格预览(复用 plaintext 预览 UI,不同列不同颜色) ===== + +/** 按主题区分的列色板(暗色 / 亮色各一套,保证可读性) */ +const TABLE_COLUMN_COLORS = { + dark: ['#e06c75', '#61afef', '#98c379', '#e5c07b', '#c678dd', '#56b6c2', '#d19a66', '#f472b6', '#7f9cf5', '#4ade80'], + light: ['#c0392b', '#2471a3', '#1e8449', '#b7950b', '#7d3c98', '#117a65', '#ca6f1e', '#a93226', '#2e86c1', '#229954'], +}; + +/** 判断分隔符:TSV 用 tab,CSV 用逗号,XLSX/XLS(后端已提取为 TSV)用 tab,其他按首行内容猜测 */ +function _getDelimiter(fileName, content) { + const ext = (fileName || '').toLowerCase(); + if (ext.endsWith('.tsv') || ext.endsWith('.xlsx') || ext.endsWith('.xls')) return '\t'; + if (ext.endsWith('.csv')) return ','; + const firstLine = (content || '').split('\n')[0] || ''; + return firstLine.includes('\t') ? '\t' : ','; +} + +/** 解析单行分隔符文本(支持引号包裹的字段,如 "a,b") */ +function _splitDelimited(line, delim) { + const cells = []; + let cur = ''; + let inQuotes = false; + for (let i = 0; i < line.length; i++) { + const ch = line[i]; + if (inQuotes) { + if (ch === '"') { + if (line[i + 1] === '"') { cur += '"'; i++; } + else inQuotes = false; + } else cur += ch; + } else if (ch === '"') { + inQuotes = true; + } else if (ch === delim) { + cells.push(cur); + cur = ''; + } else { + cur += ch; + } + } + cells.push(cur); + return cells; +} + +/** 表格预览:保留行号/选中引用交互,单元格按列着色 */ +function _renderTable(body, content, fileName) { + const text = content || ''; + const delim = _getDelimiter(fileName, text); + const lines = text.split('\n'); + const colors = document.body.classList.contains('theme-dark') ? TABLE_COLUMN_COLORS.dark : TABLE_COLUMN_COLORS.light; + + const wrap = document.createElement('div'); + wrap.className = 'fp-code-wrap fp-table-wrap'; + + // 行号列 + const lineNos = document.createElement('div'); + lineNos.className = 'fp-line-nos'; + for (let i = 1; i <= lines.length; i++) { + const span = document.createElement('span'); + span.textContent = i; + lineNos.appendChild(span); + } + + // 数据列:每行一个 span,单元格按列序号着色,首行作为表头加粗 + const codeLines = document.createElement('div'); + codeLines.className = 'fp-code-lines'; + lines.forEach((line, i) => { + const row = document.createElement('span'); + row.setAttribute('data-line', i + 1); + const cells = _splitDelimited(line, delim); + if (cells.length === 1 && !line.trim()) { + row.textContent = '\u00A0'; + } else { + cells.forEach((cell, ci) => { + const cellEl = document.createElement('span'); + cellEl.className = 'fp-tbl-cell' + (i === 0 ? ' fp-tbl-cell--header' : ''); + cellEl.textContent = cell; + cellEl.style.color = colors[ci % colors.length]; + row.appendChild(cellEl); + }); + } + codeLines.appendChild(row); + }); + + wrap.appendChild(lineNos); + wrap.appendChild(codeLines); + body.appendChild(wrap); + + // 右键菜单:引用选中行 + codeLines.addEventListener('contextmenu', (e) => _onCodeContextMenu(e)); +} + function _onCodeContextMenu(e) { const sel = window.getSelection(); if (!sel || sel.isCollapsed || !sel.toString().trim()) return; diff --git a/src/web/js/pending-overlay.js b/src/web/js/pending-overlay.js index 124f56a..6a02867 100644 --- a/src/web/js/pending-overlay.js +++ b/src/web/js/pending-overlay.js @@ -211,12 +211,6 @@ function buildPendingCard(pending, isSubAgent) { inputRow.appendChild(sendBtn); cardBody.appendChild(inputRow); - - // 跳过按钮 - const btnRow = document.createElement("div"); - btnRow.className = "pending-overlay-btn-row"; - btnRow.appendChild(makeDecisionBtn("跳过", "skip", "", () => submitSingle(pending.id, "skip", "", card))); - cardBody.appendChild(btnRow); } else if (interactionType === "selection") { if (pending.questions && Array.isArray(pending.questions) && pending.questions.length > 0) { pending.questions.forEach((q) => { @@ -289,12 +283,6 @@ function buildPendingCard(pending, isSubAgent) { }); cardBody.appendChild(pillsRow); } - - // 跳过按钮 - const btnRow = document.createElement("div"); - btnRow.className = "pending-overlay-btn-row"; - btnRow.appendChild(makeDecisionBtn("跳过", "skip", "", () => submitSingle(pending.id, "skip", "", card))); - cardBody.appendChild(btnRow); } card.appendChild(cardBody); diff --git a/src/web/js/settings.js b/src/web/js/settings.js index 0cc0d7c..964eceb 100644 --- a/src/web/js/settings.js +++ b/src/web/js/settings.js @@ -139,16 +139,19 @@ function buildAgentCard(agent, idx) { header.className = "agent-card-header"; const h4 = document.createElement("h4"); h4.textContent = `Agent: ${agent.name || "(\u672A\u547D\u540D)"}`; - const removeBtn = document.createElement("button"); - removeBtn.className = "agent-card-remove"; - removeBtn.textContent = "\u2715"; - removeBtn.title = "\u5220\u9664\u6B64 Agent"; - removeBtn.addEventListener("click", () => { - state.cachedAgentConfigs.splice(idx, 1); - renderAgentConfigs(); - }); header.appendChild(h4); - header.appendChild(removeBtn); + // 主 Agent 不可删除 + if (agent.role !== "main") { + const removeBtn = document.createElement("button"); + removeBtn.className = "agent-card-remove"; + removeBtn.textContent = "\u2715"; + removeBtn.title = "\u5220\u9664\u6B64 Agent"; + removeBtn.addEventListener("click", () => { + state.cachedAgentConfigs.splice(idx, 1); + renderAgentConfigs(); + }); + header.appendChild(removeBtn); + } const nameField = makeField("\u540D\u79F0", "text", agent.name || "", (v) => { agent.name = v; }); const descField = makeField("\u80FD\u529B\u63CF\u8FF0 (description)", "text", agent.description || "", (v) => { agent.description = v; }); @@ -1135,6 +1138,8 @@ function renderThemePanel() { const bgApplyBtn = $("bgImageApplyBtn"); const bgResetBtn = $("bgImageResetBtn"); const bgStatus = $("bgPreviewStatus"); + const bgPickerBtn = $("bgImagePickerBtn"); + const bgFileInput = $("bgImageFileInput"); if (bgInput) { bgInput.value = getBgImage(); const applyBg = () => { @@ -1154,6 +1159,37 @@ function renderThemePanel() { } // 回车也应用 bgInput.onkeydown = (e) => { if (e.key === 'Enter') applyBg(); }; + + // 图片选择器按钮点击事件 + if (bgPickerBtn && bgFileInput) { + bgPickerBtn.onclick = () => { + bgFileInput.click(); + }; + + // 文件选择事件 + bgFileInput.onchange = (e) => { + const file = e.target.files?.[0]; + if (file) { + // 使用文件路径(Electron 环境)或创建临时 URL(Web 环境) + if (window.electronAPI && window.electronAPI.getFilePath) { + // Electron 环境:获取文件路径 + const filePath = window.electronAPI.getFilePath(file); + bgInput.value = filePath; + applyBg(); + } else { + // Web 环境:创建临时 URL + const reader = new FileReader(); + reader.onload = (event) => { + bgInput.value = event.target?.result || ""; + applyBg(); + }; + reader.readAsDataURL(file); + } + } + // 清空 input 以便重复选择同一文件 + bgFileInput.value = ""; + }; + } } // 背景模糊度 diff --git a/src/web/js/themes.js b/src/web/js/themes.js index b573f69..3374e9d 100644 --- a/src/web/js/themes.js +++ b/src/web/js/themes.js @@ -583,12 +583,40 @@ export const THEMES = { }; const DEFAULT_THEME = "vscode-dark"; -const STORAGE_KEY = "minor_theme"; -const STORAGE_BG_KEY = "minor_bg_image"; -const STORAGE_FONT_KEY = "minor_font"; -const STORAGE_FONT_SIZE_KEY = "minor_font_size"; -const STORAGE_BLUR_KEY = "minor_bg_blur"; -const STORAGE_VIGNETTE_KEY = "minor_bg_vignette"; + +// 主题设置统一内存态:全部落盘到服务端 theme_config.json(不使用 localStorage) +let _settings = { + theme: DEFAULT_THEME, + bg_image: "", + font_family: "", + font_size: "", + bg_blur: "", + bg_vignette: "", +}; +let _loadingTheme = false; // 从服务端加载期间不写回,避免覆盖已有配置 +let _persistTimer = null; + +/** 防抖写回服务端 theme_config.json(仅保存用户主动修改,加载期间跳过) */ +function _persistThemeConfig() { + if (_loadingTheme) return; + if (_persistTimer) clearTimeout(_persistTimer); + _persistTimer = setTimeout(() => { + _persistTimer = null; + try { + api("/api/config/theme", { + method: "POST", + body: JSON.stringify({ + theme: _settings.theme, + bg_image: _settings.bg_image, + font_family: _settings.font_family, + font_size: _settings.font_size, + bg_blur: _settings.bg_blur, + bg_vignette: _settings.bg_vignette, + }), + }); + } catch { /* ignore */ } + }, 300); +} // 字体预设 export const FONT_PRESETS = { @@ -611,14 +639,14 @@ export const FONT_SIZE_PRESETS = { "20px": "20px", }; -const getFontKey = (k) => ({ family: STORAGE_FONT_KEY, size: STORAGE_FONT_SIZE_KEY }[k]); - export function getFontSetting(key) { - try { return localStorage.getItem(getFontKey(key)) || ""; } catch { return ""; } + return key === "family" ? _settings.font_family : key === "size" ? _settings.font_size : ""; } export function setFontSetting(key, val) { - try { localStorage.setItem(getFontKey(key), val || ""); } catch {} + if (key === "family") _settings.font_family = val || ""; + else if (key === "size") _settings.font_size = val || ""; applyFontSetting(key, val); + _persistThemeConfig(); } export function applyFontSetting(key, val) { const r = document.documentElement; @@ -638,15 +666,12 @@ function localPathToUrl(localPath) { /** 获取/设置自定义背景图 */ export function getBgImage() { - try { return localStorage.getItem(STORAGE_BG_KEY) || ""; } - catch { return ""; } + return _settings.bg_image; } export function setBgImage(url) { - try { localStorage.setItem(STORAGE_BG_KEY, url || ""); } - catch {} - applyBgImage(url); - // 异步同步到服务端 - try { api("/api/config/theme", { method: "POST", body: JSON.stringify({ bg_image: url || "" }) }); } catch {} + _settings.bg_image = url || ""; + applyBgImage(_settings.bg_image); + _persistThemeConfig(); } export function applyBgImage(url) { const r = document.documentElement; @@ -666,8 +691,7 @@ export function applyBgImage(url) { /** 获取当前保存的主题 */ export function getCurrentTheme() { - try { return localStorage.getItem(STORAGE_KEY) || DEFAULT_THEME; } - catch { return DEFAULT_THEME; } + return _settings.theme; } /** 应用主题到页面 */ @@ -685,8 +709,9 @@ export function applyTheme(themeId) { Object.entries(theme.edit).forEach(([k, v]) => r.style.setProperty(k, v)); } - // 持久化 - try { localStorage.setItem(STORAGE_KEY, themeId); } catch {} + // 更新内存态并落盘(加载期间跳过,避免覆盖服务端已有配置) + _settings.theme = THEMES[themeId] ? themeId : DEFAULT_THEME; + _persistThemeConfig(); // 触发 body 类名切换(用于全局暗/亮模式判断) // 优先使用主题对象的 dark 字段;缺失时回退到 id 字符串推断 @@ -695,28 +720,27 @@ export function applyTheme(themeId) { document.body.classList.toggle("theme-light", !isDark); } -/** 初始化:从 localStorage 恢复主题,并从服务端同步背景图 */ +/** 初始化:先用默认主题渲染,再从服务端 theme_config.json 恢复全部设置 */ export function initTheme() { - const id = getCurrentTheme(); - applyTheme(id); - // 先从 localStorage 快读,再从服务端同步(异步) - applyBgImage(getBgImage()); - applyFontSetting('family', getFontSetting('family')); - applyFontSetting('size', getFontSetting('size')); - applyBgBlur(getBgBlur()); - applyBgVignette(getBgVignette()); - // 异步从服务端同步主题配置 - loadThemeConfig(); - return id; + _loadingTheme = true; + applyTheme(DEFAULT_THEME); + applyBgImage(""); + applyFontSetting("family", ""); + applyFontSetting("size", ""); + applyBgBlur(""); + applyBgVignette(""); + loadThemeConfig(); // 完成后在 finally 中解除 _loadingTheme + return DEFAULT_THEME; } // ===== 背景模糊度 ===== export function getBgBlur() { - try { return localStorage.getItem(STORAGE_BLUR_KEY) || ""; } catch { return ""; } + return _settings.bg_blur; } export function setBgBlur(val) { - try { localStorage.setItem(STORAGE_BLUR_KEY, val || ""); } catch {} - applyBgBlur(val); + _settings.bg_blur = val || ""; + applyBgBlur(_settings.bg_blur); + _persistThemeConfig(); } export function applyBgBlur(val) { // val 为空字符串时使用主题默认值(由 applyTheme 设置),否则覆盖 @@ -730,11 +754,12 @@ export function applyBgBlur(val) { // ===== 背景暗角 ===== export function getBgVignette() { - try { return localStorage.getItem(STORAGE_VIGNETTE_KEY) || ""; } catch { return ""; } + return _settings.bg_vignette; } export function setBgVignette(val) { - try { localStorage.setItem(STORAGE_VIGNETTE_KEY, val || ""); } catch {} - applyBgVignette(val); + _settings.bg_vignette = val || ""; + applyBgVignette(_settings.bg_vignette); + _persistThemeConfig(); } export function applyBgVignette(val) { const r = document.documentElement; @@ -745,14 +770,39 @@ export function applyBgVignette(val) { } } -/** 从服务端加载主题配置(覆盖 localStorage 缓存) */ +/** 从服务端 theme_config.json 加载主题配置并应用(不使用 localStorage) */ export async function loadThemeConfig() { try { const res = await api("/api/config/theme"); - if (res.bg_image !== undefined) { - const img = res.bg_image || ""; - try { localStorage.setItem(STORAGE_BG_KEY, img); } catch {} - applyBgImage(img); + _loadingTheme = true; + if (res.theme && THEMES[res.theme]) { + applyTheme(res.theme); } - } catch {} + if (res.bg_image !== undefined) { + _settings.bg_image = res.bg_image || ""; + applyBgImage(_settings.bg_image); + } + if (res.font_family !== undefined) { + // 过滤旧版默认占位值(msjh 等非真实字体) + const fam = (res.font_family || "").trim(); + _settings.font_family = (fam && fam !== "msjh" && fam !== "msjhbd") ? fam : ""; + applyFontSetting("family", _settings.font_family); + } + if (res.font_size !== undefined) { + _settings.font_size = res.font_size || ""; + applyFontSetting("size", _settings.font_size); + } + if (res.bg_blur !== undefined) { + _settings.bg_blur = res.bg_blur || ""; + applyBgBlur(_settings.bg_blur); + } + if (res.bg_vignette !== undefined) { + _settings.bg_vignette = res.bg_vignette || ""; + applyBgVignette(_settings.bg_vignette); + } + } catch { + // 服务端不可达:保持默认设置 + } finally { + _loadingTheme = false; + } } diff --git a/src/web/js/toolcalls.js b/src/web/js/toolcalls.js index ff47cd1..1d54954 100644 --- a/src/web/js/toolcalls.js +++ b/src/web/js/toolcalls.js @@ -626,7 +626,9 @@ function renderToolCallRow(call, options = {}) { icon.title = isRunning ? "点击折叠" : "点击展开工具返回值"; icon.addEventListener("click", (e) => { e.stopPropagation(); - row.classList.toggle("tool-call-row--expanded"); + const nowExpanded = row.classList.toggle("tool-call-row--expanded"); + // 展开后若详情在可视区外,滚动到可见位置(block:nearest 已可见时不滚动) + if (nowExpanded) detailEl.scrollIntoView({ block: "nearest" }); }); } } diff --git a/src/web/server.py b/src/web/server.py index 89ec1db..818afc9 100644 --- a/src/web/server.py +++ b/src/web/server.py @@ -24,7 +24,7 @@ from typing import Any from fastapi import FastAPI, File, Form, HTTPException, Request, UploadFile from fastapi.middleware.cors import CORSMiddleware -from fastapi.responses import FileResponse, HTMLResponse, Response, StreamingResponse +from fastapi.responses import FileResponse, StreamingResponse _SRC = Path(__file__).resolve().parent.parent.parent if str(_SRC) not in sys.path: sys.path.insert(0, str(_SRC)) @@ -82,6 +82,23 @@ def _init_workspace(): """从 workspace_config.json 恢复上次选择的工作空间。""" cfg = _read_ws_config() current = cfg.get("current", "") + ws_list = cfg.get("list", []) + changed = False + + # 清理列表中已不存在的文件夹 + valid = [p for p in ws_list if os.path.isdir(p)] + if len(valid) != len(ws_list): + cfg["list"] = valid + changed = True + + # 上次选择的工作空间已不存在时,回退到默认工作空间 + if current and not os.path.isdir(current): + current = "" + cfg["current"] = "" + changed = True + + if changed: + _write_ws_config(cfg) if current: from agent.memory.system_prompt import set_current_workspace set_current_workspace(current) @@ -1145,9 +1162,17 @@ def api_get_workspace() -> dict[str, Any]: import os cfg = _read_ws_config() current = _current_workspace_dir or cfg.get("current", "") + ws_list = cfg.get("list", []) + + # 清理列表中已不存在的文件夹 + valid = [p for p in ws_list if os.path.isdir(p)] + if len(valid) != len(ws_list): + cfg["list"] = valid + _write_ws_config(cfg) + return { "current": current, - "list": cfg.get("list", []), + "list": valid, "default": get_workspace_dir(), "snapshots_base": os.path.join(SESSIONS_ROOT, ".minor_snapshots").replace("\\", "/"), } @@ -1340,87 +1365,6 @@ if ($folder) { Write-Output $folder.Self.Path } return {"path": None} -@app.get("/api/fs/list") -def api_fs_list(path: str = "", depth: int = 10) -> dict[str, Any]: - """列出目录下的所有文件(递归)。 - - 输入: path=str (必填,绝对路径), depth=int (最大递归深度,默认 10) - - 输出: {"files": [{path, name, is_dir, size}], "root": str} - """ - p = Path(path).resolve() - if not p.exists(): - raise HTTPException(404, f"路径不存在: {path}") - if not p.is_dir(): - raise HTTPException(400, f"不是目录: {path}") - - files = [] - _walk_dir(p, files, p, depth) - return {"files": files, "root": str(p)} - - -def _walk_dir(base: Path, out: list, root: Path, max_depth: int, current_depth: int = 0): - if current_depth > max_depth: - return - try: - for entry in sorted(base.iterdir(), key=lambda e: (not e.is_dir(), e.name.lower())): - if entry.name.startswith(".") or entry.name == "node_modules" or entry.name == "__pycache__": - continue - rel = str(entry.relative_to(root)).replace("\\", "/") - if entry.is_dir(): - out.append({"path": rel, "name": entry.name, "is_dir": True, "size": 0}) - _walk_dir(entry, out, root, max_depth, current_depth + 1) - else: - out.append({"path": rel, "name": entry.name, "is_dir": False, "size": entry.stat().st_size}) - except PermissionError: - pass - - -@app.get("/api/fs/read") -def api_fs_read(path: str = "", raw: str = "") -> Any: - """读取文件内容。 - - 输入: path=str (必填,绝对路径), raw=str (可选,'1'=返回原始字节流) - """ - p = Path(path).resolve() - if not p.exists(): - raise HTTPException(404, f"文件不存在: {path}") - if not p.is_file(): - raise HTTPException(400, f"不是文件: {path}") - # 原始流模式:返回文件字节(用于图片/HTML 等预览) - if raw == "1": - try: - content_type = mimetypes.guess_type(str(p))[0] or "application/octet-stream" - return FileResponse(str(p), media_type=content_type) - except Exception: - raise HTTPException(500, "读取文件失败") - # 限制大小 5MB - if p.stat().st_size > 5 * 1024 * 1024: - raise HTTPException(413, "文件过大(>5MB)") - try: - content = p.read_text(encoding="utf-8", errors="replace") - except Exception: - content = p.read_text(encoding="latin-1", errors="replace") - return {"content": content, "path": str(p), "size": len(content)} - - -@app.post("/api/fs/write") -def api_fs_write(path: str = Form(""), content: str = Form("")) -> dict[str, Any]: - """写入文件内容。 - - 输入: path=str, content=str - - 输出: {"success": bool, "path": str} - """ - p = Path(path).resolve() - try: - p.parent.mkdir(parents=True, exist_ok=True) - p.write_text(content, encoding="utf-8") - return {"success": True, "path": str(p)} - except Exception as e: - raise HTTPException(500, f"写入失败: {e}") - - @app.post("/api/config/reload") def api_reload_configs() -> dict[str, Any]: """热重载所有配置并重建 Agent 运行时,无需重启服务。 @@ -1886,198 +1830,65 @@ def serve_image_asset(asset_name: str) -> FileResponse: return FileResponse(path, media_type=mime or "application/octet-stream") -@app.get("/api/pptx/preview") -def pptx_preview(path: str = "") -> Response: - """将 PPTX 文件转为带翻页导航的 HTML 预览页面。 +# ---------- 表格文本提取(XLSX/XLS → TSV,供前端按列着色的纯文本预览) ---------- + +@app.get("/api/table/text") +def table_text(path: str = "", sheet: str = "") -> dict[str, Any]: + """将表格文件(XLSX / XLS)内容提取为 TSV 文本。 输入: - path: PPTX 文件的绝对路径。 + path: 表格文件绝对路径。 + sheet: 可选的工作表名(不传时取第一个工作表)。 输出: - 包含所有幻灯片 + 翻页控件的 HTML 页面。 + {"content": str, "sheet": str, "sheets": list[str]} + content: TSV 分隔的表格文本(供前端按列着色渲染)。 """ if not path or not os.path.isfile(path): - return HTMLResponse("

PPTX 文件不存在

", status_code=404) - - from agent.utils.ppt_utils import convert_pptx_to_html - - try: - html_content = convert_pptx_to_html(Path(path)) - except Exception as e: - return HTMLResponse(f"

PPT 解析失败: {e}

", status_code=500) - - if not html_content: - return HTMLResponse("

PPTX 无幻灯片内容

") - - return HTMLResponse(html_content) - - -@app.get("/api/table/preview") -def table_preview(path: str = "", sheet: str = "") -> Response: - """将表格文件(CSV / XLSX)转为 HTML 表格预览页面。 - - 输入: - path: 表格文件的绝对路径。 - sheet: 可选的 sheet 名称(仅 XLSX)。 - - 输出: - 包含表格数据的 HTML 页面。 - """ - if not path or not os.path.isfile(path): - return HTMLResponse("

文件不存在

", status_code=404) - + raise HTTPException(status_code=404, detail=f"文件不存在: {path}") ext = os.path.splitext(path)[1].lower() - try: - if ext == ".csv": - html_content = _csv_to_html(path) - elif ext == ".xlsx": - html_content = _xlsx_to_html(path, sheet) - elif ext == ".xls": - html_content = _xls_to_html(path, sheet) - else: - return HTMLResponse("

不支持的表格格式

", status_code=400) - except Exception as e: - return HTMLResponse(f"

表格解析失败: {e}

", status_code=500) - - return HTMLResponse(html_content) + if ext == ".xlsx": + return _xlsx_to_tsv(path, sheet) + if ext == ".xls": + return _xls_to_tsv(path, sheet) + raise HTTPException(status_code=400, detail="不支持的表格格式") -def _csv_to_html(filepath: str) -> str: - """将 CSV 文件转为 HTML 表格。""" - import csv - - with open(filepath, "r", encoding="utf-8", errors="replace") as f: - sample = f.read(4096) - f.seek(0) - dialect = csv.Sniffer().sniff(sample) - reader = csv.reader(f, dialect) - rows = list(reader) - - if not rows: - return "

CSV 文件为空

" - - name = os.path.basename(filepath) - cols = max(len(r) for r in rows) - rows_html = [] - for i, row in enumerate(rows): - cells = [] - for j in range(cols): - val = row[j] if j < len(row) else "" - val = val.replace("&", "&").replace("<", "<").replace(">", ">") - tag = "th" if i == 0 else "td" - cells.append(f"<{tag}>{val or ' '}") - rows_html.append(f"{''.join(cells)}") - - return f""" - - -{name} - -{"".join(rows_html)}
""" - - -def _xlsx_to_html(filepath: str, sheet_name: str = "") -> str: - """将 XLSX 文件转为 HTML 表格。""" +def _xlsx_to_tsv(filepath: str, sheet_name: str = "") -> dict[str, Any]: + """将 XLSX 工作表内容提取为 TSV 文本。""" try: import openpyxl except ImportError: - return "

需要安装 openpyxl: pip install openpyxl

" - + return {"content": "(需要安装 openpyxl 才能预览 XLSX: pip install openpyxl)", "sheet": "", "sheets": []} wb = openpyxl.load_workbook(filepath, data_only=True, read_only=True) - name = os.path.basename(filepath) - - sheets = wb.sheetnames - if not sheets: - return "

XLSX 无工作表

" - - selected = sheet_name if sheet_name and sheet_name in sheets else sheets[0] - ws = wb[selected] - - rows_data = [] - max_col = 0 - for row in ws.iter_rows(values_only=True): - vals = [str(c) if c is not None else "" for c in row] - max_col = max(max_col, len(vals)) - rows_data.append(vals) - wb.close() - - if not rows_data: - return "

工作表为空

" - - sheet_tabs = "".join( - f'' - for s in sheets - ) if len(sheets) > 1 else "" - - rows_html = [] - for i, row in enumerate(rows_data): - cells = [] - for j in range(max_col): - val = row[j] if j < len(row) else "" - val = val.replace("&", "&").replace("<", "<").replace(">", ">") - tag = "th" if i == 0 else "td" - cells.append(f"<{tag}>{val or ' '}") - rows_html.append(f"{''.join(cells)}") - - import json as _json - sheets_json = _json.dumps(sheets) - enc_path = _json.dumps(filepath) - - return f""" - - -{name} - - -{sheet_tabs} -{"".join(rows_html)}
- -""" + try: + sheets = wb.sheetnames + if not sheets: + return {"content": "(无工作表)", "sheet": "", "sheets": []} + selected = sheet_name if sheet_name and sheet_name in sheets else sheets[0] + ws = wb[selected] + lines = [] + for row in ws.iter_rows(values_only=True): + vals = ["" if c is None else str(c) for c in row] + lines.append("\t".join(vals)) + finally: + wb.close() + return {"content": "\n".join(lines), "sheet": selected, "sheets": sheets} -def _xls_to_html(filepath: str, sheet_name: str = "") -> str: - """将 XLS 文件转为 HTML 表格(使用 xlrd)。""" +def _xls_to_tsv(filepath: str, sheet_name: str = "") -> dict[str, Any]: + """将 XLS 工作表内容提取为 TSV 文本。""" try: import xlrd except ImportError: - return "

需要安装 xlrd: pip install xlrd

" - + return {"content": "(需要安装 xlrd 才能预览 XLS: pip install xlrd)", "sheet": "", "sheets": []} wb = xlrd.open_workbook(filepath) - name = os.path.basename(filepath) - sheets = wb.sheet_names() if not sheets: - return "

XLS 无工作表

" - + return {"content": "(无工作表)", "sheet": "", "sheets": []} selected = sheet_name if sheet_name and sheet_name in sheets else sheets[0] ws = wb.sheet_by_name(selected) - - rows_data = [] - max_col = ws.ncols + lines = [] for r in range(ws.nrows): vals = [] for c in range(ws.ncols): @@ -2087,58 +1898,9 @@ def _xls_to_html(filepath: str, sheet_name: str = "") -> str: v = xlrd.xldate_as_datetime(v, wb.datemode) except Exception: pass - vals.append(str(v) if v is not None else "") - rows_data.append(vals) - - if not rows_data: - return "

工作表为空

" - - import json as _json - enc_path = _json.dumps(filepath) - - sheet_tabs = "".join( - f'' - for s in sheets - ) if len(sheets) > 1 else "" - - rows_html = [] - for i, row in enumerate(rows_data): - cells = [] - for j in range(max_col): - val = row[j] if j < len(row) else "" - val = val.replace("&", "&").replace("<", "<").replace(">", ">") - tag = "th" if i == 0 else "td" - cells.append(f"<{tag}>{val}") - rows_html.append(f"{''.join(cells)}") - - return f""" - - -{name} - - -{sheet_tabs} -{"".join(rows_html)}
- -""" + vals.append("" if v is None else str(v)) + lines.append("\t".join(vals)) + return {"content": "\n".join(lines), "sheet": selected, "sheets": sheets} @app.get("/")