Tiana随笔

一个独立开发者的 2026 AI 工具栈

· 工程与效率

标签:#AI #工具 #博客

一个独立开发者的 2026 AI 工具栈

写码、写作、运维、设计,AI 已经渗透到独立开发的每个环节。盘点我今年实际留下来的工具组合和淘汰掉的方案。

去年这个时候,我的"AI 工具箱"里塞了十几个 App:三个不同的聊天窗口、两个笔记里的插件、一个号称能自动写代码的 SaaS、还有订阅了又想不起用没用的几个 API。钱没少花,注意力被撕得稀碎,真到写代码、写文章的时候,反而常常不知道该开哪个。2026 年我做了一次彻底断舍离,把工具栈收敛成一套"少而稳"的组合,月成本降了七成,效率却更高了。这篇文章就是把这套工具栈、选型原则、成本控制、完整工作流,以及半年里被我淘汰掉的东西,原原本本摊开讲给你听。我不想给你一份"抄作业清单"然后结束,因为抄来的搭配长不到你身上;我想给你的是判断框架,让你自己也能在明年工具换代时重新算明白。

我先做一句免责的坦白:下面提到的具体产品名字只是我当下的选择,它们会过时,你也大概率有更顺手的替代品。真正值得抄的,是背后的原则和那张工作流地图。工具是手段,不是目的;一个被工具反过来绑架的开发者,比没有工具的人更累。写作时间背景放在 2026 年 9 月,这一年端侧小模型成熟、云端 API 价格战白热化,正是重新整理工具栈的好时机。回看 2024、2025,那时候本地跑个小模型还卡得怀疑人生,云端又贵又慢;到了 2026,家里一台旧显卡就能扛住摘要打标,云端中档模型的价格已经低到可以"随便问"。这种供给变化,直接改变了"什么该本地、什么该上云"的算盘,所以我这篇不是教你一套固定搭配,而是教你在这个时间点上怎么重新算一遍自己的账。明年供给再变,你照同样的 principles 重算即可。

工具栈盘点

我把日常在用的工具按角色分成六类,每一类只留一个主力,最多一个备胎。少而稳,是我的第一铁律。下面逐类说清楚我留了什么、为什么留。

IDE 内 AI 助手

主力是集成在编辑器里的补全与对话插件,负责写代码时的实时建议、函数级改写、单测生成。我选它的标准是:能读整个工程上下文、能本地跑小模型做简单补全、重活才走云端。纯云端补全在我这种动辄几百行文件的项目里延迟和隐私都让我不舒服,所以"本地轻、云端重"的混合模式是底线。它的价值不在"替我写",而在"替我省掉重复敲键盘":样板代码、正则、类型注解这类机械活交给它,我把脑力留给架构。

终端 Agent

这是一个能在命令行里自己规划、跑命令、读报错、改文件的 Agent,适合"把某个重复任务交出去"。我用它做过批量重命名、日志分析、依赖升级预检。它的关键价值不是替代我思考,而是替我扛住那些"明明简单但很烦"的执行环节。比如一次升级十几个依赖,我让它逐个跑测试、汇总失败,我只看汇总,省下的不是智力,是耐心。但要强调:终端 Agent 默认无写权限或只在我指定的目录,绝不开全局 shell,这是我从一次误删中学来的。

云端模型 API

这是最灵活的一层:对话、摘要、翻译、评审都走 API,按 token 计费。我会同时接两三家,不是为了炫,而是为了"分任务用不同档位":简单分类用便宜的小模型,复杂推理才上大模型。可切换是关键,锁死在一家会让你在涨价或限流时束手无策。我的调用都包了一层自己的路由函数,业务代码对"用哪家"完全无感知,切换只改配置。这一层也是月度成本的大头,所以后面有专门的成本控制段落。

自托管小模型

我在家里一台闲置小主机上跑了一个轻量本地模型,专门处理"敏感但不复杂"的任务:读本地草稿做摘要、给笔记打标签、做代码里的密钥扫描。它慢、不聪明,但数据不出门,给了我一种"有些事不必上传"的安心。端侧小模型在 2026 年已经能胜任这类轻活,是我这一年工具栈里性价比提升最明显的一环。它不抢云端风头,只做"该在本地做"的那部分。

笔记与评测工具

想法、碎片、评测记录都进同一个笔记库。我特别看重"评测"这一半:每换一个模型或提示词,我会在笔记里留一份小测,记录它在我的真实任务上的表现,避免被营销话术带跑。没有评测记录的选型都是盲选。比如某模型宣传"代码最强",但我实测在"中文技术文润色"上还不如便宜档,这种差异只有自己的评测笔记能暴露。笔记用开放格式、能随时导出,是我对抗锁定的底线。

