HKUDS开源项目(四):OpenSpace、AgentSpace

HKUDS系列文章:

OpenSpace

官网GitHub,7.4K Star,892 Fork。

一个AI Agent自进化引擎,其核心使命是让AI Agent从"单次执行"变为"持续学习"。解决当前Agent的三大痛点:Token浪费、重复失败、技能退化。一个Agent学习,所有Agent升级。

三大核心痛点

  • Token浪费:每次任务从头推理,无法复用成功模式
  • 重复失败:无法分享解决方案,重复犯错
  • 技能退化:工具API变化导致技能失效,无自修复机制

三大核心能力

能力 描述 效果
Self-Evolution 技能自动修复、改进、学习 失败→改进,成功→优化
Collective Intelligence 一个Agent学习→所有Agent升级 网络效应
Token Efficiency 复用成功方案,减少推理开销 46%Token节省,4.2×收入提升

原理

系统架构
#mermaid-svg-puIEMG5uVxTL0Wez{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-puIEMG5uVxTL0Wez .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-puIEMG5uVxTL0Wez .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-puIEMG5uVxTL0Wez .error-icon{fill:#552222;}#mermaid-svg-puIEMG5uVxTL0Wez .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-puIEMG5uVxTL0Wez .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-puIEMG5uVxTL0Wez .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-puIEMG5uVxTL0Wez .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-puIEMG5uVxTL0Wez .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-puIEMG5uVxTL0Wez .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-puIEMG5uVxTL0Wez .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-puIEMG5uVxTL0Wez .marker{fill:#333333;stroke:#333333;}#mermaid-svg-puIEMG5uVxTL0Wez .marker.cross{stroke:#333333;}#mermaid-svg-puIEMG5uVxTL0Wez svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-puIEMG5uVxTL0Wez p{margin:0;}#mermaid-svg-puIEMG5uVxTL0Wez .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-puIEMG5uVxTL0Wez .cluster-label text{fill:#333;}#mermaid-svg-puIEMG5uVxTL0Wez .cluster-label span{color:#333;}#mermaid-svg-puIEMG5uVxTL0Wez .cluster-label span p{background-color:transparent;}#mermaid-svg-puIEMG5uVxTL0Wez .label text,#mermaid-svg-puIEMG5uVxTL0Wez span{fill:#333;color:#333;}#mermaid-svg-puIEMG5uVxTL0Wez .node rect,#mermaid-svg-puIEMG5uVxTL0Wez .node circle,#mermaid-svg-puIEMG5uVxTL0Wez .node ellipse,#mermaid-svg-puIEMG5uVxTL0Wez .node polygon,#mermaid-svg-puIEMG5uVxTL0Wez .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-puIEMG5uVxTL0Wez .rough-node .label text,#mermaid-svg-puIEMG5uVxTL0Wez .node .label text,#mermaid-svg-puIEMG5uVxTL0Wez .image-shape .label,#mermaid-svg-puIEMG5uVxTL0Wez .icon-shape .label{text-anchor:middle;}#mermaid-svg-puIEMG5uVxTL0Wez .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-puIEMG5uVxTL0Wez .rough-node .label,#mermaid-svg-puIEMG5uVxTL0Wez .node .label,#mermaid-svg-puIEMG5uVxTL0Wez .image-shape .label,#mermaid-svg-puIEMG5uVxTL0Wez .icon-shape .label{text-align:center;}#mermaid-svg-puIEMG5uVxTL0Wez .node.clickable{cursor:pointer;}#mermaid-svg-puIEMG5uVxTL0Wez .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-puIEMG5uVxTL0Wez .arrowheadPath{fill:#333333;}#mermaid-svg-puIEMG5uVxTL0Wez .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-puIEMG5uVxTL0Wez .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-puIEMG5uVxTL0Wez .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-puIEMG5uVxTL0Wez .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-puIEMG5uVxTL0Wez .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-puIEMG5uVxTL0Wez .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-puIEMG5uVxTL0Wez .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-puIEMG5uVxTL0Wez .cluster text{fill:#333;}#mermaid-svg-puIEMG5uVxTL0Wez .cluster span{color:#333;}#mermaid-svg-puIEMG5uVxTL0Wez div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-puIEMG5uVxTL0Wez .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-puIEMG5uVxTL0Wez rect.text{fill:none;stroke-width:0;}#mermaid-svg-puIEMG5uVxTL0Wez .icon-shape,#mermaid-svg-puIEMG5uVxTL0Wez .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-puIEMG5uVxTL0Wez .icon-shape p,#mermaid-svg-puIEMG5uVxTL0Wez .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-puIEMG5uVxTL0Wez .icon-shape .label rect,#mermaid-svg-puIEMG5uVxTL0Wez .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-puIEMG5uVxTL0Wez .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-puIEMG5uVxTL0Wez .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-puIEMG5uVxTL0Wez :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-puIEMG5uVxTL0Wez .title>*{fill:none!important;stroke:none!important;font-size:18px!important;font-weight:bold!important;}#mermaid-svg-puIEMG5uVxTL0Wez .title span{fill:none!important;stroke:none!important;font-size:18px!important;font-weight:bold!important;}#mermaid-svg-puIEMG5uVxTL0Wez .container>*{fill:#f8f9fa!important;stroke:#495057!important;stroke-width:2px!important;rx:8px!important;}#mermaid-svg-puIEMG5uVxTL0Wez .container span{fill:#f8f9fa!important;stroke:#495057!important;stroke-width:2px!important;rx:8px!important;}#mermaid-svg-puIEMG5uVxTL0Wez .node>*{fill:#ffffff!important;stroke:#6c757d!important;stroke-width:1px!important;rx:4px!important;}#mermaid-svg-puIEMG5uVxTL0Wez .node span{fill:#ffffff!important;stroke:#6c757d!important;stroke-width:1px!important;rx:4px!important;}#mermaid-svg-puIEMG5uVxTL0Wez .inner>*{fill:#e9ecef!important;stroke:#adb5bd!important;stroke-width:1px!important;rx:4px!important;}#mermaid-svg-puIEMG5uVxTL0Wez .inner span{fill:#e9ecef!important;stroke:#adb5bd!important;stroke-width:1px!important;rx:4px!important;} 外部系统
Tools
APIs
Data Sources
Model Services
MCP Servers
Grounding Client
Backends: Shell │ GUI │ MCP │ Web │ System
Quality: Tool Tracking │ Self-Evolution │ Anomaly Detection
Security: Policies │ Sandboxing │ E2B
Skill Engine

