iflytek summary + cleanup

This commit is contained in:
Beast
2026-06-13 16:47:59 +08:00
parent f883c1ff31
commit 6dd5d86c8b
11 changed files with 433 additions and 195 deletions

View File

@ -0,0 +1,68 @@
import sys, os
sys.path.insert(0, "/home/ubuntu/inspiration-collector")
from tools.config import load_secrets, get_output_dir
from tools.llm import DeepSeekClient
from tools.memos_client import MemosClient
from datetime import datetime, timezone, timedelta
import subprocess
secrets = load_secrets()
mc = MemosClient(secrets.get("memos_url", "http://localhost:5230"), secrets["memos_token"])
llm = DeepSeekClient(secrets["deepseek_api_key"], secrets.get("deepseek_model", "deepseek-chat"), temperature=0.5)
TZ_BJ = timezone(timedelta(hours=8))
memos = mc.list_memos(days=7)
zju_keys = ["浙大", "浙江大学", "章丰", "有为与有效", "王坚", "黑土地", "牧场", "蓝天", "AI驱动", "产业发展新逻辑"]
thu_keys = ["清华", "清华大学", "企业战略", "价值网", "战略转折点", "只有偏执狂", "创新者的窘境", "精益创业", "反脆弱", "第二曲线"]
zju_memos = [m for m in memos if any(k in m["content"] for k in zju_keys)]
thu_memos = [m for m in memos if any(k in m["content"] for k in thu_keys)]
def fmt_memos(ms):
lines = []
for m in ms:
ct = m["created_at"]
try:
dt = datetime.fromisoformat(ct.replace("Z", "+00:00")) + timedelta(hours=8)
ts = dt.strftime("%m/%d %H:%M")
except:
ts = ct[:16]
lines.append("- **[" + ts + "]** " + m["content"].strip())
return "\n\n".join(lines)
zju_text = fmt_memos(zju_memos) or "(无浙大相关内容)"
thu_text = fmt_memos(thu_memos) or "(无清华相关内容)"
user_prompt = "以下是我在浙大和清华两所大学学习的记录,请分析两者之间的关联:\n\n"
user_prompt += "## 浙大学习内容\n\n" + zju_text + "\n\n"
user_prompt += "## 清华学习内容\n\n" + thu_text + "\n\n"
user_prompt += "请重点分析1) 两个课程各自的核心理念 2) 两者之间是否存在逻辑关联或互补关系 3) 这些知识如何融合并指导我的实践"
system_prompt = """你是一个学习伙伴。用户先后在浙江大学和清华大学参加了培训,记录了学习心得。
请对两个课程的内容进行对比分析,找出其中的关联和互补关系。
要求引用原文、融会贯通、有实质内容不少于2000字。输出纯Markdown。"""
result = llm.ask(system_prompt=system_prompt, user_prompt=user_prompt)
date = datetime.now(timezone.utc)
now_bj = datetime.now(TZ_BJ)
content = "---\ndate: " + date.strftime("%Y-%m-%d") + "\ntype: cross-analysis\ntags: [浙大, 清华, 对比分析]\n---\n\n"
content += result
daily_dir = os.path.join(get_output_dir("daily"), date.strftime("%Y-%m-%d"))
os.makedirs(daily_dir, exist_ok=True)
now_str = now_bj.strftime("%H%M%S")
fname = date.strftime("%Y-%m-%d") + "_zju_thu_cross_analysis_" + now_str + ".md"
fpath = os.path.join(daily_dir, fname)
with open(fpath, "w", encoding="utf-8") as f:
f.write(content)
print("Done: " + fpath + " (" + str(len(result)) + " chars)")
proj = "/home/ubuntu/inspiration-collector"
subprocess.run(["git", "add", fpath], cwd=proj, capture_output=True, timeout=15)
subprocess.run(["git", "commit", "-m", "zju-thu cross analysis " + now_str], cwd=proj, capture_output=True, timeout=15)
subprocess.run(["git", "push", "origin", "main"], cwd=proj, capture_output=True, timeout=30)
print("Pushed to Gitea")

View File

