2  VS Code + nbstata + Copilot

本讲要回答的问题

为什么要把笔记、代码和结果放进同一个 notebook,AI 又在其中扮演什么角色?

2.1 Jupyter Notebook

第 1 讲我们在 Stata 自带界面里跑通了一段 dofile。这一讲换一个场景:在 VS Code 里新建一个 notebook 文件(.ipynb),把”写笔记”和”跑代码”放进同一个文件。

.do 很适合把一段分析固化成脚本,但代码、笔记、结果是分离的;.ipynb 则把它们合到了一起——一个单元格写文字说明,下一个单元格写代码,输出(表格、图形)直接显示在代码下方。用 notebook 而不是传统 dofile,主要有这几个好处:

  • 符合交互式分析的需求,可以在一个文档中同时包含代码、输出和文字说明
  • 支持多种语言混合使用,比如 Python、R、Stata;
  • 便于记录分析过程,生成可复现的研究报告;
  • 可以借助 AI 辅助生成代码、注释和分析报告。

2.2 VS Code + nbstata

要在 notebook 里运行 Stata 代码,靠的是一个叫 nbstata 的 Jupyter 内核。把它和 VS Code 搭配起来,好处很直接:一个编辑器里就能同时写笔记、跑多种语言的代码,而 Copilot 和后面几讲要用的 Agent 也都在同一个环境中协作,不必在多个软件之间来回切换。

安装并不复杂(注意:nbstata 目前只支持 Python 3.11 及以下,需单独建一个 3.11 环境):本仓库 环境配置 的第 2 节给了最简步骤;若需完整流程,参见 ds2026 · 配置说明 第 2–4 章。

装好后,在 VS Code 新建一个 .ipynb,右上角内核选 Stata,就能在代码单元格里直接写:

sysuse auto, clear
summarize price mpg
scatter price mpg

运行后,描述性统计的表格和散点图会直接出现在单元格下方。

2.3 Copilot:两个「时刻」

在 notebook 里写 Stata 代码时,Copilot 会在旁边给出补全建议。最值得体会的是两个「时刻」。

时刻一:写一行注释,让它生成代码。 先写一句自然语言注释:

* 载入 auto 数据,按 foreign 分组,计算 price 的均值并画柱状图

回车后,Copilot 往往会在下方浮现出灰色的补全建议,按 Tab 采纳,再根据实际变量名微调即可。

时刻二:给一段旧代码加注释。 反过来,手上有一段没有注释、看不太懂的旧代码,选中它,让 Copilot Chat「逐行加中文注释」,它会解释每一行在做什么。这在阅读复现代码、接手旧项目时非常实用。

注释 ⇄ 代码可以双向生成;但采纳之后,一定要读一遍,确认变量名、选项、结果都对——Copilot 是补全助手,不替你做判断。

2.4 动手演示:在 notebook 里跑通

一次最小的演示,可以这样走一遍:

  • 在 VS Code 新建一个 .ipynb,先写一个 Markdown 单元格作笔记,再建一个 Stata 代码单元格。
  • 内核选 Stata,跑 sysuse auto, clear + summarize + scatter,结果直接显示在单元格下方。
  • Copilot 时刻一:写一行中文注释,回车触发灰色补全,Tab 采纳后微调。
  • Copilot 时刻二:选中一段无注释代码,用 Copilot Chat 让它逐行加中文注释。

2.5 延伸阅读