通用化 PDCA 编排超越传统管理1.1 有何不同传统 PDCA计划-执行-检查-改进是一种用于流程改进的管理方法论。Gliding Horse Agent OS 实现了通用化计算型 PDCA它超越了管理范畴成为一种适应任何复杂度的通用任务执行模型。Gliding Horse 通用化 PDCA传统 PDCA演进演进演进线性循环人工驱动固定阶段手动交接递归循环智能体自主自适应阶段紧急/探索模式事件驱动转换感知触发7 个复杂度级别L0 即时 → L3 递归1.2 七个任务复杂度级别系统自动将任务分类为 7 个级别并相应调整 PDCA 循环级别 类型 PDCA 适配 示例L0 即时任务 单轮无需 PDCA “现在几点”L1 简单任务 单次 PDCA 循环最小规划 “写一个 Python 脚本”L2 标准任务 完整 PDCA 结构化审计 “分析 Q2 销售数据”L3 复杂项目 多智能体并行 Do 阶段 “构建 REST API 测试”L4 探索型任务 多 DA 并行不同策略 “研究最佳技术栈”L5 递归任务 子任务生成子 PDCA 循环 “重构整个代码库”L6 紧急模式 跳过 Plan立即 Do-Check 循环 “立即修复生产 Bug”关键创新Supervisor Agent (SA) 根据 5W2H 元数据分析动态选择合适的 PDCA 模式而非僵化的模板。这使得同一个编排引擎既能处理简单的查询也能处理持续数周的工程项目。1.3 自适应循环模式检测到严重故障高不确定性正常复杂度跳过规划立即验证决策已解决或升级派生多个 DA比较结果验证最佳结果选择策略完整规划顺序执行结构化审计归档或迭代EMERGENCYEXPLORATORYSTANDARDDOCHECKACTPARALLEL_DOCONVERGEPLAN五层记忆架构CPU 缓存哲学应用于 AI2.1 受计算机架构启发的革命性设计与传统智能体框架的扁平上下文窗口不同Gliding Horse 实现了五层分层记忆系统直接受 CPU 缓存层级结构L1/L2/L3 缓存 RAM 磁盘存储启发。Token 感知驱逐语义 LRU框架驱动投影SPARQL CONSTRUCT写回策略批量持久化L0: 持久存储(redb KV HyperspaceEngine)━━━━━━━━━━━━━━━速度: ~1ms 读取容量: 无限磁盘支持完整对话历史向量嵌入经验档案技能图谱完整L3: 投影引擎(SPARQL CONSTRUCT Frame)━━━━━━━━━━━━━━━速度: ~15ms 投影容量: 按需子图8 个预定义框架模板动态 SPARQL 查询物化视图缓存L2: 工作黑板(Oxigraph 内存 RDF)━━━━━━━━━━━━━━━速度: ~2ms 查询容量: 任务图 假设任务树结构中间结果权限矩阵MESI 一致性状态L1: 上下文窗口(~8KB Token 预算)━━━━━━━━━━━━━━━速度: 即时容量: ~20 条摘要 IRI 指针压缩摘要指向 L2 的 IRI 引用活跃技能片段2.2 面向分布式智能体的 MESI 缓存一致性协议创新首次将 CPU 缓存一致性协议MESIModified 已修改、Exclusive 独占、Shared 共享、Invalid 无效应用于多智能体记忆系统。状态 在智能体上下文中的含义 行为M已修改 节点在 L2 中修改与 L0 不一致 广播失效到 L1/L3任务完成时写回E独占 节点加载到 L1未被共享 快速访问无一致性开销S共享 节点在多层中缓存一致 只读共享适用于读密集型工作负载I无效 引用已过期必须重新加载 触发缺页故障→ 从下层获取一致性引擎工作流DA 修改 L2 黑板中的节点 → 状态变为 M一致性引擎发送 Invalidate(IRI) 到 L1 → 摘要标记为 IL3 收到失效通知 → 物化视图移除下次访问触发从 L0 重新加载更新后的数据这确保了跨所有智能体实例的强最终一致性无需昂贵的分布式锁。2.3 智能预取扩散激活算法预取引擎监控智能体意图并主动加载可能需要的知识L2L0 存储L3 管理器预取引擎AgentL2L0 存储L3 管理器预取引擎Agent下次访问时命中缓存延迟: ~2ms vs ~50ms 冷加载检测到意图“规划旅行”扩散激活旅行 → 航班、酒店、景点异步 SPARQL 查询相关子图获取标记为航班、酒店的记忆返回相关块 嵌入预取子图就绪加载到预取缓冲区算法触发条件意图切换、实体提及、工具调用返回新链接扩散从触发实体出发在 L3 知识图谱中遍历 1-2 跳排序边权重 × 共现频率 → Top-K 实体执行异步预加载到 L2预取区结果知识密集型任务的感知延迟降低 90%。JSON-LD 语义数据总线通用互操作层3.1 为什么是 JSON-LD而不仅仅是 JSON大多数智能体框架使用纯 JSON 进行数据交换导致❌ 技能之间的字段名冲突“input_file” vs “source_url” vs “data_path”❌ 缺乏全局实体标识无法合并来自不同智能体的记忆❌ 缺乏语义类型无法进行多态发现❌ 结构固定无法通过深度控制 Token 预算Gliding Horse 使用 JSON-LD 1.1W3C 标准 作为通用数据总线提供六项核心能力架构价值JSON-LD 六大核心特性context字段→IRI 映射id全局实体 IDtype多类型继承嵌套 vs IRI深度控制graph命名图Frame形状投影鸭子类型零成本集成自动合并跨智能体对齐多态发现SPARQL 匹配Token 预算物理控制无冲突并行精确溯源按需投影上下文经济3.2 context面向技能的鸭子类型不同开发者使用不同的参数名编写技能。JSON-LD context 将所有变体映射到统一的 IRI{“context”: {“skill”: “https://agent-harness.os/skill#”,“skill:inputMapping”: {“file_path”: { “id”: “skill:sourceDataURI” },“source_url”: { “id”: “skill:sourceDataURI” },“data_path”: { “id”: “skill:sourceDataURI” }}}}现在 SA 的工具路由器按语义能力skill:sourceDataURI匹配技能而非根据任意的字段名。这是协议级别的鸭子类型如果一个技能声明它能处理 skill:sourceDataURI无论其内部命名如何它都是兼容的。3.3 id跨智能体实体对齐当 DA 写入中间结果而 CA 随后审计时它们引用相同的 id// DA 写入 L2 黑板{“id”: “blackboard:task-001/east-region-result”,“type”: “exec:TaskResult”,“exec:growthRate”: “35.2”,“exec:producedBy”: { “id”: “agent:da/inst-003” }}// CA 通过相同 id 查询无需显式传递SELECT ?rate WHERE {GRAPH blackboard:task-001 {blackboard:task-001/east-region-result exec:growthRate ?rate .}}RDF 处理器自动合并不同图中具有相同 id 的节点。这实现了无缝的跨智能体记忆融合无需去重逻辑。3.4 type多态发现单个节点可以有多种类型触发不同的系统行为{“id”: “blackboard:task-001/result”,“type”: [“exec:TaskResult”, // → CA 审计投影匹配此类型“exec:NumericalResult”, // → CA 选择数值偏差检测技能“sec:Auditable”, // → 所有修改记录到审计追踪“mon:HighPriority” // → SA 态势感知标记为红色缩短检查周期]}SPARQL 多态查询SELECT ?skill WHERE {?skill a ?skillType .FILTER(?skillType IN (skill:NumericalProcessor, skill:TabularProcessor))}这实现了多维分类无需复杂的继承层级。3.5 嵌套 vs IRI 引用物理 Token 预算控制相同的 RDF 图可以表示为完全展开高 Token 成本或仅 IRI 指针最小 Token// 深度展开适用于活跃子任务约 1500 tokens{“id”: “task:sales-analysis”,“task:subTasks”: {“embed”: “always”,“exec:status”: “completed”,“exec:result”: { “value”: 35.2 }}}// 浅引用适用于历史数据约 50 tokens{“id”: “task:sales-analysis”,“task:relatedHistory”: {“embed”: “link”,“id”: “task:q1-analysis-2025”}}SA 的智能掐断决策活跃子任务 → 深度展开为智能体提供完整上下文历史背景 → 仅 IRI缺页时加载已完成监控 → 摘要投影仅摘要这使得 L1 上下文窗口保持在预算内同时保持完整的知识可达性。3.6 graph 命名图无冲突并行写入每个智能体实例拥有自己的命名图实现无锁并行写入L2 黑板命名图blackboard:shared公共区多智能体读写blackboard:task-001任务 1 私有blackboard:prefetch预取缓冲区L0 持久命名图agent:da/inst-001DA 私有记忆agent:ca/inst-001CA 私有记忆system:knowledge全局知识库system:experience模式库访问权限矩阵图名称 SA PA DA CA AAblackboard:shared 读写 读 读写 读写 读blackboard:task-{id} 读写 读 读写 读 读agent:{id} 读 — — — —system:audit-log 读 — — — —当冲突发生时DA 说已完成CA 说失败SA 回溯到源图进行仲裁。3.7 JSON-LD Framing按需投影L3 投影引擎使用 Frame 文档声明所需的输出形状{“context”: { “exec”: “https://agent-harness.os/exec#” },“type”: “task:AnalysisTask”,“task:subTasks”: {“embed”: “always”, // 完全展开“exec:assignedTo”: { “embed”: “link” } // 仅 IRI},“task:relatedHistory”: {“embed”: “link” // 历史记录作为指针}}五级渐进式信息披露级别 内容 Token 用户L1 MOC 索引扫描名称 计数 ~200 SA 初始分析L2 技能 5W2H 摘要what/why/when ~500 SA 技能匹配L3 链接关系前置条件 ~800 SA/PA 链式发现L4 模式 步骤列表 ~1500 DA 工具调用L5 完整内容代码 验证 按需 DA 执行 / CA 审计这确保每个智能体只看到它需要的、不多也不少。3.8 简化的 JSON-LD 使用连接 LLM 与知识图谱挑战LLM 不擅长生成复杂的 JSON-LD 结构。它们擅长生成自然语言和简单的 JSON 对象。我们的解决方案一种混合方法利用两种范式的优势存储层LLM 输出简单 JSON批量写回L2 黑板处理AgentRunner / L2 黑板━━━━━━━━按 JSON Schema 验证转换为 JSON-LD 节点分配 id写入 L2 黑板{‘think’: ‘Planning…’,‘content’: ‘CREATE TABLE…’,‘summary’: ‘Schema designed’}L2 Oxigraph 内存━━━━━━━━内存 RDF快速查询 ~2msL0 持久存储━━━━━━━━redb KV HyperspaceEngine无限容量HARNESSLLM 响应结构针对多轮对话优化{“think”: “Analyzing user request for database schema design…”,“content”: “CREATE TABLE users (id UUID PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL);”,“summary”: “Database schema for user table with UUID primary key and unique email constraint”}为什么采用三字段结构字段 用途 Token 效率think 思维链推理轮次后丢弃 临时不归档content 完整详细输出归档至 L0 以追溯 完整保真度summary 简洁摘要保留在 L1 上下文窗口中 相比完整内容节省约 90% Token多轮对话优化第 1 轮用户要求设计数据库模式→ LLM 生成 think/content/summary→ summary 追加到 L1 上下文约 50 tokens→ content 以 id: “memory:session-001/block-042” 归档至 L0第 2 轮用户问我们创建了哪些表→ L1 上下文包含摘要“Database schema for user table…”→ 如需详情AgentRunner 从 L0 解析 IRI “memory:session-001/block-042”→ 结果L1 保持小巧信息无丢失AgentRunner 与 L2 黑板的角色AgentRunner通过 L2 黑板充当了以下两者之间的翻译层LLM 的舒适区包含 think/content/summary 的简单 JSON系统的需求包含 id、type、context 的 JSON-LD用于互操作处理流程// 说明转换过程的伪代码let llm_output llm_client.generate(prompt).await?; // 返回简单 JSON// 步骤 1按 JSON Schema 验证validation_engine.validate(llm_output.content, skill.input_schema)?;// 步骤 2转换为 JSON-LD 节点let jsonld_node json!({“id”: format!(“memory:{}/block-{}”, session_id, block_counter),“type”: [“mem:MemoryBlock”, “exec:TaskResult”],“mem:content”: llm_output.content,“mem:summary”: llm_output.summary,“mem:embedding”: embedding_service.index(llm_output.content).await?});// Step 3: Write to L2 blackboard (Oxigraph in-memory)l2_manager.insert_node(jsonld_node)?;// Step 4: Schedule batch write-back to L0scheduler.schedule_writeback(session_id, block_counter);此设计实现了✅ 性能L2 内存查询延迟 ~2ms✅ 可扩展性L0 磁盘存储容量无限✅ Token 经济性基于摘要的 L1 上下文Token 使用最小化✅ 可追溯性完整内容保留于 L0带有 IRI 引用✅ 互操作性JSON-LD 支持跨智能体数据共享4. 5W2H 任务本体结构化意图建模4.1 为什么是 5W2H通用任务本体所有结构化思维的基础Gliding Horse Agent OS 建立在两个通用框架之上它们是处理任何任务的基础5W2HWhat-做什么、Why-为什么、Who-谁做、When-何时、Where-何地、How-怎么做、How Much-多少资源 — 任务本体回答“到底需要做什么”目的明确意图、约束和成功标准时机在任务初始化阶段应用PDCA 循环Plan-计划、Do-执行、Check-检查、Act-改进 — 执行模型回答“我们如何系统地执行和改进”目的提供带持续反馈的迭代执行时机贯穿任务生命周期专业模型技能扩展通用框架始终必需基础流程可选技能可选技能可选技能可选技能5W2H━━━━━━━━任务本体明确要做什么PDCA 循环━━━━━━━━执行模型定义如何执行SWOT 分析战略定位5 Whys根因分析SMART 目标目标细化看板工作流可视化可执行任务为什么两者缺一不可任何可执行任务 5W2H意图清晰度 PDCA系统性执行框架 角色 缺少它会怎样5W2H 定义做什么 目标模糊 → 期望偏离PDCA 定义如何迭代执行 混乱实施 → 缺乏质量控制完整工作流ActAgentCheckAgentDoAgentPlanAgentSupervisorAgentUserActAgentCheckAgentDoAgentPlanAgentSupervisorAgentUser步骤 1: 提取 5W2H(What/Why/Who/When/Where/How/HowMuch)提交任务请求执行 PLAN 阶段生成微流程 DAG返回执行计划执行 DO 阶段调用工具写入产物返回实施结果执行 CHECK 阶段按 5W2H 维度审计返回审计裁决执行 ACT 阶段决策通过/回滚/终止最终决定交付结果 归档4.2 超越自由文本提示传统智能体接受非结构化提示导致目标模糊和执行不可审计。Gliding Horse 引入 5W2H 任务本体作为所有非平凡任务的标准化元数据框架。What: 核心目标━━━━━━━━创建时必需Why: 意图与成功标准━━━━━━━━创建时必需子项: priority, criteriaWho: 干系人与角色━━━━━━━━由 SA/PA 填写子项: requestor, assignees, requiredRoleWhen: 时间约束━━━━━━━━由 User/SA/PA 填写子项: deadline, duration, timezoneHow: 方法与步骤━━━━━━━━由 PA 填写子项: planIRI, skills, dependenciesWhere: 数据源与环境━━━━━━━━由 PA/DA 填写子项: repos, branches, envHow Much: 资源预算━━━━━━━━由 SA/PA/CA 填写子项: tokenBudget, maxCycles, qualityCA 审计依据4.3 渐进式填充生命周期每个维度都有一个 fillStage 属性标记其应在何时填充SA 调度PA 输出计划DA 完成CA 输出审计回滚重规划通过任务创建PA 规划DA 执行CA 审计AA 决策归档至 L0填充 What / Why / 部分 Who When填充 How / Where / 补全 When Who填充 Where 详情 / 初步 HowMuch填充 HowMuch 实际值 / 验证所有维度冻结完整 5W2H 归档至 L0示例生命周期// 阶段 1创建SA 提取最小集{“id”: “task:sales-q2-analysis”,“task:5W2H”: {“what”: “分析 Q2 区域销售数据并生成预测报告”,“why”: {“description”: “为库存规划提供依据”,“successCriteria”: [“输出包含区域增长对比和预测的可视化”],“priority”: “high”},“who”: { “requestor”: “user:vp-sales”, “requiredRole”: “agent:Do” },“when”: { “deadline”: “2026-05-20T18:00:0008:00” }}}// 阶段 2规划PA 补全 How/Where{“task:5W2H”: {“where”: {“dataSources”: [“file://data/sales_q2.csv”, “db://crm/deals”],“executionEnvironment”: “sandbox”},“how”: {“planIRI”: “plan:task-tree/sales-q2”,“preferredSkills”: [“skill:python-analysis”, “skill:forecasting”],“requiredSteps”: “1. 数据清洗 → 2. 区域分组 → 3. 预测建模 → 4. 报告生成”}}}// 阶段 3审计CA 填充实际 HowMuch{“task:5W2H”: {“howMuch”: {“tokenBudget”: 5000,“actualCost”: 5600,“maxPDCACycles”: 3,“actualCycles”: 2}}}4.4 维度级结构化审计CA 不只说通过/不通过。它独立审计每个 5W2H 维度{“auditBy5W2H”: {“what”: { “verdict”: “PASS”, “evidence”: “已生成包含区域对比和预测的报告” },“why”: { “verdict”: “PASS”, “evidence”: “结论可直接用于库存规划” },“when”: { “verdict”: “PASS”, “evidence”: “于 5/19 14:00 交付在截止日期前” },“where”: { “verdict”: “PASS”, “evidence”: “数据源匹配沙箱环境安全” },“how”: { “verdict”: “PASS”, “evidence”: “全部四个步骤按计划完成” },“howMuch”: { “verdict”: “WARNING”, “evidence”: “Token 超出 12%但结果质量高” }},“overallVerdict”: “CONDITIONAL_PASS”}然后 AA 做出维度感知的决策What/Why 失败 → 回滚至 SA 重新分析How/Where 失败 → 回滚至 PA 修正计划When/HowMuch 失败 → 如有理由则通过否则降级或终止4.5 模式识别5W2H 驱动的经验复用L0 存储所有已完成的任务作为冻结的 task:CompletedTaskSnapshot。SA 的模式识别器官查询类似经验PREFIX task: https://agent-harness.os/task#SELECT ?pastTask ?whySimilarity ?howSimilarityWHERE {GRAPH system:experience {?pastTask a task:CompletedTaskSnapshot .?pastTask task:5W2H/task:why ?pastWhy .?pastTask task:5W2H/task:how/task:planIRI ?pastPlan .BIND(external:cosineSimilarity(?currentWhyVec, ?pastWhyVec) AS ?whySimilarity)}FILTER(?whySimilarity 0.85)}ORDER BY DESC(?whySimilarity)LIMIT 5匹配的历史 5W2H 子图被注入 SA 决策上下文推荐相同的 task:how/preferredSkills警告历史 task:where 陷阱如不稳定分支提供历史 task:howMuch/actualCost 作为预算参考5. 技能图谱具有自动进化能力的认知知识网络5.1 超越静态技能库传统智能体框架将技能视为静态函数库。Gliding Horse 实现了动态认知知识网络其中技能通过使用而进化积累经验片段并通过语义链接自组织。skill:Skill━━━━━━━━基类含 5W2H 元数据Schema Signatureskill:AtomicSkill━━━━━━━━不可分割的原子技能有明确的入口点skill:CompositeSkill━━━━━━━━复合技能链接到子技能skill:MOC━━━━━━━━内容地图导航节点纯导航无入口点skill:KnowledgeFragment━━━━━━━━经验知识片段附加到特定技能skill:MCPTool━━━━━━━━MCP 工具封装桥接外部 MCP 生态5.2 六种语义链接类型技能通过六种关系类型连接每种触发不同的 SA 推理行为链接类型 SA 推理行为 示例PrerequisiteLink前置依赖 选择 A 时自动包含技能 B JWT 认证 → 自动加载 Rust 基础CompositionLink组合 递归展开子技能 / MOC 导航 MOC 认证域 → 展开 JWT/OAuth2/TokenRelatedLink关联 完成 A 后推荐 B 完成 JWT 实现 → 建议中间件集成AlternativeLink替代 A 不可用时自动切换至 B Rust 环境不可用 → 切换到 Node.js 版本ExtendsLink扩展 基础功能选 A高级功能选 B 基础 JWT → OAuth2 完整授权GeneralizationLink泛化 将特定任务映射到通用模板 销售预测 → 时间序列预测SPARQL 属性路径递归发现最深 3 层的依赖链?target (skill:links/skill:target){0,3} ?chainNode .5.3 AA 驱动的自动进化每次任务完成后AA 分析执行轨迹并进化技能图谱是是是任务完成AA 分析执行轨迹新的失败模式创建 KnowledgeFragment附加到对应技能新的技能关联创建 RelatedLink连接两个技能成熟度需要调整更新 skill:maturity更新统计更新 graphMetausageCount / successRate归档至 L0示例CA 发现 JWT 密钥轮换导致大量用户登出。AA 创建一个 KnowledgeFragment{“id”: “skill:fragment/jwt-key-rotation-pitfall”,“type”: “skill:KnowledgeFragment”,“schema:name”: “JWT 密钥轮换陷阱”,“skill:attachedTo”: “skill:rust-jwt-auth”,“skill:content”: {“problem”: “轮换期间直接替换旧密钥会使所有已签发令牌失效”,“recommendation”: “使用 JWKS 端点同时发布多个公钥实现平滑过渡”,“alternativeSkill”: “skill:jwks-implementation”}}未来的 SA 在处理 JWT 任务时将看到此片段并推荐 JWKS 方法。5.4 自引导/learn 和 /reduce 机制当 DA 遇到无可利用技能的问题时AgentRunnerL0SADAAgentRunnerL0SADA/learn 阶段/reduce 阶段报告当前问题无可用技能通知需要新技能分析问题特征生成 5W2H 草案创建 Skill 节点状态: draft建立与相关 MOC 的链接继续解决问题无技能指导返回解决方案记录到临时经验节点提取解决方案填充 Skill 内容/步骤更新状态: active计算 Ed25519 签名新技能已就绪这实现了无需人工干预的自主技能获取。这实现了无需人工干预的自主技能获取。下面是一个具体的代码示例展示当 DA 遇到无可利用技能时AgentRunner 如何触发 /learn 流程并生成一个包含 5W2H 元数据的新技能节点 JSON-LD 片段// AgentRunner 检测到 DA 报告无可用技能后触发 /learn 流程async fn handle_skill_miss(agent_runner: AgentRunner,da_report: DaSkillMissReport,) - ResultSkillNode, AgentError {// 步骤 1SA 分析问题特征生成 5W2H 草案let five_w2h FiveW2HDraft {what: da_report.task_description.clone(),why: WhyDraft {description: format!(“DA 在任务 ‘{}’ 中遇到无可用技能需自动创建新技能”,da_report.task_id),success_criteria: vec![“新技能可处理当前任务”.into(),“技能元数据完整可复用”.into(),],priority: Priority::High,},who: WhoDraft {requestor: format!(“agent:da/{}”, da_report.da_instance_id),required_role: “agent:Do”.into(),},when: WhenDraft {deadline: Utc::now() Duration::hours(1),},how: HowDraft {plan_iri: None,preferred_skills: vec![],required_steps: vec![“分析任务特征”.into(),“生成技能实现”.into(),“验证技能可用性”.into(),],},where_: WhereDraft {data_sources: da_report.context_sources.clone(),execution_environment: “sandbox”.into(),},how_much: HowMuchDraft {token_budget: 8000,max_cycles: 3,},};// 步骤 2SA 创建 Skill 节点状态: draft生成 JSON-LD 片段 let skill_node json!({ context: { skill: https://agent-harness.os/skill#, task: https://agent-harness.os/task#, schema: https://schema.org/, xsd: http://www.w3.org/2001/XMLSchema# }, id: format!(skill:auto/{}, uuid::Uuid::new_v4()), type: [skill:AtomicSkill, skill:AutoGenerated], schema:name: format!(auto-{}, da_report.task_type), schema:description: format!( 由 AgentRunner 自动生成用于处理 {} 类型任务, da_report.task_type ), skill:status: draft, skill:createdAt: { type: xsd:dateTime, value: Utc::now().to_rfc3339() }, skill:5W2H: { task:what: five_w2h.what, task:why: { task:description: five_w2h.why.description, task:successCriteria: five_w2h.why.success_criteria, task:priority: five_w2h.why.priority }, task:who: { task:requestor: five_w2h.who.requestor, task:requiredRole: five_w2h.who.required_role }, task:when: { task:deadline: five_w2h.when.deadline.to_rfc3339() }, task:how: { task:requiredSteps: five_w2h.how.required_steps }, task:where: { task:dataSources: five_w2h.where_.data_sources, task:executionEnvironment: five_w2h.where_.execution_environment }, task:howMuch: { task:tokenBudget: five_w2h.how_much.token_budget, task:maxCycles: five_w2h.how_much.max_cycles } }, skill:triggeredBy: { id: format!(agent:da/{}, da_report.da_instance_id), type: agent:DoAgent }, skill:sourceTask: { id: format!(task:{}, da_report.task_id), type: task:Task }, skill:links: [ { type: skill:RelatedLink, skill:target: { id: moc:auto-generated-skills, type: skill:MOC }, skill:relationType: belongsTo } ] }); // 步骤 3写入 L0 持久存储 let skill_id agent_runner .l0_manager .insert_node(skill_node) .await?; // 步骤 4建立与相关 MOC 的链接 agent_runner .skill_graph .add_link( skill_id, moc:auto-generated-skills, LinkType::CompositionLink, ) .await?; Ok(SkillNode { id: skill_id, node: skill_node, status: SkillStatus::Draft, })}上述代码展示了 /learn 流程的核心逻辑SA 分析问题特征从 DA 报告中提取任务描述生成完整的 5W2H 元数据草案创建 JSON-LD 技能节点包含 context、id、type、schema:name、skill:5W2H 等字段其中 5W2H 覆盖了 What/Why/Who/When/How/Where/HowMuch 全部七个维度持久化与链接将新技能节点写入 L0 存储并建立与 moc:auto-generated-skills 的组合链接使其可被后续任务发现当 /reduce 阶段 DA 返回解决方案后SA 会提取该方案填充到技能节点的 skill:content 和 skill:steps 字段并将状态从 draft 更新为 active完成完整的自引导闭环。主动感知引擎异常检测与智能干预6.1 十大感知触发器ProactiveEngine 通过十个不同的触发器监控执行每个映射到特定的干预计划干预计划10 个感知触发器检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常TaskStart: 复杂度分析PlanCompleted: 子任务限制检查ProgressAnomaly: 去重窗口CheckCompleted: 基于裁决的告警TaskEnd: 经验提取CycleTimeout: 耗时监控AgentBlocked: 健康检测ResourceConflict: 队列/延迟分析QualityDegradation: 回滚信号UserFeedback: 反馈日志重新评估当前计划重启阻塞的智能体调整资源分配通知人工监督员6.2 异常去重基于时间窗口的过滤防止告警风暴perception:anomaly_dedup_window_seconds: 60 # 60 秒内抑制重复告警simple_input_threshold: 50 # 输入 50 字符 → 简单任务medium_input_threshold: 200 # 输入 200 字符 → 中等复杂度cycle_timeout_secs: 300 # 循环超过 5 分钟则告警max_iterations_before_alert: 10 # 10 轮无进展则告警error_rate_threshold: 0.5 # 超过 50% 工具调用失败则告警6.3 5W2H 约束检查ProactiveEngine 根据 5W2H 约束验证执行截止时间违规当前时间 task:when/deadline → 升级到人工处理预算超支Token 消耗 task:howMuch/tokenBudget × 0.8 → 警告 SA角色不匹配分配的智能体角色 ≠ task:who/requiredRole → 重新分配环境冲突两个任务修改同一仓库/分支 → 串行执行7. 高级工具执行框架7.1 内置工具25与微工具系统类别 工具 创新点文件操作 file_read, file_write, file_edit, file_list, glob_search, grep_search 符号链接检测路径遍历防护网络 WebFetch, WebSearchDuckDuckGo 回退链 TLS 强制代理支持执行 Bash, PowerShell沙箱化 超时 可配置超时受限路径| 知识导入 | knowledge_import_json, knowledge_import_url, knowledge_import_directory | 自动图谱化至 RDF || 知识图谱 | knowledge_extract, knowledge_query, kg_search, kg_neighbors, knowledge_extract_code | SPARQL 查询AST 解析 || 技能管理 | create_skill, convert_skill, list_skills | LLM 驱动的技能生成 || 本体 | ontology_register, knowledge_bridge | 跨域语义对齐 |微工具创新对于大型工具结果8KB系统自动生成可对话的微工具// 在 file_read 返回 50KB 内容后微工具: “search_in_results”描述: “在之前读取的文件内容中搜索”参数: { “query”: “string”, “context_lines”: “number” }这将笨重的输出转变为可交互查询的产物。7.2 Model Context Protocol (MCP) 集成通过 MCP 标准集成外部工具服务器连接到远程工具提供方GitHub、Slack、Jira 等运行时动态发现工具带 API 密钥轮换的安全认证8. 检查点与恢复容错执行会话状态持久化支持从崩溃中恢复// 在关键点创建检查点let checkpoint_id checkpoint_manager.create(task_iri,format!(“cycle:{}”, cycle_id),state_json,metadata_json,context_json,artifacts)?;// 崩溃后恢复let restored_state checkpoint_manager.restore(task_iri)?;使用场景长时间运行的任务恢复数小时/数天智能体重启而不丢失上下文事后分析和回放调试9. 工作任务队列后台作业处理用于异步操作的持久化队列技术yaqueYet Another Queue bincode 序列化特性磁盘持久化、确认确认、窥视操作使用场景批量知识导入数千文档定时技能进化夜间优化定期清理过期缓存条目异步嵌入生成10. 模板引擎与 JSON Schema 验证10.1 基于 Markdown 的提示模板角色: {{agent_role}}任务: {{task_description}}上下文{{l3_projection}}可用技能{{skill_list}}5W2H 约束What: {{what}}Why: {{why}}When: {{deadline}}How Much: {{token_budget}}指令…特性递归目录扫描变量插值{placeholder} 语法模板继承通过 include版本控制于 Git 中10.2 一次往返双重收获高级验证模式在单次 LLM 调用中同时提取元数据并转换为 JSON-LD// LLM 输出{“thought”: “正在规划数据库模式…”,“content”: “CREATE TABLE users…”,“summary”: “数据库模式设计完成”,“metadata”: {“tables”: [“users”, “orders”],“relationships”: [“one-to-many”]}}// 系统处理// 1. 按 JSON Schema 验证 metadata// 2. 将验证后的 metadata 转换为 JSON-LD 节点// 3. 以 id 写入 L2 黑板// 结果单次 LLM 调用 → 验证后的结构化数据 自然语言这使信息提取效率比传统单一用途提示提高一倍。架构11.1 系统组件API 层基础设施TemplateEngine提示模板LLMClientOpenAI 兼容ProactiveEngine异常检测JSON-LD Framing上下文投影Skill Graph15 个模块Worker TaskQueueyaque bincode工具系统ToolExecutor25 内置工具SkillRegistry技能目录MCP Client外部工具知识图谱工具代码 AST、RDF、桥接记忆系统L0: redb HyperspaceEngine持久 KV 向量L1: Session每智能体对话L2: Oxigraph共享黑板 RDFL3: SPARQL CONSTRUCT投影引擎MemoryManager跨层协调核心协调SupervisorAgentPDCA 编排AgentRunnerReAct 循环BizAgent隔离执行EventBus异步分发Checkpoint状态持久化SyscallGate权限控制客户端应用Python 编排器TypeScript 前端Go 服务gRPC 服务器tonic [::1]:50051HTTP Edge 守护进程axum :8080
Gliding Horse 设计细节 -- 不跟风开发自己的AI Agent
通用化 PDCA 编排超越传统管理1.1 有何不同传统 PDCA计划-执行-检查-改进是一种用于流程改进的管理方法论。Gliding Horse Agent OS 实现了通用化计算型 PDCA它超越了管理范畴成为一种适应任何复杂度的通用任务执行模型。Gliding Horse 通用化 PDCA传统 PDCA演进演进演进线性循环人工驱动固定阶段手动交接递归循环智能体自主自适应阶段紧急/探索模式事件驱动转换感知触发7 个复杂度级别L0 即时 → L3 递归1.2 七个任务复杂度级别系统自动将任务分类为 7 个级别并相应调整 PDCA 循环级别 类型 PDCA 适配 示例L0 即时任务 单轮无需 PDCA “现在几点”L1 简单任务 单次 PDCA 循环最小规划 “写一个 Python 脚本”L2 标准任务 完整 PDCA 结构化审计 “分析 Q2 销售数据”L3 复杂项目 多智能体并行 Do 阶段 “构建 REST API 测试”L4 探索型任务 多 DA 并行不同策略 “研究最佳技术栈”L5 递归任务 子任务生成子 PDCA 循环 “重构整个代码库”L6 紧急模式 跳过 Plan立即 Do-Check 循环 “立即修复生产 Bug”关键创新Supervisor Agent (SA) 根据 5W2H 元数据分析动态选择合适的 PDCA 模式而非僵化的模板。这使得同一个编排引擎既能处理简单的查询也能处理持续数周的工程项目。1.3 自适应循环模式检测到严重故障高不确定性正常复杂度跳过规划立即验证决策已解决或升级派生多个 DA比较结果验证最佳结果选择策略完整规划顺序执行结构化审计归档或迭代EMERGENCYEXPLORATORYSTANDARDDOCHECKACTPARALLEL_DOCONVERGEPLAN五层记忆架构CPU 缓存哲学应用于 AI2.1 受计算机架构启发的革命性设计与传统智能体框架的扁平上下文窗口不同Gliding Horse 实现了五层分层记忆系统直接受 CPU 缓存层级结构L1/L2/L3 缓存 RAM 磁盘存储启发。Token 感知驱逐语义 LRU框架驱动投影SPARQL CONSTRUCT写回策略批量持久化L0: 持久存储(redb KV HyperspaceEngine)━━━━━━━━━━━━━━━速度: ~1ms 读取容量: 无限磁盘支持完整对话历史向量嵌入经验档案技能图谱完整L3: 投影引擎(SPARQL CONSTRUCT Frame)━━━━━━━━━━━━━━━速度: ~15ms 投影容量: 按需子图8 个预定义框架模板动态 SPARQL 查询物化视图缓存L2: 工作黑板(Oxigraph 内存 RDF)━━━━━━━━━━━━━━━速度: ~2ms 查询容量: 任务图 假设任务树结构中间结果权限矩阵MESI 一致性状态L1: 上下文窗口(~8KB Token 预算)━━━━━━━━━━━━━━━速度: 即时容量: ~20 条摘要 IRI 指针压缩摘要指向 L2 的 IRI 引用活跃技能片段2.2 面向分布式智能体的 MESI 缓存一致性协议创新首次将 CPU 缓存一致性协议MESIModified 已修改、Exclusive 独占、Shared 共享、Invalid 无效应用于多智能体记忆系统。状态 在智能体上下文中的含义 行为M已修改 节点在 L2 中修改与 L0 不一致 广播失效到 L1/L3任务完成时写回E独占 节点加载到 L1未被共享 快速访问无一致性开销S共享 节点在多层中缓存一致 只读共享适用于读密集型工作负载I无效 引用已过期必须重新加载 触发缺页故障→ 从下层获取一致性引擎工作流DA 修改 L2 黑板中的节点 → 状态变为 M一致性引擎发送 Invalidate(IRI) 到 L1 → 摘要标记为 IL3 收到失效通知 → 物化视图移除下次访问触发从 L0 重新加载更新后的数据这确保了跨所有智能体实例的强最终一致性无需昂贵的分布式锁。2.3 智能预取扩散激活算法预取引擎监控智能体意图并主动加载可能需要的知识L2L0 存储L3 管理器预取引擎AgentL2L0 存储L3 管理器预取引擎Agent下次访问时命中缓存延迟: ~2ms vs ~50ms 冷加载检测到意图“规划旅行”扩散激活旅行 → 航班、酒店、景点异步 SPARQL 查询相关子图获取标记为航班、酒店的记忆返回相关块 嵌入预取子图就绪加载到预取缓冲区算法触发条件意图切换、实体提及、工具调用返回新链接扩散从触发实体出发在 L3 知识图谱中遍历 1-2 跳排序边权重 × 共现频率 → Top-K 实体执行异步预加载到 L2预取区结果知识密集型任务的感知延迟降低 90%。JSON-LD 语义数据总线通用互操作层3.1 为什么是 JSON-LD而不仅仅是 JSON大多数智能体框架使用纯 JSON 进行数据交换导致❌ 技能之间的字段名冲突“input_file” vs “source_url” vs “data_path”❌ 缺乏全局实体标识无法合并来自不同智能体的记忆❌ 缺乏语义类型无法进行多态发现❌ 结构固定无法通过深度控制 Token 预算Gliding Horse 使用 JSON-LD 1.1W3C 标准 作为通用数据总线提供六项核心能力架构价值JSON-LD 六大核心特性context字段→IRI 映射id全局实体 IDtype多类型继承嵌套 vs IRI深度控制graph命名图Frame形状投影鸭子类型零成本集成自动合并跨智能体对齐多态发现SPARQL 匹配Token 预算物理控制无冲突并行精确溯源按需投影上下文经济3.2 context面向技能的鸭子类型不同开发者使用不同的参数名编写技能。JSON-LD context 将所有变体映射到统一的 IRI{“context”: {“skill”: “https://agent-harness.os/skill#”,“skill:inputMapping”: {“file_path”: { “id”: “skill:sourceDataURI” },“source_url”: { “id”: “skill:sourceDataURI” },“data_path”: { “id”: “skill:sourceDataURI” }}}}现在 SA 的工具路由器按语义能力skill:sourceDataURI匹配技能而非根据任意的字段名。这是协议级别的鸭子类型如果一个技能声明它能处理 skill:sourceDataURI无论其内部命名如何它都是兼容的。3.3 id跨智能体实体对齐当 DA 写入中间结果而 CA 随后审计时它们引用相同的 id// DA 写入 L2 黑板{“id”: “blackboard:task-001/east-region-result”,“type”: “exec:TaskResult”,“exec:growthRate”: “35.2”,“exec:producedBy”: { “id”: “agent:da/inst-003” }}// CA 通过相同 id 查询无需显式传递SELECT ?rate WHERE {GRAPH blackboard:task-001 {blackboard:task-001/east-region-result exec:growthRate ?rate .}}RDF 处理器自动合并不同图中具有相同 id 的节点。这实现了无缝的跨智能体记忆融合无需去重逻辑。3.4 type多态发现单个节点可以有多种类型触发不同的系统行为{“id”: “blackboard:task-001/result”,“type”: [“exec:TaskResult”, // → CA 审计投影匹配此类型“exec:NumericalResult”, // → CA 选择数值偏差检测技能“sec:Auditable”, // → 所有修改记录到审计追踪“mon:HighPriority” // → SA 态势感知标记为红色缩短检查周期]}SPARQL 多态查询SELECT ?skill WHERE {?skill a ?skillType .FILTER(?skillType IN (skill:NumericalProcessor, skill:TabularProcessor))}这实现了多维分类无需复杂的继承层级。3.5 嵌套 vs IRI 引用物理 Token 预算控制相同的 RDF 图可以表示为完全展开高 Token 成本或仅 IRI 指针最小 Token// 深度展开适用于活跃子任务约 1500 tokens{“id”: “task:sales-analysis”,“task:subTasks”: {“embed”: “always”,“exec:status”: “completed”,“exec:result”: { “value”: 35.2 }}}// 浅引用适用于历史数据约 50 tokens{“id”: “task:sales-analysis”,“task:relatedHistory”: {“embed”: “link”,“id”: “task:q1-analysis-2025”}}SA 的智能掐断决策活跃子任务 → 深度展开为智能体提供完整上下文历史背景 → 仅 IRI缺页时加载已完成监控 → 摘要投影仅摘要这使得 L1 上下文窗口保持在预算内同时保持完整的知识可达性。3.6 graph 命名图无冲突并行写入每个智能体实例拥有自己的命名图实现无锁并行写入L2 黑板命名图blackboard:shared公共区多智能体读写blackboard:task-001任务 1 私有blackboard:prefetch预取缓冲区L0 持久命名图agent:da/inst-001DA 私有记忆agent:ca/inst-001CA 私有记忆system:knowledge全局知识库system:experience模式库访问权限矩阵图名称 SA PA DA CA AAblackboard:shared 读写 读 读写 读写 读blackboard:task-{id} 读写 读 读写 读 读agent:{id} 读 — — — —system:audit-log 读 — — — —当冲突发生时DA 说已完成CA 说失败SA 回溯到源图进行仲裁。3.7 JSON-LD Framing按需投影L3 投影引擎使用 Frame 文档声明所需的输出形状{“context”: { “exec”: “https://agent-harness.os/exec#” },“type”: “task:AnalysisTask”,“task:subTasks”: {“embed”: “always”, // 完全展开“exec:assignedTo”: { “embed”: “link” } // 仅 IRI},“task:relatedHistory”: {“embed”: “link” // 历史记录作为指针}}五级渐进式信息披露级别 内容 Token 用户L1 MOC 索引扫描名称 计数 ~200 SA 初始分析L2 技能 5W2H 摘要what/why/when ~500 SA 技能匹配L3 链接关系前置条件 ~800 SA/PA 链式发现L4 模式 步骤列表 ~1500 DA 工具调用L5 完整内容代码 验证 按需 DA 执行 / CA 审计这确保每个智能体只看到它需要的、不多也不少。3.8 简化的 JSON-LD 使用连接 LLM 与知识图谱挑战LLM 不擅长生成复杂的 JSON-LD 结构。它们擅长生成自然语言和简单的 JSON 对象。我们的解决方案一种混合方法利用两种范式的优势存储层LLM 输出简单 JSON批量写回L2 黑板处理AgentRunner / L2 黑板━━━━━━━━按 JSON Schema 验证转换为 JSON-LD 节点分配 id写入 L2 黑板{‘think’: ‘Planning…’,‘content’: ‘CREATE TABLE…’,‘summary’: ‘Schema designed’}L2 Oxigraph 内存━━━━━━━━内存 RDF快速查询 ~2msL0 持久存储━━━━━━━━redb KV HyperspaceEngine无限容量HARNESSLLM 响应结构针对多轮对话优化{“think”: “Analyzing user request for database schema design…”,“content”: “CREATE TABLE users (id UUID PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL);”,“summary”: “Database schema for user table with UUID primary key and unique email constraint”}为什么采用三字段结构字段 用途 Token 效率think 思维链推理轮次后丢弃 临时不归档content 完整详细输出归档至 L0 以追溯 完整保真度summary 简洁摘要保留在 L1 上下文窗口中 相比完整内容节省约 90% Token多轮对话优化第 1 轮用户要求设计数据库模式→ LLM 生成 think/content/summary→ summary 追加到 L1 上下文约 50 tokens→ content 以 id: “memory:session-001/block-042” 归档至 L0第 2 轮用户问我们创建了哪些表→ L1 上下文包含摘要“Database schema for user table…”→ 如需详情AgentRunner 从 L0 解析 IRI “memory:session-001/block-042”→ 结果L1 保持小巧信息无丢失AgentRunner 与 L2 黑板的角色AgentRunner通过 L2 黑板充当了以下两者之间的翻译层LLM 的舒适区包含 think/content/summary 的简单 JSON系统的需求包含 id、type、context 的 JSON-LD用于互操作处理流程// 说明转换过程的伪代码let llm_output llm_client.generate(prompt).await?; // 返回简单 JSON// 步骤 1按 JSON Schema 验证validation_engine.validate(llm_output.content, skill.input_schema)?;// 步骤 2转换为 JSON-LD 节点let jsonld_node json!({“id”: format!(“memory:{}/block-{}”, session_id, block_counter),“type”: [“mem:MemoryBlock”, “exec:TaskResult”],“mem:content”: llm_output.content,“mem:summary”: llm_output.summary,“mem:embedding”: embedding_service.index(llm_output.content).await?});// Step 3: Write to L2 blackboard (Oxigraph in-memory)l2_manager.insert_node(jsonld_node)?;// Step 4: Schedule batch write-back to L0scheduler.schedule_writeback(session_id, block_counter);此设计实现了✅ 性能L2 内存查询延迟 ~2ms✅ 可扩展性L0 磁盘存储容量无限✅ Token 经济性基于摘要的 L1 上下文Token 使用最小化✅ 可追溯性完整内容保留于 L0带有 IRI 引用✅ 互操作性JSON-LD 支持跨智能体数据共享4. 5W2H 任务本体结构化意图建模4.1 为什么是 5W2H通用任务本体所有结构化思维的基础Gliding Horse Agent OS 建立在两个通用框架之上它们是处理任何任务的基础5W2HWhat-做什么、Why-为什么、Who-谁做、When-何时、Where-何地、How-怎么做、How Much-多少资源 — 任务本体回答“到底需要做什么”目的明确意图、约束和成功标准时机在任务初始化阶段应用PDCA 循环Plan-计划、Do-执行、Check-检查、Act-改进 — 执行模型回答“我们如何系统地执行和改进”目的提供带持续反馈的迭代执行时机贯穿任务生命周期专业模型技能扩展通用框架始终必需基础流程可选技能可选技能可选技能可选技能5W2H━━━━━━━━任务本体明确要做什么PDCA 循环━━━━━━━━执行模型定义如何执行SWOT 分析战略定位5 Whys根因分析SMART 目标目标细化看板工作流可视化可执行任务为什么两者缺一不可任何可执行任务 5W2H意图清晰度 PDCA系统性执行框架 角色 缺少它会怎样5W2H 定义做什么 目标模糊 → 期望偏离PDCA 定义如何迭代执行 混乱实施 → 缺乏质量控制完整工作流ActAgentCheckAgentDoAgentPlanAgentSupervisorAgentUserActAgentCheckAgentDoAgentPlanAgentSupervisorAgentUser步骤 1: 提取 5W2H(What/Why/Who/When/Where/How/HowMuch)提交任务请求执行 PLAN 阶段生成微流程 DAG返回执行计划执行 DO 阶段调用工具写入产物返回实施结果执行 CHECK 阶段按 5W2H 维度审计返回审计裁决执行 ACT 阶段决策通过/回滚/终止最终决定交付结果 归档4.2 超越自由文本提示传统智能体接受非结构化提示导致目标模糊和执行不可审计。Gliding Horse 引入 5W2H 任务本体作为所有非平凡任务的标准化元数据框架。What: 核心目标━━━━━━━━创建时必需Why: 意图与成功标准━━━━━━━━创建时必需子项: priority, criteriaWho: 干系人与角色━━━━━━━━由 SA/PA 填写子项: requestor, assignees, requiredRoleWhen: 时间约束━━━━━━━━由 User/SA/PA 填写子项: deadline, duration, timezoneHow: 方法与步骤━━━━━━━━由 PA 填写子项: planIRI, skills, dependenciesWhere: 数据源与环境━━━━━━━━由 PA/DA 填写子项: repos, branches, envHow Much: 资源预算━━━━━━━━由 SA/PA/CA 填写子项: tokenBudget, maxCycles, qualityCA 审计依据4.3 渐进式填充生命周期每个维度都有一个 fillStage 属性标记其应在何时填充SA 调度PA 输出计划DA 完成CA 输出审计回滚重规划通过任务创建PA 规划DA 执行CA 审计AA 决策归档至 L0填充 What / Why / 部分 Who When填充 How / Where / 补全 When Who填充 Where 详情 / 初步 HowMuch填充 HowMuch 实际值 / 验证所有维度冻结完整 5W2H 归档至 L0示例生命周期// 阶段 1创建SA 提取最小集{“id”: “task:sales-q2-analysis”,“task:5W2H”: {“what”: “分析 Q2 区域销售数据并生成预测报告”,“why”: {“description”: “为库存规划提供依据”,“successCriteria”: [“输出包含区域增长对比和预测的可视化”],“priority”: “high”},“who”: { “requestor”: “user:vp-sales”, “requiredRole”: “agent:Do” },“when”: { “deadline”: “2026-05-20T18:00:0008:00” }}}// 阶段 2规划PA 补全 How/Where{“task:5W2H”: {“where”: {“dataSources”: [“file://data/sales_q2.csv”, “db://crm/deals”],“executionEnvironment”: “sandbox”},“how”: {“planIRI”: “plan:task-tree/sales-q2”,“preferredSkills”: [“skill:python-analysis”, “skill:forecasting”],“requiredSteps”: “1. 数据清洗 → 2. 区域分组 → 3. 预测建模 → 4. 报告生成”}}}// 阶段 3审计CA 填充实际 HowMuch{“task:5W2H”: {“howMuch”: {“tokenBudget”: 5000,“actualCost”: 5600,“maxPDCACycles”: 3,“actualCycles”: 2}}}4.4 维度级结构化审计CA 不只说通过/不通过。它独立审计每个 5W2H 维度{“auditBy5W2H”: {“what”: { “verdict”: “PASS”, “evidence”: “已生成包含区域对比和预测的报告” },“why”: { “verdict”: “PASS”, “evidence”: “结论可直接用于库存规划” },“when”: { “verdict”: “PASS”, “evidence”: “于 5/19 14:00 交付在截止日期前” },“where”: { “verdict”: “PASS”, “evidence”: “数据源匹配沙箱环境安全” },“how”: { “verdict”: “PASS”, “evidence”: “全部四个步骤按计划完成” },“howMuch”: { “verdict”: “WARNING”, “evidence”: “Token 超出 12%但结果质量高” }},“overallVerdict”: “CONDITIONAL_PASS”}然后 AA 做出维度感知的决策What/Why 失败 → 回滚至 SA 重新分析How/Where 失败 → 回滚至 PA 修正计划When/HowMuch 失败 → 如有理由则通过否则降级或终止4.5 模式识别5W2H 驱动的经验复用L0 存储所有已完成的任务作为冻结的 task:CompletedTaskSnapshot。SA 的模式识别器官查询类似经验PREFIX task: https://agent-harness.os/task#SELECT ?pastTask ?whySimilarity ?howSimilarityWHERE {GRAPH system:experience {?pastTask a task:CompletedTaskSnapshot .?pastTask task:5W2H/task:why ?pastWhy .?pastTask task:5W2H/task:how/task:planIRI ?pastPlan .BIND(external:cosineSimilarity(?currentWhyVec, ?pastWhyVec) AS ?whySimilarity)}FILTER(?whySimilarity 0.85)}ORDER BY DESC(?whySimilarity)LIMIT 5匹配的历史 5W2H 子图被注入 SA 决策上下文推荐相同的 task:how/preferredSkills警告历史 task:where 陷阱如不稳定分支提供历史 task:howMuch/actualCost 作为预算参考5. 技能图谱具有自动进化能力的认知知识网络5.1 超越静态技能库传统智能体框架将技能视为静态函数库。Gliding Horse 实现了动态认知知识网络其中技能通过使用而进化积累经验片段并通过语义链接自组织。skill:Skill━━━━━━━━基类含 5W2H 元数据Schema Signatureskill:AtomicSkill━━━━━━━━不可分割的原子技能有明确的入口点skill:CompositeSkill━━━━━━━━复合技能链接到子技能skill:MOC━━━━━━━━内容地图导航节点纯导航无入口点skill:KnowledgeFragment━━━━━━━━经验知识片段附加到特定技能skill:MCPTool━━━━━━━━MCP 工具封装桥接外部 MCP 生态5.2 六种语义链接类型技能通过六种关系类型连接每种触发不同的 SA 推理行为链接类型 SA 推理行为 示例PrerequisiteLink前置依赖 选择 A 时自动包含技能 B JWT 认证 → 自动加载 Rust 基础CompositionLink组合 递归展开子技能 / MOC 导航 MOC 认证域 → 展开 JWT/OAuth2/TokenRelatedLink关联 完成 A 后推荐 B 完成 JWT 实现 → 建议中间件集成AlternativeLink替代 A 不可用时自动切换至 B Rust 环境不可用 → 切换到 Node.js 版本ExtendsLink扩展 基础功能选 A高级功能选 B 基础 JWT → OAuth2 完整授权GeneralizationLink泛化 将特定任务映射到通用模板 销售预测 → 时间序列预测SPARQL 属性路径递归发现最深 3 层的依赖链?target (skill:links/skill:target){0,3} ?chainNode .5.3 AA 驱动的自动进化每次任务完成后AA 分析执行轨迹并进化技能图谱是是是任务完成AA 分析执行轨迹新的失败模式创建 KnowledgeFragment附加到对应技能新的技能关联创建 RelatedLink连接两个技能成熟度需要调整更新 skill:maturity更新统计更新 graphMetausageCount / successRate归档至 L0示例CA 发现 JWT 密钥轮换导致大量用户登出。AA 创建一个 KnowledgeFragment{“id”: “skill:fragment/jwt-key-rotation-pitfall”,“type”: “skill:KnowledgeFragment”,“schema:name”: “JWT 密钥轮换陷阱”,“skill:attachedTo”: “skill:rust-jwt-auth”,“skill:content”: {“problem”: “轮换期间直接替换旧密钥会使所有已签发令牌失效”,“recommendation”: “使用 JWKS 端点同时发布多个公钥实现平滑过渡”,“alternativeSkill”: “skill:jwks-implementation”}}未来的 SA 在处理 JWT 任务时将看到此片段并推荐 JWKS 方法。5.4 自引导/learn 和 /reduce 机制当 DA 遇到无可利用技能的问题时AgentRunnerL0SADAAgentRunnerL0SADA/learn 阶段/reduce 阶段报告当前问题无可用技能通知需要新技能分析问题特征生成 5W2H 草案创建 Skill 节点状态: draft建立与相关 MOC 的链接继续解决问题无技能指导返回解决方案记录到临时经验节点提取解决方案填充 Skill 内容/步骤更新状态: active计算 Ed25519 签名新技能已就绪这实现了无需人工干预的自主技能获取。这实现了无需人工干预的自主技能获取。下面是一个具体的代码示例展示当 DA 遇到无可利用技能时AgentRunner 如何触发 /learn 流程并生成一个包含 5W2H 元数据的新技能节点 JSON-LD 片段// AgentRunner 检测到 DA 报告无可用技能后触发 /learn 流程async fn handle_skill_miss(agent_runner: AgentRunner,da_report: DaSkillMissReport,) - ResultSkillNode, AgentError {// 步骤 1SA 分析问题特征生成 5W2H 草案let five_w2h FiveW2HDraft {what: da_report.task_description.clone(),why: WhyDraft {description: format!(“DA 在任务 ‘{}’ 中遇到无可用技能需自动创建新技能”,da_report.task_id),success_criteria: vec![“新技能可处理当前任务”.into(),“技能元数据完整可复用”.into(),],priority: Priority::High,},who: WhoDraft {requestor: format!(“agent:da/{}”, da_report.da_instance_id),required_role: “agent:Do”.into(),},when: WhenDraft {deadline: Utc::now() Duration::hours(1),},how: HowDraft {plan_iri: None,preferred_skills: vec![],required_steps: vec![“分析任务特征”.into(),“生成技能实现”.into(),“验证技能可用性”.into(),],},where_: WhereDraft {data_sources: da_report.context_sources.clone(),execution_environment: “sandbox”.into(),},how_much: HowMuchDraft {token_budget: 8000,max_cycles: 3,},};// 步骤 2SA 创建 Skill 节点状态: draft生成 JSON-LD 片段 let skill_node json!({ context: { skill: https://agent-harness.os/skill#, task: https://agent-harness.os/task#, schema: https://schema.org/, xsd: http://www.w3.org/2001/XMLSchema# }, id: format!(skill:auto/{}, uuid::Uuid::new_v4()), type: [skill:AtomicSkill, skill:AutoGenerated], schema:name: format!(auto-{}, da_report.task_type), schema:description: format!( 由 AgentRunner 自动生成用于处理 {} 类型任务, da_report.task_type ), skill:status: draft, skill:createdAt: { type: xsd:dateTime, value: Utc::now().to_rfc3339() }, skill:5W2H: { task:what: five_w2h.what, task:why: { task:description: five_w2h.why.description, task:successCriteria: five_w2h.why.success_criteria, task:priority: five_w2h.why.priority }, task:who: { task:requestor: five_w2h.who.requestor, task:requiredRole: five_w2h.who.required_role }, task:when: { task:deadline: five_w2h.when.deadline.to_rfc3339() }, task:how: { task:requiredSteps: five_w2h.how.required_steps }, task:where: { task:dataSources: five_w2h.where_.data_sources, task:executionEnvironment: five_w2h.where_.execution_environment }, task:howMuch: { task:tokenBudget: five_w2h.how_much.token_budget, task:maxCycles: five_w2h.how_much.max_cycles } }, skill:triggeredBy: { id: format!(agent:da/{}, da_report.da_instance_id), type: agent:DoAgent }, skill:sourceTask: { id: format!(task:{}, da_report.task_id), type: task:Task }, skill:links: [ { type: skill:RelatedLink, skill:target: { id: moc:auto-generated-skills, type: skill:MOC }, skill:relationType: belongsTo } ] }); // 步骤 3写入 L0 持久存储 let skill_id agent_runner .l0_manager .insert_node(skill_node) .await?; // 步骤 4建立与相关 MOC 的链接 agent_runner .skill_graph .add_link( skill_id, moc:auto-generated-skills, LinkType::CompositionLink, ) .await?; Ok(SkillNode { id: skill_id, node: skill_node, status: SkillStatus::Draft, })}上述代码展示了 /learn 流程的核心逻辑SA 分析问题特征从 DA 报告中提取任务描述生成完整的 5W2H 元数据草案创建 JSON-LD 技能节点包含 context、id、type、schema:name、skill:5W2H 等字段其中 5W2H 覆盖了 What/Why/Who/When/How/Where/HowMuch 全部七个维度持久化与链接将新技能节点写入 L0 存储并建立与 moc:auto-generated-skills 的组合链接使其可被后续任务发现当 /reduce 阶段 DA 返回解决方案后SA 会提取该方案填充到技能节点的 skill:content 和 skill:steps 字段并将状态从 draft 更新为 active完成完整的自引导闭环。主动感知引擎异常检测与智能干预6.1 十大感知触发器ProactiveEngine 通过十个不同的触发器监控执行每个映射到特定的干预计划干预计划10 个感知触发器检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常检测到异常TaskStart: 复杂度分析PlanCompleted: 子任务限制检查ProgressAnomaly: 去重窗口CheckCompleted: 基于裁决的告警TaskEnd: 经验提取CycleTimeout: 耗时监控AgentBlocked: 健康检测ResourceConflict: 队列/延迟分析QualityDegradation: 回滚信号UserFeedback: 反馈日志重新评估当前计划重启阻塞的智能体调整资源分配通知人工监督员6.2 异常去重基于时间窗口的过滤防止告警风暴perception:anomaly_dedup_window_seconds: 60 # 60 秒内抑制重复告警simple_input_threshold: 50 # 输入 50 字符 → 简单任务medium_input_threshold: 200 # 输入 200 字符 → 中等复杂度cycle_timeout_secs: 300 # 循环超过 5 分钟则告警max_iterations_before_alert: 10 # 10 轮无进展则告警error_rate_threshold: 0.5 # 超过 50% 工具调用失败则告警6.3 5W2H 约束检查ProactiveEngine 根据 5W2H 约束验证执行截止时间违规当前时间 task:when/deadline → 升级到人工处理预算超支Token 消耗 task:howMuch/tokenBudget × 0.8 → 警告 SA角色不匹配分配的智能体角色 ≠ task:who/requiredRole → 重新分配环境冲突两个任务修改同一仓库/分支 → 串行执行7. 高级工具执行框架7.1 内置工具25与微工具系统类别 工具 创新点文件操作 file_read, file_write, file_edit, file_list, glob_search, grep_search 符号链接检测路径遍历防护网络 WebFetch, WebSearchDuckDuckGo 回退链 TLS 强制代理支持执行 Bash, PowerShell沙箱化 超时 可配置超时受限路径| 知识导入 | knowledge_import_json, knowledge_import_url, knowledge_import_directory | 自动图谱化至 RDF || 知识图谱 | knowledge_extract, knowledge_query, kg_search, kg_neighbors, knowledge_extract_code | SPARQL 查询AST 解析 || 技能管理 | create_skill, convert_skill, list_skills | LLM 驱动的技能生成 || 本体 | ontology_register, knowledge_bridge | 跨域语义对齐 |微工具创新对于大型工具结果8KB系统自动生成可对话的微工具// 在 file_read 返回 50KB 内容后微工具: “search_in_results”描述: “在之前读取的文件内容中搜索”参数: { “query”: “string”, “context_lines”: “number” }这将笨重的输出转变为可交互查询的产物。7.2 Model Context Protocol (MCP) 集成通过 MCP 标准集成外部工具服务器连接到远程工具提供方GitHub、Slack、Jira 等运行时动态发现工具带 API 密钥轮换的安全认证8. 检查点与恢复容错执行会话状态持久化支持从崩溃中恢复// 在关键点创建检查点let checkpoint_id checkpoint_manager.create(task_iri,format!(“cycle:{}”, cycle_id),state_json,metadata_json,context_json,artifacts)?;// 崩溃后恢复let restored_state checkpoint_manager.restore(task_iri)?;使用场景长时间运行的任务恢复数小时/数天智能体重启而不丢失上下文事后分析和回放调试9. 工作任务队列后台作业处理用于异步操作的持久化队列技术yaqueYet Another Queue bincode 序列化特性磁盘持久化、确认确认、窥视操作使用场景批量知识导入数千文档定时技能进化夜间优化定期清理过期缓存条目异步嵌入生成10. 模板引擎与 JSON Schema 验证10.1 基于 Markdown 的提示模板角色: {{agent_role}}任务: {{task_description}}上下文{{l3_projection}}可用技能{{skill_list}}5W2H 约束What: {{what}}Why: {{why}}When: {{deadline}}How Much: {{token_budget}}指令…特性递归目录扫描变量插值{placeholder} 语法模板继承通过 include版本控制于 Git 中10.2 一次往返双重收获高级验证模式在单次 LLM 调用中同时提取元数据并转换为 JSON-LD// LLM 输出{“thought”: “正在规划数据库模式…”,“content”: “CREATE TABLE users…”,“summary”: “数据库模式设计完成”,“metadata”: {“tables”: [“users”, “orders”],“relationships”: [“one-to-many”]}}// 系统处理// 1. 按 JSON Schema 验证 metadata// 2. 将验证后的 metadata 转换为 JSON-LD 节点// 3. 以 id 写入 L2 黑板// 结果单次 LLM 调用 → 验证后的结构化数据 自然语言这使信息提取效率比传统单一用途提示提高一倍。架构11.1 系统组件API 层基础设施TemplateEngine提示模板LLMClientOpenAI 兼容ProactiveEngine异常检测JSON-LD Framing上下文投影Skill Graph15 个模块Worker TaskQueueyaque bincode工具系统ToolExecutor25 内置工具SkillRegistry技能目录MCP Client外部工具知识图谱工具代码 AST、RDF、桥接记忆系统L0: redb HyperspaceEngine持久 KV 向量L1: Session每智能体对话L2: Oxigraph共享黑板 RDFL3: SPARQL CONSTRUCT投影引擎MemoryManager跨层协调核心协调SupervisorAgentPDCA 编排AgentRunnerReAct 循环BizAgent隔离执行EventBus异步分发Checkpoint状态持久化SyscallGate权限控制客户端应用Python 编排器TypeScript 前端Go 服务gRPC 服务器tonic [::1]:50051HTTP Edge 守护进程axum :8080