使用说明
MCP知识
mcp_knowledge 是 编排外观 MakeMind知识库。它不拥有端口、网桥或业务逻辑,而是由另一个提供的运行时组成 mcp_* 封装,并通过一个干净的、基于工厂的API公开它们。
什么 mcp_knowledge 提供
KnowledgeSystem--单一入口点。拥有五个立面和活动巴士,可选择运行时间。KnowledgePorts--32个容量的扁平集装箱,命名为标准端口mcp_bundle。每个字段都是可选的。KnowledgeConfig--具有三个预设的分层不可变配置(defaults,development,production).- 5薄立面 —
FactFacade,SkillFacade,ProfileFacade,PhilosophyFacade,OpsFacade. KnowledgeEventBus+13个用于反应式可观测性的类型化事件类。
什么 mcp_knowledge 不提供
- ❌ 没有自己的端口抽象——标准端口存在于
mcp_bundle. - ❌ 没有网桥——跨域连接是主机在运行时构建时的责任。
- ❌ 没有原始访问器适配器——运行时公开自己的适配器。
- ❌ 无需解析捆绑包文件——捆绑包处理现在是一种
OpsRuntime工作流程问题。 - ❌ 没有内联管道实现——管道执行委托给
OpsRuntime通过system.ops.runPipeline.
快速启动
场景A——独立事实图
import 'package:mcp_knowledge/mcp_knowledge.dart';
void main() async {
final factGraph = FactGraphRuntime.inMemory();
await factGraph.initialize();
final system = KnowledgeSystem(
config: KnowledgeConfig.defaults,
ports: KnowledgePorts(facts: factGraph.facts),
factGraph: factGraph,
);
await system.facts.writeFacts([
FactRecord(
id: 'f1',
workspaceId: 'default',
type: 'observation',
entityId: 'user-1',
content: const {'value': 42},
createdAt: DateTime.now(),
),
]);
final results = await system.facts.queryFacts(
const FactQuery(workspaceId: 'default', entityId: 'user-1'),
);
print('Found ${results.length} facts');
await system.shutdown();
}
场景G——完整编排
final factGraph = FactGraphRuntime.inMemory();
await factGraph.initialize();
final skillRuntime = SkillRuntime(
registry: MemorySkillRegistry(),
ports: SkillPorts(
llm: StubLlmPort(),
mcp: const StubMcpPort(),
facts: factGraph.facts,
claims: factGraph.claims,
),
);
final profileRuntime = ProfileRuntime(
registry: ProfileRegistry(),
engines: EnginePorts.stub(),
);
final philosophyEngine = PhilosophyEngine(
ethosStore: const StubEthosStorePort(),
facts: factGraph.facts,
);
final opsRuntime = OpsRuntime.fromConsumedPorts(ConsumedOpsPorts(
facts: factGraph.facts,
claims: factGraph.claims,
skillRuntime: const StubSkillRuntimePort(),
appraisal: const StubAppraisalPort(),
decision: const StubDecisionPort(),
metrics: const StubMetricsPort(),
mcp: const StubMcpPort(),
llm: StubLlmPort(),
philosophy: philosophyEngine,
kvStorage: InMemoryKvStoragePort(),
));
final system = KnowledgeSystem(
config: KnowledgeConfig.defaults,
ports: KnowledgePorts(facts: factGraph.facts, claims: factGraph.claims),
factGraph: factGraph,
skillRuntime: skillRuntime,
profileRuntime: profileRuntime,
philosophyEngine: philosophyEngine,
opsRuntime: opsRuntime,
);
// Every facade is now isAvailable.
final result = await system.skill.execute('my_skill', {'input': 'hello'});
final apply = await system.profile.apply('my_profile', entityId: 'e1');
final workflows = await system.ops.listWorkflows();
await system.shutdown();
场景H——部分编排
final system = KnowledgeSystem(
config: KnowledgeConfig.defaults,
factGraph: factGraph,
profileRuntime: profileRuntime,
// skillRuntime / philosophyEngine / opsRuntime intentionally omitted
);
print(system.profile.isAvailable); // true
print(system.skill.isAvailable); // false
print(system.philosophy.isAvailable); // false
print(system.ops.isAvailable); // false
// Calling an unavailable facade method throws StateError eagerly:
try {
await system.skill.execute('any', const {});
} on StateError catch (e) {
print(e.message); // "SkillRuntime not configured — pass `skillRuntime: ...` …"
}
立面
FactFacade
事实图标准端口上的薄包装。从解析每个功能端口 system.factGraph 首先,然后 system.ports.
await system.facts.writeFacts([fact]);
final facts = await system.facts.queryFacts(FactQuery(workspaceId: 'ws'));
await system.facts.confirmCandidate('c1');
await system.facts.refreshSummary('e1', 'overview');
技能立面
薄包装 mcp_skill.SkillRuntime.构建一个 SkillContext 代表们 runtime.run() 因此,整个7步管道运行。
final result = await system.skill.execute(
'my_skill',
{'input': 'hello'},
entityId: 'user_123',
);
轮廓立面
薄包装 mcp_profile.ProfileRuntime.构建一个 RuntimeProfileContext 代表们 runtime.apply() 因此,完整的三支柱管道(评估→ 决定→ 表达式)运行。
final result = await system.profile.apply(
'my_profile',
entityId: 'user_123',
rawContent: 'optional content to format',
);
哲学外观
薄包装 mcp_philosophy.PhilosophyEngine (或裸露的 PhilosophyPort 从 KnowledgePorts).尊重每一个干预点的大门 config.philosophy.
final guidance = await system.philosophy.evaluate(context);
final tensions = await system.philosophy.detectTensions(multiLayerContext);
手术费用
薄包装 mcp_knowledge_ops.OpsRuntime的工作流/管道/runbook端口。取代传统 BundleFacade 从0.1.0开始。
final workflows = await system.ops.listWorkflows();
final handle = await system.ops.runWorkflow('skill_build', input);
final pipelineHandle = await system.ops.runPipeline('curation_pipeline', input);
final runbookExecution = await system.ops.runRunbook('my_runbook', input);
事件总线
实时事件通知:
system.eventBus.on<SkillExecutedEvent>().listen((event) {
print('Skill ${event.skillId} executed in ${event.duration}');
});
system.eventBus.on<ProfileAppliedEvent>().listen((event) {
print('Profile ${event.profileId} applied → ${event.decision}');
});
有13个活动课程可供选择: FactConfirmedEvent, CandidateCreatedEvent, SummaryRefreshedEvent, SkillExecutedEvent, ClaimsRecordedEvent, ProfileAppliedEvent, BundleLoadedEvent, PipelineCompletedEvent, SystemShutdownEvent, PhilosophyEvaluatedEvent, TensionDetectedEvent, ProhibitionViolatedEvent, EvolutionProposedEvent.
配置
// Three presets
final defaults = KnowledgeConfig.defaults;
final dev = KnowledgeConfig.development;
final prod = KnowledgeConfig.production;
// Custom configuration via copyWith
final config = KnowledgeConfig.defaults.copyWith(
workspaceId: 'tenant_42',
philosophy: PhilosophyConfig(
enabled: true,
enableTensionDetection: true,
minConfidenceThreshold: 0.7,
),
);
建筑
┌──────────────────────────────────────────────────────────────────────┐
│ KnowledgeSystem │
├──────────────────────────────────────────────────────────────────────┤
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌────────┐ │
│ │FactFacade │ │SkillFacade│ │ProfileFac.│ │Philosophy │ │OpsFac. │ │
│ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └───┬────┘ │
│ │ │ │ │ │ │
│ ┌─────┴─────────────┴─────────────┴──────────────┴───────────┴────┐ │
│ │ KnowledgeEventBus │ │
│ └────────────────────────────────────────────────────────────────┘ │
├──────────────────────────────────────────────────────────────────────┤
│ Optional runtimes (host constructs and injects) │
│ FactGraphRuntime │ SkillRuntime │ ProfileRuntime │
│ PhilosophyEngine │ OpsRuntime │
├──────────────────────────────────────────────────────────────────────┤
│ KnowledgePorts — flat 32-field standard-port container │
│ facts/claims/entities/candidates/evidence/patterns/summaries/... │
│ skillRuntime/skillRegistry/mcp/llm │
│ metrics/appraisal/decision/expression/profileSummaries │
│ philosophy/ethosStore │
│ workflow/pipeline/scheduler/audit/runbook │
│ kvStorage/approval/notification/event/metric │
└──────────────────────────────────────────────────────────────────────┘
支持
许可证
麻省理工学院——见 许可证.
