news 2026/8/30 9:53:43

Codex + Spec Coding:用AI编程代理构建单人全栈开发流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Codex + Spec Coding:用AI编程代理构建单人全栈开发流程

这次我们直接看一套能落地的组合拳:Codex + Spec Coding。不是拿 AI 写几个 demo 页面,而是把 AI 编程代理用规格文档约束起来,让一个人同时承担前端、后端、测试、部署,跑出接近一个小团队协作的开发节奏。

过去半年,AI 编程工具已经不少,但大多数人卡在同一个问题:AI 生成的代码能跑,但改不动、不敢合、没人 review。Codex 这类 coding agent 解决的是“能不能自动写”,而Spec Coding解决的是“写出来的东西是不是团队想要的东西”。两者合在一起,才真正具备企业级开发流程的骨架。

这篇文章会拆四件事:

  1. Codex 怎么安装、怎么配置、有哪些运行模式;
  2. Spec 到底怎么写,才能让 AI 产出可维护、可验收的全栈代码;
  3. 怎么用 Codex 跑通“前端页面 -> 后端 API -> 数据库 -> 联调测试 -> 文档输出”的完整链路;
  4. 常见报错怎么排查,比如unable to locate the codex cli binary、代理配置错误这类高频问题。

适合谁看:前端想转全栈的开发者、已经在用 AI 编程但觉得产出不可控的技术负责人、想在小团队里引入 AI 辅助开发的工程师。

1. 核心能力速览

在写操作步骤之前,先把 Codex + Spec Coding 的关键信息拉成一张表,方便快速判断值不值得往下读。

能力项说明
项目类型AI 编程代理(coding agent)+ 规格驱动开发方法论
主要功能自然语言生成代码、跨文件修改、执行测试、提交代码、按规格文档约束实现行为
常用运行方式CLI 命令行、IDE 扩展、非交互式自动化任务
输入方式自然语言指令 + 项目内规格文档(spec)
关键文件AGENTS.md(Codex 项目规范)、specs/目录(需求规格说明)
支持语言/框架不受限,按项目实际技术栈决定
是否支持批量任务支持非交互模式,可接入 CI 或脚本化批量执行
是否支持 API 调用可通过 CLI 命令或服务端配置对外暴露能力,具体按实际接入方式确认
硬件要求无特殊 GPU 要求,主要依赖云端模型 API
应用场景全栈功能开发、遗留代码重构、跨文件修改、自动化测试生成、技术文档生成

这里特别说明一点:Codex 属于云端模型驱动的编程代理,本地不需要显卡,不需要部署大模型,真正要准备的是一份可用的模型 API 密钥和稳定的网络环境。比起本地跑 7B/14B 模型,这类工具的准入门槛低很多,但代价是代码会经过第三方模型服务,敏感代码和密钥必须提前脱敏

2. 适用场景与使用边界

2.1 适合什么场景

从实际使用体验看,Codex + Spec Coding 最适合下面几类工作:

  • 全栈功能开发:一个功能涉及前端页面、后端接口、数据表、联调测试,靠自然语言描述加 specs 文档,AI 能连续完成多个文件的改动。
  • 跨文件重构:比如把项目里所有fetch调用替换成统一的 API Client,手工改容易漏,Codex 可以按规格批量处理。
  • 测试代码补齐:给现有模块生成单元测试、接口测试,尤其是前端组件测试和后端路由测试。
  • 技术文档同步:按代码实现生成接口文档、部署说明、数据字典,减少维护负担。

2.2 不适合什么场景

  • 高度敏感的生产环境变更:涉及资金、用户隐私、核心权限的代码,不建议让 AI 直接改完就提交。
  • 没有版本控制的项目:Codex 改代码是一整套 diff,没有 Git 保护,出了问题很难回滚。
  • 业务逻辑极其模糊的需求:AI 对模糊指令的兜底策略往往是“猜一个合理解释”,如果业务方自己都没想清楚,产出大概率不能直接验收。
  • 需要大量人工沟通的遗留系统:如果你的系统文档缺失、代码风格混乱、历史包袱重,Codex 很容易把自己的实现风格带进项目,需要更多人工 review 成本。

2.3 安全与合规边界

