乐于分享
好东西不私藏

AI 编程助手的"不务正业" — OpenCode 免费额度与自定义 Agent 实战

AI 编程助手的"不务正业" — OpenCode 免费额度与自定义 Agent 实战
OpenCode(注意不是 OpenAI)是个开源的 AI 编程 agent,GitHub 上已经 160K+ stars 了。本来我装它就是为了写代码,结果用了几个月发现,这玩意儿最让我惊喜的反而不是写代码(当然写代码也强),而是两个"不务正业"的用法。

一是它的免费额度实在太慷慨了,不登录也有免费模型,200k 上下文对服务器运维绰绰有余。二是它的 Agent 机制,让我可以自定义一个只会搜索的 agent,某种程度上能代替搜索引擎。

下面展开说说。

准备工作

装 OpenCode 很简单,一行命令搞定。

curl -fsSL https://opencode.ai/install | bash

装完直接就能用,会有内置的免费模型。你还可以接自己的 API Key(Claude、GPT、DeepSeek 都行),或者订阅他们的 Go 计划($10/月,可以用 Grok 4.5、DeepSeek V4 Pro 这些模型)。

免费模型额度用完了会怎样?不会停,会继续走免费模型。所以就算你订阅了 Go,额度用完也不影响使用,这点很良心。

免费额度慷慨得不像话

200k 上下文是什么概念

我日常维护的 K8s 集群配置在一个专门的目录,里面用 Kustomize 管理多个应用(Traefik、PostgreSQL、Supabase、Redis,业务应用 等)。

200k 上下文什么概念?基本上一整个 kustomizations/ 目录的 YAML 都能塞进去。我可以直接给 OpenCode 说"帮我看看 traefik 的 config,DNS 质询超时能不能调短一点",它读完所有文件直接定位到具体行,改完我 kustomize build 验证一下就行,不用自己翻来翻去找字段。

场景一:PostgreSQL 外部数据库

我的 PostgreSQL 跑在集群外面,要通过 Endpoints 引入集群。看一下配置:

apiVersion:v1kind:Servicemetadata:name:postgresqlnamespace:defaultspec:clusterIP:Noneports:-port:5432targetPort:5432---apiVersion:v1kind:Endpointsmetadata:name:postgresqlnamespace:defaultsubsets:-addresses:-ip:10.111.0.14ports:-port:5432

以前要改 IP 地址,得先找到这个文件,找到 subsets.addresses.ip 这个字段(YAML 嵌套多了你懂的),再改。现在直接说"把 PostgreSQL Endpoints 的 IP 改成 10.111.0.15",它改了,我跑 kustomize build 确认没问题,提交,ArgoCD 自动同步。

其实这个配置还有一个好处,因为 Service 设置的是 clusterIP: None(Headless Service),所以应用直接用 postgresql.default.svc.cluster.local 就能访问,IP 变了也不用改应用的配置。

场景二:DNS 配置防单点故障

之前我的 CoreDNS 监听 127.0.0.1:53,问题很简单:CoreDNS 挂了,整个系统的 DNS 解析就炸了。单点故障嘛。

我想的是配 systemd-resolved,主 DNS 用 CoreDNS,如果 CoreDNS 挂了,自动用备用 DNS。但说实话我对 systemd-resolved 的配置不太熟(谁没事天天配这玩意儿),于是找 OpenCode 帮忙。

我大概描述了一下需求,它给了我配置方法,修改 /etc/systemd/network/10-netplan-eth0.network.d/dns-override.conf

Network]DNS=127.0.0.1#5353DNS=183.60.83.19DNS=183.60.82.98UseDNS=no

然后 CoreDNS 的监听端口改到 5353,systemd-resolved 监听 53。这样 CoreDNS 挂了,systemd-resolved 会自动 fallback 到 114.114.114.114。

实际调整了一下,因为 53 端口被 systemd-resolved 占了,所以 CoreDNS 改监听 5353,systemd-resolved 的 DNS=127.0.0.1#5353 就行了。

妈妈再也不用担心 DNS 挂了上不了网。

完成之后,记得让opencode帮你生成交接文档哦。

场景三:RustFS 调研部署

RustFS 是一个用 Rust 写的分布式文件系统,之前完全没接触过。我自己也想过手动部署,但步骤有点繁琐,懒得看文档一步步搞。

