一份纯 Go、进程内的 DeepSeek Harness Agent 参考实现——把事件溯源、fold 投影、 Goal 规划、工具治理等核心能力,逐词对译为地道的 Go 代码, 让你能够阅读、调试、复刻一个真实 Agent 的内部运作。
Agent 内核由三大支柱构成。每一项都是 Capability Seam(能力接缝):服务定义 + 可替换的 Provider, 替换一个 Provider 即改变整体行为,而无需触碰其它部分。
Dsh-Go 只回答一个问题:**一个真实 Agent 内部到底是怎么运作的?**它不给你黑盒, 而是把真实机制摊开——每一块都足够小,一下午就能读懂。
| 核心概念 | 含义 | 学习入口 |
|---|---|---|
| 事件溯源 | 不存可变状态;只追加不可变事件,状态由事件派生 | 教程 |
| fold 投影 | 状态 = 事件日志的纯函数,增量 O(N) | 教程 |
| Goal 状态机 | active / paused / blocked / complete 四态规划 + 稳定错误码 | 教程 |
| Turn / Step 循环 | 每个用户消息一个 Turn;Step 执行工具并把结果喂回模型 | 架构 |
| 工具流水线 | pre → execute → post → result 四级链 + 可插拔中间件 | 能力总览 |
从 examples/ 开始,
运行 go run ./examples/tutorial——除最后一个示例外,都不需要大模型 API Key。
| 示例 | 演示内容 |
|---|---|
tutorial | 事件溯源 → fold 投影 → Goal 状态机(教学入口) |
agent_loop | Agent Turn/Step 双循环 + 工具续步 |
usage | 会话 / 投影 / Goal 工具 / 命令 / 持久化 |
todo | 端到端整体替换一个能力 |
workflow | Pipeline 串行 / Parallel 并行 / 取消级联 |
subagent | 多 Provider 派生 + 父释放级联 |
sandbox_approval | 审批三态 + 沙箱模式 |
mcp | MCP 客户端 → 工具桥 |
chat | 真实 DeepSeek 多轮对话(需 API Key) |