(Registry

Analyzer

Evolver

Store)
Grounding Agent

(Execution)
Cloud Community

(Registry)
OpenSpace (tool_layer.py)
Configuration
LLM Client
Recording
Execution Count
MCP Server

(4 Tools)
CLI / API

(Interactive Mode)
Dashboard

(React UI)

层级解读

层级 模块 职责
接入层 MCP Server、CLI、Dashboard 提供多渠道访问
编排层 Open Space(tool_layer.py) 统一配置、LLM客户端、执行管理
智能层 Skill Engine、Grounding Agent 技能发现、选择、进化、执行
后端层 Grounding Client 多后端统一接口
外部层 Tools、APIs、MCP Servers 外部能力接入

Skill Engine的技能生命周期管理
#mermaid-svg-hPCtFRAafIwXtBXL{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-hPCtFRAafIwXtBXL .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-hPCtFRAafIwXtBXL .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-hPCtFRAafIwXtBXL .error-icon{fill:#552222;}#mermaid-svg-hPCtFRAafIwXtBXL .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hPCtFRAafIwXtBXL .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-hPCtFRAafIwXtBXL .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hPCtFRAafIwXtBXL .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hPCtFRAafIwXtBXL .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-hPCtFRAafIwXtBXL .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hPCtFRAafIwXtBXL .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hPCtFRAafIwXtBXL .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hPCtFRAafIwXtBXL .marker.cross{stroke:#333333;}#mermaid-svg-hPCtFRAafIwXtBXL svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hPCtFRAafIwXtBXL p{margin:0;}#mermaid-svg-hPCtFRAafIwXtBXL .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-hPCtFRAafIwXtBXL .cluster-label text{fill:#333;}#mermaid-svg-hPCtFRAafIwXtBXL .cluster-label span{color:#333;}#mermaid-svg-hPCtFRAafIwXtBXL .cluster-label span p{background-color:transparent;}#mermaid-svg-hPCtFRAafIwXtBXL .label text,#mermaid-svg-hPCtFRAafIwXtBXL span{fill:#333;color:#333;}#mermaid-svg-hPCtFRAafIwXtBXL .node rect,#mermaid-svg-hPCtFRAafIwXtBXL .node circle,#mermaid-svg-hPCtFRAafIwXtBXL .node ellipse,#mermaid-svg-hPCtFRAafIwXtBXL .node polygon,#mermaid-svg-hPCtFRAafIwXtBXL .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hPCtFRAafIwXtBXL .rough-node .label text,#mermaid-svg-hPCtFRAafIwXtBXL .node .label text,#mermaid-svg-hPCtFRAafIwXtBXL .image-shape .label,#mermaid-svg-hPCtFRAafIwXtBXL .icon-shape .label{text-anchor:middle;}#mermaid-svg-hPCtFRAafIwXtBXL .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-hPCtFRAafIwXtBXL .rough-node .label,#mermaid-svg-hPCtFRAafIwXtBXL .node .label,#mermaid-svg-hPCtFRAafIwXtBXL .image-shape .label,#mermaid-svg-hPCtFRAafIwXtBXL .icon-shape .label{text-align:center;}#mermaid-svg-hPCtFRAafIwXtBXL .node.clickable{cursor:pointer;}#mermaid-svg-hPCtFRAafIwXtBXL .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-hPCtFRAafIwXtBXL .arrowheadPath{fill:#333333;}#mermaid-svg-hPCtFRAafIwXtBXL .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hPCtFRAafIwXtBXL .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hPCtFRAafIwXtBXL .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hPCtFRAafIwXtBXL .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-hPCtFRAafIwXtBXL .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hPCtFRAafIwXtBXL .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-hPCtFRAafIwXtBXL .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hPCtFRAafIwXtBXL .cluster text{fill:#333;}#mermaid-svg-hPCtFRAafIwXtBXL .cluster span{color:#333;}#mermaid-svg-hPCtFRAafIwXtBXL div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hPCtFRAafIwXtBXL .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-hPCtFRAafIwXtBXL rect.text{fill:none;stroke-width:0;}#mermaid-svg-hPCtFRAafIwXtBXL .icon-shape,#mermaid-svg-hPCtFRAafIwXtBXL .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hPCtFRAafIwXtBXL .icon-shape p,#mermaid-svg-hPCtFRAafIwXtBXL .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-hPCtFRAafIwXtBXL .icon-shape .label rect,#mermaid-svg-hPCtFRAafIwXtBXL .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hPCtFRAafIwXtBXL .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-hPCtFRAafIwXtBXL .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-hPCtFRAafIwXtBXL :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-hPCtFRAafIwXtBXL .subNode>*{fill:#f8f9fa!important;stroke:#6c757d!important;stroke-width:1px!important;color:#000!important;}#mermaid-svg-hPCtFRAafIwXtBXL .subNode span{fill:#f8f9fa!important;stroke:#6c757d!important;stroke-width:1px!important;color:#000!important;}#mermaid-svg-hPCtFRAafIwXtBXL .subNode tspan{fill:#000!important;}#mermaid-svg-hPCtFRAafIwXtBXL .storeNode>*{fill:#e3f2fd!important;stroke:#1976d2!important;stroke-width:2px!important;color:#000!important;}#mermaid-svg-hPCtFRAafIwXtBXL .storeNode span{fill:#e3f2fd!important;stroke:#1976d2!important;stroke-width:2px!important;color:#000!important;}#mermaid-svg-hPCtFRAafIwXtBXL .storeNode tspan{fill:#000!important;} DISCOVER

