DeepSeek 发布了 DeepSeek Harness(dsh)开发者预览版。它不是一个只负责调用模型的 SDK,而是面向自主 AI Agent 的开源执行运行时:用微内核承载最小核心能力,再通过插件扩展具体功能。
这种设计把 Agent 基础设施从一个越来越庞大的单体程序,变成可以替换、审计和演进的模块集合。与此同时,dsh 提供了 append-only 事件日志,用于记录执行过程中的活动,为调试、回放和运行审计提供基础。
为什么运行时边界值得拆开
一个 Agent 通常同时处理模型调用、工具执行、状态管理、权限控制、重试和观测。如果这些能力全部写进一个执行器,早期开发很快,后期却容易出现三个问题:
- 替换一个工具或模型适配器,需要修改核心流程。
- 发生错误时,只能看到最终结果,难以还原 Agent 做过哪些决策。
- 不同团队各自维护私有分支,接口逐渐失去一致性。
微内核架构的核心思路是收缩核心职责。内核负责调度生命周期、加载插件和派发事件;模型连接器、工具、记忆、策略以及观测能力则作为独立功能单元存在。这样做并不自动解决 Agent 的复杂性,但能把复杂性放到清晰的边界之后。
事件日志让执行过程可见
dsh 的 append-only 事件日志是这次发布中很关键的设计。执行器不应该只返回“成功”或“失败”,还应留下类似下面的事件序列:
agent.started
tool.requested
tool.completed
model.called
agent.completed
追加写入意味着历史事件不被原地修改。工程团队可以基于这些事件实现:
- 调试:定位哪个工具调用产生了错误。
- 审计:确认 Agent 是否执行了敏感操作。
- 回放:使用同一份事件记录复查一次运行。
- 指标:统计模型调用次数、工具耗时和失败率。
实际部署时仍要处理日志大小、敏感数据脱敏、事件版本兼容以及重放时的外部副作用。事件日志提供的是可观察性基础,不等于天然具备完整的审计合规能力。
一个最小的插件化执行模型
下面的 Python 示例不是 dsh 的官方 API,而是一个可以帮助理解该架构的最小实现。它展示了内核如何加载插件、执行插件并追加事件。运行环境只需要 Python 3.10 及以上。
from dataclasses import dataclass, asdict
from datetime import datetime, timezone
import json
from pathlib import Path
from typing import Any, Protocol
class Plugin(Protocol):
name: str
def run(self, payload: dict[str, Any]) -> dict[str, Any]:
...
@dataclass
class Event:
name: str
payload: dict[str, Any]
timestamp: str
class EchoPlugin:
name = "echo"
def run(self, payload: dict[str, Any]) -> dict[str, Any]:
return {"echo": payload.get("message", "")}
class Runtime:
def __init__(self, log_file: str = "events.jsonl") -> None:
self.plugins: dict[str, Plugin] = {}
self.log_file = Path(log_file)
def register(self, plugin: Plugin) -> None:
self.plugins[plugin.name] = plugin
def emit(self, name: str, payload: dict[str, Any]) -> None:
event = Event(
name=name,
payload=payload,
timestamp=datetime.now(timezone.utc).isoformat(),
)
with self.log_file.open("a", encoding="utf-8") as file:
file.write(json.dumps(asdict(event), ensure_ascii=False) + "\n")
def execute(self, plugin_name: str, payload: dict[str, Any]) -> dict[str, Any]:
plugin = self.plugins[plugin_name]
self.emit("plugin.requested", {"plugin": plugin_name, "payload": payload})
result = plugin.run(payload)
self.emit("plugin.completed", {"plugin": plugin_name, "result": result})
return result
if __name__ == "__main__":
runtime = Runtime()
runtime.register(EchoPlugin())
print(runtime.execute("echo", {"message": "hello agent"}))
保存为 runtime_demo.py 后运行:
python runtime_demo.py
cat events.jsonl
在更完整的实现中,可以把 EchoPlugin 替换为模型调用、数据库查询或沙箱命令执行插件,同时保留内核的生命周期和日志协议。插件边界需要明确输入输出、超时、错误类型、权限和版本约束;否则“可插拔”只会变成把隐式耦合搬到运行时。
采用前需要验证什么
DeepSeek Harness 的长期价值,很大程度上取决于插件生态和 API 的稳定性。开发团队可以按以下顺序评估:
- 先用一个低风险、可回滚的工具任务验证执行模型。
- 检查插件接口是否覆盖超时、取消、重试和资源限制。
- 确认事件格式是否足够稳定,能否接入现有日志和指标系统。
- 为插件锁定版本,并准备 API 变更的兼容层。
- 不要让具有副作用的工具直接参与无约束的 Agent 回放。
如果这些契约能够持续维护,微内核加插件的方向有机会让 Agent 运行时更易替换、更容易观察,也更适合由多个团队共同扩展。当前它仍是开发者预览版,生产采用应以实际 API、插件质量和维护节奏为准。