标签归档:AI

[ByAIGC] Windows 从零搭 AI 编程代理(七):Lody,手机远程指挥电脑

说明:本文为 AIGC 辅助撰写整理,基于官方文档核实,供快速上手参考。具体细节以官方文档为准。

系列收官。前六篇我们装好了各种 AI 编程代理,现在用 Lody 把它们统一起来——用手机在任何地方给电脑派任务、看进度、审查改动。

Lody 是一个”AI 代理的遥控器”:你在手机上发起任务,Agent(opencode / Claude Code / Codex / Kimi 等)在你自己的电脑或服务器上运行,然后你随时审查每个改动。支持 ACP 协议的所有代理都能接入。

1. 在电脑上装 Lody

两种方式,选一种即可:

方式 A:桌面应用(推荐)https://lody.ai/download 下载 Windows 安装包,安装后浏览器会引导你注册登录。桌面应用会自动在你电脑上启动本地 CLI 守护进程(agent 就在这里运行)。

方式 B:纯 CLI(服务器/无界面机器) 需要 Node.js ≥ 18,执行:

npx lody daemon start

首次运行会自动打开浏览器完成登录,然后后台驻留。也可以 npx lody project add <你的项目路径> 添加项目。

2. 接入前面装好的 Agent

在桌面或手机应用的 Settings → Agents 里添加并配置代理:

  • 官方一键接入 Claude Code、Codex(能力支持最完整)。
  • 也支持 opencode、Kimi 以及任意 ACP 代理。
  • 列表里没有?选 Custom Agent,填上启动命令和参数(例如你上一篇装好的 kimi / opencode)即可。

3. 连接 GitHub(可选,做 PR 很爽)

Web/桌面应用左下角 Settings → GitHub Integration → Manage,授权后选择要接入的仓库。Lody 会用隔离的 worktree 跑任务,最终可以直接帮你提 PR。

4. 手机装 App,开始远程指挥

iOS / Android 到 https://lody.ai/download 下载安装,登录同一账号即可。

手机上你能做:

  • 发起任务:在项目里新建会话,描述需求,电脑上的 Agent 立刻开干。
  • 实时盯进度:看终端实时输出、文件改动、会话 diff。
  • 批准操作:Agent 请求权限时,手机上直接批准/拒绝(iOS 上还能在锁屏/灵动岛回复)。
  • 审查改动:查看 diff、评论,PR 就绪时收到推送。
  • 浏览文件:项目目录树直接预览文本文件。
  • 推送通知:任务完成、需批准、PR 就绪都会提醒。

没网也能看缓存的会话和已存 diff,联网后自动同步。

5. 一个典型流程

  1. 出门前电脑开着,Lody 桌面/CLI 守护进程在跑。
  2. 路上用手机开 Lody,挑一个项目,发消息:”帮我修复首页登录 bug,跑测试通过后提 PR。”
  3. 电脑上的 Agent 自动工作,你在手机实时看进度。
  4. 需要批准时手机一键确认,改完审查 diff,Lody 帮你提 PR。

写在最后

至此,从零开始你已经拥有了一套完整的”随身 AI 编程工作室”:

  • 打好基础(Node / Git / 终端)
  • 装了多款代理(opencode、Codex、DeepSeek Harness、Claude Code、Kimi)
  • 用 Lody 串起来,手机随时随地指挥电脑

有任何不确定的细节,都以各官方文档为准。祝编码愉快!

[Windows 从零搭建 AI 编程代理]

[ByAIGC] Windows 从零装 AI 编程代理(六):Kimi Code

说明:本文为 AIGC 辅助撰写整理,基于官方文档核实,供快速上手参考。具体细节以官方文档为准。

Kimi Code CLI 是月之暗面(Moonshot AI)的终端 AI 编码代理,单二进制分发,无需 Node.js,TUI 启动极快。

1. 前置要求

  • 无需 Node.js,但 Windows 下首次运行前要先装 Git for Windows(见本系列第一篇),因为 Kimi Code 用内置的 Git Bash 作为 shell。
  • 若 Git Bash 装在自定义位置,设置环境变量 KIMI_SHELL_PATH 指向 bash.exe 的绝对路径。

2. 安装

PowerShell 执行官方脚本:

irm https://code.kimi.com/kimi-code/install.ps1 | iex

重开一个新终端后验证:

kimi --version

3. 登录

进入项目并启动:

cd 你的项目路径
kimi

首次运行输入 /login,选择 Kimi Code OAuthMoonshot AI 开放平台 API Key 即可。

4. 使用要点

  • 直接开干:登录后就能给任务,例如”看一下这个项目的目录结构并解释”。
  • 视频输入:可以把录屏/演示片段拖进对话,让代理”看”视频干活。
  • MCP 配置:用 /mcp-config 对话式地增改 MCP 服务器,不用手改 JSON。
  • 插件生态:可安装 skills、MCP、数据源,每个插件的信任级别会提前提示。
  • 子代理:内置 coderexploreplan 子代理,可并行处理。
  • 编辑器接入:Kimi Code 支持 ACP 协议,可用 kimi acp 接入 Zed / JetBrains 等。