@ -180,7 +180,7 @@ def run(memos_client, llm_client, date=None):
if not memos:
logger.info("No memos today, skipping")
content = format_daily_digest(date, ai_body="今天没有记录灵感。")
content = format_daily_digest(date, ai_body="今天没有记录灵感。", tags=["灵感收集器", "每日总结", "静默"], doc_type="daily-digest")
date_str = date.strftime("%Y-%m-%d")
daily_dir = os.path.join(get_output_dir("daily"), date_str)
os.makedirs(daily_dir, exist_ok=True)
@ -223,7 +223,7 @@ def run(memos_client, llm_client, date=None):
)
# Step 5: Wrap with frontmatter and write
content = format_daily_digest(date, ai_body=raw_response)
content = format_daily_digest(date, ai_body=raw_response, tags=["灵感收集器", "每日总结", "AI分析"], doc_type="daily-digest")
date_str = date.strftime("%Y-%m-%d")
daily_dir = os.path.join(get_output_dir("daily"), date_str)

View File

@ -0,0 +1,118 @@
import sys, os, json
sys.path.insert(0, "/home/ubuntu/inspiration-collector")
from tools.config import load_secrets, get_output_dir
from tools.llm import DeepSeekClient
from tools.memos_client import MemosClient
from datetime import datetime, timezone, timedelta
import subprocess
secrets = load_secrets()
mc = MemosClient(secrets.get("memos_url", "http://localhost:5230"), secrets["memos_token"])
llm = DeepSeekClient(secrets["deepseek_api_key"], secrets.get("deepseek_model", "deepseek-chat"), temperature=0.7, max_retries=5)
TZ_BJ = timezone(timedelta(hours=8))
VAULT = "/home/ubuntu/obsidian-vault"
def read_vault_sample():
parts = []
dirs_to_read = [
"01 写作/随笔", "03 日志/日省录", "03 日志/交易日志",
"00 Inbox", "05 投资交易", "02 阅读学习/微信读书阅读摘录"
]
for rel in dirs_to_read:
d = os.path.join(VAULT, rel)
if not os.path.isdir(d): continue
files = sorted([f for f in os.listdir(d) if f.endswith(".md")])
for fname in files[:5]:
fpath = os.path.join(d, fname)
try:
with open(fpath, "r", encoding="utf-8", errors="ignore") as f:
c = f.read()
if c.startswith("---"):
idx = c.find("---", 3)
if idx != -1: c = c[idx+3:].strip()
if len(c) > 1500: c = c[:1500] + "\n...[截断]"
parts.append("### " + fname + "\n\n" + c)
except: pass
return "\n\n".join(parts)
# Also read key philosophical/life reflection pieces
def read_key_writings():
key_files = [
"01 写作/随笔/朝闻道,夕死可矣之我见.md",
"01 写作/随笔/君子不立危墙之下.md",
"01 写作/随笔/我曾在魔窟走过一遭.md",
"01 写作/随笔/很多人的一生,就是狗生.md",
"01 写作/随笔/长时间的深入思考,才有可能灵光一闪.md",
"01 写作/个人修养十八字.md",
"01 写作/我的个人规则.md",
"01 写作/道之既出,淡乎其无味.md",
]
parts = []
for rel in key_files:
fp = os.path.join(VAULT, rel)
if not os.path.isfile(fp): continue
try:
with open(fp, "r", encoding="utf-8", errors="ignore") as f:
c = f.read()
if c.startswith("---"):
idx = c.find("---", 3)
if idx != -1: c = c[idx+3:].strip()
if len(c) > 2000: c = c[:2000] + "\n...[截断]"
parts.append("### " + rel + "\n\n" + c)
except: pass
return "\n\n".join(parts)
memos_raw = mc.list_memos(days=30)
memo_texts = []
for m in memos_raw:
ct = m["created_at"]
try:
dt = datetime.fromisoformat(ct.replace("Z", "+00:00")) + timedelta(hours=8)
ts = dt.strftime("%m/%d %H:%M")
except:
ts = ct[:16]
memo_texts.append("- [" + ts + "] " + m["content"].strip())
memo_block = "\n".join(memo_texts[-50:])
print("Reading vault...")
vault_sample = read_vault_sample()
key_writings = read_key_writings()
prompt = "以下是一个人的全部思想素材——他的私人写作、哲学思考、阅读笔记、日常灵感。请基于这些素材进行深度人格分析。\n\n"
prompt += "## 一、代表性随笔与哲学思考\n\n" + key_writings + "\n\n"
prompt += "## 二、文库代表性笔记\n\n" + vault_sample[:8000] + "\n\n"
prompt += "## 三、近期灵感碎片\n\n" + memo_block + "\n\n"
prompt += "请从三个维度回答:\n\n"
prompt += "### 1. 人格素描\n"
prompt += "用500字左右描述这个人的核心人格特征——他的动力来源、思维模式、情感模式、与世界互动的方式。不要套用MBTI标签用他自己的语言和事例说话。\n\n"
prompt += "### 2. 最适合的哲学流派与作者\n"
prompt += "分析他天然亲近哪个哲学流派(存在主义?斯多葛?道家?儒家?尼采?),以及哪位作者的思想与他最为共振。要给出具体理由,引用他原文中的证据。\n\n"
prompt += "### 3. 生命之书类比\n"
prompt += "如果有人把他的思想、经历、感悟编撰成一本书,这本书会和市面上哪本现成的书最为相似?可以是小说、哲学著作、传记、随笔集。分析相似之处和差异。\n\n"
prompt += "请输出纯Markdown字数不限但务必有实质、有证据、有引用。"
sp = "你是一个深度的文本分析者和人格解读者。你将从一个人的全部写作素材中提炼出他的人格内核、哲学倾向和思想谱系。用他的原文作为证据不要泛泛而谈。输出纯Markdown。"
print("Calling DeepSeek API...")
result = llm.ask(system_prompt=sp, user_prompt=prompt)
date = datetime.now(timezone.utc)
now_bj = datetime.now(TZ_BJ)
content = "---\ndate: " + date.strftime("%Y-%m-%d") + "\ntype: personality-deep\ntags: [人格分析, 哲学, 深度解读]\n---\n\n"
content += result
daily_dir = os.path.join(get_output_dir("daily"), date.strftime("%Y-%m-%d"))
os.makedirs(daily_dir, exist_ok=True)
now_str = now_bj.strftime("%H%M%S")
fname = date.strftime("%Y-%m-%d") + "_personality_deep_" + now_str + ".md"
fpath = os.path.join(daily_dir, fname)
with open(fpath, "w", encoding="utf-8") as f:
f.write(content)
print("Done: " + fpath + " (" + str(len(result)) + " chars)")
proj = "/home/ubuntu/inspiration-collector"
subprocess.run(["git", "add", fpath], cwd=proj, capture_output=True, timeout=15)
subprocess.run(["git", "commit", "-m", "deep personality analysis " + now_str], cwd=proj, capture_output=True, timeout=15)
subprocess.run(["git", "push", "origin", "main"], cwd=proj, capture_output=True, timeout=30)
print("Pushed")