可观测工具

API 调用、token 消耗、延迟、错误率,我用一套很轻的日志加看板盯着。不是要搞运维,而是为了回答一个很现实的问题:"这个月钱花哪了、哪个环节最贵"。看不见成本,就谈不上控制。我的可观测不接重型 APM,就是几行日志落盘 + 一个本地脚本出周报,够用就好。很多独立开发者忽略这一层,等到账单爆炸才后悔,可观测是成本控制的眼睛。

具体做法:每次模型调用我都记一行 日期,任务档位,模型,输入token,输出token,耗时,花费,周末脚本聚合成"各档位占比""各模型花费""最贵单次调用"。第一次看到报表时我惊了:七成花费来自"本来该用 trivial 却误用了 hard"的调用,全是手滑。改了路由默认档位后,当月省了四成。可观测的价值不在"监控",而在"把无意识的浪费变成可见的数字":你只有看见它,才能改它。这套日志我也接进了前面说的预算守护,超阈值就告警,等于给成本装了个刹车。

选型三原则

工具多到让人晕,是因为缺原则。我的三条,按重要性排。这三条不是口号,是我被坑出来的血泪经验。

成本可控:先算账再上手

任何一个新工具,我先用"最坏月成本"问自己:如果每天重度用,一个月多少钱?超过我心理阈值(比如单个工具 30 美元/月)的,要么先试用再决定,要么直接放弃。AI 工具的订阅制很容易"忘关自动续费",我的办法是统一在一张表里登记所有订阅的扣费日,月初看一眼。成本可控不是"越便宜越好",而是"每一笔支出我都知道、都愿意"。一个贵但天天在用的工具,比十个便宜但吃灰的更划算,反过来,一个贵又偶尔用的,就该换成按量计费。我给自己定的硬杠是:任何"试用转付费"的工具,必须在试用期内用它完成过至少三个真实任务,否则一律不续;这条拦掉了我至少四个"看着不错但用不上"的订阅,每月少花近四十美元。钱是小事,关键是别让"怕浪费已付的订阅费"反过来逼你用不该用的工具,那才是双重亏损。

可替换不锁定:接口比品牌重要

我尽量让每个工具处在"能被换掉"的位置。比如云端模型调用都包一层自己的适配函数,切换供应商只改配置不改业务代码;笔记用开放格式、能随时导出;本地小模型走标准协议,模型文件可替换。锁定发生在你把数据和工作流焊死在某个闭源格式上时,一旦它涨价或关停,你连走都走不掉。我有个朋友把所有笔记锁在某个闭源 App,结果它砍了免费层,他几千条笔记导出是残缺的,迁移痛苦了两个月。可替换原则的实质,是"永远保留退出权"。

本地优先处理敏感数据

凡是涉及真实代码、草稿、读者信息、密钥的内容,默认走本地或自托管,能不上云就不上云。这不是 paranoia,是 2026 年数据泄露新闻看多了之后的本能。我的分层很明确:公开资料、可丢弃的草稿可以上云;生产代码、私密笔记、凭证相关,一律本地。自托管小模型就是为这层存在的。本地优先的代价是体验和速度,但换来的是"数据在哪我说了算":对独立开发者,这种掌控感比省几秒延迟值钱。

# 一个极简的模型路由:不同任务走不同档位,且可一键切换供应商
# 这就是"可替换不锁定"原则在代码里的落地

from dataclasses import dataclass
from typing import Dict

@dataclass
class ModelConfig:
    provider: str
    model: str
    max_cost_per_1k: float

# 任务 -> 模型档位。新增供应商只需加一行配置,业务代码零改动
ROUTER: Dict[str, ModelConfig] = {
    "trivial":  ModelConfig("cheap",  "mini-8b",   0.01),  # 分类、打标
    "normal":   ModelConfig("mid",    "standard",  0.05),  # 摘要、改写
    "hard":     ModelConfig("top",    "frontier",  0.30),  # 复杂推理
}

def pick(task_kind: str) -> ModelConfig:
    return ROUTER.get(task_kind, ROUTER["normal"])

# 切换供应商时,只需改 ModelConfig 里的 provider/model 字段
# 业务代码对"用哪家"完全无感知,这就是抗锁定

这段代码别看简单,它让我在上半年某家涨价时,五分钟切到备选供应商,读者和我的工作流毫无感知。工具栈的韧性,就藏在这种"看似多余"的抽象里。

