• 请不要在回答技术问题时复制粘贴 AI 生成的内容
bronyakaka
V2EX  ›  程序员

折腾了大半年的 Go 版编码 Agent 桌面端,来分享下 (Ally)

  •  1
     
  •   bronyakaka · 1 day ago · 1396 views

    之前一直是 kimicode/opencode 重度用户(比较反感 claude 所以 cc 用的不是特别多),后来 DeepSeek 火了想换个便宜的模型接着用,结果发现各种 harness 要么是命令行套壳不好用,要么协议支持不全(很多只认 OpenAI chat ,Anthropic Messages 和 Responses 格式的中转直接歇菜),要么在那折腾 powershell 给自己找麻烦。

    后来自己写了一个,写着写着就成了个完整桌面应用,如今已经迭代了几十个版本,日常工作已经完全平替,分享出来。

    先放地址: https://github.com/Bronya0/ally-agent ( GPLv3 ,Windows/macOS/Linux 都有安装包)

    几个截图:

    图表渲染

    界面截图

    主流协议都支持

    协议层三家通吃 OpenAI Chat Completions 、OpenAI Responses 、Anthropic Messages 三种接口原生支持。接中转站的时候这点挺重要,我自己的感觉是国内中转一半以上是这三种格式混着来的。支持多 API key 自动故障转移,一个 key 被限流了自动切下一个。

    从零开始自己写的执行内核,打磨了无数版本,不是 agent 框架拼的

    后端纯 Go ,没基于任何第三方 agent SDK (那时候也确实没有特别成熟的),从流式解析、工具调度到会话持久化都是手写的。好处是内存占用可控(空载几十 MB ),支持很多个会话并行跑互不干扰——我经常同时开四五个 tab ,一个跑重构、一个跑文档、一个问答,切回来各自的流式状态都在。桌面壳用的 Wails v3 ,压缩安装包十几 MB (主要内置了 ripgrep 不然能到几 mb ),Electron 时代的同学应该懂这个数字意味着什么。

    不用折腾 powershell 了

    windows 上自动检测 git bash 并封装到工具里,三个平台命令工具统一。什么?没 git ?那只能用 workbuddy 这种内置 git bash 、python 的大包产物了……coding 圈应该不存在这个问题

    支持远程 SSH 服务器干活

    内置一套 remote_* 工具:远程读文件、编辑(带版本冲突检测)、建文件、删路径、跑命令,走你本机现有的 ssh 登录,不用在服务器上装任何东西。密码发在聊天里就行,内存缓存 12 小时自动过期,不落盘。我拿它管三台服务器,体验跟本地工作区基本无差别。

    复杂图表结果直接在聊天里渲染

    图表类结果(数据探索、性能对比这种)有个沙箱渲染卡,内置 ECharts ,模型出一段自包含 HTML 就能在聊天流里直接出交互式图表,不用切出去开浏览器。Mermaid 、KaTeX 、代码高亮都是原生渲染,Mermaid 支持全屏和缩放拖拽。

    内置工具二三十个 + 完善的扩展

    除了常规的读写编辑搜索,还有后台服务管理( dev server 托管)、计划任务、子 agent 、HTTP 请求这些。扩展方面 MCP 走标准协议( stdio/SSE/Streamable HTTP ),Skill 兼容 Claude Code 的目录约定,~/.claude/skills 里的技能直接就能被发现。

    多仓库和项目指令

    一个工作区里有多个 git 仓库会自动发现并支持切换; AGENTS.md 支持用户级 + 工作区级 + 多级子目录加载合并,跟 Claude Code 的习惯对齐。

    三家 skill+项目 skill 兼容

    自动识别 claude 、codex 、.agents 和项目的 skill 并去重,不要考虑迁移问题。

    内置编辑器

    支持 h5 预览、代码高亮补全编辑器、资源树……我是喜欢'少即是多'的,不过同事想要这个所以还是做了,需要的时候也不用打开仿达或者资源管理器了

    资源占用低

    前后端优化了很多版本,一般常驻内存 200mb 左右,同时工作五六个会话也不会膨胀多少。

    高缓存命中

    这个其实比较简单,ally 在缓存命中上基本做到很高的水平了,主要是对接各家的文档实现就行,像 openai 的就看源码用 cache key ,ds 就前缀字节命中,claude 比较麻烦也是看 sdk 去贴合缓存的,都是脏活,同时维护三家接口……

    其他

    像什么上下文自动、手动压缩 摘要,大内容边界处理等等脏活都做的比较完善,做的过程也学习了 codex 、claudecode 、pi 、opencode 、kimi code 各家的设计思想,我个人学会的还是比较多的。

    总结

    UI 是自己撸的,设计水平一般吧;浅色模式刚做还是 beta ;生态可能比不过官方那几家的周边( ally 的 mcp 三种协议支持的很完善,其实说实话扩展性上也没啥大的区别)。

    技术栈:Go + Vue3 + Wails v3 ,前后端都在一个仓库里,感兴趣的欢迎来提 issue 。模型侧你用官方 Claude/GPT 也行,接 DeepSeek 、GLM 、Kimi 这类国产模型的 OpenAI 兼容接口也行,反正 key 是自己的

    小手 star 一下项目,一起学习 agent 制作:

    Github: https://github.com/Bronya0/ally-agent

    有问题评论区聊,技术方面可以讨论

    4 replies    2026-09-07 08:49:01 +08:00
    sunorg
        1
    sunorg  
       1 day ago via Android
    是类似另外一个 opencode 的意思吗
    PowerDi
        2
    PowerDi  
       1 day ago
    刚需:手机、打通多服务端同时被手机管理,且服务端走 relay 出公网
    wentx
        3
    wentx  
       1 day ago
    @PowerDi #2 试试这个 dimagent.cn
    PowerDi
        4
    PowerDi  
       12h 33m ago
    @wentx 感谢推荐!!界面很优良
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3182 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:22 · PVG 21:22 · LAX 06:22 · JFK 09:22
    ♥ Do have faith in what you're doing.