使用这类 AI 编程代理时,几个底线必须守住:

  • 不要在对话中粘贴未脱敏的数据库连接串、云厂商密钥、用户个人信息;
  • 涉及公司私有代码库时,先确认是否有合规审批流程;
  • 不要把生产环境的写入权限直接交给 AI 自动执行;
  • AI 生成的代码在合并前,建议走一次人工代码评审,尤其是权限校验、支付、数据导出等敏感逻辑。

3. 环境准备与前置条件

从实际配置来看,前置条件并不复杂,主要是把运行环境理干净。

3.1 操作系统

Windows 11、macOS、Linux 都可以。Codex CLI 对 Windows 的支持依赖 WSL 的场合较多,如果你在 Windows 上安装遇到问题,优先检查是否在 WSL 环境内执行,或者查看官方文档对 Windows 的具体说明。

3.2 运行环境

依赖项要求说明
Node.js建议 LTS 版本Codex CLI 使用 npm 安装
Git2.x代码托管、diff 查看、回滚
模型 API 密钥按所选模型服务提供用于登录或环境变量注入
网络环境能正常访问模型 API 服务具体域名按你使用的服务商确认

如果你用的是 IDE 扩展,还需要安装对应编辑器的最新稳定版,例如 Visual Studio Code 或 JetBrains 系列。

3.3 API 密钥准备

API 密钥可以通过两种方式配置:

  1. 在 Codex CLI 初始化时登录并保存会话;
  2. 通过环境变量注入。
# 以环境变量方式注入示例,具体变量名按 Codex 配置说明调整 export CODEX_API_KEY="your_api_key_here"

注意:这类密钥只保存在你本地环境,不要写进项目仓库。如果你是接入了其他模型服务商,需要先确认该服务商提供的接口格式与 Codex 的兼容性。

3.4 磁盘空间

Codex 本身只是命令行工具,体积很小。但要注意你的项目仓库、依赖包和生成的补丁文件会占用空间。建议至少留出 5GB 可用磁盘,避免编译或依赖安装中途磁盘写满。

4. 安装部署与启动方式

这一节完整走一遍“安装 CLI -> 登录 -> 初始化项目规范 -> 第一次对话”。

4.1 安装 Codex CLI

以 npm 安装为例:

npm install -g @openai/codex

安装完成后,先确认版本:

codex --version

如果终端显示unable to locate the codex cli binary,说明命令没有进入系统 PATH。这种情况在高版本 Node 的全局安装中偶尔会出现,可以先找到全局 bin 目录,再补充 PATH。

# 查看 npm 全局 bin 路径 npm bin -g

然后把输出路径加入 shell 配置文件,例如~/.zshrc~/.bashrc

export PATH="/path/to/npm/bin:$PATH" source ~/.zshrc

4.2 初始化登录

codex

首次运行会引导登录,按提示完成模型 API 的鉴权配置。登录成功后,Codex 会在项目目录中创建配置文件,用codex login status可以检查登录状态。

4.3 初始化项目规范

在项目根目录创建AGENTS.md。这个文件的作用是告诉 Codex 这个项目的基本规则、技术栈、代码风格、测试命令和提交规范。

# AGENTS.md ## 技术栈 - 前端:React + TypeScript - 后端:Node.js + Express - 数据库:PostgreSQL - 测试:Vitest ## 代码规范 - 组件使用函数式写法 - API 请求统一走 src/api/client.ts - 不要直接修改数据库结构,优先提供迁移脚本 ## 常用命令 - 安装依赖:npm install - 启动前端:npm run dev:web - 启动后端:npm run dev:api - 运行测试:npm test

你不需要完全照抄上面内容,但应把项目里最重要的三件事写清楚:技术栈、代码约束、调试命令。Codex 会优先参考这个文件来生成和修改代码。

4.4 IDE 扩展方式

如果你更习惯在编辑器里操作,可以在 VS Code 扩展市场搜索 Codex 官方扩展。安装后,在侧边栏打开 Codex 面板,选中一段代码或直接输入自然语言指令,AI 会基于当前项目上下文给出修改建议,支持 diff 预览和直接应用。

4.5 启动一个最小测试

在项目根目录执行:

codex "描述一下当前项目的目录结构,并告诉我入口文件在哪里"

能正常回答,说明配置已经跑通。接下来就可以进入 Spec Coding 的核心环节。

5. Spec Coding 工作流搭建

Spec Coding 的核心不是让 AI 猜你要什么,而是先把你想要的东西写成一份可验证的规格说明,再让 AI 照着实现。这一步做得越扎实,后续 AI 的代码质量越稳定。

