欢迎光临
我们一直在努力

【技术干货】从 AI 原生浏览器到本地智能体:开发者如何搭建自己的隐私优先 AI 工作流

摘要

Neo 这类 AI 原生浏览器展示了一个重要趋势:AI 从“外挂工具”变成系统级基础设施,深度嵌入浏览、写作、阅读等场景。本文从开发者视角拆解其核心能力(本地推理、上下文记忆、文档处理、内联生成等),并基于兼容 OpenAI 的 API(以薛定猫 AI 为例)给出一份可运行的 Python 实战代码,帮助你在自己的应用里复刻类似的 AI 工作流。


一、背景介绍:从“AI 插件”到“AI 原生浏览器”

视频中的 Neo/Neil 浏览器,本质上不是“多了个聊天窗口”的普通浏览器,而是一个围绕 AI 重新设计的浏览器内核 + 工作流系统,核心特征包括:

  • 隐私优先 / 本地执行:聊天记录、浏览历史、AI 建议尽可能在本地处理,最小化数据外发。
  • 系统级集成:AI 能在侧边栏、输入框、Notepad、Tab 管理等多个 UI 层面内联触发。
  • 上下文记忆与个性化:基于你的使用行为构建长期偏好(写作风格、常用任务、阅读兴趣等)。
  • 多模态能力:文档解析、代码辅助、图片生成在同一工作流中打通。

对开发者而言,这类产品的技术价值不在 UI,而在于背后的通用模式:“上下文管理 + 本地/云端模型推理 + 安全控制 + 场景化触发”。


二、核心原理拆解:Neo 类 AI 浏览器在做什么?

结合字幕内容,可以抽象出几个关键能力模块,完全可以在自己的系统中复用。

2.1 本地优先与隐私控制

视频多次强调:

  • 所有内容“stay on your device”
  • 用户可精细控制“Neo 记住或忘记什么”
  • 内建安全能力(Norton 级别的钓鱼 / 恶意链接拦截)

从架构视角看,这是典型的:

  • 本地向量索引 / 偏好存储:在本地数据库(SQLite / DuckDB / 文件系统)存用户长期偏好、向量检索索引。
  • 云端大模型推理最小暴露:只发送经过脱敏 & 截断的必要上下文。
  • 安全过滤前置:URL 打开前由安全模块先做一次分类/过滤(可用专用安全 API 或自训练分类模型)。

2.2 上下文与记忆机制

字幕中多处体现记忆与个性化能力:

  • 记住“我的写作风格”
  • 根据使用行为推荐个性化内容 feed
  • 通过历史使用积累更多上下文