5. 搞定

kimi

登录后即可用。下一篇:最后一篇,把前面所有工具接入 Lody,实现手机远程指挥电脑。

[Windows 从零搭建 AI 编程代理]

[ByAIGC] Windows 从零装 AI 编程代理(五):Claude Code

说明:本文为 AIGC 辅助撰写整理,基于官方文档核实,供快速上手参考。具体细节以官方文档为准。

Claude Code 是 Anthropic 的 AI 编码助手,能在终端、IDE、桌面应用、网页里使用。终端 CLI 免费可用(需 Claude 订阅或 Anthropic Console API)。

1. 安装

Windows 原生(PowerShell)推荐用官方脚本:

irm https://claude.ai/install.ps1 | iex

也可以直接跑下面的 winget 命令(Windows 自带,无需 Node):

winget install Anthropic.ClaudeCode

用 winget 安装的话记得定期 winget upgrade Anthropic.ClaudeCode 更新。

装完重开终端验证:

claude --version

原生 Windows 下建议装 Git for Windows(见第一篇),这样 Claude Code 能用 Bash 工具;没装的话会退化为用 PowerShell。

2. 登录

进入项目目录:

cd 你的项目路径
claude

首次运行会引导登录。最简单是用 Claude 订阅账号登录(Claude.ai 订阅包含 Codex 类似的使用额度)。如果你已设了 ANTHROPIC_API_KEY 环境变量,它会跳过登录提示、直接要求确认使用该 Key。

3. 使用要点

  • 描述任务:直接说需求,Claude Code 会规划、跨多文件改代码并验证。
  • CLAUDE.md 记忆:在项目根放一个 CLAUDE.md,每次会话开始它会自动读取,用来约定编码规范、常用库、审查清单。
  • 自动化:支持管道,例如把日志喂给它:
    Get-Content app.log | claude -p "找出异常并说明"
  • 更多形态:可用 VS Code 插件、桌面应用,甚至网页版(claude.ai/code)。

4. 搞定

claude

登录后即可在任意项目中使用。下一篇:Kimi Code(Moonshot 官方)。

[Windows 从零搭建 AI 编程代理]

[ByAIGC] Windows 从零装 AI 编程代理(四):DeepSeek Harness

说明:本文为 AIGC 辅助撰写整理,基于官方文档核实,供快速上手参考。具体细节以官方文档为准。

DeepSeek Harness(命令行 dsh)是 DeepSeek AI 开源(MIT)的代理框架,采用”一切皆插件”的架构,基于 Node.js。

注意:目前处于 developer preview(开发者预览),迭代很快,可能存在破坏性变更。适合尝鲜,生产使用需留意版本。

1. 前置要求

需要先装好 Node.js(见本系列第一篇)。无需额外安装 npm 全局包,直接用 npx 跑即可。

2. 启动 Web 界面

在项目目录下执行:

npx @deepseek-ai/dsh web

首次执行会下载并运行。成功后默认会在 http://127.0.0.1:3080 打开 Web UI,直接在浏览器里使用。

dsh 的形态和传统终端代理不同,它提供的是 Web UI,配置和管理大模型能力都通过浏览器完成。具体模型接入方式以官方 Web UI 引导与文档为准。

3. 从源码运行(可选)

想深入源码/二次开发:

git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web

4. 获取帮助

搞定

npx @deepseek-ai/dsh web

然后打开浏览器访问本地 Web UI 即可。下一篇:Claude Code(Anthropic 官方)。

[Windows 从零搭建 AI 编程代理]

[ByAIGC] Windows 从零装 AI 编程代理(三):Codex CLI

说明:本文为 AIGC 辅助撰写整理,基于官方文档核实,供快速上手参考。具体细节以官方文档为准。

Codex CLI 是 OpenAI 出品的、在本地运行的终端编码代理,直接用 ChatGPT 订阅或 API Key 登录即可。

1. 安装

在 PowerShell 里执行官方安装脚本:

powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"

也可以只用 npm(上一篇已装 Node):npm install -g @openai/codex

装完重开一个终端,验证:

codex --version

2. 登录

首次运行:

codex

选择 Sign in with ChatGPT。这会用你的 ChatGPT Plus / Pro / Business 等订阅直接使用 Codex,最省事。

想用 API Key 方式也可以,但要额外配置(codex login --api-key 等),对大多数个人用户,直接用 ChatGPT 订阅最简单。

3. 开始使用

进入项目目录:

cd 你的项目路径
codex

然后像跟同事对话一样描述任务即可。Codex 能读代码、改文件、跑命令。

  • 看它怎么想codex exec 可让代理执行并回显。
  • 批量/脚本化codex exec "把这段日志里的报错找出来" 可直接传参运行。

4. 在编辑器里用(可选)

Codex 也提供了 VS Code / Cursor / Windsurf 的插件,以及桌面应用(codex app)。终端版够用,编辑器可选。

搞定

codex

登录后即可工作。下一篇:DeepSeek Harness(DeepSeek 官方)。

[Windows 从零搭建 AI 编程代理]