5.1 什么是 Spec

Spec(Specification)就是规格说明。它和普通需求文档的区别在三点:

  • 可验证:每条功能描述后有明确的验收标准,能判断“完成”或“未完成”;
  • 可执行:包含接口定义、数据结构、页面行为,AI 能直接翻译成代码;
  • 可追踪:每个功能点有编号,AI 实现时可以逐条对应。

5.2 Spec 文件结构

推荐在项目根目录建一个specs/文件夹,按功能模块拆分文件。

specs/ auth-login.spec.md user-profile.spec.md dashboard-stats.spec.md

每个文件的结构建议保持统一:

# 功能规格:用户登录 ## 需求概述 用户在登录页输入邮箱和密码,调用后端接口验证,成功后跳转到控制台首页。 ## 技术约束 - 前端:React + TypeScript - 后端:Express + PostgreSQL - 密码使用 bcrypt 加密存储 ## 接口定义 POST /api/auth/login 请求参数: ```json { "email": "string", "password": "string" }

成功响应:

{ "token": "string", "user": { "id": "string", "email": "string" } }

失败响应:

{ "message": "邮箱或密码错误" }

页面行为

  1. 登录页包含邮箱输入框、密码输入框、登录按钮。
  2. 点击登录按钮后,按钮进入 loading 状态。
  3. 登录成功后,跳转到 /dashboard。
  4. 登录失败时,页面顶部显示错误提示。

验收标准

  • [ ] 正确调用 /api/auth/login,并通过 axios 实例携带统一 baseURL
  • [ ] 登录成功后保存 token 到 localStorage
  • [ ] 退出登录时清除 token 并跳转回 /login
  • [ ] 已登录用户访问 /login 时直接跳转 /dashboard
这份 Spec 实际上已经把页面、接口、跳转逻辑都定义清楚了。Codex 不再需要“猜”产品需求,只需要按规格逐条实现。 ### 5.3 Spec 与 AGENTS.md 的结合 `AGENTS.md` 管的是“项目层面的一般规则”,`specs/*.spec.md` 管的是“某个功能的完整说明”。Codex 在执行任务时可以同时读取这两个文件。 所以在实际项目中,可以让 `AGENTS.md` 里写项目技术栈和通用约束,在 `specs/` 目录里放具体功能的规格说明,然后通过提示词告诉 Codex 先读哪个 spec。 ```bash codex "请严格依据 specs/auth-login.spec.md 实现登录功能,先阅读规格文档,再按验收标准逐条完成,完成前先输出你的实现计划"

5.4 单人团队流程设计

即使只有你一个人,也可以按团队流程拆成四个阶段,把 AI 当成一个可以持续对话的“虚拟开发人员”。

阶段一:需求整理

用普通聊天或文档工具把需求写出来,这一步产出的是粗糙描述,比如“我想做一个带用户登录的数据看板”。

阶段二:Spec 编写

把粗糙描述整理成上面那种结构化的.spec.md文件。这一步通常由人完成,也可以让 Codex 辅助生成初稿,再人工修正。

阶段三:Codex 实现

执行 Codex 命令,让它读取 spec 文件,按功能点逐条实现。

阶段四:验证与回滚

运行测试、启动应用,实际操作页面验证。不符合 spec 的地方在对话中直接指出,让 Codex 修正;如果偏差太大,就用 Git 回滚到实现前的状态,调整 spec 后重新执行。

6. 功能测试与效果验证

下面给出一套通用的功能验证流程。假设你已经在项目里建立了一份登录功能的 spec,并且 Codex 已经生成了前后端代码。

6.1 测试用例一:前端页面生成

项目内容
测试目的验证 Codex 能否按 spec 生成登录页
输入specs/auth-login.spec.md
操作步骤codex "按 specs/auth-login.spec.md 生成登录页面组件"
判断标准页面文件创建成功,包含邮箱输入框、密码输入框、登录按钮,样式与项目现有组件风格一致

常见失败原因:Codex 使用的组件库与项目不一致、路径放置错误、忘记引入统一样式文件。

6.2 测试用例二:后端 API 实现

项目内容
测试目的验证 Codex 能否按接口定义实现后端逻辑
输入spec 文件中的接口定义部分
操作步骤codex "按 spec 实现 /api/auth/login 接口,包含参数校验、密码校验、token 生成"
判断标准接口返回结构与 spec 一致,错误密码能返回对应错误信息

