Claude Code 配 TaoToken:零编码写家庭管家 App,让 NAS 不再公网裸奔
你的 NAS 还在公网裸奔与其赌运气不如把 NAS 收进内网用 Claude Code 配合 TaoToken 写一个「家庭管家」App远程管理所有设备。TaoToken 的官网和 Key 申请入口都在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 。故事要从飞牛 FNOS 的漏洞说起大量直接映射公网的 NAS 正被扫描器爆破而我把跳板机的方案试通后第一件事就是解决 Claude Code 的模型通道问题。官方额度在写长项目时会中断多把 Key 来回切换更折腾。后来把接口 Base URL 指到 https://taotoken.net/api用一把 Key 跑完整轮开发会话稳定了零编码的 App 也顺利落地。这篇就补上这关键一环。1. NAS 开公网等于在门口贴「欢迎光临」1.1 飞牛 FNOS 漏洞事件离我们并不远飞牛 FNOS 被连续曝出安全漏洞最典型的几类不用登录就能进管理后台、特定请求可以执行任意命令、默认密码一猜就破。这听起来像电影里的黑客剧情但真实情况是全网扫描器每分钟都在自动遍历公网 IP只要你的 5000、8080、22 端口有响应它就开始撞库和匹配漏洞利用脚本。我身边就有人觉得“我密码设成 15 位了怕什么”结果还是被入侵了。原因不是密码不够长而是漏洞利用往往绕过了登录环节。NAS 一旦暴露公网攻击面就从一个局域网服务变成了一个全球服务任何人都能对你的设备发起探测。家里照片、工作文档、Docker 容器里的业务数据全都在同一条战线上。1.2 公网裸奔的五大死穴死穴具体表现暴力破解全网扫描器对 22、5000、8080 这些端口重复尝试弱口令几小时内就会被试穿。弱口令重灾区admin/123456、root/root 这类组合在字典里排在最前面扫描器几乎秒试。零日漏洞厂商还没来得及出补丁攻击者已经利用公开 PoC 打进来了。中间人风险没有正确配置 HTTPS 时登录密码可能被截获局域网里的流量同样能被监听。供应链污染装过的第三方套件或 Docker 镜像若被投毒你的内网就变成了下一个跳板。结论很简单别把 NAS 的端口映射出去。远程访问可以走跳板机但 App 从哪来我的答案是让 Claude Code 零编码写出来。2. 方案选型为什么先接一个稳定模型入口再谈写 App2.1 远程方案的取舍当时我在表格里权衡了几条路NAS 直接开公网配置最省事但安全性最低漏洞和弱口令两个死穴直接暴露。内网穿透工具免费版速度不稳付费版还要经过第三方服务器数据链路多一跳。商业远程控制体验好但厂商能看到你的操作心里总有点别扭。跳板机 SSH 密钥NAS 完全不出门攻击面只剩一台功耗 2W 的电视盒子安全性最高。最终选了最后一种。电视盒子刷 Armbian 当跳板机手机端用一个叫做「家庭管家」的原生 Android App 完成远程唤醒、终端管理和端口转发。这个 App 不是我手写的而是靠 Claude Code 一句一句“聊”出来的。2.2 Claude Code 需要的是稳定模型通道真正开工前一个容易被忽略的问题摆在面前Claude Code 本身要能稳定调用模型才能连续帮你写代码。官方通道在额度用尽后直接 401写一半断掉上下文全部丢失多把 Key 来回切换又很容易搞混环境变量。更别提不同模型的账号不互通想换个更强模型还得重新登录。后来我把模型通道统一指到 TaoToken它是统一 API 兼容通道用一个 Key 就能接入多个模型Base URL 固定为https://taotoken.net/api模型 ID 在模型广场随时切换。对 Claude Code 来说它只认这一个入口对开发者来说不用再关心这把 Key 到底属于哪个平台。简单总结TaoToken 负责让 Claude Code 一直“在线”Claude Code 负责把「家庭管家」写出来。两条腿缺一不可。3. 开工前先做一件事让 Claude Code 连上 TaoToken3.1 拿 Key 和 Base URL打开 TaoToken注册后进入控制台创建 API Key保存为YOUR_API_KEY。Base URL 是https://taotoken.net/api注意末尾没有/v1。模型 ID 不要自己编去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的模型广场按当时的列表选择。我一开始就在这上面犯了迷糊。记成了很多兼容 API 都要加/v1结果 Claude Code 拼出来的请求路径直接 404。后来把 Base URL 改成不带/v1的地址一次通过。3.2 用环境变量配置 Claude Code在终端里执行export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY export ANTHROPIC_MODELYOUR_MODEL_ID然后运行claude。Claude Code 官方读取这三个环境变量把请求发到 TaoToken 的兼容接口。这里的YOUR_MODEL_ID必须以模型广场当前列表为准不同时期可用模型会调整别直接抄教程里的旧 ID。3.3 长期配置写入 ~/.claude/settings.json如果不想每次开终端都 export可以写进配置文件{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_MODEL_ID } }保存后重新打开 Claude Code先用一句话验证“用 100 字介绍你自己。”如果能看到回复说明通道已经通了。这一步走通再进入开发否则后面每轮对话都会卡在认证上。4. 零编码开发「家庭管家」AppClaude Code 是这样干活的4.1 SSH 连接管理模块先生成再本地编译验证我给 Claude Code 的第一个需求是“做一个 SSH 连接管理界面支持保存多个连接配置密钥认证方式列表页展示主机名和端口点击后进到会话页。”Claude Code 直接生成了一套 Android 工程结构连接列表的 RecyclerView 和 Adapter、添加连接的表单 Activity、JSch 的 Session 管理类。我不需要手写 Kotlin 语法只需要在关键位置补充需求比如“这里要支持私钥密码”。它生成代码后我在 Android Studio 里编译遇到报错就把日志贴回对话。整个过程就是“生成—编译—贴报错—再生成”的循环我一行代码都没手写。这个步骤里TaoToken 的作用很实在每一轮对话的上下文必须完整保留。如果中途断连之前的代码结构和报错历史全得重来能连续聊几个小时不断线才写得完这种多模块 App。4.2 终端模拟器不是聊天框是 ANSI 解析家庭管家 App 里最容易被低估的是终端模拟器。我要的是能在手机上跑 vim 和 htop但完全没接触过 ANSI 转义序列、256 色、CJK 字符宽度这些概念。对话大概是这样的我“终端里跑 htop 时颜色乱了顶部还有乱码。”Claude Code“需要支持 ANSI 256 色和 CJK 字符宽度我会重新实现解析器你把这版代码放到 Android Studio 里跑一下然后把崩溃日志贴回来。”我照做把日志粘给它它再改我再编译。来回五六轮终端终于能正常显示。如果没有稳定的模型通道这么长的迭代早就被官方额度中断打断了。4.3 端口转发和 WOL 唤醒两个最值钱的模块端口转发是让我惊喜的功能。原计划只是“在手机上能敲命令就行”后来发现很多场景需要浏览器直接访问 NAS 管理界面。Claude Code 基于 JSch 的setPortForwardingL实现了本地转发把手机localhost:5000映射到 NAS192.168.x.x:5000还做成了可持久化的规则列表App 重启后自动重连。远程唤醒则要求发送 WOL 魔术包到 NAS 的 MAC 地址。我告诉 Claude Code“点击按钮后发 magic packet等 60 秒自动 SSH 探测 NAS 是否启动。”它直接从零实现了 UDP 广播逻辑。只看结果这像是一个小团队做出来的工具。但过程里真正的门槛不是代码而是让 Claude Code 稳定地用同一个上下文连续对话几个小时。这就是我把通道切到 TaoToken 的目的——统一 API 入口省去多 Key 切换和额度中断的折腾。5. 落地到电视盒子把 App 部署成「家庭安全堡垒」5.1 电视盒子刷 Armbian 的三步准备闲置电视盒子功耗 2W刷 Armbian 后就是一台低功耗 Linux 服务器。需要三步基础工作光猫改桥接让路由器拿到公网 IP。电视盒子刷 Armbian配置好网络。加固 SSH只允许密钥登录开启 Fail2ban。这三步都在本地操作。完成后跳板机的公网 IP 就是家庭管家 App 的服务器地址。5.2 手机安装 App 并添加 SSH 连接打开家庭管家 App点击“添加连接”填入跳板机公网 IP、SSH 端口选择之前生成的私钥文件然后登录。登录后 App 会自动保存会话下次直接点击连接不用重复输入。5.3 远程唤醒、终端、端口转发的实际顺序出门在外需要家中 NAS 上的文件时操作流程是打开家庭管家点击“唤醒 NAS”跳板机发送 WOL 魔术包。等待 1—2 分钟打开 SSH 终端登录 NAS检查服务是否启动完成。在“端口转发”里把 NAS 的 5000 端口映射到手机本地浏览器打开localhost:5000就能进管理界面。全程 NAS 的公网端口是关闭的。攻击者就算扫到跳板机也只能撞 SSH 密钥撞不开就触发 Fail2ban 封禁。6. 跑通之后去控制台对一下这次调用6.1 用模型对话页快速验证模型 ID配置保存后先在 TaoToken 模型对话 里用同一把 Key 发一条消息确认 Key 有效、模型 ID 没有填错。如果网页对话正常但 Claude Code 报鉴权失败那问题大概率出在 Base URL 或环境变量上。6.2 在控制台确认调用已经记账Claude Code 每完成一轮对话TaoToken 控制台都会记录调用次数和 token 消耗。打开 TaoToken 控制台 可以看到这把 Key 的用量记录。若你打算长期写代码建议看一眼 Coding Plan 的套餐余量避免写到一半被限额打断。7. 排障这次我只遇到三种错7.1 401Key 复制不完整最常见的是复制 Key 时漏掉末尾字符或多了换行。检查ANTHROPIC_AUTH_TOKEN是否严格等于控制台创建的YOUR_API_KEY。我习惯先执行echo $ANTHROPIC_AUTH_TOKEN看一眼格式。7.2 model not found模型 ID 过期Claude Code 配置里填的模型 ID必须和 TaoToken 模型广场当前提供的模型完全一致。不要参考旧教程里的固定 ID直接打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 看最新列表。如果填了一个不存在的模型名API 会返回模型不存在不会自动降级到别的模型。7.3 连不上 APIBase URL 末尾多了 /v1TaoToken 的 Base URL 是https://taotoken.net/api不是https://taotoken.net/api/v1也不是官网首页 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 。Claude Code 会在 Base URL 后面拼自己的路径如果 Base URL 多写了/v1最终会变成/api/v1/v1/messages之类的错误地址连接自然失败。8. 写在最后数据安全不该交给侥幸8.1 一年下来的真实感受跳板机跑了一年最常见的是 Fail2ban 每天拦截几十次扫描。NAS 因为从不暴露公网几乎没有被主动探测的机会。这个方案的安全感不是“我觉得安全”而是攻击面本身就不存在。8.2 AI 编程把门槛从「学 Android」变成了「说清楚需求」回头再看Claude Code TaoToken 最大的意义不是省掉键盘而是把开发过程的上下文稳定留在会话里。你不需要懂 Java/Kotlin但你要能清楚描述“点击按钮后 60 秒自动探测端口”。AI 生成代码你在本地编译贴报错它再修。这种循环只要通道稳定就能一直持续。8.3 下一步如果你想复制这套方案建议先走通模型通道再去谈 App 功能。想先试试模型能力可以进 模型对话长期写代码选 Coding Plan创建 Key 在 控制台 API KeysClaude Code 环境变量的完整对照表在 接入文档。把这些配置保存好剩下的就是让 Claude Code 写 SSH、WOL 和端口转发让 NAS 安安静静待在家里。