64
analyzers/thu_analysis.py Normal file
View File

@ -0,0 +1,64 @@
import sys, os
sys.path.insert(0, "/home/ubuntu/inspiration-collector")
from tools.config import load_secrets, get_output_dir
from tools.llm import DeepSeekClient
from tools.memos_client import MemosClient
from datetime import datetime, timezone, timedelta
import subprocess
secrets = load_secrets()
mc = MemosClient(secrets.get("memos_url", "http://localhost:5230"), secrets["memos_token"])
llm = DeepSeekClient(secrets["deepseek_api_key"], secrets.get("deepseek_model", "deepseek-chat"), temperature=0.5)
TZ_BJ = timezone(timedelta(hours=8))
memos = mc.list_memos(days=7)
keywords = ["清华", "清华大学", "企业战略", "价值网", "战略转折点"]
thu_memos = []
for m in memos:
if any(kw in m["content"] for kw in keywords):
thu_memos.append(m)
if not thu_memos:
print("未找到清华相关灵感")
sys.exit(0)
lines = []
for m in thu_memos:
ct = m["created_at"]
try:
dt = datetime.fromisoformat(ct.replace("Z", "+00:00")) + timedelta(hours=8)
ts = dt.strftime("%m/%d %H:%M")
except:
ts = ct[:16]
lines.append("- **[" + ts + "]** " + m["content"].strip())
user_prompt = "以下是我在清华大学学习期间记录的灵感,请基于此写一篇专题分析:\n\n" + "\n\n".join(lines)
user_prompt += "\n\n请重点分析1) 课程的核心理论框架 2) 推荐的书籍背景介绍 3) 这些知识如何与我的实践相结合"
system_prompt = """你是一个私人学习伙伴。用户正在清华大学参加培训,以下是他记录的与企业战略课程相关的灵感。
请只分析这些内容,不要涉及其他话题。
要求引用原文、融会贯通、有实质内容不少于2000字。输出纯Markdown。"""
result = llm.ask(system_prompt=system_prompt, user_prompt=user_prompt)
date = datetime.now(timezone.utc)
now_bj = datetime.now(TZ_BJ)
content = "---\ndate: " + date.strftime("%Y-%m-%d") + "\ntype: thu-special\ntags: [清华学习, 企业战略, 专题分析]\n---\n\n"
content += result
daily_dir = os.path.join(get_output_dir("daily"), date.strftime("%Y-%m-%d"))
os.makedirs(daily_dir, exist_ok=True)
now_str = now_bj.strftime("%H%M%S")
fname = date.strftime("%Y-%m-%d") + "_thu_analysis_" + now_str + ".md"
fpath = os.path.join(daily_dir, fname)
with open(fpath, "w", encoding="utf-8") as f:
f.write(content)
print("Done: " + fpath + " (" + str(len(result)) + " chars)")
proj = "/home/ubuntu/inspiration-collector"
subprocess.run(["git", "add", fpath], cwd=proj, capture_output=True, timeout=15)
subprocess.run(["git", "commit", "-m", "thu analysis " + now_str], cwd=proj, capture_output=True, timeout=15)
subprocess.run(["git", "push", "origin", "main"], cwd=proj, capture_output=True, timeout=30)
print("Pushed to Gitea")