常见失败原因:依赖未添加到package.json、token 生成逻辑不符合安全要求、数据库查询未处理空结果。

6.3 测试用例三:全栈联调

项目内容
测试目的验证前后端联调是否打通
操作步骤启动前端和后端服务,在浏览器中点击登录按钮,观察请求状态
判断标准请求成功返回 token,页面跳转正常

常见失败原因:端口配置不一致、前端请求 URL 写死、后端跨域未处理。

6.4 测试用例四:修改现有代码

Codex 不只适合从零生成代码,改代码同样有效。比如要求它:

codex "在现有登录组件中增加记住我功能,勾选后 7 天内免登录,实现方案参考 spec"

这个场景对 Codex 的要求更高,因为它需要先读懂现有代码,再在保持风格一致的前提下扩展。如果项目代码本身比较混乱,Codex 的效率会明显下降,这时候先做一轮重构或补充注释,再让 AI 修改。

6.5 测试失败时的处理

当 Codex 产出的代码不符合预期,先不要急着重新执行,按以下顺序排查:

  1. 检查 spec 是否足够具体,有没有让 AI 产生歧义的描述;
  2. 检查AGENTS.md是否缺少对应的技术栈约束;
  3. 把错误信息直接复制给 Codex,让它定位并修复;
  4. 若多次修复仍不理想,用 Git 回滚后重写 spec 对应段落;
  5. 如果某类问题反复出现,把教训补充到AGENTS.md里,避免下次再犯。

7. 接口 API 与批量任务

Codex 除了交互式对话,也支持非交互模式,适合批量任务和自动化集成。

7.1 非交互式执行

Codex 的 CLI 支持一条命令直接执行任务,无需进入交互界面。这在批量处理多个小任务时非常方便。

# 非交互执行示例,具体参数按 Codex 版本说明调整 codex exec "修复 src/utils/date.ts 中的时区错误,并补充单元测试"

这种模式会自动分析代码、生成修改、运行测试。如果任务规模较大,建议把任务拆成更小的指令,避免一次让 AI 处理过多内容。

7.2 批量任务脚本

你可以写一个简单的脚本,把批量任务交给 Codex 处理。例如批量给所有 API 接口添加请求日志:

#!/bin/bash # 批量处理示例:逐个模块添加日志 for module in auth user order payment; do codex exec "为 src/routes/${module}.ts 中的每个接口添加结构化请求日志,记录 method、path、status、duration" done

批量任务要注意两点:

  • 每一步之间检查 Git 状态,确认上一个任务没有破坏代码;
  • 建议为每个任务设置超时时间,避免单条命令卡死。
# 设置超时时间示例 timeout 300 codex exec "为 order 模块补充接口测试"

7.3 接入 CI 流程

在有足够权限和测试保护的前提下,可以把 Codex 接入 CI,用于自动生成新功能的骨架代码或自动修复 lint 错误。基本思路是:

  1. 在 CI 中安装 Codex CLI;
  2. 注入模型 API 密钥作为环境变量;
  3. 执行一个限定的修复任务,例如codex exec "修复代码中所有 eslint 错误"
  4. 通过 Git diff 检查改动,再由人工确认是否合入。

不过,这种自动化链路需要从简单任务开始逐步验证,不建议一开始就让 AI 直接在 CI 中修改核心业务代码。

7.4 通用 Python 调用模板

如果你的团队需要把 Codex 集成到自研工具链中,可以通过 subprocess 方式调用 CLI,模板如下:

import subprocess import json def run_codex_task(task: str, timeout: int = 300) -> dict: """执行 Codex CLI 非交互任务,返回执行结果""" try: result = subprocess.run( ["codex", "exec", task], capture_output=True, text=True, timeout=timeout, check=False, ) return { "returncode": result.returncode, "stdout": result.stdout, "stderr": result.stderr, } except subprocess.TimeoutExpired: return { "returncode": -1, "stdout": "", "stderr": "task timeout", } # 示例用法 if __name__ == "__main__": output = run_codex_task("检查当前项目所有 TODO 注释并生成为 markdown 列表") print(json.dumps(output, ensure_ascii=False, indent=2))

注意:上面的调用方式是通用模板,实际 CLI 参数名和返回结构需要根据你安装的 Codex 版本说明进行调整。

