我用HarnessEngine+WorkBuddy+opencode开发了一个中间态架构与多智能体且白盒可观测的多智能体系统DevAgent,持续更新中。

本文基于 DevAgent 开源项目的完整实现(v2.0,69 个源文件,10,813 行 Rust 代码),深入探讨一种完全不同于 Copilot Chat、Cline、Cursor 等现有工具的 AI 编程助手设计范式。核心论点是:AI 编程助手的下一步突破,不在于「更强的模型」,而在于「更好的工程架构」------把智能体从黑盒对话系统重构成白盒可观测的多智能体编排系统。


一、问题的提出:现有 AI 编程助手的结构性困境

2024-2025 年,AI 编程助手经历了从 Copilot 补全 → Chat 对话 → Agentic 编码的演进。但当我们把目光从 Demo 转向日常工程实践,会发现一个结构性困境:

困境一:上下文爆炸与信息碎片化并存

以 Cursor 为例,它通过索引代码库实现 RAG 检索,但在多轮对话中,上下文窗口仍然是最稀缺的资源。更严重的是,现有工具的上下文管理是「朴素的」------要么全量注入,要么靠模型自己「注意」到重要信息。

DevAgent 通过架构层面的设计解决了这个问题。其核心思路是:上下文管理不应该是模型的责任,而应该是架构的责任。具体实现包括:

  1. 子智能体上下文隔离:每个子智能体只持有自己子任务的上下文,而非全局上下文
  2. 进度信息本地聚合:进度信息在本地聚合展示,不喂入主控模型上下文
  3. 黑板精简传递:子智能体间只传接口/类型契约摘要,不传全文

这不是模型层面的优化,而是架构层面的根本性设计。

困境二:黑盒执行与开发者控制权之间的矛盾

当我们让 AI 「实现用户登录功能」时,现有工具(如 Cline、Cursor Agent)的工作方式是:模型生成代码 → 自动执行 → 输出结果。整个过程对开发者来说是一个黑盒。你不知道它改了哪些文件、为什么要这样改、遇到了什么阻塞。

DevAgent 提出的解决方案是「白盒可控」:每个子智能体的当前文件、当前步骤、Token 消耗、阻塞点全部实时可见,且用户可随时 @takeover 接管任意子智能体。

这种设计的深刻之处在于:它承认了「搞清楚状态」不应该消耗珍贵的 Token 预算。进度信息通过心跳机制实时上报,在本地聚合展示,而不是让主控模型去「询问」子智能体的状态。

困境三:单智能体串行执行的效率天花板

这是最被忽视的问题。现有 AI 编程助手本质上是「一个模型实例在循环」------读输入、调工具、写输出、再读输入。当任务涉及前后端多个模块时,这种串行执行方式的效率天花板显而易见。

多智能体并行编排是解决思路,但实现难度极高:上下文串扰、文件写冲突、进度不可见、错误传播......这些都是现有工具没有解决好的问题。


二、DevAgent 的核心设计主张:中间态定位

DevAgent 是一个用 Rust 编写的 AI 编程助手,采用中间态架构设计------既有 CLI 的便携性,又有 IDE 的全能性,且全程白盒可控。支持多模型提供商、多智能体并行编排、交互式 TUI 界面。

  • CLI 便携性:单二进制、终端启动 < 200ms、SSH/容器友好
  • IDE 全能性:TUI 内嵌编辑窗、语法高亮、diff 预览、符号大纲
  • 白盒可控 :多智能体进度实时可见、心跳监控、可随时接管

DevAgent 在提示词文档中明确提出了一个有洞察力的定位:

复制代码
        IDE(重)                        Desktop Agent(黑盒)
        ┌──────────┐                     ┌──────────┐
        │ 全能但笨重 │                     │ 强大但不可控 │
        │ 启动慢     │                     │ 进度不可见   │
        │ 上下文贵   │                     │ bug 难定位   │
        └────┬─────┘                     └─────┬────┘
             │                                 │
             │         DevAgent(中间态)        │
             │      ┌──────────────────┐        │
             └─────▶│ CLI 便携 + IDE 全能 │◀──────┘
                    │ + 白盒实时可控     │
                    │ + 多智能体并行     │
                    └──────────────────┘
                          CLI(轻)
                          ┌──────────┐
                          │ 便携但单薄 │
                          │ 无法可视编辑│
                          │ 单线程串行 │
                          └──────────┘

