news 2026/10/2 23:08:44

free-coding-models安全与隐私深扒:免费编码模型CLI的API Key本地存储、npm溯源签名与匿名遥测全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
free-coding-models安全与隐私深扒:免费编码模型CLI的API Key本地存储、npm溯源签名与匿名遥测全解析

free-coding-models安全与隐私深扒:免费编码模型CLI的API Key本地存储、npm溯源签名与匿名遥测全解析

【免费下载链接】free-coding-modelsFind, benchmark and install in CLI 170+ FREE coding LLM models across 15+ providers in real time项目地址: https://gitcode.com/gh_mirrors/fr/free-coding-models

free-coding-models(简称 FCM)是一款免费的编码 LLM 模型扫描与安装 CLI 工具,能实时对比 170+ 个免费模型并写入你的 AI 编程工具。凡是会读取 API Key 的终端工具,用户最关心的就是三件事:密钥存在哪、供应链可不可信、会不会偷偷上传数据。本文结合源码,把这三块机制完整讲清楚。

30秒速览:这个免费编码模型工具的安全边界

关注点实际行为
API Key 去向仅存在本地一个 JSON 文件,只发给对应服务商
系统权限0600(仅属主可读写),启动时自动检查并提示修复
特权要求永不要求 sudo/root
网络行为仅三类出口:服务商 API、npm 版本检查、匿名遥测
依赖面纯 JavaScript 小依赖,无原生编译模块

以上承诺并非口头声明,官方安全策略文档 SECURITY.md 明确列出了"这个工具不做什么":不收集/传输/存储源代码、不向任何自运营服务器发送提示词与补全内容、不执行远程任意代码。

API Key 本地存储:密钥为什么不会外泄

存储位置与文件权限

FCM 的所有数据集中在一个文件里:~/.free-coding-models.json,包含各服务商的 API Key、开关、收藏与路由配置(完整结构见 docs/config.md)。该文件创建时即写入0600权限——只有属主能读写,同机其他用户无法窥探。

启动时的权限自检与自动修复

这是源码里最用心的部分之一。src/core/security.js 中的checkConfigSecurity()会在界面启动前完成一次权限体检:

  • POSIX 系统:检测模式位是否0600,若过宽(如 644 全局可读)则打印安全警告,交互终端下询问是否一键chmod 600修复;
  • Windows:由于chmod在 NTFS 上几乎无效,改为调用icacls读取真实 ACL——确认继承已关闭、授权仅含当前用户(SYSTEM/管理员除外),修复后还会重新读取 ACL 验证,"没有证据不声称成功";
  • 防骚扰设计:若修复失败,会写入一个 30 天有效的确认标记文件,避免每次启动都弹窗唠叨,同时给出手动修复命令。

你也可以用--fix-permissions或--yes让它在启动时直接静默修复。

原子写入、备份与自修复

写入路径同样设防。src/core/config.js 的saveConfig()采用"临时文件 + 原子重命名",写入后立即回读验证所有 Key 是否完好;每次覆盖前在备份目录保留最近 5 份快照,验证失败时自动从备份恢复。

还有一个巧妙的细节:配置中的 Key 支持${MY_VAR}环境变量占位符形式(见 src/core/config.js 的注释)——磁盘上只存占位符,真正的密钥始终留在环境变量里,不落盘。

Key 的传输边界

Key 只出现在两类地方:发往对应服务商 API 请求头的鉴权字段,以及你显式启动的编码工具配置。源码注释明确声明 Key 永远不会被打印明文、写日志或塞进遥测。

npm 溯源签名与供应链安全

npm Provenance(Sigstore)是什么

很多"被 npm 包投毒"的新闻让人对npm install -g本能警惕。FCM 的对策是启用 npm 官方 Provenance:每次发布都附带Sigstore 签名,签名链路能证明这个包确实由官方 CI 从官方仓库构建,而非中间人篡改的产物。你在 npm 页面或npm audit signatures中都能查到这条签名链。

配套的供应链清单(SECURITY.md)还包括:

  • SBOM:每个 Release 附带软件物料清单,可逐项核对依赖;
  • 最小依赖面:运行时仅 chalk(终端着色)、socket.io(Web 仪表盘实时刷新)与三个 TanStack/Table 前端库,全部纯 JS、无原生编译步骤——依赖越少,攻击面越小;
  • 持续审计:CI 每次推送跑npm audit,Dependabot 每周自动更新依赖,pnpm-lock.yaml已提交锁定版本。

版本检查与自动更新

工具启动时会向 npm 注册表查询最新版本(src/core/updater.js),这是除服务商 API 外唯一的主动出网行为之一。更新通过检测到的包管理器(npm/bun/pnpm/yarn)走标准全局安装流程,仓库检出(存在.git)与 Docker 环境会自动跳过自我更新,避免更新循环。

匿名遥测机制全解析:到底收集了什么

匿名 ID:一个本地生成的随机 UUID