66
analyzers/zju_analysis.py Normal file
View File

@ -0,0 +1,66 @@
import sys, os, json
sys.path.insert(0, '/home/ubuntu/inspiration-collector')
from tools.config import load_secrets, get_output_dir
from tools.llm import DeepSeekClient
from tools.memos_client import MemosClient
from datetime import datetime, timezone, timedelta
import subprocess
secrets = load_secrets()
mc = MemosClient(secrets.get("memos_url", "http://localhost:5230"), secrets["memos_token"])
llm = DeepSeekClient(secrets["deepseek_api_key"], secrets.get("deepseek_model", "deepseek-chat"), temperature=0.5)
TZ_BJ = timezone(timedelta(hours=8))
memos = mc.list_memos(days=7)
keywords = ["浙大", "浙江大学", "章丰", "有为与有效", "王坚", "黑土地", "牧场", "蓝天", "AI驱动", "产业发展新逻辑"]
zju_memos = []
for m in memos:
content = m["content"]
if any(kw in content for kw in keywords):
zju_memos.append(m)
if not zju_memos:
print("未找到浙大相关灵感")
sys.exit(0)
lines = []
for m in zju_memos:
ct = m["created_at"]
try:
dt = datetime.fromisoformat(ct.replace("Z", "+00:00")) + timedelta(hours=8)
ts = dt.strftime("%m/%d %H:%M")
except:
ts = ct[:16]
line = "- **[" + ts + "]** " + m["content"].strip()
lines.append(line)
user_prompt = "以下是我在浙江大学学习期间记录的灵感,请基于此写一篇专题分析:\n\n" + "\n\n".join(lines)
user_prompt += "\n\n请重点分析1) 课程的核心内容 2) 推荐的书和人物的背景介绍 3) 这些知识如何与我的个人系统构建相结合"
system_prompt = """你是一个私人学习伙伴。用户正在浙江大学参加培训,以下是他记录的与学习相关的灵感。
请只分析这些内容,不要涉及其他话题。
要求引用原文、融会贯通、有实质内容不少于2000字。输出纯Markdown。"""
result = llm.ask(system_prompt=system_prompt, user_prompt=user_prompt)
date = datetime.now(timezone.utc)
now_bj = datetime.now(TZ_BJ)
content = "---\ndate: " + date.strftime("%Y-%m-%d") + "\ntype: zju-special\ntags: [浙大学习, 专题分析]\n---\n\n"
content += result
daily_dir = os.path.join(get_output_dir("daily"), date.strftime("%Y-%m-%d"))
os.makedirs(daily_dir, exist_ok=True)
now_str = now_bj.strftime("%H%M%S")
fname = date.strftime("%Y-%m-%d") + "_zju_analysis_" + now_str + ".md"
fpath = os.path.join(daily_dir, fname)
with open(fpath, "w", encoding="utf-8") as f:
f.write(content)
print("Done: " + fpath + " (" + str(len(result)) + " chars)")
proj = "/home/ubuntu/inspiration-collector"
subprocess.run(["git", "add", fpath], cwd=proj, capture_output=True, timeout=15)
subprocess.run(["git", "commit", "-m", "zju analysis " + now_str], cwd=proj, capture_output=True, timeout=15)
subprocess.run(["git", "push", "origin", "main"], cwd=proj, capture_output=True, timeout=30)
print("Pushed to Gitea")