ScanDirs

ParseFM

GenID
MATCH

BM25+Emb

LLM Filter

Ranker
APPLY

Inject

Execute

Record
MONITOR

Track

Metrics

Quality
ANALYZE

PostExec

ToolDeg

MetricMon
EVOLVE

FIX

DERIVED

CAPTURED
STORE

SQLite

Version

Lineage

三种进化模式

模式 描述 触发条件 输出
FIX 修复破损技能 工具成功率下降、错误率上升 同技能新版本
DERIVED 创建增强版本 高应用率、中等有效率 新技能目录
CAPTURED 捕获新模式 成功执行无匹配技能 全新技能

三种触发源

  • Post-Execution Analysis,每次任务执行后→ExecutionAnalyzer分析→生成EvolutionSuggestion
  • Tool Degradation,ToolQualityManager检测工具成功率下降→批量进化依赖技能
  • Metric Monitor,定期扫描技能健康指标(应用率、完成率、回退率)→进化低效技能

技能选择流程(Hybrid Ranking)
#mermaid-svg-rW3YX3Kic0yDthB4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-rW3YX3Kic0yDthB4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-rW3YX3Kic0yDthB4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-rW3YX3Kic0yDthB4 .error-icon{fill:#552222;}#mermaid-svg-rW3YX3Kic0yDthB4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rW3YX3Kic0yDthB4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-rW3YX3Kic0yDthB4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-rW3YX3Kic0yDthB4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-rW3YX3Kic0yDthB4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-rW3YX3Kic0yDthB4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-rW3YX3Kic0yDthB4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-rW3YX3Kic0yDthB4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-rW3YX3Kic0yDthB4 .marker.cross{stroke:#333333;}#mermaid-svg-rW3YX3Kic0yDthB4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-rW3YX3Kic0yDthB4 p{margin:0;}#mermaid-svg-rW3YX3Kic0yDthB4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-rW3YX3Kic0yDthB4 .cluster-label text{fill:#333;}#mermaid-svg-rW3YX3Kic0yDthB4 .cluster-label span{color:#333;}#mermaid-svg-rW3YX3Kic0yDthB4 .cluster-label span p{background-color:transparent;}#mermaid-svg-rW3YX3Kic0yDthB4 .label text,#mermaid-svg-rW3YX3Kic0yDthB4 span{fill:#333;color:#333;}#mermaid-svg-rW3YX3Kic0yDthB4 .node rect,#mermaid-svg-rW3YX3Kic0yDthB4 .node circle,#mermaid-svg-rW3YX3Kic0yDthB4 .node ellipse,#mermaid-svg-rW3YX3Kic0yDthB4 .node polygon,#mermaid-svg-rW3YX3Kic0yDthB4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-rW3YX3Kic0yDthB4 .rough-node .label text,#mermaid-svg-rW3YX3Kic0yDthB4 .node .label text,#mermaid-svg-rW3YX3Kic0yDthB4 .image-shape .label,#mermaid-svg-rW3YX3Kic0yDthB4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-rW3YX3Kic0yDthB4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-rW3YX3Kic0yDthB4 .rough-node .label,#mermaid-svg-rW3YX3Kic0yDthB4 .node .label,#mermaid-svg-rW3YX3Kic0yDthB4 .image-shape .label,#mermaid-svg-rW3YX3Kic0yDthB4 .icon-shape .label{text-align:center;}#mermaid-svg-rW3YX3Kic0yDthB4 .node.clickable{cursor:pointer;}#mermaid-svg-rW3YX3Kic0yDthB4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-rW3YX3Kic0yDthB4 .arrowheadPath{fill:#333333;}#mermaid-svg-rW3YX3Kic0yDthB4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-rW3YX3Kic0yDthB4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-rW3YX3Kic0yDthB4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-rW3YX3Kic0yDthB4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-rW3YX3Kic0yDthB4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-rW3YX3Kic0yDthB4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-rW3YX3Kic0yDthB4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-rW3YX3Kic0yDthB4 .cluster text{fill:#333;}#mermaid-svg-rW3YX3Kic0yDthB4 .cluster span{color:#333;}#mermaid-svg-rW3YX3Kic0yDthB4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-rW3YX3Kic0yDthB4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-rW3YX3Kic0yDthB4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-rW3YX3Kic0yDthB4 .icon-shape,#mermaid-svg-rW3YX3Kic0yDthB4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-rW3YX3Kic0yDthB4 .icon-shape p,#mermaid-svg-rW3YX3Kic0yDthB4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-rW3YX3Kic0yDthB4 .icon-shape .label rect,#mermaid-svg-rW3YX3Kic0yDthB4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-rW3YX3Kic0yDthB4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-rW3YX3Kic0yDthB4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-rW3YX3Kic0yDthB4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-rW3YX3Kic0yDthB4 .nodeStyle>*{fill:#ffffff!important;stroke:#6c757d!important;stroke-width:1px!important;rx:4px!important;}#mermaid-svg-rW3YX3Kic0yDthB4 .nodeStyle span{fill:#ffffff!important;stroke:#6c757d!important;stroke-width:1px!important;rx:4px!important;} 用户任务
BM25 Prefilter

