🐳

计量经济学 ×
DeepSeek Harness

用 Agent 驾驭你的实证研究 —— 上机课导论
课程 微观计量经济学 环节 上机实验课 主讲 助教
导论
目录
00

计量经济学基础回顾

你已经掌握的 Stata 实证流程

01

为什么引入 Agent

从手工跑回归到智能协作

02

Harness 概念与架构

驾驭的艺术 · 公式 · 开源 · 插件

03

工作流与实战演示

从数据到论文的全流程

04

DSH 配置

让 Agent 在真实场景中持续工作

05

作业要求与学术诚信

如何正确使用 Agent 完成作业

00 · 复习
数据导入与预处理
📚 在使用 Agent 之前,我们先回顾已学的 Stata 计量分析流程——从数据导入到异质性分析,每一步都是后续 Agent 辅助的基础。

1导入数据

import excel "路径.xlsx", firstrow clear // 导入Excel,首行是变量名
use "路径.dta", clear // 导入Stata dta数据

2面板数据设置

encode 个体变量, gen(id)
encode 时间变量, gen(year)
xtset id year // 声明面板,可用xt系列命令

3描述性统计

summarize y x1 x2 controls // 均值、标准差、最值、样本量
estpost summarize y x1 x2 controls
esttab desc_stats using "描述性统计结果.rtf", replace // 输出到Word

4相关性、异常值

correlate y x1 x2 controls
pwcorr y x1 x2 controls, sig star(0.01) // 相关系数矩阵+显著性星号
winsor y x1 x2 controls, replace cuts(1 99) // 1%/99%缩尾
📝 面板数据必须先 xtset 声明,否则 xtreg、reghdfe 等面板命令无法使用。字符型个体标识(如企业名称)需先用 encode 转换。
00 · 复习
OLS 与经典假设
📚 回归 → 多重共线性 → 异方差 → 自相关 → 线性性,五步检验法

1OLS 回归

reg y x1 x2 controls
reg y x1 x2 controls, robust // 异方差稳健标准误

2多重共线性检验(VIF)

estat vif // VIF<10 无严重共线性,VIF>10 需剔除高度相关变量

3异方差检验(怀特)

estat imtest, white // 原假设:同方差,P<0.05 则存在异方差

4自相关性检验(DW)

estat dwatson // DW≈2 无自相关,DW<2 正相关,DW>2 负相关

5线性性检验(RESET)

estat ovtest // 原假设:模型满足线性假设,P<0.05 需加入平方项/交互项
00 · 复习
稳健性检验与异质性分析
📚 四种常用方法验证核心结论的可靠性 + 子样本回归检验核心关系的异质性表现

1替换被解释变量

gen y2 = 新的被解释变量
reghdfe y2 x1 x2 controls, absorb(id year) cluster(id)

2替换核心解释变量

gen x1_2 = 新的核心解释变量
reghdfe y x1_2 x2 controls, absorb(id year) cluster(id)

3调整样本范围

drop if st_flag == 1 // 剔除ST企业
drop if year < 2010
reghdfe y x1 x2 controls, absorb(id year) cluster(id)

4更换计量模型

logit y x1 x2 controls, robust
probit y x1 x2 controls, robust

5按企业规模分组

reg y x1 x2 controls if size==1, robust // 大型企业子样本
reg y x1 x2 controls if size==0, robust // 中小企业子样本

6按地区分组

reg y x1 x2 controls if region==1, robust // 东部地区子样本
reg y x1 x2 controls if region==0, robust // 非东部地区子样本
📝 异质性分析不仅要分组回归,还需在正文中解释「为什么」存在差异——结合理论机制说明大型企业与中小企业、东部与非东部在资源禀赋、制度环境等方面的不同。
复习小结
计量分析初步流程
从原始数据到论文结果的标准路径
1
数据导入
Excel / dta
面板数据声明
2
预处理
描述性统计
相关性 + 缩尾
3
基础回归
OLS / 固定效应
经典假设检验
4
稳健性
替换变量
调整样本 / 换模型
5
异质性
分组回归
机制解释
💡 接下来:如何用 AI Agent 加速这一整套流程?
01 · 背景
为什么引入 Agent
📊

数据处理繁琐

清洗、合并、缩尾、生成变量……每一步都要写代码、查语法、调 bug,大量时间消耗在机械操作上。

🔬

模型选择复杂

