Easel 架构课程 · 参考文档

Agent 构造蓝图:六件套(速查)

任何 LLM agent 都由六件套构成。Easel 每件都给了完整实现,是最完整的开源解剖标本之一。

#构造块职责Easel 的实现去看哪
1Harness(运行时) 模型之上的循环:收消息 → 调模型 → 执行工具 → 回填结果 → 重复 不自研,借用 OpenClaw gateway(loopback:18789,OpenAI 兼容端点) scripts/gateway.sh
2提示词栈 人格 + 规则 + 上下文分层,常驻层控 token 四层栈:SOUL.md(人格)→ AGENTS.md(规则)→ CONTEXT.md(路径)→ SKILL.md(按需);画像以消息内联注入,不写全局文件 docs/prompt-stack.md
openclaw/workspace/*.md
3能力系统(技能) 能力可声明、可路由、可按需加载 114 个技能目录。frontmatter 三字段常驻做路由;SKILL.md(<200行) 触发时加载;references/scripts 执行中按需 docs/SKILL-SPEC.md
skills/openclaw/
4LLM-脚本分工 决策归模型,确定性 IO 归代码 "prompt 薄壳 + 确定性厚脚本":48 个共享脚本(约 2.3 万行)管所有环境交互;SKILL.md 只写流程约束 skills/shared/scripts/
5记忆与状态 会话持久化 + 长期记忆的作用域设计 会话 jsonl 按 uuid5 钉死;账号记忆只在 profiles/<X>/memory.md;全局 MEMORY.md 刻意留空防并发污染 easel/persona.py
6安全与可靠边界 闸门、确认、对账、拟人化 content_guard fail-closed(exit 7);默认 dry-run 须 --exec;platform_readback 发布后对账;persona_gate 只提醒;human_pace 拟人停顿 skills/shared/scripts/
content_guard.py 等

读任意 agent 仓库的六问

拿到新仓库按顺序问,30 分钟内可定位构造:

  1. 循环在哪?找 harness 入口(gateway/daemon/agent loop),看它监听什么、调哪个模型 API
  2. 系统提示词由什么组成?找 SOUL/AGENTS/CONTEXT/system-prompt 类文件,数常驻层多少 token
  3. 能力怎么声明与路由?函数工具(tools JSON)?MCP?技能目录?路由发生在模型侧还是代码侧?
  4. 哪些事固化在脚本、哪些留给模型?这是可靠性的分水岭
  5. 状态和记忆存哪、作用域多大?会话文件在哪;长期记忆全局还是分域
  6. 边界在哪?有没有闸门、确认步骤、事后对账——没有边界的 agent 不可交付

关键构造决策(换你来建时的默认答案)

决策点Easel 的选择默认理由
自研 harness vs 复用复用 OpenClaw循环/会话/流式是脏活,先借再改
工具 vs 技能目录技能目录(markdown 流程 + 脚本)能力可读可审可版本化,agent 按流程自执行
常驻提示词策略极简单真相源,能力全部下沉按需对抗长对话注意力衰减,控 token
记忆作用域按画像/账号分域,禁全局并发会话不互相污染
副作用策略默认 dry-run + 闸门 + 对账不可逆操作必须有证据链