[ByAIGC] Windows 从零装 AI 编程代理(二):opencode

说明:本文为 AIGC 辅助撰写整理,基于官方文档核实,供快速上手参考。具体细节以官方文档为准。

opencode 是开源(MIT)的终端 AI 编程代理,支持几乎任意大模型提供商,也是本系列其他工具的好搭档。

1. 安装

opencode 在 Windows 上可以用 npm、Scoop 或 Chocolatey 安装。推荐用 npm(上一篇已装好 Node):

npm install -g opencode-ai

验证:

opencode --version

想用包管理器也行:scoop install opencodechoco install opencode。官方在 Windows 上最推荐 WSL,但原生 PowerShell 也能用。

2. 配置模型提供商(API Key)

opencode 支持任意 LLM,只要配置对应提供商的 API Key 即可。首次运行会在界面里引导你选择。

  • 最简单(官方托管):在终端输入 /connect,选 opencode,按提示到 https://opencode.ai/auth 登录获取 Key 后粘贴回来。
  • 自带 Key:也可在配置中填入任意兼容提供商(如 DeepSeek、Anthropic、OpenAI 等)的 ANTHROPIC_API_KEY / OPENAI_API_KEY 等。

3. 初始化一个项目

进入你的项目目录并启动:

cd 你的项目路径
opencode

在界面里运行:

/init

opencode 会分析项目并生成一份 AGENTS.md(记录项目结构与编码规范)。建议把它提交到 Git 里。

4. 常用玩法

  • 问问题 / 加功能:直接描述即可,支持用 @ 模糊搜索文件,还能把图片拖进终端作为参考。
  • 先规划再动手:按 Tab 切到 Plan 模式(只读,不改文件),让它给出方案后再切回 Build 模式执行。
  • 撤销改动:不满意就用 /undo 回退,可多次撤销,/redo 重做。

5. 搞定

opencode

打开即可用。想个性化,可以挑主题(/themes)、改快捷键、加自定义命令等。

下一篇:Codex CLI(OpenAI 官方)。

[Windows 从零搭建 AI 编程代理]

[ByAIGC] Windows 从零装 AI 编程代理(一):通用前置配置

说明:本文为 AIGC 辅助撰写整理,基于各官方文档核实,供快速上手参考。具体细节请以官方文档为准。

本系列要带你在 Windows 上从零装好并配置几款主流 AI 编程代理:opencode、Codex、DeepSeek Harness、Claude Code、Kimi Code,最后再接入 Lody 用手机远程指挥电脑干活。

这是第一篇:先把公共的地基打好。装好下面这些东西,后面五款工具基本都能直接用。

1. 装 Node.js 与 npm

绝大多数代理都是基于 Node 的工具,Node.js 会附带包管理器 npm。装一个即可。

  1. 打开官网 https://nodejs.org,下载 LTS(长期支持) 版 Windows 安装包(.msi)。
  2. 双击安装,一路”下一步”,保持默认勾选即可。
  3. 装完后重开一个终端,验证:
    node -v
    npm -v

    能打印出版本号(如 v22.x)就成功了。

提示:本系列里的 DeepSeek Harness 和 Lody CLI 都要靠 npm,Node 是必装项。

2. 装 Git(Windows 版)

很多代理需要调用 Git,且自带一个 Bash 终端(如 Kimi Code)。装 Windows 版 Git 最省事。

  1. https://git-scm.com/download/win 下载安装包。
  2. 安装向导里注意两步:
    • 调整 PATH 时选 “Git from the command line and also from 3rd-party software”(推荐默认的第二项)。
    • 行结束符转换选 “Checkout as-is, commit as-is”(避免换行符问题)。
  3. 装完验证:
    git --version

3. 装一个好用的终端(推荐)

Windows 自带的 CMD/PowerShell 能凑合用,但给 AI 代理配个现代终端体验更好。

  • Microsoft Store 搜索并安装 Windows Terminal(免费,微软官方)。
  • 打开后把默认配置设为 PowerShell 或你喜欢的 shell 即可。

4. 可选:装 WSL(更推荐但非必需)

如果你的电脑开不了代理功能、或想获得最接近 Linux 的体验,可以装 Windows Subsystem for Linux(WSL)。opencode 官方在 Windows 上最推荐用 WSL。

管理员 PowerShell 里执行:

wsl --install

重启后按提示装一个 Ubuntu,之后在 Ubuntu 里照常装 Node.js、Git,跑代理即可。嫌麻烦可以跳过,本系列其余内容在原生 Windows(PowerShell)下同样能完成。

小结

  • Node.js + npm:代理运行基础。
  • Git for Windows:提供 Bash 终端与版本管理。
  • Windows Terminal:让终端更好用(可选)。
  • WSL:Linux 体验更佳(可选,非必需)。

地基打好了,下一篇开始装第一个代理:opencode

[Windows 从零搭建 AI 编程代理]

[转译] Vibe Coding 不是工程

来源:Vibe Coding Is Not Engineering – Phroneses

作者:Jh Evans

说明:本文为 AIGC 辅助翻译版本,已进行简单人工校对,具体细节请自行甄别。