OLS / IV / DID / 面板固定效应……该用哪个?假设检验怎么做?内生性如何处理?需要反复试错。

📝

结果输出耗时

回归表格、系数图、稳健性检验……整理成论文格式又是一轮重复劳动,还容易出错。

💡 Agent 能做什么?

🤖
自动写代码
查文档 / 调语法
🔄
迭代试错
跑不通自己修
📈
可视化结果
自动出表出图
🧠
方法论建议
提醒假设与陷阱
02 · 概念
什么是 Harness
🐎
这匹马 = AI 模型
马再快,没有装束,
你也骑不走、跑不远。
harness/ˈhɑːrnɪs/
n.马具、挽具(套在马身上那一整套装备)
v.驾驭、控制、利用

套在马身上的这一整套,就是 Harness

🎯
缰绳 · 控制方向
🪑
马鞍 · 坐得稳
👢
马镫 · 使得上劲
🔗
肚带 · 不散架
🔔
笼头 · 听得懂指令
📌 本部分内容参考自 B 站 UP 主「程序员鱼皮」DeepSeek Harness 介绍视频。
02 · 概念
Harness 工程:研究怎么让马跑得更快、更稳
跑得更快 跑得更稳 顺利完成任务
📋

项目规则文件

# AGENTS.md
🔧

配置的各种工具

读写文件执行命令搜索网页调用接口运行代码生成图表
📑

任务拆分和执行顺序

1. 读源码,理清模块 done
2. 补单元测试 done
3. 改实现 running
4. 跑全量回归 todo

测试检查流程

$ npm run lint 0 errors
$ npm run build built in 1.4s
$ npm test 24 passed
规则文件、工具配置、任务拆分、测试检查……这些统统都算 Harness
03 · 公式
和网页端有什么不同
🤖
Agent
能干活的 AI
=
🧠
Model
模型 · 负责想
+
Harness
驾驭工程 · 负责做

🧠 模型负责思考和生成

「用户要一个求和函数,我写一个 sum」
export function sum(a, b) {
return a + b
}

但它吐出来的,始终只是一段文字。

⚡ Harness 负责接入现实环境

  • 文件系统 → 在 src/utils/sum.ts 中编写求和函数
  • 终端 → 运行 npm test,确保所有 24 个测试用例通过
  • 网页 → 查阅 Vitest 官方文档,了解断言(assertion)的写法
  • 工具链 → 通过 GitHub API 自动创建并提交 Pull Request
模型只会「想」,Harness 把想法接上文件系统、终端、网页和工具链,AI 才真正能在现实环境里干活
04 · 开源
之前 DeepSeek 只开源了模型这一半
🏇
Agent
完整了
=
🐴
Model
V4 Pro 等模型权重
✓ 早就开源了
+
🎠
Harness
Deepseek Harness
✓ 这次开源了
🐱
deepseek-ai / deepseek-harness
刚开源12小时,GitHub仓库就冲破了5万Star。
203k+
⭐ Stars

🎉 这次终于补齐了

模型 + Harness 都是自家的,DeepSeek 手里第一次有了完整的一整套 Agent

05 · 定位
一个可以高度定制的 AI 编程工具
localhost:3000
💬 帮我分析当前项目的代码仓库结构,画一张架构图
模型 DeepSeek-V4-Pro 推理等级 high 文件权限 可读写 终端权限 需确认 运行模式 标准模式
🔶

Claude Code

Anthropic 出品
终端里的编程 Agent
编程 Agent
🌀

Codex

OpenAI 出品
终端里的编程 Agent
编程 Agent
🐳

DeepSeek Harness

DeepSeek 出品
网页里的编程 Agent
可配置、可重组的 Agent 运行环境
🌿 别人交付的是一个编程 Agent,它交付的是一套能自己攒 Agent 的运行环境
06 · 架构
一切皆插件,运行有迹可循

🧩 Agent 运行环境 每一格都能拔换

🧠
模型
v4-pro / 可换
🔧
工具
bash / edit
技能
skills
💬
会话
session
📦
沙箱
sandbox
🔄
循环
agent-loop
🖥️
界面
turtle-ui

🔌 一切皆插件

DeepSeek Harness 基于 Cordis 插件系统构建。模型、工具、技能、会话、沙箱、存储、循环、调度、UI 等所有 Agent 能力均由插件提供,并通过 Cordis 服务与事件彼此协作。开发者无需改动 DeepSeek Harness 源码,即可在配置层选择、替换或扩展任一能力。


