返回市场
智能笔记本服务器

智能笔记本服务器

作者:notebook-intelligence210 星标更新:2025-11-14

项目介绍

Notebook Intelligence

Notebook Intelligence (NBI) 是一个用于 JupyterLab 的 AI 编码助手和可扩展的 AI 框架。它可以使用 GitHub Copilot 或来自任何其他大语言模型(LLM)提供商的 AI 模型,包括来自 Ollama 的本地模型。NBI 通过 AI 辅助大大提高了 JupyterLab 用户的工作效率。

功能亮点

代理模式

在代理模式下,内置的 AI 代理可以为您交互式地创建、编辑和执行笔记本。它能够检测单元格中的问题并为您修复它们。

代理模式

带内联聊天的代码生成

使用单元格工具栏上的火花图标或键盘快捷键显示内联聊天弹出窗口。

键盘快捷键:Ctrl + G / Cmd + G 是显示内联聊天弹出窗口的快捷键,而 Ctrl + Enter / Cmd + Enter 是接受建议的快捷键。按 Escape 键关闭弹出窗口。

生成代码

自动完成

随着您输入内容,自动完成建议会显示出来。点击 Tab 键接受建议。NBI 在代码单元格和 Python 文件编辑器中提供自动完成建议。

<img src="media/inline-completion.gif" alt="自动完成" width=700 />

聊天界面

<img src="media/copilot-chat.gif" alt="聊天界面" width=600 />

更多功能和用法,请参阅博客文章。

安装

NBI 需要 JupyterLab >= 4.0.0。要安装扩展,请运行以下命令并重新启动 JupyterLab。

pip install notebook-intelligence

配置选项

配置 LLM 提供商和模型

您可以使用 Notebook Intelligence 设置对话框配置模型提供商和模型选项。您可以通过 JupyterLab 设置菜单 -> Notebook Intelligence 设置、使用 NBI 聊天中的 /settings 命令或使用命令面板访问此对话框。详情请参阅博客文章

<img src="media/provider-list.png" alt="设置对话框" width=500 />

JupyterLab 的 Notebook Intelligence 扩展

该扩展由名为 notebook_intelligence 的 Python 包组成,用于服务器扩展,以及名为 @notebook-intelligence/notebook-intelligence 的 NPM 包,用于前端扩展。

记住 GitHub Copilot 登录

Notebook Intelligence 可以记住您的 GitHub Copilot 登录,因此在 JupyterLab 或系统重启后无需重新登录。请注意使用此功能的安全影响。

[!CAUTION] 如果您配置 NBI 记住您的 GitHub Copilot 登录,它会将令牌加密并存储到 ~/.jupyter/nbi/user-data.json 数据文件中。您不应与他人分享此文件,因为他人可以访问您的令牌。 尽管令牌是加密的,但它是使用默认密码进行加密的,因此可以被他人解密。为了防止这种情况,您可以使用环境变量 NBI_GH_ACCESS_TOKEN_PASSWORD 指定自定义密码。

NBI_GH_ACCESS_TOKEN_PASSWORD=my_custom_password

要让 Notebook Intelligence 记住您的 GitHub 访问令牌,请转到 Notebook Intelligence 设置对话框,并选中“记住我的 GitHub Copilot 访问令牌”选项,如下所示。

<img src="media/remember-gh-access-token.png" alt="记住访问令牌" width=500 />

如果存储的访问令牌无法登录(由于过期或其他原因),您将在界面上被提示重新登录。

笔记本执行工具选项

笔记本执行工具在代理模式下默认启用。然而,您可以禁用它或使其受环境变量控制。

要禁用笔记本执行工具:

jupyter lab --NotebookIntelligence.notebook_execute_tool=disabled

要默认禁用笔记本执行工具,但允许通过环境变量启用:

NBI_NOTEBOOK_EXECUTE_TOOL=enabled
jupyter lab --NotebookIntelligence.notebook_execute_tool=env_enabled

配置文件

NBI 将配置保存在 ~/.jupyter/nbi/config.json 中。它还支持在 <env-prefix>/share/jupyter/nbi/config.json 中的环境范围基础配置。组织可以在该环境范围配置路径中提供默认配置。用户的更改将作为覆盖项存储在 ~/.jupyter/nbi/config.json 中。

这些配置文件用于保存 LLM 提供商、模型和 MCP 配置。请注意,您为自定义 LLM 提供商输入的 API 密钥也将存储在这些配置文件中。

[!IMPORTANT] 手动更新 config.json 需要重新启动 JupyterLab 才能生效。

模型上下文协议(MCP)支持

NBI 无缝集成 MCP 服务器。它支持具有标准输入/输出(stdio)和服务器发送事件(SSE)传输的服务器。目前,MCP 支持仅限于服务器工具。

