v0.20 alpha skill-driven python core

This commit is contained in:
kai
2026-05-06 16:26:41 +08:00
parent d1169646b8
commit db626f1d58
87 changed files with 5213 additions and 2865 deletions
+61
View File
@@ -0,0 +1,61 @@
"""Reference-list generation from Deep Research sources.jsonl."""
from __future__ import annotations
import json
import re
from pathlib import Path
def cited_source_keys(md_text: str) -> set[str]:
return set(re.findall(r"\[src_([a-zA-Z0-9_-]+)\]", md_text))
def build_references_block(sources_path: Path | None, md_text: str) -> str:
"""Build a compact references section for actually cited src IDs."""
if not sources_path or not sources_path.exists():
return "(参考文献列表:sources.jsonl 未找到)"
cited = cited_source_keys(md_text)
if not cited:
return ""
sources: dict[str, dict] = {}
with sources_path.open(encoding="utf-8") as f:
for line in f:
line = line.strip()
if not line:
continue
try:
obj = json.loads(line)
except json.JSONDecodeError:
continue
sid = obj.get("id", "")
key = sid.replace("src_", "")
if key in cited:
sources[sid] = obj
if not sources:
return ""
lines = ["## 参考文献\n"]
for sid in sorted(sources.keys()):
s = sources[sid]
authors = ", ".join(s.get("authors", [])) if s.get("authors") else ""
year = s.get("year", "")
title = s.get("title", sid)
venue = s.get("venue", "")
url = s.get("url", "")
entry = f"- **[{sid}]** "
if authors:
entry += f"{authors}. "
if year:
entry += f"({year}). "
entry += f"*{title}*"
if venue:
entry += f". {venue}"
if url:
entry += f". <{url}>"
lines.append(entry)
return "\n".join(lines)