8. 资源占用与性能观察

Codex 运行时的资源占用和本地大模型不一样,它不依赖本机 GPU,主要消耗集中在模型 API 的调用量、token 数和网络请求时长。

8.1 观察维度

观察项说明
API 调用量一次任务会触发多少轮模型请求
Token 消耗输入和输出的 token 总数,直接影响成本
单次任务耗时长任务可能持续数分钟,建议设置合理超时
内存占用本地 CLI 进程本身内存占用不高,但 IDE 插件的代码解析可能增加内存
网络稳定性模型 API 服务不可用会导致任务中断

8.2 控制成本的方式

  • 任务拆分:把大需求拆成小任务,减少单次上下文的 token 消耗;
  • 减少无关文件:尽量让 Codex 只读取与任务相关的目录;
  • 控制 diff 范围:在提示词中明确指定涉及的文件和不允许修改的文件;
  • 使用模型上下文压缩:大仓库中,避免一次性让 AI 读完整个代码库。

8.3 失败任务和日志

Codex 会在执行任务时输出日志。发现任务异常时,优先看日志里的错误类型:

  • 网络错误:检查 API 服务可达性;
  • 鉴权错误:检查密钥是否过期;
  • 代码执行错误:检查项目依赖是否完整、测试命令是否正确。

9. 常见问题与排查方法

下面是实际使用中容易出现的问题,按现象、原因、排查方式、解决思路整理成表。

问题现象可能原因排查方式解决方案
安装后执行codex提示unable to locate the codex cli binarynpm 全局 bin 目录不在 PATH 中执行npm bin -g查看路径把该路径加入~/.bashrc~/.zshrc,重新加载配置
执行命令时提示cc switch local proxy failed while handling codex endpoint /responses本地代理配置异常或端点在代理转发时失败查看 Codex 配置中的 proxy 设置,检查代理服务的转发日志修正代理配置,或临时关闭代理后重试;如果使用企业代理,联系网络管理员确认接口白名单
登录失败API 密钥无效或已过期检查环境变量、登录状态重新登录或更新 API 密钥
Codex 生成的代码没有按要求写入文件工作目录权限不足或项目没有正确初始化检查目录写权限,确认项目已执行git init修复权限,或重新初始化项目仓库
前端页面生成成功但与项目风格不一致AGENTS.md未配置组件库和样式约束检查项目规范文件AGENTS.md中补充技术栈和样式约束后重新执行
后端接口实现不完整spec 中的接口定义不完整检查 spec 中的请求参数、响应字段补全接口定义,补充边界情况说明
任务执行时间过长单次任务范围过大查看日志判断卡在哪一步拆分为更小任务,添加超时控制
测试命令执行失败项目依赖缺失运行npm install安装依赖后重新执行
AI 修改了不该改的文件提示词未明确限制范围用 Git diff 检查改动用 Git 回滚无关修改,提示词中明确禁止修改的文件
批量任务中途失败某个子任务出现异常导致链路中断在脚本中捕获每个任务的退出码为每个任务添加错误判断和日志输出

9.1 代理相关错误的进一步说明

网络中关于 Codex 的代理错误信息出现频率很高,例如cc switch local proxy failed while handling codex endpoint /responses。这类错误通常发生在两种场景:

  1. 本地配置了代理,但代理服务本身没有正常运行;
  2. 代理规则把/responses这个路径错误地转发到了不可用的上游。

排查思路按三步走:

# 第一步:查看 Codex 当前配置中的 proxy 设置 codex --version # 第二步:测试代理服务是否可用 curl -I http://127.0.0.1:你的代理端口 # 第三步:关掉代理或修正代理规则后重试

如果是团队内部企业网络,还需要确认模型 API 服务域名是否在允许访问的名单里。

10. 最佳实践与使用建议

10.1 从最小项目练手

第一次接触 Codex 时,不要直接拿生产项目试。建议建一个全新的最小全栈项目,例如“待办事项应用”,包含前端、后端、数据库、测试。用这套最小骨架跑通全部流程后,再回到真实项目里使用。

最小项目结构参考:

my-app/ docs/ spec/ todo-list.spec.md src/ web/ # 前端页面 api/ # 后端接口 db/ # 数据库脚本 AGENTS.md

10.2 小步提交,减少风险