终端 Agent 的安全用法

终端 Agent 是我工具栈里"能力最强也最危险"的一员,专门讲讲怎么安全用它。核心就一条:默认无权,按需授权。我从不开全局 shell 权限,而是给它一个"沙盒命令清单":只允许它跑我白名单里的命令,且只在指定目录。下面是我实际用的一个最小配置思路:

# 终端 Agent 的命令白名单:只放行安全、可逆、限定目录的操作
ALLOWED_COMMANDS = (
    "pytest",          # 跑测试
    "ruff",            # 静态检查
    "git status",      # 看状态(只读)
    "python -m pytest",
)

def safe_run(cmd: str, cwd: str) -> str:
    # 1) 命令必须在白名单前缀内
    if not any(cmd.startswith(c) for c in ALLOWED_COMMANDS):
        raise PermissionError(f"命令不在白名单: {cmd}")
    # 2) 工作目录必须限定在项目内
    if not cwd.startswith("/Users/me/blog"):
        raise PermissionError("目录越界")
    # 3) 禁止管道到 shell、禁止 sudo
    if "|" in cmd or "sudo" in cmd:
        raise PermissionError("禁止管道/sudo")
    # 真正执行(这里省略 subprocess 细节)
    return run_subprocess(cmd, cwd)

有了这层,Agent 想"顺便 rm 一下"或"curl 个脚本执行"都会被拦。我甚至把 git push 也排除在白名单外,发布动作永远留给我本人点。终端 Agent 的定位是"高级执行手脚",不是"拥有服务器的同事":这个边界划清,它才敢放心用。半年里它帮我跑过上万次测试,没出过一次越权,靠的就是这份克制。

我对"本地优先"的实操分层

"本地优先处理敏感数据"说着简单,落到每天要判断。我给自己划了三档,遇到内容先归类再选工具:

  • 公开档:已决定发布的文章、公开的文档、可丢弃的草稿。这档可以放心上云,用最强模型换质量,反正本来就要给人看。
  • 内部档:未发布的思路、项目代码、日志片段。这档默认本地,只有确实需要云端智能时才脱敏后上传(比如去掉真实变量名、路径),用完不留存。
  • 机密档:密钥、读者个人信息、客户资料、财务数据。这档硬性本地,连脱敏都不上传,宁可模型差点也不用云。自托管小模型就是为这档存在的。

分档之后,"要不要用云"不再是纠结,而是查表。我还在笔记模板里加了"数据档位"字段,写东西时顺手标,避免发布前才慌慌张张排查泄密。本地优先不是"全本地"的偏执,而是"按敏感度分级"的清醒,把最该护的护死,把可放的放够,平衡就出来了。

月度成本构成与控制手段

先说我现在的真实账本结构(数字为示意,因人而异):云端 API 是大头,约占六成;IDE 助手订阅两成;自托管电费与主机摊销一成;其他杂项一成。控制成本不是不花钱,而是把钱花在刀刃上,且让每笔支出可被解释。

缓存:重复提问别再付钱

很多 API 支持提示缓存,把不变的上下文(比如系统提示、项目背景)缓存后,后续请求只算增量 token。我把博客项目的"背景知识"常量化并开启缓存,同一会话里的多次调用成本直接腰斩。这是最划算的一招,几乎零成本、立竿见影。注意缓存有 TTL,背景知识变化不频繁时设长一点;变化快的(如实时日志)就别缓存,否则模型拿着旧上下文出错更贵。

批量:离线任务别实时烧

需要一次性处理几百篇旧文摘要、批量翻译这类任务,我全丢到批处理接口或本地排队跑,而不是在交互时实时调用。批量通常有折扣,而且不占实时额度,体验也更好。我有个定时任务,每周日凌晨用批处理给旧文重算标签,平时完全不占交互额度。批量的思路是"把不急的任务挪到便宜的通道",和云计算的竞价实例一个道理。

分任务用不同档位模型

这是前面路由代码的现实版。我的经验比例大概是:七成请求其实是 trivial/normal 级别,根本用不着最贵的大模型。把高档位严格留给"真的需要它聪明"的时刻,月账单会好看很多。判断标准很简单:这事小模型做出来我愿意直接用吗?愿意,就别上大车。我曾经图省事全用大模型,月费是现在的近三倍;分层后质量没感知差异,钱包轻松了。

import time

# 一个极简的本地调用预算守护:超预算就降级或拒绝
# 配合上面的 ROUTER 使用,把"成本"变成代码里可读可控的量