(Threshold)

关键词匹配,筛选候选集
Embedding Similarity

← 语义相似度排序
LLM Filter

(Selection)

最终选择(理解任务需求)
Context Injection

构建注入内容
Agent系统提示词

Grounding Agent执行流程
#mermaid-svg-bX3PQH6bCqxS0Q9j{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-bX3PQH6bCqxS0Q9j .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-bX3PQH6bCqxS0Q9j .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-bX3PQH6bCqxS0Q9j .error-icon{fill:#552222;}#mermaid-svg-bX3PQH6bCqxS0Q9j .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bX3PQH6bCqxS0Q9j .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-bX3PQH6bCqxS0Q9j .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bX3PQH6bCqxS0Q9j .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bX3PQH6bCqxS0Q9j .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-bX3PQH6bCqxS0Q9j .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bX3PQH6bCqxS0Q9j .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bX3PQH6bCqxS0Q9j .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bX3PQH6bCqxS0Q9j .marker.cross{stroke:#333333;}#mermaid-svg-bX3PQH6bCqxS0Q9j svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bX3PQH6bCqxS0Q9j p{margin:0;}#mermaid-svg-bX3PQH6bCqxS0Q9j .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bX3PQH6bCqxS0Q9j .cluster-label text{fill:#333;}#mermaid-svg-bX3PQH6bCqxS0Q9j .cluster-label span{color:#333;}#mermaid-svg-bX3PQH6bCqxS0Q9j .cluster-label span p{background-color:transparent;}#mermaid-svg-bX3PQH6bCqxS0Q9j .label text,#mermaid-svg-bX3PQH6bCqxS0Q9j span{fill:#333;color:#333;}#mermaid-svg-bX3PQH6bCqxS0Q9j .node rect,#mermaid-svg-bX3PQH6bCqxS0Q9j .node circle,#mermaid-svg-bX3PQH6bCqxS0Q9j .node ellipse,#mermaid-svg-bX3PQH6bCqxS0Q9j .node polygon,#mermaid-svg-bX3PQH6bCqxS0Q9j .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bX3PQH6bCqxS0Q9j .rough-node .label text,#mermaid-svg-bX3PQH6bCqxS0Q9j .node .label text,#mermaid-svg-bX3PQH6bCqxS0Q9j .image-shape .label,#mermaid-svg-bX3PQH6bCqxS0Q9j .icon-shape .label{text-anchor:middle;}#mermaid-svg-bX3PQH6bCqxS0Q9j .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-bX3PQH6bCqxS0Q9j .rough-node .label,#mermaid-svg-bX3PQH6bCqxS0Q9j .node .label,#mermaid-svg-bX3PQH6bCqxS0Q9j .image-shape .label,#mermaid-svg-bX3PQH6bCqxS0Q9j .icon-shape .label{text-align:center;}#mermaid-svg-bX3PQH6bCqxS0Q9j .node.clickable{cursor:pointer;}#mermaid-svg-bX3PQH6bCqxS0Q9j .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-bX3PQH6bCqxS0Q9j .arrowheadPath{fill:#333333;}#mermaid-svg-bX3PQH6bCqxS0Q9j .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bX3PQH6bCqxS0Q9j .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bX3PQH6bCqxS0Q9j .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bX3PQH6bCqxS0Q9j .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-bX3PQH6bCqxS0Q9j .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bX3PQH6bCqxS0Q9j .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-bX3PQH6bCqxS0Q9j .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bX3PQH6bCqxS0Q9j .cluster text{fill:#333;}#mermaid-svg-bX3PQH6bCqxS0Q9j .cluster span{color:#333;}#mermaid-svg-bX3PQH6bCqxS0Q9j div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bX3PQH6bCqxS0Q9j .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-bX3PQH6bCqxS0Q9j rect.text{fill:none;stroke-width:0;}#mermaid-svg-bX3PQH6bCqxS0Q9j .icon-shape,#mermaid-svg-bX3PQH6bCqxS0Q9j .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-bX3PQH6bCqxS0Q9j .icon-shape p,#mermaid-svg-bX3PQH6bCqxS0Q9j .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-bX3PQH6bCqxS0Q9j .icon-shape .label rect,#mermaid-svg-bX3PQH6bCqxS0Q9j .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-bX3PQH6bCqxS0Q9j .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-bX3PQH6bCqxS0Q9j .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-bX3PQH6bCqxS0Q9j :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-bX3PQH6bCqxS0Q9j .nodeStyle>*{fill:#ffffff!important;stroke:#333!important;stroke-width:1px!important;rx:4px!important;}#mermaid-svg-bX3PQH6bCqxS0Q9j .nodeStyle span{fill:#ffffff!important;stroke:#333!important;stroke-width:1px!important;rx:4px!important;}#mermaid-svg-bX3PQH6bCqxS0Q9j .loopBox>*{fill:#f8f9fa!important;stroke:#adb5bd!important;stroke-width:2px!important;rx:8px!important;}#mermaid-svg-bX3PQH6bCqxS0Q9j .loopBox span{fill:#f8f9fa!important;stroke:#adb5bd!important;stroke-width:2px!important;rx:8px!important;}#mermaid-svg-bX3PQH6bCqxS0Q9j .innerRow>*{fill:none!important;stroke:none!important;}#mermaid-svg-bX3PQH6bCqxS0Q9j .innerRow span{fill:none!important;stroke:none!important;} Iteration Loop
Loop until complete
LLM Call
Parse Response
Execute Tools
Observe Result
Max Iterations: 20

