“发一个任务下去,很多子任务并行处理”——看起来像一群 Agent 在协作。拆开 Claude Code、Codex、grok-build 的实现,真相朴素得多。
真相一:多智能体 = 编排,不是实现派生子代理就是封装一条提示词 + 选择上下文策略(完整 fork / 截取 / 不给),子代理本体可以是任何现成的 Agent:另一个进程里的 CLI(grok h...
Agent 能执行 shell、能写文件,安全体系不是可选项。三个开源实现的权限设计惊人一致,可以总结成一个漏斗。
规则层:三元组 + findLast每条规则是 (操作类型, 匹配模式, 动作),动作只有三种:allow 放行、ask 问人、deny 拒绝。求值规则是 findLast——后写的规则覆盖先写的(OpenCode 的做法),于是配置可以这样表达:
bash * ...
把所有营销词剥掉,Agent 的心脏是这样一段伪代码:
while True:
组装消息(系统提示 + 记忆 + 历史)
chunk = 调用大模型(messages, tools)
历史.append(chunk)
if 没有 tool_call:
return chunk.text # 回合结束
results = 执...
大多数人把”上下文压缩”理解成省 token 的优化手段。读完三个开源实现后我的结论是:压缩就是记忆处理本身。人不会记住每一句原话,只会留下”发生过什么、结论是什么”——压缩做的就是这件事。
四层记忆模型
层
对应物
载体
保真度
工作记忆
当前上下文窗口
每次请求的 messages
原文
中期记忆
压缩摘要
历史被蒸馏成的一段要点
有损
短期记忆
尾部保留区
最近 N ...
“做 RAG”在很多人心里等于”装向量数据库”。但看过 grok-build 的记忆检索源码后会发现:一条纯词法检索 + 精心设计的打分管线,在个人记忆这个规模(几千条以内)上完全够用,而且零外部依赖。
检索管线全景查询 → 分词 → FTS5 BM25 取候选(3 倍量)
→ BM25 归一化到 [0,1]
→ 时间衰减(只衰减会话类记忆)
→ 来源权重(用户显式&...
2025 年之后,”harness agent”成了一类产品的统称:给大模型套上工具、权限、记忆和会话管理的外壳,让它能真正替人干活。我把三个已开源的生产级实现完整读了一遍,这篇是横向结论。
三家的立身之本
系统
语言
核心设计哲学
OpenAI Codex
Rust
引擎-界面分离:SQ/EQ 双队列,协议先行(前身即 ACP 思想)
sst OpenCode
Ty...
文档官方中文文档
官方英文文档
官方下载地址
什么是MQ?基于大家都是运维同学,就举个不恰当但有点关联的例子:
小明是小华的哥哥,小明的爸爸让小明拿书给小华读,小华读完了一本就再管小明要。
小华读一本书有时快,有时慢,取决于书的难度和厚度,所以时间不固定找小明要书,小明为此烦透了,毕竟谁都不喜欢被打扰~
但是,书还是要给,于是他买了一个书架,把他觉得适合小华读的书都放在书架里,小华读完了就自...
框架内置基础对象Koa继承而来的 4 个对象(Application, Context, Request, Response)
以及框架扩展的一些对象(Controller, Service, Helper, Config, Logger)
Application全局应用对象,在一个应用中,只会实例化一个,它继承自Koa.Application,在它上面我们可以挂载全局方法和对象。我们可以...