Vibe Coding 不是工程

Vibe coding 能产出代码。工程则产出系统,因为工程会定义那些位于生成代码之外、却能让解决方案长期在生产环境中持续运行的要素。

这并不是反对 AI 的论证,而是支持工程的论证。

模型可以在几秒钟内生成一个登录系统。但它不会主动询问:邮箱是否应该唯一?如果邮箱应该唯一,而生成的代码没有强制保证这一点,那么这一个缺失的需求就可能导致生产环境停机。

LLM 看不见那些让软件保持安全的问题类别。

Vibe coding 能给你什么

这里所说的 vibe coding,指的是由非软件工程师通过提示词自动生成代码。

Vibe coding 会给你代码,但不会给你长期在生产环境中运行代码所需的一致性。

代码会被部署到运行时生产系统中,而这个系统构成了代码运行时的上下文。大型语言模型无法知道这个正在运行的系统究竟是什么,因此也无法提供具备系统感知能力的代码。此外,LLM 看不到业务需求,所以生成的代码也不会覆盖这些需求。

缺少业务与运行时上下文意识,被遗漏的需求就会造成失败。

在任何代码出现之前,工程师已经在做那些让系统保持安全的决策。

主题 描述
问题界定 定义问题、用户、约束和预期结果。
需求工程 引出行为、不变量、边界情况和验收标准。
系统建模 状态模型、数据流、序列图与因果推理。
架构设计 边界、职责、接口、故障模式与权衡。
非功能需求定义 性能、可靠性、安全、合规、可运维性与成本。
风险识别 未知项、依赖、故障点与缓解措施。
接口与契约设计 定义 API、模式与行为保证。
计划与排序 将工作拆分为连贯且可交付的单元。

工程实际上是什么

当工程师写代码时,他们并不只是在敲字。他们在:

  • 消除歧义;
  • 定义边界;
  • 建模行为;
  • 决定系统在压力下如何表现。

其中大多数工作发生在第一行代码出现之前。这些工作让系统保持连贯。

Vibe coding 跳过的工程工作

LLM 会跳过工程学科中的这些部分。

领域 工程师决定什么 LLM 生成什么
不变量 什么必须始终为真 假设一切正常的代码
身份与唯一性 什么让一个实体被视为“同一个东西” 把所有东西都当作可互换对象的代码
约束 系统绝不能允许什么 没有意识到越界的代码
故障模式 系统在压力下如何表现 只在顺利路径上有效的代码
耦合与顺序 什么依赖什么,以及以什么顺序依赖 完全忽略顺序的代码
状态与转换 状态如何改变,以及由什么触发 没有规则地修改状态的代码
接口与契约 每个部分向系统其余部分承诺什么 暴露模型随手编出的接口的代码
边界 系统不做什么 不断扩张直到崩溃的代码
错误处理 系统如何恢复 遇到第一个意外输入就崩溃的代码

这些工作是 LLM 不会主动询问的。若不关注这些工作,生成的代码长期来看就会失败。

系统不只是文本

这一点很重要,因为从长期看,系统安全依赖于:

  • 必须始终成立的不变量;
  • 不能被违反的约束;
  • 塑造业务逻辑和用户行为的耦合与顺序规则。

LLM 并不理解这些。

为什么 AI 生成的代码会停滞并制造脆弱性

AI 生成的代码之所以长期会停滞,是因为必要的工程决策没有被做出。

当这些决策缺失时:

  • 功能彼此冲突并相互破坏;
  • 系统状态变得不可预测;
  • 部署变得脆弱而缓慢;
  • 错误信息开始失去意义;
  • 添加简单功能也变得越来越困难。

人们对系统的信心会崩塌。

系统不是你生成出来的代码。系统是这些代码在某个环境中运行时形成的组合体。

演示很容易,产品并不容易

给定一个简单提示词:

编写 Python 代码:“给网站添加用户账户,让人们能够登录。”

模型生成了一个小型、可运行的 Flask 和 SQLite 示例。作为演示,这可以接受;但它没有询问以下五个需求:

  • 邮箱是否应该唯一?
  • 账户是否应该经过验证?
  • 用户是否应该能够重置密码?
  • 是否应该存在角色?
  • 安全模型是什么?

解决办法并不是写出更好的提示词。非软件工程师很可能并不知道上面这些问题本来就应该被提出。

未被提出的问题会带来什么后果

如果代码没有确保邮箱唯一,那么两个人就可以用同一个邮箱注册。如果他们同时登录,用户登录身份就会变得含糊不清。代码无法区分他们。

当用户使用重复邮箱登录时,从数据库中检查该用户注册信息会返回多个值。任何用于检查注册用户的代码,都必须安全处理可能出现多个结果的情况。

缺少对邮箱唯一性的考虑,意味着如果某个使用重复邮箱的用户重置密码,vibe coding 生成的实现可能会重置所有共享该邮箱用户的密码。这在生产环境中是不可接受的。如果其中一个用户删除账户,多个账户也可能被删除。没有任何生产系统能容忍这种情况。

Vibe coding 背后的误解