52
analyzers/zju_brief.py Normal file
View File

@ -0,0 +1,52 @@
import sys, os
sys.path.insert(0, "/home/ubuntu/inspiration-collector")
from tools.config import load_secrets, get_output_dir
from tools.llm import DeepSeekClient
from tools.memos_client import MemosClient
from datetime import datetime, timezone, timedelta
import subprocess
secrets = load_secrets()
mc = MemosClient(secrets.get("memos_url", "http://localhost:5230"), secrets["memos_token"])
llm = DeepSeekClient(secrets["deepseek_api_key"], secrets.get("deepseek_model", "deepseek-chat"), temperature=0.3)
TZ_BJ = timezone(timedelta(hours=8))
memos = mc.list_memos(days=7)
keywords = ["浙大", "浙江大学", "章丰", "有为与有效", "王坚", "黑土地", "牧场", "蓝天", "AI驱动", "产业发展新逻辑"]
zju_memos = [m for m in memos if any(k in m["content"] for k in keywords)]
lines = []
for m in zju_memos:
ct = m["created_at"]
try:
dt = datetime.fromisoformat(ct.replace("Z", "+00:00")) + timedelta(hours=8)
ts = dt.strftime("%m/%d %H:%M")
except:
ts = ct[:16]
lines.append("- **[" + ts + "]** " + m["content"].strip())
prompt = "以下是我在浙大学习的相关灵感请简要分析章丰老师课程的最新内容1000字左右\n\n" + "\n\n".join(lines)
sp = "你是一个学习伙伴对浙大课程内容进行简要分析。控制在1000字左右输出纯Markdown。"
result = llm.ask(system_prompt=sp, user_prompt=prompt)
date = datetime.now(timezone.utc)
now_bj = datetime.now(TZ_BJ)
content = "---\ndate: " + date.strftime("%Y-%m-%d") + "\ntype: zju-brief\ntags: [浙大, 简要分析]\n---\n\n"
content += result
daily_dir = os.path.join(get_output_dir("daily"), date.strftime("%Y-%m-%d"))
os.makedirs(daily_dir, exist_ok=True)
now_str = now_bj.strftime("%H%M%S")
fname = date.strftime("%Y-%m-%d") + "_zju_brief_" + now_str + ".md"
fpath = os.path.join(daily_dir, fname)
with open(fpath, "w", encoding="utf-8") as f:
f.write(content)
print("Done: " + fpath + " (" + str(len(result)) + " chars)")
proj = "/home/ubuntu/inspiration-collector"
subprocess.run(["git", "add", fpath], cwd=proj, capture_output=True, timeout=15)
subprocess.run(["git", "commit", "-m", "zju brief " + now_str], cwd=proj, capture_output=True, timeout=15)
subprocess.run(["git", "push", "origin", "main"], cwd=proj, capture_output=True, timeout=30)
print("Pushed")