WeChat (黑客下午茶)
ai-engineeringdev-tools
Original source

为什么 DeepSeek Harness 敢让 AI 自己改自己?

Summary

基于论文《A Programming Paradigm for Spatiotemporal Composability》拆解 DeepSeek Harness 的核心架构 — 如何让 agent 在运行时安全地自我修改。

核心问题

一个能持续生成、替换自己模块的 agent,最怕改到负责恢复自己的组件。“动态组合”一直没有数学地基。

架构设计:一切皆插件

  • 模型适配器、工具注册表、会话日志、agent 循环本身都是插件
  • 底层框架叫 Cordis(论文就是它的设计文档)
  • Harness 把 Cordis vendored(源码级内嵌),可审计、可打补丁

两个正交维度的解法

时间维度 — 可逆效应(Revertible Effects)

  • 每个副作用操作自带逆操作(撤销键)
  • 运行时记录所有撤销键,卸载模块时 LIFO 回滚
  • 源码:ctx.effect(function*() { yield 撤销键 })
  • 即使中途崩溃,generator 自动回滚已 yield 的撤销键

空间维度 — 响应式协效应(Reactive Coeffects)

  • 模块声明”我提供什么”+ “我需要什么”
  • 系统维护依赖表:依赖齐 → 激活,依赖缺 → 停用
  • 源码:extends Service 提供服务 + ctx.inject([...]) 声明依赖

最漂亮的定理

无论经历多少次装载/卸载/替换/回滚,最终状态 = 从零按最终配置静态装配一次的状态。→ agent 可以放心试错,历史自动收敛。

工程落地证据:18 条本地补丁

  • 修复重入卸载(卸载期间再次触发卸载导致资源泄漏)
  • 事务性配置对账(热替换失败回滚到旧插件)
  • 修复并发死锁(两个配置变更交错导致 fiber 卡死)
  • 理论保证存在性,工程保证不破

组件生命周期

PENDING → LOADING → ACTIVE → UNLOADING → DISPOSED(含 inertia 惯性:异步过渡未完成前不响应新变化)

真正野心:自演化 Agent 系统

为”会自己改自己的软件”提供两样稀缺能力:

  1. 时间安全网 — 频繁替换时每步可完整恢复
  2. 空间自动协调 — 依赖拓扑变化时自动理清激活/停用顺序

73 个 Service 类散布各包,连 agent 循环本身都只是可替换插件。