Visual Analysis: 截图分析

Tool Retrieval: 动态工具搜索
Instruction + Skill Context
System Prompt Construction

← 角色 + 技能 + 工具描述
Post-Execution Processing

← Recording保存 + Analyzer分析

设计模式

  • Strategy Pattern(技能选择策略)
py 复制代码
class SkillRanker:
	def rank(candidates, query, method="hybrid"):
		if method == "bm25":
			return bm25_rank(candidates, query)
		elif method == "embedding":
			return embedding_rank(candidates, query)
		elif method == "hybrid":
			# BM25预筛选 + Embedding排序 + LLM最终选择
			prefiltered = bm25_prefilter(candidates, query)
			scored = embedding_score(prefiltered, query)
			return llm_filter(scored[:10], query)
  • Observer Pattern(质量监控)
py 复制代码
class ToolQualityManager:
	def observe(tool_call, result):
		# 记录成功率、延迟、错误模式
		self._track(tool_call.tool_name, result.success)
		# 检测退化 → 触发进化
		if self._detect_degradation(tool_call.tool_name):
			self._trigger_evolution(tool_call.tool_name)
  • Pipeline Pattern(进化流程)
py 复制代码
class SkillEvolver:
	async def evolve(context):
		# 1. LLM生成进化方案(Agent Loop探索代码库)
		suggestion = await self._agent_loop(context)
		# 2. 应用Patch(Diff-based)
		result = await self._apply_patch(suggestion)
		# 3. 验证(安全检查)
		if not self._validate(result):
			result = await self._retry(suggestion)
		# 4. 存储版本
		self._store(result)