这个「中间态」定位有三层含义:

2.1 CLI 的便携性,但不止于 CLI

DevAgent 是单二进制 Rust 程序,终端启动 < 200ms。这意味着它可以无缝嵌入 SSH 远程开发、容器内环境、CI 流水线等场景------这些是 VS Code 插件或 Desktop 应用无法触及的角落。

但 DevAgent 不止于 CLI。它通过 ratatui(TUI 框架)实现了一个「全景指挥台」------三栏布局(会话列表 + 主对话区 + 上下文侧栏)+ 顶底状态栏,支持语法高亮、流式渲染、主题切换。这意味着开发者可以在终端内获得接近 IDE 的可视化体验,而不必切换到外部编辑器。

2.2 IDE 的全能性,但通过 TUI 内嵌编辑窗实现

这是 DevAgent 最反直觉的设计之一:它在终端内实现了一个「内嵌编辑窗」(tui/editor_window.rs),支持语法高亮编辑、diff 预览、符号大纲、行内诊断。触发方式有三种:

  1. @edit <文件> 指令直接弹出
  2. 点击/选中文件(会话区、上下文区、@find 结果)→ Enter 或 Ctrl+E
  3. @bug <描述> 定位到 file:line 后,提示「按 E 进入编辑」

编辑窗的布局:

