智能座舱信息抓取初步探索

新增模型

参考《本地服务器docker部署deepseek》部署基本模型,接下来部署几个备选模型,1.5b模型能力有限。

逻辑推理增强版:DeepSeek-R1-Distill-Qwen-7B

虽然你的显卡只有 6G,但这款模型是目前的“黄金性价比”之选。

  • 用途: 当 1.5B 模型的建议太笼统时,用它来做深度专利规避分析技术路线推演

  • 运行表现: 它会占用约 4.8GB 显存。由于你还有 64G 内存,即使上下文变长,系统也会自动分流到内存,不会崩溃。

  • 指令:

    Bash

    docker exec -it ollama ollama pull deepseek-r1:7b

长文档处理/知识库专家:Qwen2.5-7B-Instruct

如果你需要 AI 读完几十页的座舱技术手册或几百个专利摘要,Qwen 2.5 系列的稳定性非常好。

  • 用途: 它是非思考型模型,反应比 R1 快,适合做海量信息的分类、打标签和提取摘要

  • 指令:

    Bash

    docker exec -it ollama ollama pull qwen2.5:7b

多模态视觉专家(选装):Llava-v1.5-7B

座舱领域有很多 UI 界面图、中控屏布局图、专利附图。

  • 用途: 如果你想尝试让 AI 看懂一张蔚来的中控屏截图并分析其交互逻辑。你可以把图片传给它。

  • 指令:

    Bash

    docker exec -it ollama ollama pull llava

环境配置

创建咨询目录:

mkdir -p /mnt/expand/NEV_Intelligence/01_Daily_News      # 原始快讯
mkdir -p /mnt/expand/NEV_Intelligence/02_Patent_Strategy  # AI生成的专利建议
mkdir -p /mnt/expand/NEV_Intelligence/03_Obsidian_Vault   # Obsidian 库根目录

创建一个AI咨询专用的python虚拟环境

1. 安装虚拟环境工具

sudo apt install python3-venv python3-full -y

2.创建虚拟环境: 在你的脚本目录(例如 /home/kai/cockpit_agent)下执行:

python3 -m venv ~/venv_ai

3.激活并安装库:

source ~/venv_ai/bin/activate
# 现在你会看到命令行开头多了个 (venv_ai),这时再安装就没问题了
pip install feedparser requests
# 安装解析库
pip install beautifulsoup4

4.修改你的脚本运行方式: 以后手动执行时,先执行 source ~/venv_ai/bin/activate。 或者在 crontabrun_ai.sh 脚本中,使用虚拟环境的完整路径来运行: ~/venv_ai/bin/python3 /home/kai/cockpit_monitor.py

关于虚拟环境的简单使用说明:

python3 -m venv 名字 = 建个房间

source 名字/bin/activate = 走入房间(这时装东西是安全的)。

名字/bin/python3 脚本 = 隔空让房间里的 Python 干活(最适合自动化)。

安装完成后如果想要退出可以使用deactivate

功能探索

试水需求:

我希望每日跟踪智能座舱领域的行业动态,特别是蔚小理这类的头部企业(但是不限于这类企业)。同时希望了解这些企业在该领域的专利相关动向,结合动向提出相关的专利发散思考。

通过gemini生成基础脚本

cockpit_monitor.py

import requests
import feedparser
import os
import json
from datetime import datetime
from bs4 import BeautifulSoup

# --- 配置区 ---
OLLAMA_API = "http://localhost:11434/api/generate"
BASE_PATH = "/mnt/expand/NEV_Intelligence"
VAULT_PATH = os.path.join(BASE_PATH, "03_Obsidian_Vault")
NEWS_PATH = os.path.join(BASE_PATH, "01_Daily_News")
STRATEGY_PATH = os.path.join(BASE_PATH, "02_Patent_Strategy")

for p in [VAULT_PATH, NEWS_PATH, STRATEGY_PATH]:
    os.makedirs(p, exist_ok=True)

COMPANIES = ["蔚来", "小鹏", "理想", "华为", "比亚迪", "小米", "极氪", "特斯拉", "问界", "智界", "引望"]
TECH_WORDS = ["座舱", "交互", "专利", "车载", "大模型", "屏", "HMI", "系统", "软件", "智驾"]

