当前位置:首页>Linux>Linux 环境下 Claude 官方 SDK (Node.js) 实战指南

Linux 环境下 Claude 官方 SDK (Node.js) 实战指南

  • 2026-08-18 08:43:13
Linux 环境下 Claude 官方 SDK (Node.js) 实战指南

本文将教你如何在 Linux 环境下,使用 Anthropic 官方提供的 Node.js SDK (@anthropic-ai/sdk) 来构建强大的 AI 命令行工具。

我们将从零开始,最终实现一个支持流式输出(Streaming)的命令行聊天机器人。

1. 环境准备

确保你的 Linux 系统已安装 Node.js (建议 v18+)。

# 检查 Node.js 版本
node -v
# 检查 npm 版本

npm -v

获取 API Key

  1. 1. 登录 Anthropic Console
  2. 2. 创建一个新的 API Key。
  3. 3. 在 Linux 终端中设置为环境变量(建议添加到 ~/.bashrc 或 ~/.zshrc):
export ANTHROPIC_API_KEY='sk-ant-api03-...'

如果不想付费可从该链接领取免费Claude的额度:
https://api.code-relay.com/register?aff=coAt

2. 项目初始化

创建一个新目录并初始化项目:

mkdir claude-cli-tool
cd
 claude-cli-tool
npm init -y

修改 package.json,添加 "type": "module" 以支持 ES Modules(推荐):

{
  "name"
: "claude-cli-tool",
  "version"
: "1.0.0",
  "type"
: "module",
  "dependencies"
: {}
}

安装官方 SDK:

npm install @anthropic-ai/sdk dotenv

(可选:安装 dotenv 用于从 .env 文件加载 key,如果不想用系统环境变量的话)

3. 基础实战:Hello Claude

创建文件 index.js,编写最简单的调用代码。

import Anthropic from '@anthropic-ai/sdk';

// 1. 初始化客户端

// 默认会自动读取 process.env.ANTHROPIC_API_KEY

const
 anthropic = new Anthropic();

async
 function main() {
  console
.log("正在连接 Claude...");

  // 2. 发送请求

  const
 message = await anthropic.messages.create({
    model
: "claude-3-5-sonnet-20241022", // 使用最新的 Sonnet 模型
    max_tokens
: 1024,
    messages
: [
      { role: "user", content: "用一句话解释什么是 Linux 的 inode?" }
    ]
  });

  // 3. 输出结果

  console
.log("\nClaude 回复:");
  console
.log(message.content[0].text);
}

main
().catch(console.error);

运行:

node index.js

4. 进阶实战:打造流式 CLI 聊天机器人

命令行工具最重要的是实时反馈。Claude SDK 原生支持 Stream,我们可以利用它做一个打字机效果的聊天工具。

创建文件 chat.js

import Anthropic from '@anthropic-ai/sdk';
import
 readline from 'readline';

const
 anthropic = new Anthropic();

// 创建命令行交互接口

const
 rl = readline.createInterface({
  input
: process.stdin,
  output
: process.stdout
});

// 维护对话历史

let
 conversationHistory = [];

console
.log("\x1b[36m%s\x1b[0m", "--- Claude CLI Chat (输入 'exit' 退出) ---");

// 封装提问函数

function
 askQuestion() {
  rl.question('\n\x1b[32mYou: \x1b[0m', async (input) => {
    if
 (input.toLowerCase() === 'exit') {
      rl.close();
      return
;
    }

    // 添加用户消息到历史

    conversationHistory.push({ role: "user", content: input });

    process.stdout.write('\x1b[35mClaude: \x1b[0m');

    try
 {
      // 创建流式请求

      const
 stream = await anthropic.messages.create({
        model
: "claude-3-5-sonnet-20241022",
        max_tokens
: 4096,
        messages
: conversationHistory, // 传入完整的历史记录
        stream
: true, // 开启流式模式
      });

      let
 fullResponse = "";

      // 实时处理流事件

      for
 await (const event of stream) {
        if
 (event.type === 'content_block_delta' && event.delta.type === 'text_delta') {
          process.stdout.write(event.delta.text);
          fullResponse += event.delta.text;
        }
      }

      // 记录助手回复到历史,以便下一轮对话使用

      conversationHistory.push({ role: "assistant", content: fullResponse });

      // 继续下一轮对话

      askQuestion
();

    } catch (error) {
      console
.error("\nError:", error.message);
      rl.close();
    }
  });
}

// 启动

askQuestion
();

运行:

node chat.js

现在你拥有了一个支持上下文记忆、打字机效果的终端聊天工具!

5. 高级技巧:System Prompts (角色设定)

在 Linux 运维中,你可能需要一个专门的 "Shell 专家"。

const stream = await anthropic.messages.create({
  model
: "claude-3-5-sonnet-20241022",
  max_tokens
: 1024,
  // 核心:设置 system prompt

  system
: "你是一个资深的 Linux 运维工程师。回答请简练,优先给出 Shell 命令,并简要解释参数。",
  messages
: conversationHistory,
  stream
: true,
});

6. 将脚本变为系统命令

为了方便在任何目录下使用,我们可以将其变为全局命令。

  1. 1. 在 chat.js 第一行添加 Shebang:
    #!/usr/bin/env node
    import
     Anthropic from '@anthropic-ai/sdk';
    // ... 后面的代码
  2. 2. 赋予执行权限:
    chmod +x chat.js
  3. 3. 建立软链接到 /usr/local/bin (需要 sudo):
    sudo ln -s $(pwd)/chat.js /usr/local/bin/claude-chat

现在,你在终端任何位置输入 claude-chat 就可以直接呼出你的 AI 助手了!

7. 常见问题排查

  • • Error: 401 Unauthorized: 检查环境变量 ANTHROPIC_API_KEY 是否正确导出。
  • • Error: 400 Invalid Request: 检查 messages 数组格式,确保 role 交替出现(user -> assistant -> user)。
  • • Connection Timeout: Linux 服务器如果需通过代理访问外网,需设置 https_proxy 环境变量,或在 SDK 初始化时配置 agent
import { HttpsProxyAgent } from 'https-proxy-agent';

const
 anthropic = new Anthropic({
  httpAgent
: new HttpsProxyAgent('http://127.0.0.1:7890') // 如果有代理
});

通过官方 SDK,你可以轻松将 Claude 集成到你的 CI/CD 脚本、自动化运维工具或个人工作流中。Enjoy coding!

最新文章

随机文章