---
title: "黑箱转向（六）：从编码者到约束设计者？"
url: https://lingming.blog/posts/2026/the-new-engineer-from-coder-to-constraint-designer/
date: 2026-03-07
lastmod: 2026-08-31
tags: ["软件工程师","AI 编程","约束设计","工程能力","开发流程"]
categories: ["软件工程","人工智能"]
description: "AI 会让程序员变成约束设计者吗？本文区分任务变化与职业替代，提出生成式开发需要的六阶段工程闭环及能力边界。"
---

# 黑箱转向（六）：从编码者到约束设计者？


“以后工程师不用写代码，只要写规范”是一句很诱人的预测。它把职业变化压缩成从低层劳动到高层设计的升级，也避开了一个麻烦事实：如果不会阅读、运行和调试实现，人凭什么判断模型是否满足规范？

[上一篇]({{< relref "/posts/2026/architecture-as-risk-geometry.md" >}})把架构解释为对故障半径、权限和时间的设计。本篇讨论承担这些工作的人。结论带一个问号：工程师确实会把更多时间放在约束和验证上，但“约束设计者”更适合作为能力重心，而不是已经取代程序员的新职业。

## 先区分任务变化与职业消失

一份工作由许多任务组成。代码补全可能大幅自动化样板实现，却不必然自动化需求协商、遗留系统判断、安全取舍、生产事故和组织责任。即使模型能够独立完成越来越长的编码任务，企业也要决定它可以访问什么、怎样验证输出，以及失败时谁行动。

现有数据不支持所有团队已经进入同一种未来。2025 年 Stack Overflow 调查中，AI 工具使用广泛，但代理尚未成为主流，多数受访者也不把 vibe coding 视为专业工作方式。METR 对资深开源开发者的早期实验观察到特定场景下的减速，2026 年后续则认为新工具可能已经带来加速，却无法消除选择偏差。DORA 的组织研究强调，AI 会放大现有平台和流程的优劣。

因此，更可靠的问题不是“程序员何时消失”，而是：

> 哪些任务的边际成本正在下降，哪些能力因而成为新的瓶颈？

## 实现变便宜后，六类工作更加显眼

### 定义问题

模型需要目标，但真实需求常包含冲突：更快与更安全、更灵活与更可审计、用户便利与隐私保护。工程师要把模糊愿望变成可以讨论的成功条件、禁止行为和风险预算。

这不是简单把产品经理的话改写成 prompt。约束之间可能矛盾，利益相关者可能漏掉边界，工程师必须利用领域和技术知识指出不可能三角。

### 配置上下文

生成质量取决于模型能看到哪些代码、文档、工具结果和历史决定。上下文不是越多越好：无关信息会增加噪声，敏感信息会带来泄漏风险，过时文档会稳定地产生错误方向。

工程师需要选择可信来源、标明优先级与有效期，并保证生成器不会把示例误当成规范。

### 划定权限

一个只能提出 diff 的助手，与一个能修改云资源、运行迁移和向用户发消息的代理，风险完全不同。约束设计包括工具白名单、沙箱、资源预算、审批点和不可逆操作边界。

权限设计比提示词更接近真正的控制，因为它能在模型判断错误时仍然阻止某些后果。

### 审查与整合

生成代码仍然要进入既有系统。工程师需要检查接口、数据、性能、安全、可运维性和历史兼容约束。审查不是阅读模型的“思维过程”，而是判断制品和证据能否支持合并主张。

当变更太大而无法认真审查，正确反应通常是拆小，不是降低理解标准。

### 建立保证证据

契约、性质测试、静态分析、依赖验证、威胁模型和渐进发布把自然语言意图变成不同强度的证据。工程师必须知道每种方法能发现什么、遗漏什么，而不是让模型同时生成实现与一套只会支持自己的测试。

### 运行并学习

生产系统会遇到训练数据和测试环境没有覆盖的条件。指标、事件、用户反馈和事故复盘应当反向修正规范、测试与架构。约束设计不是一次性写完文档，而是一个持续校准过程。