算法

关键算法详解

  • 技能ID持久化
py 复制代码
def _read_or_create_skill_id(name, skill_dir):
	"""技能ID持久化:首次生成,后续读取
	格式:
	- Imported: {name}__imp_{uuid8}
	- Evolved: {name}__v{gen}_{uuid8}
	"""
	id_file = skill_dir / ".skill_id"
	if id_file.exists():
		return id_file.read_text().strip()
	# 首次生成
	new_id = f"{name}__imp_{uuid.uuid4().hex[:8]}"
	id_file.write_text(new_id + "\n")
	return new_id
  • 上下文注入
py 复制代码
def build_context_injection(skills):
	"""构建技能注入内容
	格式:
	## Active Skills
	- {skill_name}: {description}
	{skill_content}
	"""
	sections = ["## Active Skills\n"]
	for skill in skills:
		sections.append(f"- {skill.name}: {skill.description}\n")
		sections.append(f"\n{skill.content}\n")
	return "\n".join(sections)

其他

配置层级:

  1. 默认配置(openspace/config/*.yaml
  2. 用户配置(--config-path
  3. 环境变量(OPENSPACE_*
  4. 运行时参数(API调用)

优先级:运行时 > 环境变量 > 用户配置 > 默认配置

配置项 描述 默认值
llm_model 主LLM模型 openrouter、anthropic、claude-sonnet-4.5
grounding_max_iterations 最大迭代轮次 20
evolution_max_concurrent 并行进化数 3
backend_scope 后端范围 shell、gui、mcp、web、system

MCP Server提供的工具集

工具 描述 参数
execute_task 执行任务(含技能匹配) query, model, skill_dirs
fix_skill 修复技能 skill_id, issue_description
upload_skill 上传技能到云端 skill_dir
download_skill 从云端下载技能 skill_id

三种启动模式

模式 启动方式 适用场景
stdio openspace-mcp 本地Agent集成
SSE openspace-mcp --transport sse 远程HTTP连接
streamable HTTP openspace-mcp --transport streamable-http 流式HTTP

适用场景分析

最佳适用场景

场景 描述 效果
专业任务执行 50+ GDPVal任务(文档、合规、工程) 4.2×收入提升
长期运行Agent 需要持续学习改进的系统 Token节省46%
多Agent协作 共享技能进化成果 网络效应
工具密集型任务 频繁调用外部API/工具 自动修复

不适用场景

  • 一次性简单任务:技能进化价值有限
  • 无工具调用的纯推理:无法积累执行经验
  • 高度定制化任务:技能复用率低

实战

以官网为例,有V1、V2之别

AgentSpace

官网,港大开源(GitHub,929 Star,126 Fork)人类与Agent的协助工作区:把数字员工身份、任务、调度、知识、权限、审批、运行环境和审计记录放进同一个组织系统。通俗讲,就是为人类和Agent搭建一间共享的数字办公室。

核心能力:

  • 共享:每个Agent都可拥有明确的角色、负责人、技能、知识和运行环境;团队成员可分配、借用或转移Agent,管理者则能查看它归谁负责、能访问什么、当前是否可用。这样,优秀的Agent就不再只是个人工具,而能在授权范围内成为团队共享资源
  • 协作:面对复杂任务,协调Agent先拆解工作,再交给不同的专业Agent。如研究Agent收集资料,财务Agent核算预算,写作Agent整理报告;涉及敏感文件或高风险操作时,再交由人类审批。任务、附件、运行结果和审批记录都会留在工作区,方便后续检查与复盘
  • 调度:核心组件AgentRouter负责连接Claude Code等不同运行环境,并统一处理它们的会话、输出和诊断信息。任务可选择更合适的执行工具,但Agent的身份、知识和权限不必每次重建
  • 权限治理:文档访问、运行环境、工具调用和外部授权可受到限制,部分敏感操作能够进入人工审批。项目还提供任务看板、知识库、搜索、预算与成本统计、远程执行节点等功能,并支持托管或自行部署

原理

架构图
#mermaid-svg-nLaKxnAX05byIEFN{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-nLaKxnAX05byIEFN .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-nLaKxnAX05byIEFN .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-nLaKxnAX05byIEFN .error-icon{fill:#552222;}#mermaid-svg-nLaKxnAX05byIEFN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-nLaKxnAX05byIEFN .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-nLaKxnAX05byIEFN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-nLaKxnAX05byIEFN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-nLaKxnAX05byIEFN .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-nLaKxnAX05byIEFN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-nLaKxnAX05byIEFN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-nLaKxnAX05byIEFN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-nLaKxnAX05byIEFN .marker.cross{stroke:#333333;}#mermaid-svg-nLaKxnAX05byIEFN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-nLaKxnAX05byIEFN p{margin:0;}#mermaid-svg-nLaKxnAX05byIEFN .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-nLaKxnAX05byIEFN .cluster-label text{fill:#333;}#mermaid-svg-nLaKxnAX05byIEFN .cluster-label span{color:#333;}#mermaid-svg-nLaKxnAX05byIEFN .cluster-label span p{background-color:transparent;}#mermaid-svg-nLaKxnAX05byIEFN .label text,#mermaid-svg-nLaKxnAX05byIEFN span{fill:#333;color:#333;}#mermaid-svg-nLaKxnAX05byIEFN .node rect,#mermaid-svg-nLaKxnAX05byIEFN .node circle,#mermaid-svg-nLaKxnAX05byIEFN .node ellipse,#mermaid-svg-nLaKxnAX05byIEFN .node polygon,#mermaid-svg-nLaKxnAX05byIEFN .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-nLaKxnAX05byIEFN .rough-node .label text,#mermaid-svg-nLaKxnAX05byIEFN .node .label text,#mermaid-svg-nLaKxnAX05byIEFN .image-shape .label,#mermaid-svg-nLaKxnAX05byIEFN .icon-shape .label{text-anchor:middle;}#mermaid-svg-nLaKxnAX05byIEFN .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-nLaKxnAX05byIEFN .rough-node .label,#mermaid-svg-nLaKxnAX05byIEFN .node .label,#mermaid-svg-nLaKxnAX05byIEFN .image-shape .label,#mermaid-svg-nLaKxnAX05byIEFN .icon-shape .label{text-align:center;}#mermaid-svg-nLaKxnAX05byIEFN .node.clickable{cursor:pointer;}#mermaid-svg-nLaKxnAX05byIEFN .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-nLaKxnAX05byIEFN .arrowheadPath{fill:#333333;}#mermaid-svg-nLaKxnAX05byIEFN .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-nLaKxnAX05byIEFN .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-nLaKxnAX05byIEFN .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nLaKxnAX05byIEFN .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-nLaKxnAX05byIEFN .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nLaKxnAX05byIEFN .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-nLaKxnAX05byIEFN .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-nLaKxnAX05byIEFN .cluster text{fill:#333;}#mermaid-svg-nLaKxnAX05byIEFN .cluster span{color:#333;}#mermaid-svg-nLaKxnAX05byIEFN div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-nLaKxnAX05byIEFN .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-nLaKxnAX05byIEFN rect.text{fill:none;stroke-width:0;}#mermaid-svg-nLaKxnAX05byIEFN .icon-shape,#mermaid-svg-nLaKxnAX05byIEFN .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nLaKxnAX05byIEFN .icon-shape p,#mermaid-svg-nLaKxnAX05byIEFN .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-nLaKxnAX05byIEFN .icon-shape .label rect,#mermaid-svg-nLaKxnAX05byIEFN .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nLaKxnAX05byIEFN .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-nLaKxnAX05byIEFN .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-nLaKxnAX05byIEFN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Human members
Next.js workspace
agent-space CLI
@agent-space/services
@agent-space/db / PostgreSQL
@agent-space/domain
tasks / approvals / notifications
agent-space-daemon
provider-runtime
AgentRouter
legacy provider runtime
Claude Code
Codex CLI
Antigravity CLI
OpenCode
OpenClaw
Hermes Agent
Gemini CLI
NanoBot
runtime-output / diagnostics / sessions
documents / knowledge / attachments / Google Workspace

实战

对比

同样都是HKUDS开源项目,都是**Space,有什么区别吗?

OpenSpace和AgentSpace是两个定位完全不同、解决不同层面问题的独立项目。HKUDS开源它们,是为应对AI Agent从个人能力到团队协作演进过程中的两个核心挑战。

对比维度 OpenSpace(自进化引擎) AgentSpace(协同工作平台)
核心定位 AI Agent的经验管理系统,专注于让单个Agent通过实践自我进化,越用越聪明 AI Agent的组织协作平台,专注于将多个Agent作为团队成员进行管理、分工与协作
解决的核心问题 失忆症与重复踩坑:Agent每次任务从零开始,不积累经验,浪费token且易重复犯错 协作与治理真空:现有Agent框架多是单人场景,缺乏多人协作、权限分配、审批流程和审计追溯的能力
核心工作方式 提炼技能:通过自进化引擎,自动从成功或失败的任务中捕获(CAPTURED)、修复(FIX)或衍生(DERIVED)出可复用的技能(Skill) 建立组织架构:围绕角色、所有者、审批流和跨团队转移机制设计,本质上是在给企业内的数字员工建立一套HR系统
主要目标用户 使用Claude Code、Cursor、OpenClaw等AI编程工具的开发者,希望降低token成本、提升AI效率 需要多人、多部门协同使用AI Agent的团队或企业,对权限管理、任务审批和审计有明确需求
项目状态与热度 已发布、热度极高。2026年3月开源,短时间内获得数千Star,有详细的文档、基准测试和集成指南 早期概念阶段,26年6月22日第一次提交,尚在开发初期

对应AI Agent应用成熟度不同阶段的需求:

  • OpenSpace:解决个体能力问题,在AI Agent被广泛使用的初期,首要任务是让单个Agent变得高效、省钱。OpenSpace帮助每个Agent积累经验,避免金鱼记忆
  • AgentSpace:解决群体协作问题,当Agent开始进入企业工作流,就需要明确的组织纪律。AgentSpace负责管理多个数字员工的权限、职责和任务流转,确保它们有序协作,不出乱子
相关推荐
zlinear数据采集卡1 小时前
D223的DDS信号发生器:10000点查找表与4通道16位DAC波形输出
arm开发·嵌入式硬件·fpga开发·开源
LearnYard2 小时前
家里和公司电脑文件如何自动同步?多端文件自动同步方案调研与架构对比(2026)
开源
fthux8 小时前
装闭 RenoPit 源码解析(07):装修闭坑知识库与AI Prompt构建
人工智能·ai·开源·github·open source·renopit
梦梦代码精11 小时前
连锁品牌数字化:从门店扩张到用户资产运营的技术底座
大数据·人工智能·低代码·docker·开源·代码规范
ltl12 小时前
模型许可证:OpenRAIL-M、LLaMA、Apache 2.0 的真实区别
开源
fthux12 小时前
装闭 RenoPit 源码解析(06):SSE如何实时推送AI装修分析进度
人工智能·ai·开源·github·open source·renopit
冬奇Lab13 小时前
开源项目第184期:MiroFish — 盛大出品的群体智能预测引擎,用数千 AI Agent 模拟社会演化来预测未来
人工智能·开源·资讯
小弥儿14 小时前
GitHub今日热榜 | 2026-08-11:图原生基础设施首日登顶
学习·开源·github
码流怪侠16 小时前
用 WiFi 信号数人头:howmanypeoplearearound 项目深度解析
后端·开源·github