爱意满满的作品展示区。
qshine

从零写一个 Agent: 15 章开源教程,每章都能跑

  •  1
     
  •   qshine ·
    qshine · 1 day ago · 1188 views

    大家好,分享一个自己做了一段时间的开源项目 Mino:用 Go 从零写一个终端里的 coding agent ,同时整理成一份分章教程。

    为什么做这个

    用 Claude Code 、Codex 这类工具的时候,我一直好奇它们内部到底在做什么:模型每次收到的是什么?工具调用跑到一半进程被杀了怎么办?上下文满了怎么压缩?权限和沙箱怎么做?

    光看文章不太过瘾,所以决定自己从零写一个,不用任何 agent 框架,只用官方 OpenAI Go SDK 调 Responses API 。边写边整理成教程,给和我一样想搞懂原理的人。

    教程怎么组织

    一章对应一个可运行的版本( git tag chapter-01 … chapter-15)。每章从一段能观察到的交互讲起,说明模型收到了什么、程序怎么处理返回,最后用一个小实验验证效果和边界。中英双语。

    目前 15 章已经全部发布:

    1. 流式终端问答
    2. JSONL 对话历史与重启恢复
    3. Agent 循环 + 逐次批准的 Bash
    4. 中断工具调用的如实恢复(不重复执行,结果未知要用户确认)
    5. 多会话管理
    6. 上下文压缩(手动 /compact + 自动预算检查)
    7. 项目 Skills
    8. 限定在项目目录内的文件读写工具
    9. MCP ( HTTP / stdio )
    10. 安全防护:统一工具策略、受保护路径、三种权限模式
    11. Evals:声明式用例 + 确定性评分
    12. macOS Seatbelt 沙箱(限制写入、断网)
    13. 用户记忆
    14. 子 Agent (并行委派任务)
    15. 自定义子 Agent 角色

    适合谁

    • 会一点 Go (变量、函数、错误处理就够了),想搞懂 agent 原理的人
    • 之前没用过模型 API 也可以,从第 01 章开始就行
    • base_url 可以配置,只要兼容 OpenAI Responses API 的服务都能用

    试用

    目前只支持 macOS 13+( Apple Silicon / Intel ),一行安装:

    mino_installer="$(curl --proto '=https' --tlsv1.2 -fsSL https://raw.githubusercontent.com/qshine/mino/main/install.sh)" && bash -c "$mino_installer" && export PATH="$HOME/.mino/bin:$PATH"
    

    最后

    代码刻意写得比较克制,以可读为主,没追求功能大全。哪里讲得不清楚、写错了或者缺了什么,欢迎在这里或 GitHub 上提,谢谢!

    6 replies  •  2026-10-29 23:02:25 +08:00
    yueyueyan
        1
    yueyueyan  
       1 day ago
    让我来验证下能不能教会零基础的哈哈
    wdmx007
        2
    wdmx007  
       1 day ago
    谢谢分享,学习一下
    iorilu
        3
    iorilu  
       1 day ago
    不错, 有空学下

    我想问下, 你这个项目完全手工编的吗
    qshine
        4
    qshine  
    OP
       1 day ago
    @iorilu 谢谢, 当然不是, 但是章节和技术细节我是 review 过的
    simo
        5
    simo  
       1 day ago
    想系统看一遍,坚持了几页就不想看了,个人感觉太啰嗦,至少可以压缩 1/2 。
    hueralin
        6
    hueralin  
       1 day ago
    不支持一个目录下好几个仓库吗,现在 AI 写代码,好多个仓库在一个目录下。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1428 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 18:25 · PVG 02:25 · LAX 11:25 · JFK 14:25
    ♥ Do have faith in what you're doing.