创建工程

This commit is contained in:
2026-06-03 21:53:25 +08:00
parent 5f33329cfd
commit 37199970c9
41 changed files with 5742 additions and 0 deletions

115
src/main.py Normal file
View File

@@ -0,0 +1,115 @@
# ---------------------------------------------------------------------------
# 辅助函数
# ---------------------------------------------------------------------------
def language_rule(source_content: str, configured_language: str | None = None) -> str:
"""
生成语言规则提示。
参数
----------
source_content : str
用于语言检测回退的源文档文本。
configured_language : str | None
明确配置的输出语言(如 "Chinese""English""auto")。
传入 ``None`` 或 ``"auto"`` 以自动检测。
返回
-------
str
语言规则提示字符串。
"""
if configured_language and configured_language.lower() != "auto":
return f"使用 {configured_language} 语言输出分析报告。"
# 简单的语言检测回退
if source_content and any("\u4e00" <= char <= "\u9fff" for char in source_content[:500]):
return "源文档包含中文内容,使用简体中文输出分析报告。"
return "使用与源文档相同的语言输出分析报告。"
# ---------------------------------------------------------------------------
# 主函数build_analysis_prompt
# ---------------------------------------------------------------------------
def build_analysis_prompt(
purpose: str,
index: str,
source_content: str = "",
configured_language: str | None = None,
) -> str:
"""
第一步提示AI 阅读源文档并生成结构化分析报告。
这是「讨论」步骤——AI 在撰写 wiki 页面之前先对源文档进行推理。
参数
----------
purpose : str
wiki/purpose.md 的内容(可能为空)。
index : str
wiki/index.md 的内容(可能为空)。
source_content : str
用于语言检测回退的源文档文本。
configured_language : str | None
显式覆盖语言设置。传入 ``None`` 时从配置文件读取。
返回
-------
str
完整的系统提示字符串。
"""
from config import get_language
if configured_language is None:
configured_language = get_language()
parts: list[str] = [
"你是一位专业研究分析师。阅读源文档并产出一份结构化的分析报告。",
"不要输出思维链、隐藏推理或思考过程。在内部进行推理,只撰写简洁的最终分析。",
"",
language_rule(source_content, configured_language),
"",
"你的分析需要包含:",
"",
"## 关键实体",
"列出文档中提到的人物、组织、产品、数据集、工具、芯片、算法等。对于每一项:",
"- 名称和类型",
"- 在源文档中的角色(核心还是边缘)",
"- 是否可能已存在于 wiki 中(查阅索引)",
"",
"## 关键概念",
"列出理论、方法、技术、现象。对于每一项:",
"- 名称和简要定义",
"- 为什么在源文档中重要",
"- 是否可能已存在于 wiki 中",
"",
"## 主要论点与发现",
"- 核心主张或结果是什么?",
"- 有什么证据支持这些主张?",
"- 证据的强度如何?",
"",
"## 与现有 Wiki 的关联",
"- 源文档与哪些现有页面相关?",
"- 它是否强化、挑战或扩展了现有知识?",
"",
"## 矛盾与张力",
"- 源文档中是否有任何内容与现有 wiki 内容冲突?",
"- 是否存在内部矛盾或注意事项?",
"",
"## 建议",
"- 应该创建或更新哪些 wiki 页面?",
"- 应该强调什么,弱化什么?",
"- 是否有任何需要向用户指出的开放性问题?",
"",
"分析要全面但简洁,专注于真正重要的内容。",
"",
"如果提供了文件夹上下文,请将其作为分类的提示——文件夹结构通常反映了用户的组织意图(例如,'papers/energy' 表示该文件是与能源相关的论文)。",
"",
f"## Wiki 目的(供参考)\n{purpose}" if purpose else "",
(f"## 当前 Wiki 索引(用于检查现有内容)\n{index}" if index else ""),
]
# 过滤空字符串并用换行符连接
return "\n".join(part for part in parts if part)