def ask_ai(content):
    prompt = f"你是一个座舱专家,请针对以下动态给出专利布局发散想法:{content}"
    payload = {"model": "deepseek-r1:1.5b", "prompt": prompt, "stream": True}
    full_response = ""
    try:
        with requests.post(OLLAMA_API, json=payload, timeout=300, stream=True) as r:
            for line in r.iter_lines():
                if line:
                    chunk = json.loads(line.decode('utf-8'))
                    part = chunk.get('response', '')
                    full_response += part
                    print(part, end='', flush=True) 
        return full_response
    except Exception as e:
        return f"AI分析失败: {e}"

def run_task():
    date_str = datetime.now().strftime("%Y-%m-%d")
    all_findings = []

    # --- 渠道 1: 36Kr (RSS) ---
    print(f"[{datetime.now()}] 正在抓取 36Kr RSS...")
    try:
        kr_feed = feedparser.parse("https://36kr.com/feed")
        print(f"36Kr 发现 {len(kr_feed.entries)} 条原始条目")
        for entry in kr_feed.entries:
            all_findings.append({'title': entry.title, 'summary': entry.summary})
    except Exception as e:
        print(f"36Kr 抓取失败: {e}")

    # --- 渠道 2: 盖世汽车 (网页抓取) ---
    print(f"正在抓取 盖世汽车...")
    gasgoo_url = "https://auto.gasgoo.com/auto-news/C-103-106-107-108-109-110-303-409-501-601"
    try:
        r = requests.get(gasgoo_url, headers={'User-Agent': 'Mozilla/5.0'}, timeout=15)
        r.encoding = 'utf-8'
        soup = BeautifulSoup(r.text, 'html.parser')
        # 针对盖世结构的各种可能进行抓取
        items = soup.select('.list-item') or soup.select('.content') or soup.find_all('div', class_='content')
        for item in items:
            t = item.find('h4') or item.find('h2') or item.find('a')
            p = item.find('p')
            if t:
                all_findings.append({'title': t.get_text(strip=True), 'summary': p.get_text(strip=True) if p else ""})
        print(f"盖世汽车解析完成,共汇总待筛选条目: {len(all_findings)}")
    except Exception as e:
        print(f"盖世抓取异常: {e}")

    # --- 统一过滤与 AI 分析 ---
    match_count = 0
    full_report = f"# {date_str} 座舱情报汇总\n\n"

    # 建立一个集合防止两个源抓到重复的新闻
    seen_titles = set()

    for news in all_findings:
        title = news['title']
        if title in seen_titles: continue

        text = (title + news['summary']).lower()
        if any(c.lower() in text for c in COMPANIES) and any(t.lower() in text for t in TECH_WORDS):
            match_count += 1
            seen_titles.add(title)
            print(f"\n[{match_count}] 命中: {title}")

            # 存入 01
            with open(os.path.join(NEWS_PATH, f"{date_str}_news.txt"), "a", encoding="utf-8") as f:
                f.write(f"标题: {title}\n摘要: {news['summary']}\n\n")

            # AI 分析
            ai_strategy = ask_ai(title + " " + news['summary'])

            # 存入 02
            with open(os.path.join(STRATEGY_PATH, f"{date_str}_strategy.md"), "a", encoding="utf-8") as f:
                f.write(f"### {title}\n{ai_strategy}\n\n---\n")

            # 汇总 03
            full_report += f"## {title}\n\n**原文:** {news['summary']}\n\n**分析:**\n{ai_strategy}\n\n---\n"

    if match_count > 0:
        with open(os.path.join(VAULT_PATH, f"{date_str}_汇总报告.md"), "w", encoding="utf-8") as f:
            f.write(full_report)
        print(f"\n[成功] 处理完成,共生成 {match_count} 条报告。")
    else:
        print("\n[结果] 未发现匹配座舱动态的新闻。")

if __name__ == "__main__":
    run_task()

shell执行脚本:

#!/bin/bash

# 1. 确保 Ollama 容器在运行(如果没开则启动)
if [ ! "$(docker ps -q -f name=ollama)" ]; then
    echo "正在启动 Ollama 容器..."
    docker start ollama
    # 给模型加载留一点点时间
    sleep 15
fi

# 2. 检查硬盘是否挂载
if [ ! -d "/mnt/expand/NEV_Intelligence" ]; then
    echo "错误:硬盘未挂载在 /mnt/expand,请检查硬件!"
    exit 1
fi

# 3. 执行 Python 分析脚本
echo "正在抓取新能源汽车行业动态并调用 DeepSeek 进行专利发散分析..."
~/venv_ai/bin/python3 ./cockpit_monitor.py

echo "分析完成!请打开 Obsidian 查看报告。"

至于生成的结果,嗯~ 没眼看~,怎么才能优化好一些?

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