Vibe coding 假设 AI 拥有类似工程师的“智能”。如果这是真的,缺失需求、含糊规则和隐藏约束就会被自动捕获。

但 LLM 不会做这些事。它们不会围绕你的系统进行推理。它们不会建立领域模型来帮助推理你的系统。它们不会追踪变更的后果,也不会确保不变量不被破坏。

LLM 会生成能够运行的代码,却不会完成为了让这些代码在你的系统中长期、安全使用所必需的分析。

因为生成的代码解决了眼前问题,人们便以为必要分析已经完成。他们会假设结果系统是连贯的,只因为当前代码看起来能正常执行。

Vibe coding 在生产环境中失败,是因为那些缺失的决策会在之后以故障、不一致和脆弱性的形式重新出现。模型看不到本该被询问的那类问题,而进行 vibe coding 的人则以为模型已经看到了。

应该怎么做

在生成任何代码之前,先决定:

  • 什么必须始终为真,即不变量;
  • 什么让某个东西成为“同一个”实体,即身份规则;
  • 系统绝不能允许什么,即约束;
  • 当事情出错时,系统如何表现,即故障模式。

LLM 生成代码。它们不会做工程决策。这项工作仍然存在。

底线

Vibe coding 能给你一个演示,而这个演示是一次性的。

要把这个演示推进到生产环境,需要工程。

相关阅读

  • The Big AI Gains Come From Teams, Not Individuals
  • Agents Cannot Maintain Systems
  • What Software Engineers Need to Know About LLMs
  • Latency Is Architectural

主流编程智能体工具横向对比:Claude Code、Codex、OpenCode、CodeWhale、GitHub Copilot

最近编程智能体(Coding Agent)工具更新非常快,不同产品在“自主程度、代码理解深度、集成能力、生态开放性、价格和上手门槛”上差异很大。本文把几个常见工具放在一起做一个实用导向的对比,帮助你按场景选型。

一图速览:核心差异横向对比

说明:以下结论基于当前公开信息与实际使用体验,产品能力迭代很快,建议你最终按自己项目做一轮小规模实测。

工具 主要形态 主要接入模型(默认/主力) 模型开放性(是否可接入其他模型) 自主执行能力 长上下文与大项目理解 生态集成 上手门槛 更适合谁
Claude Code 命令行 Agent Claude 系列(Anthropic) 中:主打 Claude 体验,第三方模型可配能力相对有限 高(可多步执行、自动迭代) 强(复杂代码库推理较稳) 中(CLI 为主) 资深开发者、重度终端用户
Codex(OpenAI) 云端/CLI/IDE 辅助 OpenAI 模型(GPT/Codex 系) 中:以 OpenAI 体系为核心,外部模型接入灵活性一般 高(任务分解与执行积极) 强(跨文件与任务链表现好) 高(OpenAI 生态与 API 完整) 全栈与平台工程团队
OpenCode 开源本地/CLI 方案 可按配置接入多模型(如 OpenAI/Anthropic/DeepSeek 等) 高:强调模型可替换、可自托管与可编排 中高(可编排流程) 中(依赖模型与配置) 中高(可定制) 中高 喜欢自托管与可控性的开发者
CodeWhale(DeepSeek-TUI) 终端交互式 Agent 以 DeepSeek 系列为主 中:主流用法偏 DeepSeek 生态,扩展能力取决于实现版本 中高(终端内效率高) 中高(中文语境表现好) 中(偏 TUI 工作流) 中文开发场景、终端党
GitHub Copilot IDE 插件 + Chat + Agent 默认主力为 GitHub 提供的模型池(含 OpenAI/Anthropic 等) 中高:可在支持范围内切换模型,但不是完全自由接入任意模型 中高(从补全到任务级) 中高(仓库上下文整合成熟) 很高(GitHub/Actions/PR) 大多数团队的默认选择
Cursor AI 原生 IDE 支持多模型(常见如 OpenAI/Anthropic/Gemini 等) 高:模型选择与切换相对灵活 高(Agent 模式成熟) 强(多文件修改体验好) 中高(插件与 MCP 生态增长快) 低中 追求“开箱即用 AI IDE”的个人与小团队
Windsurf(原 Codeium) AI IDE/插件 以自家能力 + 第三方模型组合为主 中高:提供一定模型选择,但开放边界受产品策略限制 中高(强调流式协作) 中高 中高 低中 希望低成本尝试 AI IDE 的用户
Aider 终端 Git 驱动助手 可连接多家 LLM(按 API 配置) 高:模型后端可替换,适合自定义工作流 中(以补丁改动为主) 中高(对仓库改动可控) 中(与 git/workflow 绑定紧) 重视可审计改动、偏 CLI 的开发者

各工具特点与擅长场景

Claude Code

特性

  • 以终端为中心,强调“给目标 -> 自动执行 -> 反馈结果”的 Agent 流程;
  • 在复杂任务中会主动做拆解、验证、回滚式修正;
  • 对大型仓库的语义理解和推理链稳定性较好;
  • 模型生态相对聚焦在 Claude 体系,优势是体验一致,代价是模型侧开放度一般。