Codex 每次生成或修改代码后,都建议用 Git 审查 diff 再提交。即使你对 AI 的产出有信心,也要保留“人审”这一步。一个合理的提交节奏是:

  1. 生成代码;
  2. 查看git diff
  3. 运行相关测试;
  4. 提交。

10.3 Spec 要写“验收标准”,不要只写“功能描述”

这是 Spec Coding 最关键的技巧。“用户能登录”是功能描述,“登录成功跳转 /dashboard、登录失败显示错误信息、退出后清空 token”才是验收标准。Codex 能完成到什么程度,很大程度上取决于你的验收标准写得多清楚。

10.4 做好模型 API 密钥管理

  • 不要把密钥提交到 Git 仓库;
  • 团队协作时,不要把密钥写在共享规范文件里;
  • 对敏感项目,建议使用独立密钥和独立的调用配额,方便审计。

10.5 定期更新 AGENTS.md

项目技术栈升级、目录结构调整、代码风格变化后,要及时更新AGENTS.md。这份文件是 Codex 对项目的“第一印象”,过期的规则比没有规则更危险。

11. 总结与下一步

Codex + Spec Coding 的组合,本质上是在回答一个问题:怎么让 AI 编程从“能写代码”进化到“写出团队愿意接受的代码”。

这篇文章里,最值得你先尝试的是建立AGENTS.md和一个最小的specs/目录,然后让 Codex 实现一个简单的全栈功能。先验证整个链路是否顺畅,再逐步扩大使用范围。最容易踩的坑集中在三处:spec 写得太虚、代理配置异常、没有用 Git 保护改动。

如果你已经跑通了基础流程,下一步可以考虑把这些经验沉淀成团队模板:统一的 spec 模板、常用的AGENTS.md规则、批量任务的脚本库。这样即使之后有其他开发者加入,也能快速复用这套流程,让 AI 编程真正成为团队工程能力的一部分,而不是某个人的个人技巧。

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

汽车销售分析系统:Python爬虫+Hadoop+Spark+Streamlit全链路实战

如果你正在为“汽车销售分析”类毕业设计选技术栈,或者想做一个有“大数据味道”的课程项目,却不知道该把 Python 爬虫、Hadoop、Spark、Streamlit 怎么串联起来,那么这篇文章值得看完。 先给一个明确判断:这个项目真正的难点不是…

作者头像 李华
网站建设 2026/8/30 9:52:48

从杀兽夺寿系统看游戏奖励结算的幂等与并发设计

看到“只剩半年性命绝境觉醒杀兽夺寿系统”这种小说标题,很多后端工程师的第一反应可能是:这跟技术有什么关系?但如果把它当成一份产品需求来拆,会发现里面藏着一整套游戏后台系统设计题:任务怎么接取、击杀怎么上报、…

作者头像 李华
网站建设 2026/8/30 9:52:00

Expo 完整指南:如何用 React 快速跑通第一个跨端应用

Expo 完整指南:如何用 React 快速跑通第一个跨端应用 【免费下载链接】expo An open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web. 项目地址: https://gitcode.com/GitHub_Trending/ex/expo Exp…

作者头像 李华
网站建设 2026/8/30 9:51:23

行人多摄像头重识别数据集

摘要:行人多摄像头重识别数据集是一个面向智能监控与计算机视觉研究的重要视觉数据集,主要用于研究不同摄像头视角下的行人身份匹配问题。数据集概述行人多摄像头重识别数据集是一个面向智能监控与计算机视觉研究的重要视觉数据集,主要用于研…

作者头像 李华
网站建设 2026/8/30 9:51:13

英伟达129亿美金收购Hugging Face,直播揭秘开源AI为何越来越值钱!

天际资本与开源中国直播:探讨英伟达129亿美金收购Hugging Face8月28日周五晚,天际资本创始人张倩和开源中国CEO徐勇进行了一场直播,主题聚焦于英伟达收购Hugging Face。直播中,评论区问得最多的问题便是收购价,很多人疑…

作者头像 李华
网站建设 2026/8/30 9:50:28

彻底搞懂JS箭头函数与this指向:从原理到工程实践

写 JS 代码的时候,你有没有被 this 坑过? 明明在 setTimeout 回调里只是想访问一下组件实例的数据,结果 this.name 直接给你报 undefined ;明明在事件监听器里想拿到点击的元素,结果 this 指向了 window …

作者头像 李华