From 8e0a9f94f6801e944c0a10dbb19bc67bb733d18b Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 28 Mar 2026 11:03:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(agent):=20=E5=9C=A8=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E8=AF=8D=E4=B8=AD=E6=B3=A8=E5=85=A5MoviePilo?= =?UTF-8?q?t=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/agent/prompt/Agent Prompt.txt | 5 +++- app/agent/prompt/__init__.py | 49 ++++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/app/agent/prompt/Agent Prompt.txt b/app/agent/prompt/Agent Prompt.txt index 1f9d9c84..4300833a 100644 --- a/app/agent/prompt/Agent Prompt.txt +++ b/app/agent/prompt/Agent Prompt.txt @@ -57,4 +57,7 @@ Specific markdown rules: {markdown_spec} -Today's date: {current_date} + +{moviepilot_info} +- 今日日期: {current_date} + diff --git a/app/agent/prompt/__init__.py b/app/agent/prompt/__init__.py index acaa7b57..fd44d006 100644 --- a/app/agent/prompt/__init__.py +++ b/app/agent/prompt/__init__.py @@ -83,15 +83,62 @@ class PromptManager: "DO NOT output any content whatsoever until your final summary reply." ) + # MoviePilot系统信息 + moviepilot_info = self._get_moviepilot_info() + # 始终替换占位符,避免后续 .format() 时因残留花括号报 KeyError base_prompt = base_prompt.format( markdown_spec=markdown_spec, verbose_spec=verbose_spec, - current_date=strftime("%Y-%m-%d") + current_date=strftime("%Y-%m-%d"), + moviepilot_info=moviepilot_info, ) return base_prompt + def _get_moviepilot_info(self) -> str: + """ + 获取MoviePilot系统信息,用于注入到系统提示词中 + """ + import socket + + try: + hostname = socket.gethostname() + ip_address = socket.gethostbyname(hostname) + except Exception: + hostname = "localhost" + ip_address = "127.0.0.1" + + config_path = str(settings.CONFIG_PATH) + log_path = str(settings.LOG_PATH) + + api_port = settings.PORT + api_path = settings.API_V1_STR + + if settings.APP_DOMAIN: + domain = settings.APP_DOMAIN + if domain.startswith("http://") or domain.startswith("https://"): + api_url = f"{domain}{api_path}" + else: + api_url = f"https://{domain}{api_path}" + else: + api_url = f"http://{ip_address}:{api_port}{api_path}" + + api_token = settings.API_TOKEN or "未设置" + + info_lines = [ + f"- 主机名: {hostname}", + f"- IP地址: {ip_address}", + f"- API地址: {api_url}", + f"- API端口: {api_port}", + f"- API路径: {api_path}", + f"- API令牌: {api_token}", + f"- 配置文件目录: {config_path}", + f"- 日志文件目录: {log_path}", + ] + + return "\n".join(info_lines) + @staticmethod def _generate_formatting_instructions(caps: ChannelCapabilities) -> str: """