96 lines
4.6 KiB
Python
96 lines
4.6 KiB
Python
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))
|
||
PROJ = '/home/ubuntu/inspiration-collector'
|
||
|
||
memos = mc.list_memos(days=1)
|
||
keywords = ['厉敏','数字浙江','数字经济','一号工程','科技革命','产业变革','四次革命']
|
||
target = [m for m in memos if any(k in m['content'] for k in keywords)]
|
||
|
||
lines = []
|
||
for m in target:
|
||
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())
|
||
|
||
text = '\n\n'.join(lines)
|
||
|
||
server_services = (
|
||
'【用户服务器上实际部署的服务】\n'
|
||
'- Gitea(代码仓库,作为数据中枢,汇聚灵感和交易记录)\n'
|
||
'- Memos(灵感捕获,零碎想法随手记)\n'
|
||
'- AI智能体 chat.xybkwd.top(AI对话,可调取Gitea文库、Memos、博客,运行灵感分析)\n'
|
||
'- Freqtrade(量化交易引擎,运行ETH/USDT策略)\n'
|
||
'- 个人导航页 nav.xybkwd.top(个人信息入口)\n'
|
||
'- 博客(个人写作输出)\n'
|
||
'- 密码管理器(Vaultwarden)\n'
|
||
'- Obsidian 文库(602篇笔记,推送至Gitea)\n'
|
||
'- Halo(博客平台)\n'
|
||
'- 灵感收集器 daily_digest(自动分析Memos推送到Gitea)'
|
||
)
|
||
|
||
sp = (
|
||
'将以下课程学习记录整理成个人学习笔记。\n\n'
|
||
'要求:\n'
|
||
'1. 逻辑层次清晰,用自然分段和小标题体现结构,不要教科书式条目,也不要大段无层次文字\n'
|
||
'2. 对关键概念补充必要的背景信息(如技术革命的简要说明、人物背景等),让笔记有信息厚度\n'
|
||
'3. 开头记录客观信息:时间、地点、课程名称、授课老师(如有背景简介也写上)\n'
|
||
'4. 文风克制客观,不用第一人称和抒情,这是给自己看的笔记\n'
|
||
'5. 篇幅适中(约1500-2000字)\n'
|
||
'6. 【重要】区分课程内容与用户个人思考。记录中标记"我"、"自己"、"想到"等主观表述的,是用户自己的思考和感悟。**所有个人思考必须进入"延伸思考"段落,一条都不能混入正文内容中。** 正文只陈述课程内容和公开背景知识。\n'
|
||
'7. 【重要】记录中可能包含对本文写作的元指令(如"在本文中XXX"),这类指令不是课程笔记内容,而是用户对写作的要求,请识别并执行。\n'
|
||
'8. 【重要】保留用户记录中所有的个人思考和感悟,不要遗漏任何一条。延伸思考须全部列出,逐条呈现。\n\n'
|
||
'输出纯Markdown。'
|
||
)
|
||
|
||
teacher_bio = (
|
||
'【授课老师背景】\n'
|
||
'厉敏,曾任浙江省经济和信息化厅副厅长、党组成员,'
|
||
'长期分管浙江省信息化、数字经济及产业发展工作,'
|
||
'是浙江数字经济的主要谋划者和实践者,'
|
||
'主持浙江数字化改革和数字经济"一号工程"相关政策体系的制定与落地。'
|
||
)
|
||
|
||
prompt = (
|
||
'以下是在浙江大学学习的记录:\n\n'
|
||
+ text
|
||
+ '\n\n【授课老师背景】\n' + teacher_bio.strip()
|
||
+ '\n\n' + server_services.strip()
|
||
)
|
||
result = llm.ask(system_prompt=sp, user_prompt=prompt)
|
||
|
||
cc = len(result.replace(' ','').replace('\n',''))
|
||
rm = max(1, round(cc/300))
|
||
|
||
content = '---\ndate: 2026-06-14\ntype: zju-analysis\ntags: [浙大, 学习分析]\n---\n\n'
|
||
content += '> 本文共 **' + str(cc) + '** 字 · 预计阅读 **' + str(rm) + '** 分钟\n\n'
|
||
content += result
|
||
|
||
daily_dir = os.path.join(get_output_dir('daily'), '2026-06-14')
|
||
os.makedirs(daily_dir, exist_ok=True)
|
||
|
||
now_str = datetime.now(TZ_BJ).strftime('%H%M%S')
|
||
fname = '01_浙大学习分析_v' + now_str + '.md'
|
||
fpath = os.path.join(daily_dir, fname)
|
||
with open(fpath, 'w') as f:
|
||
f.write(content)
|
||
|
||
print('Done: ' + fpath + ' (' + str(cc) + ' chars)')
|
||
subprocess.run(['git','add','-A'], cwd=PROJ, capture_output=True, timeout=15)
|
||
subprocess.run(['git','commit','-m','zju v4 preserve all extension thoughts'], cwd=PROJ, capture_output=True, timeout=15)
|
||
subprocess.run(['git','push','origin','main'], cwd=PROJ, capture_output=True, timeout=30)
|
||
print('Pushed')
|