Skip to content

Day 1:搭骨架,先跑起来

为什么这是最重要的第一天

很多教程一上来就给你扔几十个文件、一堆配置、import 了一堆你听都没听过的库。你复制粘贴了半小时,终于开始跑——报错了。然后你在 Google 和 GPT 之间来回跳,修 bug 修到怀疑人生。

我们反着来。

今天的 Agent 不会任何 AI。你说"你好",它回"你好"。听起来很蠢?但它是能跑的。 它验证了:Go 装好了、go mod 没问题、你理解了最基本的函数调用。这比任何"看起来高级但跑不起来的代码"都有价值。

地基错了,上面盖什么都塌。地基对了,后面每天加一块砖,第七天就是一座房子。

你需要什么

  • Go 1.21+(第 2 章装过了)
  • VSCode 或 GoLand
  • 一个终端
  • 不需要 API Key、不需要联网、不需要花钱

📦 本项目全程使用的框架版本:

框架首次用到
EinoDay 2
Eino ChatModelDay 2
Eino ToolDay 4
Eino MemoryDay 5
Eino MCPDay 6
net/httpDay 7

今天做什么

今天只做一件事:让程序跑起来。 写一个最简单的 Go 函数——收消息,回消息。不涉及任何 AI。

代码

创建文件夹 customer_service_agent,初始化模块:

bash
mkdir customer_service_agent && cd customer_service_agent
go mod init customer_service_agent

创建 main.go

go
package main

import "fmt"

// simpleAgent 是最简单的 Agent 骨架。
// 目前什么都不做——你说什么,它回什么。
// 但它是能跑的。这就是一切的基础。
func simpleAgent(userMessage string) string {
    return fmt.Sprintf("客服收到:%s", userMessage)
}

func main() {
    testMessages := []string{
        "你好",
        "我的订单什么时候到?",
        "谢谢",
    }

    for _, msg := range testMessages {
        response := simpleAgent(msg)
        fmt.Printf("👤 用户: %s\n", msg)
        fmt.Printf("🤖 客服: %s\n\n", response)
    }
}

运行

bash
go run main.go

你应该看到:

👤 用户: 你好
🤖 客服: 客服收到:你好

👤 用户: 我的订单什么时候到?
🤖 客服: 客服收到:我的订单什么时候到?

👤 用户: 谢谢
🤖 客服: 客服收到:谢谢

你学到了什么

你写了一个 Agent 骨架。虽然它只是个回声筒,但它包含了一个 Agent 最核心的结构:

  1. 输入userMessage — 用户说了什么
  2. 处理:函数体里的逻辑(目前是空的,明天往里填)
  3. 输出:返回值 — Agent 回复用户什么

后面 6 天的所有代码,都是在这个骨架上填充和扩展。simpleAgent 这个函数会变得越来越聪明,但它的"形状"不会变——接收消息,返回回答。

明天的预告

我们会给这个回声筒装上 Prompt 模板——让它知道自己是客服,应该好好说话。还会引入 Mock LLM,让它能根据不同的问题给出不同回答。同样零成本,不用 API Key。


Day 1 完成。你的 Agent 现在什么都不会——但今天的目的达到了:它跑起来了。