您可以通过编辑配置文件 ~/.jupyter/nbi/mcp.json 来轻松添加 MCP 服务器到 NBI。也支持使用 <env-prefix>/share/jupyter/nbi/mcp.json 文件的环境范围基础配置。

[!NOTE] 使用 MCP 服务器需要具有工具调用能力的 LLM 模型。NBI 提供的所有 GitHub Copilot 模型都支持此功能。如果您使用其他提供商,请确保选择具有工具调用能力的模型。

[!CAUTION] 大多数 MCP 服务器都在您的 JupyterLab 安装所在的同一台计算机上运行,它们可能会对您的计算机做出不可逆的更改并/或访问私有数据。请确保仅从可信来源安装 MCP 服务器。

MCP 配置文件示例

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/mbektas/mcp-test"
      ]
    }
  }
}

您可以使用代理模式来访问您配置的 MCP 服务器提供的工具。

对于具有 stdio 传输的服务器,您还可以通过使用 env 键设置额外的环境变量。环境变量指定为键值对。

"mcpServers": {
    "servername": {
        "command": "",
        "args": [],
        "env": {
            "ENV_VAR_NAME": "ENV_VAR_VALUE"
        }
    },
}

下面是一个具有流式 HTTP 传输的服务器配置示例。对于流式 HTTP 传输服务器,您还可以指定作为请求一部分发送的标头。

"mcpServers": {
    "remoterservername": {
        "url": "http://127.0.0.1:8080/mcp",
        "headers": {
            "Authorization": "Bearer mysecrettoken"
        }
    },
}

如果您配置了多个服务器,但希望暂时禁用其中一些,可以使用 disabled 键。servername2 将被禁用且在 @mcp 聊天参与者中不可用。

"mcpServers": {
    "servername1": {
        "command": "",
        "args": [],
    },
    "servername2": {
        "command": "",
        "args": [],
        "disabled": true
    },
}

规则集系统

NBI 包含一个强大的规则集系统,允许您定义自定义指南和最佳实践,这些指南和最佳实践会自动注入到 AI 提示中。这有助于确保所有 AI 交互的一致编码标准、项目特定约定和领域知识。

工作原理

规则是 Markdown 文件,带有可选的 YAML 前言,存储在 ~/.jupyter/nbi/rules/ 中。它们会根据上下文(文件类型、笔记本内核、聊天模式)自动发现和应用。

创建规则

全局规则 - 应用于所有上下文:

创建一个文件如 ~/.jupyter/nbi/rules/01-coding-standards.md

---
priority: 10
---

# 编码标准

- 在 Python 函数中始终使用类型提示
- 当适用时,优先使用列表推导而不是循环
- 为所有公共函数添加文档字符串

模式特定规则 - 仅应用于特定聊天模式:

NBI 支持三种模式的模式特定规则:

  • ask - 问答模式
  • agent - 具有工具访问权限的自主代理模式
  • inline-chat - 内联代码生成和编辑

创建一个文件如 ~/.jupyter/nbi/rules/modes/agent/01-testing.md

---
priority: 20
scope:
  kernels: ['python3']
---

# 测试指南

当在代理模式下编写代码时:

- 始终包含错误处理
- 添加调试日志
- 测试边界情况

规则前言选项

---
apply: always # 'always', 'auto', 或 'manual'
active: true # 启用/禁用规则
priority: 10 # 数字越小优先级越高
scope:
  file_patterns: # 应用于特定文件模式
    - '*.py'
    - 'test_*.ipynb'
  kernels: # 应用于特定笔记本内核
    - 'python3'
    - 'ir'
  directories: # 应用于特定目录
    - '/projects/ml'
---

配置

启用/禁用规则系统:

编辑 ~/.jupyter/nbi/config.json

{
  "rules_enabled": true
}

自动重载配置:

规则在更改时会自动重新加载(默认启用)。此行为由 NBI_RULES_AUTO_RELOAD 环境变量控制。

要禁用自动重载:

export NBI_RULES_AUTO_RELOAD=false
jupyter lab

或启用(默认):

export NBI_RULES_AUTO_RELOAD=true
jupyter lab

管理规则

规则自动从以下位置发现:

  • 全局规则~/.jupyter/nbi/rules/*.md
  • 模式特定规则~/.jupyter/nbi/rules/modes/{mode}/*.md 其中 {mode} 可以是:
    • ask - 对话/回答互动
    • agent - 自主代理操作
    • inline-chat - 内联代码生成

规则按照优先级顺序(数字越小优先级越高)应用,并且可以在不删除文件的情况下切换开启/关闭。

开发者文档

有关本地构建和贡献,请参阅开发者文档