1 让AI开口说话 01

5 阅读1分钟

搭建脚手架

先初始化一个空目录

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