于是让 OpenCode 帮我一条龙搞定:

  1. 研究安装方法
  2. 部署并验证
  3. 写个性能测试脚本

最后它给了我一个测试脚本,跑出来的结果如下。

想看详细数据的可以直接看下面这个表。

大小    并发    数量        方向        吞吐量        平均延迟     P50     P99      IOPS4KB     4       32       Upload      0.81MB/s      19.31ms     19.18ms  27.10ms  51.794KB     4       32       Download    2.49MB/s       6.28ms      6.02ms  14.82ms 159.3464KB    4       32       Upload     11.46MB/s      21.81ms     21.91ms  30.03ms  45.8564KB    4       32       Download   38.05MB/s       6.57ms      6.17ms  11.86ms 152.221MB     4       16       Upload     68.94MB/s      58.03ms     58.11ms  68.24ms  17.231MB     4       16       Download  380.69MB/s      10.51ms     10.62ms  20.98ms  95.1716MB    2       8        Upload     70.33MB/s     454.97ms    458.42ms 520.10ms   2.2016MB    2       8        Download  441.01MB/s      72.56ms     72.67ms  96.54ms  13.7864MB    1       4        Upload     49.16MB/s    1301.81ms   1282.91ms1377.72ms   0.7764MB    1       4        Download  310.45MB/s     206.15ms    198.72ms 245.19ms   4.85

小文件(4KB)的下载延迟才 6ms,大文件(1MB)的下载吞吐能到 380MB/s,对于用 Rust 写的文件系统来说,表现还不错。

整个过程下来,我基本上没碰过 RustFS 的文档,全是 OpenCode 搞定。

自定义 Agent = 你的专属搜索引擎

前面说的是 OpenCode 默认的能力,下面说一下它的 Agent 机制。

OpenCode 允许你自定义 agent,每个 agent 可以精确控制它能用的工具。你可以创建一个"只会搜索"的 agent,它的全部能力就是 websearch + webfetch + question,其他所有工具全部关掉。

我的配置大概长这样:

# agents/chat.mddescription:仅使用网络搜索、网页抓取和用户提问的调研Agentmode:primarytemperature:0.7tools:websearch:truewebfetch:truequestion:trueread:falseedit:falsewrite:falseapply_patch:falseglob:falsegrep:falsebash:falsetask:falseskill:false# ... 其余全部关掉

核心思路是:只给 AI 搜索和读网页的能力,不给它改文件、写代码、跑命令的权限。

为什么比搜索引擎香

传统搜索引擎的痛点,大家都懂:

  • 搜个技术问题,前几条全是 SEO 垃圾
  • 得打开 5 个标签页,一个个看,自己对比总结
  • 广告比正文还多

这个 agent 的流程是:

你问问题 → AI 理解意图 → websearch 搜 → webfetch 读内容 → 给你整理好的答案

省去了"打开 5 个页面 → 手动对比 → 自己总结"这个过程。它直接帮你读完所有相关页面,然后告诉你"根据这几篇文章,结论是 XXX"。

比如你问"Rust 的 web 框架选哪个",它会搜到 Actix-web、Axum、Rocket、Warp,然后对比各自的优缺点,最后给你一个推荐。

当然它也不是万能的,对于非常时效性的信息(比如某服务今天挂了没)还是得自己去搜,但对于技术调研、查库的用法、比较不同方案这些场景,体验好太多了。

总结

OpenCode 这玩意儿,本来以为只是一个写代码的助手,结果用下来发现它能干的事情远不止写代码。

三个让我比较满意的点:

  1. 免费额度够意思 — 不登录也能用免费模型,200k 上下文对服务器运维绰绰有余
  2. 自定义 Agent 扩展了边界 — 只给搜索工具,它就能当搜索引擎用
  3. 真实的效率提升 — 不管是配 DNS 还是部署 RustFS,本来要花半小时查文档的事,几句话就搞定了

如果你也有 K8s 集群要维护,或者经常要做技术调研,不妨装个 OpenCode 试试。预算够的话订阅 Go 计划,$10/月就能用 Grok 4.5、DeepSeek V4 Pro 这些模型,性价比确实高。

参考链接

  • OpenCode 官网: https://opencode.ai
  • GitHub 仓库: https://github.com/anomalyco/opencode
  • OpenCode Go 计划: https://opencode.ai/go