MONTHLY_BUDGET = 20.0   # 美元,示意阈值
_spent = 0.0

def charge(cost: float, task: str) -> str:
    global _spent
    if _spent + cost > MONTHLY_BUDGET:
        # 超预算:降级到本地小模型或排队到下次,而非硬烧钱
        print(f"[warn] 本月预算将超额,任务 {task} 降级为本地处理")
        return "local_fallback"
    _spent += cost
    return "cloud"

def report() -> float:
    return _spent

# 用法:每次调用前先 charge(预估成本, 任务名),返回 cloud 才走云端

这个守护虽然粗糙,但把"预算"从脑子里的模糊感觉变成了代码里的硬数字。配合可观测日志,我每月底都能说出"钱花在了哪、哪类任务最贵",下一步优化就有方向。成本控制的第一步,永远是"看见"。

一条完整工作流

把工具摆出来没用,关键看它们怎么串成一天。下面是我从"想法"到"上线"的真实链路,每一步标了用什么、为什么这么排。

想法:笔记 + 本地小模型打标签

脑子里的碎片先丢进笔记,本地小模型自动按主题打标签、去重。这一步全程离线,零成本,也不怕想法太傻被上传。我强调"本地"是因为想法阶段的东西最私密、最半成品,没必要进任何云端。标签打错了我手动改,但 80% 它能分对,省了我整理的时间。这步还让"想法"和"发布"在工具层面就分了流:想法留在本地、永不上云;只有我决定写成的文章才进公开档、才允许调用强模型。这种"从源头分流"比事后排查泄密省心得多,也是本地优先原则在工作流起点就落地的体现。

原型:IDE 助手 + 云端大模型

动手时,IDE 助手做实时补全,遇到架构级问题再把上下文贴给云端大模型要方案。我坚持一条:大模型给的代码我一定本地跑通才留,从不"看起来对就复制"。云端大模型在这一步扮演"高级结对程序员",但我保留最终判断。原型阶段允许试错,所以我把耗时的探索性提问集中处理,避免频繁打断心流。

测试:终端 Agent 扛重复活

单测骨架让 Agent 生成,我审逻辑;批量接口测试、边界 case 构造交给终端 Agent 跑,它把失败栈丢回给我,我只做判断。这省下了大量"盯着测试跑"的死时间。注意 Agent 跑测试只在隔离环境,绝不碰生产库。测试是"重复且机械"的重灾区,正好交给 Agent,把我从耐心消耗里解放出来。举个真实例子:有次给博客加了个 Markdown 解析的边界处理,要验证二十多种奇怪输入(嵌套代码块、表格里的转义、emoji 截断),我让 Agent 生成这二十个用例并跑,十分钟出结果,我只在它报告"第三个用例崩了"时介入看一眼,发现是我正则写错。这种"它跑、我看结论"的分工,比我自己一个个试快了不止一倍,而且不累。关键仍是白名单,Agent 只能跑测试命令,碰不到我的草稿和密钥。

上线:可观测 + 人审闸门

发布走 CI,每次调用 API 都记日志,看板里能看见这次上线烧了多少 token。涉及对外发布或删除的动作,保留人工确认。上线后本地小模型再扫一遍产物里有没有手滑的密钥。上线是"不可逆动作集中区",所以人审最严。可观测在这里不是炫技,是让我对"这次发布成本几何"心里有数,也方便下个月优化。

这套链路跑顺之后,我最明显的感受是"切换成本"降为零:每个环节都知道该用哪个工具,不再有"这个活该开哪个 App"的纠结。工具栈的价值,最终就体现在这种"无感"上,好工具是你忘了它存在的工具。

半年里被淘汰的工具与原因

断舍离最有价值的部分,是看清什么该扔。下面三样是我亲手删掉的,以及理由,供你避坑。每一样淘汰都不是因为"能力差",而是"在关键原则上让我不舒服"。

  • 某"全自动写代码"SaaS:宣传能端到端生成应用,实际在中等复杂度项目上胡编依赖、跑不通,且闭源锁定严重。淘汰原因:不可控、不可替换、产出要返工反而更慢。教训是,凡是宣称"替你思考"的,先在真实项目上测,别信 demo。它的免费期一过就要高价订阅,我庆幸没深陷。
  • 某笔记 AI 插件:功能花哨但数据强制上云、格式封闭,导出是残缺的。淘汰原因:违反本地优先与可替换原则,长期风险大于便利。当时图它摘要好看,后来意识到我的全部想法都被锁在别人服务器上,拔掉插件那天如释重负。
  • 某高价"旗舰"模型订阅:单独订阅很贵,但我发现它在我 80% 的任务上和便宜档位结果无差异。淘汰原因:成本失控且无必要,改用按量路由后效果持平、支出大降。这让我彻底接受了"不是越贵越适合我"的事实。