⏳ 每一次运行都有迹可循

模型看到的一切都会写入仅追加设计的会话日志,包括系统提示词、思维链、工具调用与结果、子 Agent 调度,以及每一次上下文注入。在 Trajectory 视图中,你可以按来源查看这些信息。恢复、分叉、检索与回放也共享同一份事件流。


🔀 多种运行模式

标准模式提供完整的工具组合;PTC 模式通过模型生成的一段代码组合多轮工具调用;极简模式仅保留一个 shell 工具与一个文件编辑工具,用于最小化环境下的模型基准测试;创造模式可以检查当前运行时、在内存中试验 Cordis 插件,并据此组合和创作新的模式。

07 · 工作流
计量经济学×Agent 全流程工作流
📥
数据导入
Excel / CSV / Stata
🧹
数据清洗
缺失值 / 异常值
🔨
变量构造
对数 / 交互 / 滞后
📊
描述统计
均值 / 相关 / 分布
🔬
基准回归
OLS / 面板 FE
🔍
模型诊断
异方差 / 自相关
🛡️
内生性处理
IV / DID / RDD
稳健性检验
换变量 / 换样本
📈
结果可视化
系数图 / 回归表
📝
论文写作
结果解读 / 表格
⚠️
人工复核
验证 / 质疑 / 定稿
💡 Agent 负责执行与建议,你负责判断与决策 —— 这才是正确的协作方式
07 · 演示
演示 1:数据清洗与描述性统计

💬 你对 Agent 说

"我有一份中国家庭追踪调查(CFPS)数据,帮我:
① 读取并查看基本结构
② 处理缺失值和异常值
③ 对收入变量做 1% 缩尾
④ 生成描述性统计表和相关系数矩阵"

⚡ Agent 自动执行

  • 读取 data.csv,输出 shape / dtypes / head()
  • 识别缺失值模式,建议删除或多重插补
  • 用 winsorize 对收入做 1%/99% 缩尾
  • 生成 describe() 统计表 + 相关系数热力图
  • 自动保存为 clean_data.csv 和 summary_table.docx
agent · python
读取数据并清洗
▸ import pandas as pd
▸ from scipy.stats.mstats import winsorize
▸ df = pd.read_csv('cfps_data.csv')
▸ print(df.shape)
▸ df.isnull().sum()
▸ df['income_w'] = winsorize(df['income'], limits=[0.01,0.01])
▸ desc = df.describe().T[['mean','std','min','25%','50%','75%','max']]
▸ desc.to_csv('descriptive_stats.csv')
✓ 完成!已生成清洗后数据 + 描述统计表 + 相关系数热力图

⚠️ 你需要检查

  • 缩尾比例是否合理?(1% 还是 5%?)
  • 缺失值处理方式是否符合研究设计?
  • 异常值判断是否结合了变量的经济含义?
07 · 演示
演示 2:回归分析与模型诊断

💬 你对 Agent 说

"研究教育对收入的影响:
① 跑基准 OLS 回归(log收入 ~ 教育年限 + 控制变量)
② 做异方差检验(Breusch-Pagan)和多重共线性检验(VIF)
③ 如果有异方差,用稳健标准误重新估计
④ 输出规范的回归结果表格"

⚡ Agent 自动执行

  • 用 linearmodels / statsmodels 跑 OLS
  • BP 检验 → 发现异方差(p < 0.05)
  • VIF 检验 → 所有变量 VIF < 5,无严重共线性
  • 改用 HC3 稳健标准误重新估计
  • 用 stargazer / 自定义函数输出三列对比表
agent · regression
基准回归 + 诊断
▸ import statsmodels.api as sm
▸ from statsmodels.stats.diagnostic import het_breuschpagan
▸ from statsmodels.stats.outliers_influence import variance_inflation_factor
▸ X = df[['edu','age','age_sq','gender','urban']]
▸ X = sm.add_constant(X)
▸ model = sm.OLS(df['log_income'], X).fit()
▸ bp = het_breuschpagan(model.resid, X)
▸ model_robust = sm.OLS(...).fit(cov_type='HC3')
✓ 教育年限系数 0.082***,稳健标准误下仍显著

📋 回归结果表(Agent 自动生成)