复制代码
┌─ Edit: src/auth.rs ────────────────── [Ctrl+S保存] [Esc返回] ┐
│ ┌─ 代码区(语法高亮、可编辑)──┐ ┌─ 辅助侧栏 ──────┐│
│ │  40  fn verify(token: &str) -> { │ │ 符号大纲:           ││
│ │  41      // ...                  │ │  ▸ verify()         ││
│ │  42      if claims.exp < now()  │ │  ▸ decode()         ││
│ │  43          return Err(Exp);    │ │  ▸ refresh()        ││
│ └─────────────────────────────────┘ └─────────────────────┘│
│ ┌─ Diff 预览(仅改动行)───────────────────────────────────┐│
│ │ - 42      if claims.exp < now() {                          ││
│ │ + 42      if claims.exp <= now() {                         ││
│ └───────────────────────────────────────────────────────────┘│

这个设计的深刻之处在于:它承认了「编辑」是开发者的核心活动,但不强迫开发者在「AI 对话」和「代码编辑」之间反复切换上下文。所有活动都在同一个 TUI 内完成。

2.3 Desktop 的反黑盒:实时进度可见

这是 DevAgent 与 Cursor Agent、Cline 等工具最本质的区别。

DevAgent 的「全景指挥面板」(tui/orchestrate_view.rs)实时显示:

  • 每个子智能体的当前文件和当前步骤
  • Token 消耗和轮次计数
  • 阻塞原因(如「等待前端登录态类型定义」)
  • DAG 依赖状态(哪些任务已完成、哪些在等待、哪些失败)

这些信息不是「事后日志」,而是「实时心跳」------每个子智能体按固定间隔(默认 2s)上报 Heartbeat 结构体:

rust 复制代码
pub struct Heartbeat {
    pub worker_id: WorkerId,
    pub task_id: TaskId,
    pub current_file: Option<PathBuf>,
    pub current_step: String,
    pub tokens_used: u64,
    pub rounds: u32,
    pub phase: WorkerPhase,  // Thinking | ToolCalling | WaitingConfirm | Idle | Blocked
    pub block_reason: Option<String>,
    pub ts: u64,
}

这个设计的架构意义是:进度信息本地聚合展示,不喂入主控模型上下文。 这意味着「搞清楚状态」不需要消耗珍贵的 Token 预算。


三、多智能体编排:从串行到并行的架构跃迁

多智能体并行编排是 DevAgent的灵魂。但它的实现远比「同时开几个线程」复杂。本节深入讨论三个核心问题:

3.1 难度自适应:如何决定唤起几个子智能体?

这是多智能体系统的「入口决策」。DevAgent 实现了一个 DifficultyAssessororchestrator/difficulty.rs),对任务做多维启发式评估:

rust 复制代码
pub struct DifficultyAssessment {
    pub score: u8,              // 0..100 综合难度
    pub level: DifficultyLevel, // Trivial | Easy | Medium | Hard | Epic
    pub dimensions: DimBreakdown,
    pub recommended_workers: u32,
    pub rationale: String,      // 决策理由(白盒可见)
}

pub struct DimBreakdown {
    pub file_touch_estimate: u32,   // 预计触及文件数
    pub cross_module: bool,         // 是否跨模块
    pub new_code_ratio: f32,        // 新增 vs 修改比例
    pub dependency_depth: u32,      // 依赖链深度
    pub risk: RiskLevel,            // Low | Med | High | Critical
    pub needs_tests: bool,
    pub needs_docs: bool,
    pub needs_migration: bool,
}

评估过程是纯启发式的(基于任务文本关键词),而非依赖模型调用。这是一个有意识的架构决策:难度评估不该消耗 Token

具体的评估逻辑(来自 difficulty.rsanalyze_dimensions 方法):

rust 复制代码
fn analyze_dimensions(&self, task: &str) -> DimBreakdown {
    let task_lower = task.to_lowercase();
    
    // 小修复关键词 → 触及文件极少
    let is_tiny_fix = task_lower.contains("typo")
        || task_lower.contains("拼写")
        || (task_lower.contains("修复") && task_lower.len() < 12);
    
    // 触及文件数估计:基于关键词
    let mut file_touch = if is_tiny_fix { 1u32 } else { 2u32 };
    for kw in ["重构", "refactor", "拆分", "split", "微服务"] {
        if task_lower.contains(kw) {
            file_touch += 10;
        }
    }
    // ... 更多启发式规则
}

决策表(可配置覆盖):

难度 触及文件 跨模块 推荐子智能体 典型场景
Trivial 1 0(主控直接做) 改一行、修个小 bug
Easy 2-3 1 单模块小功能
Medium 4-8 2-3 一个特性跨前后端
Hard 9-20 3-5 大特性 + 测试 + 文档
Epic 20+ 5-8 跨子系统重构

白盒原则 :难度评估的 rationale 实时显示在指挥面板,用户可质疑并强制覆盖(@plan override workers=4)。这是对「模型自治」的必要制衡。

3.2 任务拆解与 DAG 调度:避免「多智能体混乱」

多智能体系统的核心风险是:子智能体之间互相干扰(写冲突、上下文串扰、依赖死锁)。

DevAgent 的解决方案是任务依赖 DAG + 共享黑板 + 文件锁三位一体:

① 任务拆解(orchestrator/planner.rs

Planner 根据难度等级采用不同拆解策略:

  • Trivial:单节点,主控直接做(不唤起 worker)
  • Easy:1 个实现节点 + 1 个整合节点
  • Medium:实现 + 测试 + 文档(按评估维度决定是否含测试/文档节点)
  • Hard/Epic:按模块拆分多个并行实现节点 + 端到端测试 + 整合

拆解后的任务形成 DAG(collaboration/dag.rs),每个 TaskNode 包含:

rust 复制代码
pub struct TaskNode {
    pub id: TaskId,
    pub title: String,
    pub goal: String,           // 该子任务的明确目标
    pub scope: Vec<PathBuf>,    // 允许修改的文件/目录(文件锁依据)
    pub depends_on: Vec<TaskId>,// 前置依赖
    pub artifact: String,       // 预期产物
    pub assigned_to: Option<WorkerId>,
    pub status: TaskStatus,     // Pending | Ready | Running | Blocked | Done | Failed
    pub acceptance: Vec<String>,// 验收点
}

DAG 的核心调度逻辑(来自 dag.rsready_tasks 方法):

rust 复制代码
pub fn ready_tasks(&self) -> Vec<&TaskNode> {
    self.nodes
        .values()
        .filter(|n| {
            n.status == TaskStatus::Pending
                && n.depends_on.iter().all(|dep| {
                    self.nodes
                        .get(dep)
                        .map(|d| d.status == TaskStatus::Done)
                        .unwrap_or(true)
                })
        })
        .collect()
}

这个实现确保了:depends_on 全部 Done 的节点才会变为 Ready

② 共享黑板(collaboration/blackboard.rs

子智能体之间不直接通信,而是通过「共享黑板」交换产物。典型场景是:上游子智能体(如后端 auth 模块)在黑板上发布接口定义,下游子智能体(如前端 login 页面)读取后据此开发。

黑板的实现是 SQLite 持久化的键值存储,支持版本递增:

rust 复制代码
pub struct BlackboardEntry {
    pub key: String,
    pub value: String,      // 接口定义、类型契约等
    pub publisher: Option<String>,
    pub version: u32,       // 每次写入递增
    pub updated_at: u64,
}

写入时的版本递增逻辑(来自 blackboard.rs):

rust 复制代码
pub fn write(&self, key: &str, value: &str, publisher: Option<&str>) -> Result<()> {
    let now = StorageEngine::now_ts();
    self.storage.with_conn(|c| {
        c.execute(
            "INSERT INTO blackboard(key, value, publisher, version, updated_at) \
             VALUES (?1, ?2, ?3, 1, ?4) \
             ON CONFLICT(key) DO UPDATE SET \
               value = excluded.value, \
               publisher = excluded.publisher, \
               version = version + 1, \
               updated_at = excluded.updated_at",
            rusqlite::params![key, value, publisher, now as i64],
        )
        .map_err(|e| DevAgentError::Storage(format!("blackboard write: {}", e)))?;
        Ok(())
    })
}

版本校验是黑板设计的关键:下游子智能体读取时校验版本,不兼容则阻塞并上报主控。

③ 文件锁(collaboration/file_lock.rs

更细粒度的冲突避免机制。子智能体执行前申请其 scope 内文件的写锁,其他子智能体写需等待。锁超时自动释放(防止死锁)。

3.3 子智能体上下文隔离:避免「上下文串扰」

这是多智能体系统最容易被忽视的设计点。如果所有子智能体共享同一份上下文,那「并行」就没有意义------上下文窗口会更快地爆炸。

DevAgent 的实现是:每个子智能体只持有自己子任务的上下文worker/loop_.rs):

rust 复制代码
// 子智能体上下文构建(隔离)
let system_prompt = format!(
    "你是 DevAgent 子智能体 #{},负责子任务「{}」。\n目标:{}\n验收点:{}\n允许修改:{:?}\n{}\n\
     请直接产出代码改动,完成后输出 DONE。",
    worker_id,
    session.task.title,
    session.task.goal,
    session.task.acceptance.join("; "),
    session.task.scope,
    if dependency_ctx.is_empty() {
        String::new()
    } else {
        format!("上游契约:\n{}", dependency_ctx)
    }
);

子智能体之间通过黑板传递的只是「接口/类型契约摘要」,而非全文。这意味着:

  • 后端子智能体的上下文里没有前端代码
  • 前端子智能体的上下文里没有数据库迁移脚本
  • 主控智能体的上下文里没有直接包含任何子智能体的代码实现细节

这是真正意义上的上下文隔离,而非「多个窗口共享同一份内存」的伪并行。


四、反黑盒实践:Bug 定位与内嵌编辑的深度融合

DevAgent 提出了一个有力主张:bug 定位到 file:line,不浪费上下文让模型反复读全文

这听起来像是一个小功能,但其背后的架构思考是深刻的。

4.1 两阶段 Bug 定位

@bug <描述> 的实现(capability/bug_locate.rs)分为两个阶段:

阶段一:本地先筛

ignore crate(ripgrep 内核)遍历项目文件,结合两种信号评分:

  1. 关键词命中:从 bug 描述中提取关键词(去停用词后),在代码行中匹配
  2. 可疑模式 :扫描代码中的 unwrap()panic!TODOunsafe 等模式

具体的可疑模式定义(来自 bug_locate.rs):

rust 复制代码
fn suspicious_patterns() -> Vec<(&'static str, f64, String)> {
    vec![
        ("unwrap()", 0.4, "unwrap 可能 panic".into()),
        (".expect(", 0.3, "expect 可能 panic".into()),
        ("panic!", 0.5, "显式 panic".into()),
        ("todo!()", 0.5, "未实现 todo".into()),
        ("unimplemented!", 0.5, "未实现".into()),
        ("TODO", 0.2, "TODO 标记".into()),
        ("FIXME", 0.3, "FIXME 标记".into()),
        ("null", 0.3, "可能空值".into()),
        ("None", 0.2, "可能 None".into()),
        ("unsafe", 0.4, "unsafe 代码".into()),
    ]
}

阶段二:模型精判

仅把本地筛选的候选片段(带行号)喂给模型,而非全量代码文件。这节省了典型场景下 50-90% 的输入 Token。

输出格式(来自 format_candidates 方法):

复制代码
候选 3 个:
  [1] src/auth.rs:42  confidence=0.86  reason: claims 未判空即访问 .exp
  [2] src/api.rs:118  confidence=0.42  reason: header 解析可能返回 None
  [3] lib/jwt.rs:7    confidence=0.21  reason: decode 实现未处理空 token
按 1/2/3 跳转编辑,或 E 直接编辑首选。

4.2 从定位到修复的零切换

这是 DevAgent 设计的精妙之处:@bug 的候选结果可以直接 Enter 进入编辑窗(光标定位到对应行),然后在编辑窗内「让 agent 修复此 bug / 解释此行 / 加日志」。

整个流程是:@bug 描述 → 候选列表 → Enter 跳转 → 编辑窗内 agent 修复 → Ctrl+S 保存(经 Harness pipeline)→ 返回对话。

开发者不需要在「AI 对话」「文件浏览」「代码编辑」三个上下文之间切换。 这是「中间态」定位的具体体现。


五、Harness 工程约束:让 AI 遵守你的工程规范

DevAgent 引入了一个在 AI 编程助手中很少被系统讨论的概念:Harness 工程约束harness/ 模块)。

其核心论点是:AI 生成的代码应该遵守项目的实际工程规范,而不仅仅是「能跑」。

5.1 四类约束

agent.harness.toml 配置文件定义了四类约束:

toml 复制代码
[project]
name = "my-app"
stack = ["react18", "typescript", "vite"]

[inject]
system_prompt = """
本项目使用 React 18 + TypeScript + Vite。
代码风格遵循 Airbnb 规范,禁止使用 any 类型。
所有新增函数需有 JSDoc 注释。
"""

[[rules.guards]]
path = ".env*"
action = "deny"              # 禁止修改 .env 文件

[[rules.pipeline]]
on = "after:write_file"
run = "npx prettier --write {{path}}"   # 写文件后自动格式化
on_error = "warn"

[[rules.pipeline]]
on = "before:commit"
run = "npm test"                         # 提交前跑测试
on_error = "block"

这四类约束对应了软件工程中的四个关注点

  1. 代码规范约束(lint/format):AI 写出的代码必须符合项目规范
  2. 流水线约束(pipeline):关键动作前后自动执行检查
  3. 文件守护约束 (guard):防止 AI 修改不该修改的文件(如 .env、系统文件)
  4. 上下文注入约束(inject):将项目背景知识固定注入 AI 的 system prompt

5.2 执行模型

每次工具调用(如 write_file)都经过 Validator

复制代码
工具调用请求 → guard 校验(deny 直接拒绝)→ pipeline 前钩子 → 执行 → pipeline 后钩子 → 审计日志

这个设计的深刻之处在于:它不是「提示工程」(告诉模型「请遵守规范」),而是「工程强制」(不遵守规范的操作根本不会被执行)。


六、记忆系统:从「聊天历史」到「可持久化的工程知识」

现有 AI 编程助手的记忆机制大多是「会话内上下文」------超出窗口就忘了。DevAgent 实现了一个三层记忆系统(memory/ 模块),对应的是认知科学中的记忆分类:

记忆类型 对应认知 存储内容 保留策略
情景记忆(Episodic) 短期记忆 近期会话片段、工具调用记录、用户修正 滚动保留,反思时压缩
语义记忆(Semantic) 长期记忆 项目知识、用户偏好、常见解法 持久化,相关性检索注入
程序记忆(Procedural) 程序性记忆 固化工作流、常用指令组合、多智能体协作模板 持久化,优先级最高

6.1 反思引擎:三段式压缩

记忆系统的核心是「反思引擎」(memory/consolidation.rs),它定期(每 N 轮对话 / 会话空闲 / Token 接近预算 / 多智能体任务完成后)执行三段式流程:

  1. 回顾:读取最近 N 轮情景记忆,识别成功/失败模式
  2. 压缩:将情景记忆摘要为语义记忆条目,删除冗余原始片段
  3. 持久化 :写入 SQLite,更新 MEMORY.md 风格本地文件供人审阅

五种触发条件体现了对不同场景的考量:

rust 复制代码
pub enum ReflectTrigger {
    Rounds,      // 每 N 轮对话
    Idle,        // 会话空闲
    Manual,      // 用户手动 @reflect
    Budget,      // Token 接近预算
    Collab,      // 多智能体任务整体完成(协作反思)
}

「协作反思」是 DevAgent 特有的:多智能体任务完成后,主控整合本次协作的经验(哪个拆解策略有效、哪个子智能体效率最高、哪里出现了阻塞),沉淀为「程序记忆」中的多智能体协作模板。

6.2 记忆注入策略

每次构建请求时,DevAgent 按「相关性 + 时近性 + 重要度」加权检索 top-K 记忆注入 system prompt。

子智能体的记忆默认隔离------只注入与其子任务相关的语义记忆片段。这是避免「上下文串扰」在记忆层面的对应设计。


七、与现有工具的对比:DevAgent 的创新边界

维度 Cursor Agent Cline Aider DevAgent
执行模式 黑盒 Agentic 黑盒 Agentic 半白盒(diff 可见) 全白盒(实时进度面板)
多智能体 有(难度自适应 + DAG 调度)
上下文管理 模型自管理 模型自管理 手动 add/remove 架构级自动优化
编辑体验 IDE 内嵌 外部编辑器 外部编辑器 TUI 内嵌编辑窗
工程约束 提示工程 提示工程 .aider.conf.yml Harness 强制约束
记忆系统 会话内 会话内 三层持久化记忆
审计日志 SQLite 审计日志

需要坦诚指出的限制

  1. DevAgent 的「多智能体并行」在当前实现中是「单进程内模拟并行」。真正的多进程并行需要 IPC 层(worker/ipc.rs 已有 stdio JSON 行协议的基础实现)。

  2. 难度评估器是启发式的(基于关键词),而非模型驱动的。对于边界情况(如「修复一个看起来很小但实际涉及多个模块的 bug」),可能出现误判。

  3. TUI 内嵌编辑窗是自实现的(tui/editor_window.rs),而非依赖现有 TUI 编辑器 crate。这带来了灵活性,但也意味着编辑功能不如专业编辑器完善。


八、架构启示:AI 编程助手的设计空间

DevAgent 的探索指向了 AI 编程助手设计空间的三个未被充分讨论的维度:

8.1 从「模型中心」到「架构中心」

过去两年,AI 编程助手的核心是「如何更好地调用模型」。Copilot 做的是补全,Chat 做的是对话,Agentic 做的是工具调用。

下一个突破点可能是「如何更好地编排多个模型实例」。难度自适应、DAG 调度、上下文隔离、黑板协作------这些都是架构问题,而非模型问题。

这意味着:即使模型能力不再飞跃,仅靠更好的架构设计,AI 编程助手也能显著提升实用性和开发体验。

8.2 白盒可观测性的工程价值

「可观测性」在分布式系统中是被充分讨论的议题,但在 AI 系统中却很少被系统对待。

DevAgent 的「白盒可控」设计主张:AI 系统的可观测性不应该依赖于「把日志打印出来」,而应该内建于架构------心跳上报、进度聚合、阻塞检测,这些都应该是智能体运行时的一等公民,而非事后的调试工具。

8.3 「中间态」作为一种设计哲学

DevAgent 的「CLI 与 IDE 之间的中间态」定位,本质上是在讨论一个更一般的问题:AI 工具的交互边界应该在哪里?

Cursor 选择了「深度集成 IDE」,Cline 选择了「聊天窗口 + 外部编辑器」,DevAgent 选择了「TUI 全景指挥台」。

这三种选择没有绝对的对错,但它们反映了对「开发者如何与 AI 协作」这一问题的不同理解。DevAgent 的理解是:开发者需要的不是一个「更聪明的聊天窗口」,而是一个「可以实时把控进度的指挥台」


九、结论:下一步在哪里?

DevAgent 验证了一个「全白盒、多智能体并行、TUI 内嵌编辑」的 AI 编程助手在技术上是可行的。69 个源文件、10,813 行 Rust 代码、83 个测试------这些数字背后是一套完整的架构主张。

但更重要的是值得整个行业继续探讨的问题:

  1. 多智能体编排何时才能真正超越单智能体? 当任务复杂度超过某个阈值时,并行编排的收益才会超过协调成本。这个阈值在哪里?

  2. 白盒可观测性应该如何标准化? 如果不同的 AI 编程助手都能输出统一格式的心跳、进度、阻塞信号,那么开发者就能在不同工具之间无缝切换。

  3. Harness 工程约束能否成为一种通用规范? 类似于 Lint 工具已经成为多语言生态的标准,AI 编程助手的工程约束是否也能形成跨工具的规范?

DevAgent 不是终点,而是一个有依据的起点。它的价值不在于「证明了某个终极方案」,而在于「提出了一组正确的问题」。


本文原创,原创不易,如需转载,请联系作者授权。

DevAgent 后续会持续更新中。