eino-example-deep多agents文件处理
DeepAgent 项目分析 📁 项目路径:eino-examples/adk/multiagent/deep/🎯 核心模式:Plan-Execute(计划-执行) 多智能体编排 一、项目概览adk/multiagent/deep/ 是一个基于 Eino 框架 deep.New() 预构建 Agent 的多智能体 Excel/文件处理系统。它演示了 Plan-Execute(计划-执行) 模式: 1主 Agent 制定分步计划 → 将每一步委派给专业化的子 Agent 执行 🔗 与参考文档 ch04 的关系 参考文档 ch04_tool_backend_filesystem.md 本项目 adk/multiagent/deep/ deep.New() 最简用法 deep.New() 高级用法 仅配置 Backend + StreamingShell 手动构建自定义 Tools 和 SubAgents Agent 自动获得文件系统能力 展示多智能体编排能力 适合快速上手 适合生产级复杂任务 二、目录结构123456789101112...
go-字符串排序
Go 语言:字符串排序详解🔹 核心三步:字符串排序的标准流程1234567891011str := "eat"// 第一步:字符串 → 字节切片(因为 string 不可修改)s := []byte(str) // ['e', 'a', 't']// 第二步:对字节切片排序sort.Slice(s, func(i, j int) bool { return s[i] < s[j] }) // ['a', 'e', 't']// 第三步:字节切片 → 字符串sortedStr := string(s) // "aet" 🔹 为什么要转 []byte?因为 Go 的 string 是不可变的,不能原地修改: 12str := "eat"str[0] = 'x' /...
go-结构体成员Tag
《Go 程序设计语言》4.5 JSON — 结构体成员 Tag1. Tag 是什么?Tag(标签) 是附加在结构体字段上的元信息字符串,用反引号 ` 包裹: 123456type Movie struct { Title string Year int `json:"released"` Color bool `json:"color,omitempty"` Actors []string} 💡 Tag 不影响 Go 代码的逻辑,它是给 encoding/json 等包读取的”标注”,用来控制序列化/反序列化的行为。 2. Tag 的语法1`key:"value" key2:"value2"` 以 JSON 为例,通用格式为: 1`json:"字段名,选项"` 写法 含义 json:"released" JSON 字段名为 released json:"col...
go-结构体核心概念总结
《Go 程序设计语言》4.4 结构体 核心概念总结1. 基本定义结构体(struct)是聚合数据类型,将零个或多个不同类型的值组合成一个实体: 1234567891011type Employee struct { ID int Name string Address string DoB time.Time Position string Salary int ManagerID int}var dilbert Employee 🔹 相同类型成员可合并声明123type Point struct { X, Y int // 等价于 X int; Y int} 2. 成员访问与修改1234567891011// 点操作符访问dilbert.Name = "Alice"fmt.Println(dilbert.Salary)// 取成员地址(成员可寻址时)position := &dilbert.Positio...
go-切片用法-切片头详解(2/2)
Go 语言:切片头(Slice Header)深度解析🔹 切片头是什么?Go 中切片变量本身不直接存储数据,它只是一个包含三个字段的小结构体,这个结构体就叫切片头(Slice Header): 123456// Go 源码中的实际定义(reflect 包)type SliceHeader struct { Data uintptr // 指针,指向底层数组 Len int // 长度 Cap int // 容量} 🎯 形象比喻123456789切片变量 values┌──────────────────────┐│ Data: 0xABC (指针) ││ Len: 4 │ ← 这三个字段就是"切片头"│ Cap: 4 │└──────┬───────────────┘ │ ▼ 底层数组 [5, 3, 8, 1] ← 真正的数据在这里 💡 切片头就像一个遥控器,真正的数据(底层数组)...
go-结构体指针与返回值类型知识点汇总
Go 结构体指针与返回值类型 知识点汇总1. 函数返回指针 *T vs 返回值 T🔹 返回指针 *Employee — 可以直接修改原始数据1234567func EmployeeByID(id int) *Employee { /* ... */ }// ✅ 读取fmt.Println(EmployeeByID(id).Position)// ✅ 修改 — 修改的是原始数据EmployeeByID(id).Salary = 0 内存模型: 12EmployeeByID(id) → 指针 → 内存中的 Employee ↑ 修改 Salary,改的是它 💡 返回指针时,你拿到的是原始数据的地址,通过指针修改就是直接改原始数据。 🔹 返回值 Employee — 不能直接修改1234567func EmployeeByID(id int) Employee { /* ... */ }// ✅ 读取fmt.Println(EmployeeByID(id...
go-利用map构建set
Go 语言:使用 map[string]struct{} 实现 Set🔹 struct{} 是什么?struct{} 是空结构体,Go 中最小的类型: 12var s struct{}fmt.Println(unsafe.Sizeof(s)) // 0 —— 占用 0 字节内存 它只有一个可能的值:struct{}{}(空结构体的字面量) 不占用任何内存空间,是理想的”占位符”类型 🔹 为什么用它做 Set?Set(集合)只关心 key 存不存在,value 没有实际意义。对比两种写法: 12345// 方式一:map[string]bool — value 占 1 字节seen := map[string]bool{"alice": true, "bob": true}// 方式二:map[string]struct{} — value 占 0 字节 ✅ 更省内存seen := map[string]struct{}{"ali...
go-map用法
《Go 程序设计语言》4.3 Map 核心概念总结1. Map 的本质Map 是哈希表的引用,类型写作 map[K]V,存储键值对。 组成部分 要求/说明 Key 必须支持 == 比较(所以 slice、map、function 不能做 key) Value 无任何类型限制 2. 创建方式1234567891011//make 创建(推荐用于需要指定初始容量的场景)ages := make(map[string]int)//字面量初始化ages := map[string]int{ "alice": 31, "charlie": 34,}//空 map(等价于 make,但更简洁)ages := map[string]int{} 3. 核心操作123456789101112131415161718192021222324252627//赋值ages["alice"] = 32//读取(key 不存在返回 value 类型的零值)a...
go-切片用法(1-2)
Go 语言切片(Slice)完全指南1. Slice 的本质结构Slice 是变长序列,由三个部分组成: 1234567┌─────────┬─────────┬─────────┐│ 指针 │ 长度 │ 容量 ││ (ptr) │ (len) │ (cap) │└────┬────┴─────────┴─────────┘ │ ▼ [ 底层数组 ... ] 字段 说明 指针 (ptr) 指向底层数组中 slice 可访问的第一个元素 长度 (len) slice 中的元素个数 容量 (cap) 从 slice 起点到底层数组末尾的元素总数 2. 数组与切片的声明区别12345678// 数组(固定长度)a := [5]int{1, 2, 3, 4, 5} // [5]intmonths := [...]string{1: "Jan", 2: "Feb", 12: "...
helix-metis长轮询
Helix 后端长轮询方案详解一、当前问题123456当前 Webhook 模式(需要公网 IP): Helix ──POST /metis/events──▶ OpenClaw:8765 ❌ OpenClaw 必须有公网可达地址长轮询模式(不需要公网 IP): OpenClaw ──GET /poll──▶ Helix ✅ 客户端主动出站 OpenClaw ──POST /bot_callback──▶ Helix ✅ 已有(send.ts 不变) 核心思路:反转连接方向。不再由 Helix 推消息给 OpenClaw,而是 OpenClaw 主动向 Helix 拉消息。 二、长轮询通信流程12345678910111213141516171819202122232425时间轴 ─────────────────────────────────────────────────────────────▶OpenClaw Helix 后...