src/core/telemetry.js 首次运行时生成形如anon_xxxx-xxxx-...的随机 ID,存于本地配置文件,用于跨次启动识别"同一匿名用户"。它不是账号、不含邮箱/主机名等可关联信息。

事件内容清单

遥测属性由 buildTelemetryProperties() 构建,全部字段只有:

  • 应用名称与版本号
  • 工具模式(opencode / openclaw / crush ...)
  • 操作系统(macOS / Windows / Linux)
  • 终端家族(iTerm2、Windows Terminal、VS Code Terminal 等归一化标签,从不发送完整环境变量)

README 的遥测章节与代码一致:没有任何个人身份信息、API Key、提示词、源代码或文件路径离开你的机器。

发送机制:绝不阻塞、绝不报错

sendUsageTelemetry()是典型的 fire-and-forget:硬性 1.2 秒超时,失败静默吞掉,分析永远不影响 CLI 主流程(src/core/telemetry.js)。

三种方式关闭遥测

优先级从高到低(isTelemetryEnabled()):

  1. 启动时加--no-telemetry(单次运行生效);
  2. 环境变量FREE_CODING_MODELS_TELEMETRY=0;
  3. 设置界面中的持久化开关(写入配置的telemetry.enabled)。

另外,TUI 里按J/I发送的功能请求与 Bug 反馈走 Discord Webhook,需要你显式配置 Webhook 环境变量才会生效,且只携带消息本身和版本/系统等匿名页脚。

新手安全使用建议(3条)

  1. 首次运行后看一眼权限:若曾手动移动过配置文件,运行free-coding-models --fix-permissions或直接chmod 600 ~/.free-coding-models.json;
  2. 多用户机器用环境变量占位:把 Key 存成${GROQ_API_KEY}形式,磁盘上只留占位符,密钥永不落盘;
  3. 企业内网可直连白名单:出网目标只有服务商 API 端点、registry.npmjs.org(版本检查)与遥测端点,便于防火墙策略放行。

发现疑似漏洞时,通过 SECURITY.md 约定的私密通道报告(48 小时内确认、5 个工作日初评、30 天内修复目标),不要在公开 Issue 中披露细节。

【免费下载链接】free-coding-modelsFind, benchmark and install in CLI 170+ FREE coding LLM models across 15+ providers in real time项目地址: https://gitcode.com/gh_mirrors/fr/free-coding-models

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 23:07:42

计算机面试八股文全体系备考:Java后端、算法与实战策略解析

每年三、四月都是计算机专业求职的黄金窗口,今年也不例外。2026年的面试行情比前两年更卷也更实在:AI Agent相关岗位猛增,Java后端依旧是大盘主力,前端开始深挖React 19和编译器原理,C/嵌入式方向更看重软硬结合的实战…

作者头像 李华
网站建设 2026/10/2 23:06:38

Oracle EBS R12.2安装Step by Step实战指南

1. 这不是教科书,是我在客户现场踩了7次坑后写下的R12.2安装实录Oracle EBS R12.2安装——Step by Step,这八个字背后藏着的不是一套标准化流程,而是一整套需要在真实生产环境里反复校准、动态调整的系统工程。我干这行十二年,从R…

作者头像 李华
网站建设 2026/10/2 23:00:15

GB2312/GBK字库寻址实战:从编码到字模的完整解析

做嵌入式显示这行,谁还没被中文乱码折磨过几回。我之前调一块LCD屏,客户报障说“你好世界”四个字显示出来前三个正常,最后一个“界”字却成了乱码。常规操作先重刷字库,无效;怀疑屏幕坏了,换屏还是无效。最…

作者头像 李华
网站建设 2026/10/2 22:55:49

广工编译原理实验:从词法分析到中间代码生成的全链路实战

简介:PL/0是编译原理课程中常用的教学型编译程序,本套资料以广东工业大学编译原理实验为背景,要求在其词法分析、语法分析和语义处理程序的基础上完成多项扩充:加入保留字ELSE、FOR、TO、DOWNTO、RETURN,增加运算符、-…

作者头像 李华
网站建设 2026/10/2 22:55:17

Anaconda Navigator更新闪退排查与conda虚拟环境配置

Anaconda 这个名字,做数据、做科研、做深度学习的人基本绕不开。但真正让人头疼的从来不是"装不上",而是装完之后那一堆连带问题:Navigator 更新完打不开了、conda 和 pip 混着用把环境搞成一锅粥、PyCharm 死活找不到解释器、服务…

作者头像 李华
网站建设 2026/10/2 22:55:17

Godot像素角色开发实战:状态机、镜像翻转与Dust粒子

之前整理同人游戏角色动画练习时,最头疼的往往不是“画不画得出来”,而是“设定里看起来很帅的形态切换,怎么真正在引擎里跑起来”。尤其是那种带翻转、带尘埃消散、带狂暴状态的原创角色,纸面上设定了半天,进到游戏里…

作者头像 李华