落到实现,大致是两层记忆:

  • 短期会话记忆:当前对话历史(Chat History)。
  • 长期用户记忆:
    • 静态偏好:写作语气、语言、专业领域;
    • 动态行为:访问话题、常用 snippet 模板、常见任务(比如“帮我写邮件”)。
  • 常见实现方式:

    • 将重要片段(模型判定/人工标记)写入本地持久化存储;
    • 触发请求前,根据当前任务检索相关记忆,拼接到 prompt 中;
    • 提供“遗忘”开关(删除指定记忆条目)。

    2.3 文档处理与多模态生成

    视频中展示了:

    • 上传大体量文档(spreadsheets、长文档),在浏览器中直接解析与重写;
    • 生成图片(如“sunset”),并统一管理到 image gallery;
    • 对邮件 / Notepad 内文本进行“内联 AI 生成”:续写、解释、改写。

    技术上可以拆成几个子能力:

  • 文档解析管线
    • 上传 → 抽取文本(PDF/Doc/Excel)→ 切分 chunk → 嵌入向量 → 本地索引。
  • 检索增强生成(RAG)
    • 用户发起“总结 / 重写 / 校对”,对照索引检索相关 chunk,组合上下文交给大模型。
  • 多模态调用协同
    • 文本模型负责指令理解、规划;
    • 图片模型负责生成图片(或调用统一的多模态大模型)。

  • 三、实战演示:用薛定猫 AI 搭一套“浏览器内 AI 工作流”原型

    下面用 Python + 薛定猫 AI(xuedingmao.com)示范如何实现一个简化版的“AI 写作助手 + 文档总结 + 图片生成”服务逻辑。你可以把它嵌入到自己的浏览器插件、Electron 客户端或 Web 应用里。

    说明:

    • 平台地址兼容 OpenAI SDK:只需改 base_url 和 api_key;
    • 模型统一使用文中约定的 claude-sonnet-4-6;
    • 请在环境变量中配置 XUEDINGMAO_API_KEY。

    """
    示例:基于薛定猫 AI 搭建一个简化版“AI 原生浏览器助手”服务

    功能:
    1. 维护用户写作风格偏好(长期记忆)
    2. 基于上传文档做摘要 / 改写(RAG 简化版)
    3. 生成配图(如文章封面图)
    4. 提供一个统一的 `ai_assistant` 入口函数,方便在浏览器插件或 Web App 中调用
    """

    import os
    import json
    from typing import List, Dict, Literal

    from openai import OpenAI

    # ——————–
    # 一、基础配置:对接薛定猫 AI(OpenAI 兼容)
    # ——————–

    # 从环境变量读取 API Key,避免硬编码
    XUEDINGMAO_API_KEY = os.getenv("XUEDINGMAO_API_KEY")
    if not XUEDINGMAO_API_KEY:
    raise RuntimeError("请先在环境变量中设置 XUEDINGMAO_API_KEY")

    client = OpenAI(
    api_key=XUEDINGMAO_API_KEY,
    base_url="https://xuedingmao.com/v1", # 薛定猫 AI 的兼容 OpenAI API 地址
    )

    DEFAULT_MODEL = "claude-sonnet-4-6"

    # ——————–
    # 二、简单的“本地记忆”实现(写作风格)
    # 实际工程建议使用 SQLite/向量库,这里用 JSON 文件做演示
    # ——————–

    MEMORY_FILE = "user_style_memory.json"

    def load_user_style(user_id: str) > str:
    """加载用户写作风格偏好(长期记忆)"""
    if not os.path.exists(MEMORY_FILE):
    return ""

    with open(MEMORY_FILE, "r", encoding="utf-8") as f:
    data = json.load(f)

    return data.get(user_id, "")

    def save_user_style(user_id: str, style_desc: str) > None:
    """保存/更新用户写作风格偏好"""
    data = {}
    if os.path.exists(MEMORY_FILE):
    with open(MEMORY_FILE, "r", encoding="utf-8") as f:
    data = json.load(f)

    data[user_id] = style_desc.strip()

    with open(MEMORY_FILE, "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

    # ——————–
    # 三、大模型调用封装
    # ——————–

    def chat_completion(
    system_prompt: str,
    user_prompt: str,
    model: str = DEFAULT_MODEL,
    ) > str:
    """封装一次标准的 ChatCompletion 调用"""
    resp = client.chat.completions.create(
    model=model,
    messages=[
    {"role": "system", "content": system_prompt},
    {"role": "user", "content": user_prompt},
    ],
    temperature=0.3,
    )
    return resp.choices[0].message.content

    # ——————–
    # 四、核心能力 1:学习并固化“写作风格”
    # ——————–

    def infer_and_save_writing_style(
    user_id: str,
    sample_text: str,
    ) > str:
    """
    从用户提供的样例文本中归纳写作风格,并存入本地记忆。
    """

    system_prompt = (
    "你是一名写作风格分析助手,任务是从示例文本中总结出简洁的写作风格描述,"
    "包含:语气(正式/口语/幽默等)、句式特征、常用表达、目标读者类型。"
    "输出请使用简短中文段落,不超过 150 字。"
    )
    style_desc = chat_completion(system_prompt, sample_text)
    save_user_style(user_id, style_desc)
    return style_desc

    # ——————–
    # 五、核心能力 2:基于文档的总结 / 改写(简化 RAG)
    # ——————–

    def summarize_or_rewrite_document(
    user_id: str,
    document_text: str,
    mode: Literal["summary", "rewrite"] = "summary",
    extra_instruction: str = "",
    ) > str:
    """
    对上传文档做摘要或改写,自动注入用户写作风格记忆。

    :param user_id: 用户 ID
    :param document_text: 待处理的原文(可从浏览器上传的文件中抽取)
    :param mode: "summary" 摘要, "rewrite" 改写
    :param extra_instruction: 额外约束,例如“面向非技术读者”“控制在 500 字以内”等
    """
    style_desc = load_user_style(user_id)

    if mode == "summary":
    task_desc = "对下面的文档做结构化摘要,列出要点和结论。"
    else:
    task_desc = "在保持核心信息不变的前提下,用更流畅、易读的方式改写下面的文档。"

    system_prompt = (
    f"你是一个文档智能助手,负责对长文本进行 { '摘要' if mode == 'summary' else '改写' }。\\n"
    f"如果提供了用户写作风格,请尽量贴合:{style_desc or '无特定风格,可采用中性专业风格。'}\\n"
    "输出使用 Markdown,使用小标题和条目列表增强可读性。"
    )

    user_prompt = (
    f"{task_desc}\\n\\n"
    f"【额外要求】{extra_instruction}\\n\\n"
    "【文档内容】\\n"
    f"{document_text}"
    )

    return chat_completion(system_prompt, user_prompt)

    # ——————–
    # 六、核心能力 3:生成文章配图(图片生成)
    # ——————–

    def generate_image(
    prompt: str,
    model: str = "claude-sonnet-4-6", # 某些平台文本模型也支持图像生成;如需专用图像模型可替换
    size: str = "1024×1024",
    ) > str:
    """
    调用薛定猫 AI 的图像生成接口,返回图片 URL。
    具体模型和字段需根据平台文档调整,这里演示兼容 OpenAI 的 images API 调用方式。
    """

    # 注意:薛定猫 AI 具体是否提供 /images 端点需查看其文档。
    # 若使用统一 chat 接口生成 base64,再自行保存,也是常见方案。
    resp = client.images.generate(
    model=model,
    prompt=prompt,
    size=size,
    n=1,
    )
    # 兼容 OpenAI 格式:data[0].url
    img_url = resp.data[0].url
    return img_url

    # ——————–
    # 七、统一入口:模拟“浏览器内 AI 助手”的任务调度
    # ——————–

    def ai_assistant(
    user_id: str,
    intent: Literal["set_style", "doc_summary", "doc_rewrite", "gen_image"],
    payload: Dict,
    ) > Dict:
    """
    模拟浏览器内的 AI 助手统一入口,根据意图路由到不同能力模块。

    :param user_id: 用户 ID
    :param intent: 任务类型
    :param payload: 任务参数
    :return: 标准化结果字典,方便前端统一处理
    """
    if intent == "set_style":
    sample_text = payload.get("sample_text", "")
    style = infer_and_save_writing_style(user_id, sample_text)
    return {
    "type": "style_saved",
    "style_description": style,
    }

    elif intent in ("doc_summary", "doc_rewrite"):
    document_text = payload.get("document_text", "")
    extra_instruction = payload.get("extra_instruction", "")
    mode = "summary" if intent == "doc_summary" else "rewrite"
    output = summarize_or_rewrite_document(
    user_id=user_id,
    document_text=document_text,
    mode=mode,
    extra_instruction=extra_instruction,
    )
    return {
    "type": "doc_processed",
    "mode": mode,
    "result_markdown": output,
    }

    elif intent == "gen_image":
    prompt = payload.get("prompt", "")
    img_url = generate_image(prompt)
    return {
    "type": "image_generated",
    "prompt": prompt,
    "image_url": img_url,
    }

    else:
    raise ValueError(f"未知 intent: {intent}")

    # ——————–
    # 八、示例运行(可直接执行本文件体验)
    # ——————–

    if __name__ == "__main__":
    # 假设浏览器侧创建了一个 user_id
    uid = "user_123"

    # 1. 先“教”助手我的写作风格(可以粘贴你过往的一篇文章)
    sample = """
    作为一名后端开发,我更关注的是系统可靠性和可维护性。
    在引入任何新技术之前,我会先评估它的实际落地成本,
    包括运维负担、监控体系、以及团队学习曲线。
    理论上的最优方案往往很难在生产环境直接复刻,
    所以我更倾向于选择 80 分但可控的技术栈。
    """

    style = infer_and_save_writing_style(uid, sample)
    print("写作风格记忆:", style, "\\n")

    # 2. 模拟上传一段“长文档”,请求摘要
    doc = """
    我们正在评估将 AI 原生浏览器引入企业内部知识管理体系的可行性。
    当前痛点包括:员工搜索资料效率低、大量重复提问、文档沉淀不足。
    期望通过浏览器侧的本地智能体,在不把敏感数据外发到公有云的前提下,
    为员工提供页面摘要、智能问答、以及基于公司文档的上下文补全能力。
    技术上,我们需要统一接入多个大模型供应商以规避单点风险,
    并且要保证接口风格一致,便于后续扩展与灰度测试。
    """

    summary = summarize_or_rewrite_document(
    user_id=uid,
    document_text=doc,
    mode="summary",
    extra_instruction="控制在 300 字以内,面向技术管理者。",
    )
    print("文档摘要:\\n", summary, "\\n")

    # 3. 生成一张配图(比如“AI 原生浏览器”的封面插图)
    img_prompt = "futuristic browser interface with AI assistant, dark theme, minimalistic, 3D illustration"
    img = generate_image(img_prompt)
    print("生成图片 URL:", img)


    四、注意事项:从 Demo 到生产的关键工程考量

    4.1 隐私与合规

    • 对于浏览内容、公司内部文档,建议采用本地向量数据库 + 可控模型落地方案(如本地部署中小模型,云端只做补充推理)。
    • 明确区分“可上传云端的上下文”和“仅本地可见的敏感信息”,在代码层面做严格的数据分层和日志脱敏。

    4.2 上下文控制与成本优化

    • 长文档处理要避免“全文塞给大模型”,建议切分 + 检索,只送最相关的几个 chunk。
    • 对写作风格这类长期偏好,无需每次都重新推理;可像示例中那样本地持久化。

    4.3 多模型与供应商选型

    Neo 这类系统本质上需要:

    • 文本理解 / 代码辅助大模型;
    • 高速、成本可控的中小模型做本地推理或边缘推理;
    • 图像生成模型;
    • 可能还会引入语音模型、过滤模型(安全、合规)。

    为避免在不同厂商 SDK 间切换、处理不同参数格式,工程上更推荐使用统一 API 抽象层。这也是我在实际项目中选择(xuedingmao.com)的主要原因之一:

    • 聚合了 500+ 主流大模型(包括 GPT-5.4、Claude 4.6、Gemini 3 Pro 等),新模型上线速度快;
    • 提供兼容 OpenAI 的统一接口,像上面的 Python 示例一样,只改 base_url 和 key 即可在多模型间切换;
    • 适合做“多模型 AB 测试”“按任务自动选模”这类高级玩法,降低多家模型供应商集成和治理的复杂度。

    五、技术资源与工具推荐

    • 薛定猫 AI(xuedingmao.com)
      适合用作统一的大模型接入层:

      • OpenAI 兼容模式,便于直接迁移现有代码;
      • 支持多家厂商、多模型类型(文本、图像、部分多模态等);
      • 接口稳定,可快速在不同模型间切换做实验或灰度发布。
    • 本地向量数据库:如 Chroma / Qdrant / Milvus,用于实现 Neo 类“本地记忆”和文档检索。

    • 浏览器扩展框架:现代 Chrome/Edge 插件体系 + Manifest V3,是将上面这套 Python 服务包装成 UI 插件的常见路径。


    通过拆解 Neo 这类 AI 原生浏览器的能力,并用兼容 OpenAI 的 API 做了一套最小可用实现,你可以在自己的产品中非常快速地搭建起:本地记忆 + 文档智能处理 + 图片生成 + 场景化触发的 AI 工作流。真正的难点不在“能不能调用模型”,而在于数据边界、上下文设计和工程落地,这也是未来一段时间内 AI 开发者的核心竞争力。


    #AI #大模型 #Python #机器学习 #技术实战

    赞(0)
    未经允许不得转载:171主机测评 » 【技术干货】从 AI 原生浏览器到本地智能体:开发者如何搭建自己的隐私优先 AI 工作流
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址