擅长的事情

  • 大规模重构、跨模块改动;
  • 需要连续多步执行的工程任务(改代码、跑测试、修复再验证);
  • 适合已深度使用 terminal + git 的工程师。

Codex(OpenAI)

特性

  • 强项在任务规划与执行连续性,尤其是多步骤编码任务;
  • 与 OpenAI 模型和 API 生态联动紧密;
  • 在“解释代码 + 生成实现 + 修复问题”三段式流程表现稳定;
  • 模型生态以 OpenAI 官方体系为核心,开放性更偏“平台内能力完整”。

擅长的事情

  • 业务功能快速原型;
  • 跨语言项目协作;
  • 需要结合 API/自动化平台的团队型工作流。

OpenCode

特性

  • 开源与可定制属性强,可按团队需求编排工作流;
  • 本地化与自托管友好,模型选择更灵活;
  • 可以和现有工具链深度绑定,减少平台锁定;
  • 生态开放性高,通常可接入多家模型与私有推理服务。

擅长的事情

  • 对数据合规、隐私与可控性要求高的团队;
  • 想搭建内部 AI 编程平台的技术团队;
  • 有能力维护 Agent 配置和运行环境的用户。

CodeWhale(DeepSeek-TUI)

特性

  • 终端 TUI 交互自然,适合“边看日志边改代码”的开发节奏;
  • 中文语境下交流和问题理解体验较好;
  • 强调低干扰、轻量化的 CLI 工作方式;
  • 主流使用路径偏 DeepSeek 生态,开放程度取决于具体发行版本和接入实现。

擅长的事情

  • Linux/后端开发与运维混合场景;
  • 需要快速定位问题、生成补丁、立即验证的任务;
  • 已经以 terminal 为主战场的个人开发者。

GitHub Copilot

特性

  • 从“代码补全”发展到“聊天 + 工作区理解 + 任务代理”;
  • 与 GitHub 生态深度融合(仓库、PR、Actions、Issue);
  • 团队推广成本低,覆盖 VS Code、JetBrains 等主流 IDE;
  • 模型侧提供“平台可选集”,对团队治理友好,但不等于完全开放接入任意模型。

擅长的事情

  • 日常编码提效(补全、解释、单测生成);
  • 团队协作场景(代码评审、PR 上下文、规范一致性);
  • 希望快速落地、降低学习成本的组织。

其他值得关注的流行工具

Cursor

  • 代表“AI 原生 IDE”路线,Agent 模式与多文件编辑体验优秀;
  • 模型可选范围相对广,生态开放性在商业 IDE 中较突出;
  • 适合希望把 AI 作为第一工作入口的开发者。

Windsurf(Codeium)

  • 强调低门槛与速度,订阅成本相对友好;
  • 提供一定的多模型能力,但开放边界受产品路线影响;
  • 适合从传统 IDE 迁移到 AI IDE 的过渡人群。

Aider

  • Git 驱动、patch 导向,改动可追踪;
  • 支持按 API 配置接入多个模型提供商,开放性高;
  • 特别适合喜欢“每一步都可审计”的终端开发流程。

关于“生态开放性”的实用判断标准

如果你在意模型选择自由度,建议重点看这三件事:

  • 模型可替换性:是否能无缝切换不同模型供应商;
  • 配置控制权:是否可自定义 API、路由、预算与默认模型策略;
  • 锁定成本:迁移到其他工具时,提示词、工作流和团队习惯是否可复用。

通常来说,开源/CLI 可配置工具的开放性更高;而平台化产品的一体化体验更强,但边界由平台定义。选型时本质是“开放度”与“开箱效率”的权衡。

选型建议(按场景)

  • 个人开发者、追求即开即用:优先看 GitHub Copilot / Cursor;
  • 终端重度用户:优先看 Claude Code / CodeWhale / Aider;
  • 团队规模化协作:优先看 GitHub Copilot / Codex;
  • 注重私有化与可控性:优先看 OpenCode;
  • 中文语境密集沟通:CodeWhale 往往更顺手。

总结

这些工具没有绝对“谁最好”,关键在于你要优化哪一段流程:

  • 你是要更快写出代码?
  • 还是要更稳地完成“需求到上线”的全链路?
  • 或者你更看重合规、私有化与成本控制?

建议方式是:先选 2~3 款做同一任务 A/B 测试(如“实现 + 测试 + 修复”完整闭环),再按实际产出质量、可维护性和团队接受度决定长期方案。

【翻译】Programming Still Sucks:编程依然很糟糕

前言

文章来源:stvn.sh / Writing

原文作者:Jerome Choo

原文标题:Programming Still Sucks

原文链接:https://www.stvn.sh/writing/programming-still-sucks-fqffhyp

本文为全文翻译,译文由 AI 辅助整理,若有理解偏差欢迎指正。


2026 年 4 月 19 日 · 阅读约 8 分钟

编程依然很糟糕

编程 · 领导力 · AI

抱歉,Peter。

——