## 一条完整的生成式工程闭环

可以把上述能力组织成六步：

1. **定义。** 写出目标、非目标、禁止行为和风险等级。
2. **限制。** 选择上下文、工具、数据与权限边界。
3. **生成。** 让模型产生足够小、可以独立审查的候选变化。
4. **检验。** 由人和独立工具检查实现、性质、依赖与失败模式。
5. **发布。** 通过灰度、限流和恢复计划控制真实影响。
6. **校准。** 根据运行证据更新规范、测试和工具策略。

这个闭环没有把“编码”彻底删掉。模型可能承担第三步的大部分文本生产，人仍可能在任何一步直接修改实现，尤其是调试模型难以处理的边界、性能和底层系统问题。

## 为什么编码能力仍然重要

约束不是凭空出现的。要定义合理接口，必须理解实现成本；要写有区分力的不变量，必须理解状态怎样变化；要判断性能风险，必须理解算法、内存、网络和数据库；要处理事故，必须从观测信号回到具体执行路径。

如果工程师完全失去这些能力，会出现三种反向依赖：

- 无法识别模型给出的不可能保证；
- 无法在工具失效时缩小与定位问题；
- 只能用更多自然语言修补一个尚未理解的实现。

因此，阅读、调试和编写代码不只是旧时代手艺，也是约束设计的经验基础。任务比例可能变化，基础能力不会因为抽象层提高而自动失效，就像架构师仍需理解软件与系统边界。

## “Prompt 工程”为什么不够

提示词是生成接口的一部分，通常缺少稳定版本、机器可检查语义和独立执行约束。措辞变化、上下文顺序和模型版本都可能影响结果。

成熟的规范体系还包括：

- 版本化需求与架构决定；
- 类型、模式和接口契约；
- 权限与资源政策；
- 可执行测试和不变量；
- 质量门槛与发布规则；
- 运行服务目标和事故流程。

Prompt 可以引用这些资产，却不应成为唯一事实来源。“把提示写得更聪明”无法替代组织对边界和后果的明确决定。

## 约束设计者也可能设计错约束

把职业叙事从“代码作者”升级为“系统裁决者”，容易制造新的自信幻觉。规范会遗漏，指标会被优化，测试会与真实用户脱节，架构边界也会转移风险而非消灭风险。

所以约束本身需要审查：

- 谁参与定义，谁的利益没有进入？
- 哪些性质可执行，哪些只存在于文档？
- 一个指标改善时，是否牺牲了未测量目标？
- 模型、测试和审查是否共享同一错误假设？
- 谁有权放宽边界，谁负责观察结果？

约束设计不是站在代码之上的绝对控制，而是把假设变成可见、可挑战和可更新的工程对象。

## 结语：角色在扩展，不是在脱离实现

AI 编程最可能发生的变化，是让高水平工程从“亲自产生全部文本”进一步转向“组织问题、候选实现和保证证据”。这确实强化了约束设计能力。

但真正可靠的新工程师不是不懂代码的指令发起者，而是能够在不同层级往返的人：他能定义边界，也能进入实现；能使用生成器，也能拒绝其答案；能看自动测试，也能判断测试遗漏；能提高吞吐，也能为生产后果负责。

“约束设计者”如果要成为有用概念，代表的不是摆脱编码，而是对整个生成—验证—运行闭环承担更完整的工程责任。

## 延伸阅读与参考资料

- [DORA：State of AI-assisted Software Development 2025](https://dora.dev/research/2025/dora-report/)
- [Stack Overflow：2025 Developer Survey — AI](https://survey.stackoverflow.co/2025/ai/)
- [METR：Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity](https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/)
- [NIST：Secure Software Development Framework](https://csrc.nist.gov/pubs/sp/800/218/final)

*上一篇：[《黑箱转向（五）：架构即风险几何》]({{< relref "/posts/2026/architecture-as-risk-geometry.md" >}})；下一篇：[《黑箱转向（七）：AI 生成代码出错，谁负责》]({{< relref "/posts/2026/the-ethics-of-the-black-box.md" >}})。*