共同规律是:被淘汰的不是"能力差",而是"在关键原则上让我不舒服":锁定、不透明、贵得没道理。反过来,留下来的工具都符合三原则,用着用着就成了肌肉记忆。断舍离的本质,是让工具栈"长得像你",而不是"长得像广告"。

评测方法论:别被基准带跑

前面几次提到"评测笔记",这里专门讲讲我怎么评测,因为这是"可替换不锁定"能落地的关键,你不测,就不知道换供应商是变好还是变坏。我的评测极简,不追求学术严谨,只求对我自己的任务分布有参考。

第一步,建一个"私人基准集"。我从自己真实工作里挑二十个典型任务:五条中文技术文润色、五段代码补全、三次报错定位、几次分类打标、几次摘要。这些不是网上找的题,是我天天干的活,所以结果直接对应我的体验。每次换新模型或新提示词,都拿这二十个跑一遍,记"可用 / 需改 / 不可用"三档,以及耗时和花费。

第二步,看"可用率"而非"平均分"。一个大模型在十八个任务上惊艳、两个任务翻车,可能不如一个中庸模型在二十个上都"可用":因为翻车的那两个恰恰是你最常在做的。我的笔记里会标"翻车任务是什么",优先避开在我高频任务上翻车的模型,哪怕它总分离谱。

第三步,定期重测。模型迭代快,半年前的"最合适"现在可能变"最贵"。我每季度重跑一次基准集,结论写进笔记,作为续费或切换的依据。这步麻烦,但让我从未被"新模型宣传"冲动消费。评测的本质,是把"我觉得"变成"我测过":独立开发者最该投资的能力,是这套自己说了算的判断力。

给想搭工具栈的人的起步建议

如果你现在是一堆工具里晕头转向,或者还没开始搭,我的建议是"先穷后富、先本地后云":

  • 从零开始别急着买。先用免费额度和本地小模型把完整工作流跑通,知道痛点在哪,再针对性补工具,避免为想象中的需求付费。我见过人一上来就订阅五个付费工具,结果只用到一个。
  • 每个角色只留一个主力,备用最多一个。工具越多,切换成本越高,注意力越碎。当你发现自己"在选工具而不是在用工具",就是太多了的信号。
  • 立刻建一张订阅与成本表。哪怕只是个 Markdown 表格(这篇文章我不在正文用表格,但你的私人记录随便用),把每笔支出、扣费日记下来,月底复盘一次。看不见账,就管不住钱。
  • 给每个工具问三个问题:敏感数据要不要上传?哪天它没了我能换吗?最贵时我付得起吗?两个问题答不上来,就别接。这三个问题对应我前面三原则,是选型的总开关。
  • 保留一份"评测笔记"。换模型、换提示词都留实测,别让营销话术替你做决定。你的任务分布和别人不同,别人的"最强"未必是你的"最合适"。
  • 定期做"工具斋戒"。每季度关掉所有非必需工具一周,看哪些你其实不需要,那一周的缺失感,就是去留最好的裁判。我靠这招又清掉了两个吃灰插件。

工具栈不是装备竞赛,是让你更专注的减法。我现在的桌面很干净:一个编辑器、一个终端、一个笔记、一个看板,背后是本地小模型和按需调用的云端 API。它们安静地待在该在的位置,需要时出现,不需要时消失。对一个独立开发者来说,这大概就是 2026 年最舒服的状态,AI 在帮我,但没在替我慌。

最后说句掏心窝的:工具再好,也替代不了你对自己的项目那份"手感"。我见过有人花三个月调工具栈、博客却一篇没写;也见过有人只用免费模型、照样做出漂亮产品。工具是杠杆,但支点永远是你自己的判断和持续行动。先把工具栈收敛到"不打扰你",然后把省下来的注意力,全部投回真正重要的事,写代码、写文章、把东西做出来。这,才是搭工具栈的初心,也是我这篇啰嗦长文最想递给你的那句话。如果你读完只记得一句,我希望是:少买一个工具,多写一行自己的代码,后者给你的回报长远得多。2026 年的工具已经够多了,缺的从来不是工具,是那个不被工具牵着走、始终清楚自己要做什么的你。

相关文章