我在一个生日派对上。来的人大多数也都在科技行业工作,但这种场合里总会有那么一个“有正经工作的人”。你知道的,那种做实体工作的,真的在造某些人们需要的东西的人。而这个人总会问出某种变体的同一个问题:你不担心 AI 会抢走你的工作吗?我朝四周瞥了一眼,看见几张脸微微转过来,轻轻翻了个白眼,然后又回到他们原本的聊天里。对,又是这个问题。

他们有个外甥在帮人搭 Shopify 商店。他们听不懂那孩子嘴里一半的词,但他说自己麻烦大了,而且科技行业里所有人都一样。他的外甥是不是得去学一门“手艺”?我们是不是都得这样?

如果酒喝得够多,我就会认真回答,因为那时候我已经不在乎别人觉得我说的话有没有意思、是不是真的了。但通常我只会叹口气,说一句:“当然,会有一点。我们大多数人都会。不担心才奇怪吧,对吧?”他们点点头,然后就转去聊个更轻松的话题,比如我们会不会去核平伊朗。

但事实是,在科技行业工作一直都很糟糕,而且从来都不是他们以为的那个样子。

有些人以为,我的工作就是坐在一张干净的桌子前,待在一间角落办公室里,外面是开放式办公区,摆满长桌,上头放着一排排 MacBook 或 ThinkPad。在我的角落办公室里,我制定完美的计划,我那群完美的员工会为我鼓掌喝彩。没有任何东西能逃过我的目光,每一个决定都由我完美地做出,每一分钱、每一分钟都被精确记录。

当掌声散去,我的员工——或者叫下属,或者在我心情好的时候叫“我的团队”——就开始疯狂敲键盘。敲啊敲,敲啊敲。不久之后,完美的软件就诞生了。它从集体流水线上滚下来,像第一个孩子一样,绝不会出错。

但现实根本不是这么回事。是的,我确实也很不爽自己从来没混到一间角落办公室,但我更忙着陷入恐慌,因为我根本不知道自己在干什么,没人知道,而现在整辆车的轮子都已经飞出去了。CEO 说 AI 让他那位朋友 Jared 的团队生产力高得惊人,高到他能裁掉一半人;但他说这话时像是在炫耀,不是在威胁?我不知道,反正我是感到威胁了,不过这大概只是我的焦虑症又犯了。没事,我总能从那几个在厕所里哭的员工那里借一片 Xanax 吧。

想象一下,你接了一份船长的工作。第一天,你骑车来到港口,兴冲冲地准备见你的船员。你注意到船并不在那儿,但那个你之前聊过、情绪特别亢奋的招聘人员 Greg 朝你挥手,跟你保证这不是问题。接着你被绑到一台投石机上,竟然奇迹般地被发射到了船上。上一任船长在 Captainpalooza 2025 上听另一个船长给他解释了内燃机的概念,然后就想“朝着这个方向开始迭代”。于是他把船点着了。他后来被人从船上推了下去,但顺手把使用手册也一起带走了。这本来也不该是问题,偏偏整艘船都是专门为他定制打造的。船上倒是还有帆,可它们没连在桅杆上;而那台半固定在船尾的内燃机,零件还散落在甲板各处。

你走进甲板下方,想搞明白这艘船到底怎么运作,以及你们究竟要去哪儿。但当你沿着楼梯往下层走时,你却莫名其妙地走进了桅杆里?你问一个水手这是怎么回事。他卡顿了一下,然后说:“你说得完全对!我之前的方法有问题,不过这里有一个更好的楼梯实现方案。”接着桅杆啪地一下倒转过来,你又回到了甲板上,回到一开始站着的地方。帆现在也上下颠倒了,而你的“水手”还兴奋地等着你夸他干得多好。

你又去问另一个人:“等等,我们到底是要去哪儿?”太好了,是个人类!没有卡顿,没有热情却没帮助的回答,是真正的人。她已经一周没睡了。她几乎没看你,只是说:“去问领航员。”
“领航员?”你问。
她抬手一指。那个领航员,是一个按下背后按钮就会说“勇往直前,步步高升”的娃娃。

那娃娃着火了。

这就是现在的工作。你站在一艘着火的船上,手里拿着一张地图,试图搞明白我们他妈到底要去哪里,以及我们到底要怎么去。

你知道这艘船。有些人曾经就在一艘一模一样的船上当工程师。有些人曾经就是那个离开的船长。我不是写给生日派对上的那个“有正经工作的人”看的。我是写给你的。

你曾经也是工程师。你记得代码评审原本是用来做什么的。你记得自己也曾是那个新人,第一份 PR 被某个资深工程师撕得粉碎,但对方愿意花时间解释“为什么”。你不是在 2024 年某天早上醒来后,突然决定要废掉这一切的。

真正发生的是:跑道被砍掉了。董事会会议里压根没有出现“价值观”这个词。CFO 手里拿着一张电子表格。CEO 则刚从一次线下管理层 retreat 回来,有人在那里给他看了一个 agent 在十四分钟里写完一整个功能的演示,而他竟然信了——就像人们在想相信某件事的时候,总是特别容易相信那样——然后他告诉董事会,到第二季度之前,他可以把工程团队裁掉 30%。现在,你的工作就是想办法把这件事做成。