(1) OLS(2) 稳健SE(3) 加控制
教育年限0.075***0.075***0.082***
年龄0.031**
常数项8.21***8.21***7.56***
N12,48012,48012,480
0.1420.1420.187
07 · 演示
演示 3:内生性处理与稳健性检验

💬 你对 Agent 说

"基准回归可能有内生性(能力遗漏变量),帮我:
① 用父母教育年限作为工具变量做 2SLS
② 做弱工具变量检验(F统计量)和过度识别检验
③ 做一系列稳健性检验:换被解释变量、换样本、聚类标准误
④ 把所有结果整理成一张稳健性检验矩阵"

⚡ Agent 自动执行

  • 用 linearmodels.IV2SLS 做工具变量回归
  • 第一阶段 F = 24.7 > 10,排除弱工具变量
  • Hansen J 检验 p = 0.31,工具变量外生
  • 自动跑 6 种稳健性检验
  • 生成系数对比图(forest plot)+ 汇总表

🛡️ 稳健性检验矩阵

检验类型系数标准误显著性
基准 OLS0.0820.006***
2SLS (IV)0.0950.012***
换被解释变量(年收入)0.0780.007***
剔除极端样本0.0800.006***
省份聚类标准误0.0820.009***
控制省份固定效应0.0790.007***
✓ 核心系数在 0.078~0.095 之间,方向和显著性稳健

⚠️ Agent 不会替你做的判断

  • 工具变量是否真的外生?(需要经济学论证)
  • IV 估计结果比 OLS 大,是否合理?(LATE 解释)
  • 稳健性检验的规格选择是否有 cherry-picking 嫌疑?
08 · 上手
如何开始使用 DeepSeek Harness

⚙️方式一:本地部署(推荐)

# 1. 安装依赖Node.js后运行
npx @deepseek-ai/dsh web
# 2. 等待时间较长,看到下载过程可以运行
npm install -g --verbose @deepseek-ai/dsh
▸ Need to install the following packages:
▸ @deepseek-ai/dsh@0.1.1-rc.2
▸ Ok to proceed? (y)
# 3. 配置 API Key
# 4. 启动 Web UI
dsh web

🌐方式二:在线平台

直接使用如 WorkBuddy 官网的 Agent 模式,无需本地安装。

🐳 DeepSeek 官网☁️ 在线 IDE

📝关键配置:AGENTS.md(你的缰绳)

## 角色 你是计量经济学研究者,精通 Stata / Python。
## 工作原则
- 所有回归必须报告标准误类型
- 发现异方差时自动建议稳健标准误
- 内生性问题必须主动提醒
- 生成的表格必须符合学术论文格式
## 禁止
- 不得编造数据或结果
- 不得跳过诊断检验直接给结论
- 不得替用户做方法论的最终决策

💡 写好 Prompt 的三个要点

明确角色:"你是计量经济学专家"
给足上下文:数据来源、研究问题、变量定义
指定输出格式:"用 stargazer 格式输出三列表格"
08 · 作业
作业要求与学术诚信

✅ 鼓励这样使用 Agent

  • 用 Agent 学习语法和代码写法
  • 让 Agent 帮你做重复性的数据清洗
  • 请 Agent 解释回归结果的经济学含义
  • 用 Agent 检查代码中的 bug 和逻辑错误
  • 让 Agent 生成可视化图表的初稿
  • 请 Agent 提醒你可能遗漏的检验步骤

⚖️ 学术诚信原则

Agent 是工具,不是替身。

你需要理解每一行代码、每一个系数、每一个结论。
能向别人讲清楚的结果,才是你自己的结果。

❌ 严禁这样使用 Agent

  • 直接把作业题目丢给 Agent,复制粘贴答案
  • 不理解代码含义就直接提交 Agent 生成的代码
  • 让 Agent 编造数据或伪造回归结果
  • 对 Agent 给出的错误结果不加验证就使用
  • 在报告中隐瞒 Agent 的使用情况

📋 作业提交要求

  • 提交完整的 Python / Stata 代码文件
  • 提交可复现的结果(数据 + 代码 + 输出)
  • 在报告中注明哪些部分使用了 Agent 辅助
  • 附上你与 Agent 的关键对话截图或记录
  • 对核心结果必须有自己的解读和判断
🐳

驾驭 Agent,释放你的研究力

Agent = Model + Harness | 模型负责想,你负责判断,Harness 负责做
Q & A
有问题随时提问 | 驾驭 AI,而不是被 AI 驾驭