搭建脚手架
先初始化一个空目录
mkdir hello-agent && cd hello-agent
pnpm init
git init
添加 .gitignore
node_modules/
dist/
安装依赖
pnpm add ai @ai-sdk/openai dotenv
pnpm add -D typescript tsx @types/node
安装eslint、prettier
pnpm add -D eslint @eslint/js typescript-eslint
pnpm add -D prettier eslint-config-prettier eslint-plugin-prettier
安装tree-cli(用来查看当前项目结构)
pnpm add -D tree-cli
新建 .prettierrc.json
{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 100,
"bracketSpacing": true,
"arrowParens": "always",
"endOfLine": "lf"
}
新建 .prettierignore
node_modules/
dist/
新建 eslint.config.js
import js from '@eslint/js';
import tseslint from 'typescript-eslint';
import prettierConfig from 'eslint-config-prettier';
import prettierPlugin from 'eslint-plugin-prettier/recommended';
export default tseslint.config(
{ ignores: ['dist/', 'node_modules/'] },
js.configs.recommended,
...tseslint.configs.recommended,
{
rules: {
'@typescript-eslint/no-explicit-any': 'off',
},
},
prettierConfig,
prettierPlugin,
);
修改package.json
{
"name": "hello-agent",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"lint": "eslint src/",
"lint:fix": "eslint src/ --fix",
"format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json}\"",
"format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,json}\"",
"tree": "treee -a -l 4 --ignore 'node_modules, dist, .git' --directoryFirst -f"
},
"keywords": [],
"author": "",
"license": "ISC",
"packageManager": "pnpm@10.8.0",
"dependencies": {
"@ai-sdk/openai": "^3.0.53",
"ai": "^6.0.168",
"dotenv": "^17.4.2"
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@types/node": "^25.6.0",
"eslint": "^10.2.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.5",
"prettier": "^3.8.3",
"tree-cli": "^0.6.7",
"tsx": "^4.21.0",
"typescript": "^6.0.3",
"typescript-eslint": "^8.59.0"
}
}
新建空src目录,后面的代码都写在此处。
当前目录结构
/hello-agent
├── src/
├── .gitignore
├── .prettierignore
├── .prettierrc.json
├── eslint.config.js
├── package.json
└── pnpm-lock.yaml