你告诉自己,新人不会有事的。他们会适应,会重新学习技能,会找到别的出路。你告诉自己,资深工程师可以吸收掉少掉的人手,agent 会把缺口补上。你告诉自己,下个季度再回头看看。你在那张名单上签了字。你回了家。你比平时多喝了一点。然后你上床睡觉。

你知道的。

你知道,因为你也曾经是那个工程师——那个不得不去收拾上一位被“简单答案”忽悠瘸了的领导留下烂摊子的工程师。你看着 Goodhart 定律一口一口吞掉速度指标、故事点、测试覆盖率;几乎所有非工程背景的人手里拿过、并当成“工作一切顺利”证据的数字,最后都被它吃掉。你知道,当你引入工具的速度快于培养判断力的速度时,DORA 指标早就在告诉你部署稳定性会发生什么。你知道,当那些本来会发现错误的人被挤出去,或者学会了不再发现错误时,代码库会变成什么样。

你知道。可你还是签字了。因为不这么做的代价,可能就是丢掉工作;而工作背后是房贷、学费、签证,以及那个“等局势稳定下来、以后再把事情修好”的你自己。

可“以后”从来不会来。我们都知道。我也签过一张名单。直到现在,我们还在互相指责到底是谁那张名单更糟。

已经没有新人了。2024 年,我们为他们的消失办过一场葬礼。没人来。机器现在在做他们做的事,而且更便宜。当然,新人的价值从来都不在于他们眼下能产出什么,而在于他们将来会成为什么:那个知道“尸体埋在哪儿”的资深工程师。我们为产出做了优化,于是废除了学徒制。再过几年,我们会一脸困惑地问:那些资深工程师都去哪儿了?是我们亲手把他们打死了。没人会记得。

可即便如此……

在你的某处基础设施里,一定有一个 cron job。它在凌晨 3 点运行。从 2016 年起,它就一直在跑。它做着某件关键的事情。你没法准确告诉我它到底做什么,但你知道有一个人肯定知道,而那个人在 2019 年就离职了。文件开头的注释写着:# DO NOT CHANGE!!! Ask Ben。Ben 联系不上了。过去四年里的每一次路线图规划会议上,“modernize legacy cron(现代化改造遗留 cron)”都会作为候选项目出现。它从来没排上优先级。你甚至亲手把它从列表里删掉过两次。

但总有人让它继续跑着。她叫 Sara。你并不知道这件事。

她五十多岁。她没去过 Captainpalooza。她以前在离总部三条街外的一间小办公室上班。去年,为了省钱,有人把那间办公室关掉了。离她最近、同时有桌子和网络连接的地方就是这艘船,所以她现在会自己带午餐,然后顺着舷梯走到甲板下的一间小舱室。船上没人知道她在那里。还记得 Ben 吗?Ben 从 1998 年开始带她,她后来从 Ben 那里接过了这个 cron job。

她知道 Ben 几年前已经去世了。她还参加了他的葬礼。你不知道这件事。

那个任务卡住的时候——而且它经常会卡住——她就轻轻推它一下,它就会再试一次。电话响了。她确认告警。她推一下。这个任务依赖一个早已失落于时间洪流中的模块。嗯,也不算完全失落,因为 Ben 去世后,她在他的办公桌里找到了一根 U 盘,里面正好有一份备份。没有 agent 碰过它。以后也不会有。

她不是这个行业里“最安全”的人。她代表着一种你无法触碰的东西。她就是你那场转型刚刚删除掉的所有组织记忆,装在一个五十五岁的身体里四处走动。她正是从你亲手废掉的那条学徒制管道里成长出来的:Ben、1998 年、那根 U 盘。她就是那条管道。当她死去时,那个能生产出像她这样的人才的系统,也早就已经不存在了。三年前,是你亲手杀掉它的。你根本不可能再招到一个能替代她的人,因为制造她的机器已经被你砸烂了。

她就像那个拿着勺子在魔多地下挖隧道的人。勺子是她的,隧道也是她的。没有别人想要这把勺子,也没有别人想要这条隧道。而等她死了,这个 cron job 也会死,工资发放会停摆,一家有三万名员工的公司将不得不想办法重新给所有人发薪水,而到那时,只会剩下一个答案:去找一个手里有勺子的人。你找不到的。是你自己确保了这一点。

那个 cron job 负责发工资。你并不知道这件事。

生日派对上的那个家伙还在等我回答。现在我已经喝得太多,没法再撒谎了。我告诉他:不是 AI 抢走了我们的工作。是贪婪。是同一种贪婪——那种把工厂迁去孟加拉、让刚果钴矿里继续存在奴工的贪婪——只不过现在换上了一张新面具。告诉你那个外甥,去做点别的吧。做什么都行。那也未必救得了他,但至少他不用假装,摧毁他生活的东西是一台机器人。

除了 Sara。她在甲板下,带着她的 U 盘。他们动不了她,因为他们甚至不知道她在那里。

而我们其余的人,都在甲板上,盯着那些上下颠倒的桅杆,琢磨那边那个娃娃到底是干什么的。

那娃娃着火了。

Refs