┌─────────────────────────────────────────────────────────┐
│ CLI (CommandLine) │
│ agent | gateway | onboard | status │
└──────┬──────────────────┬───────────────────────────────┘
│ │
▼ ▼
┌──────────────┐ ┌───────────────────────────────────────┐
│ Agent Mode │ │ Gateway │
│ (single / │ │ │
│ REPL) │ │ ┌─────────┐ ┌──────┐ ┌─────────┐ │
└──────┬───────┘ │ │ Channel │ │ Cron │ │Heartbeat│ │
│ │ │ Manager │ │ │ │ │ │
│ │ └────┬────┘ └──┬───┘ └────┬────┘ │
│ │ │ │ │ │
▼ │ ▼ ▼ ▼ │
┌──────────────┐ │ ┌─────────────────────────────────┐ │
│ AgentScope │ │ │ Message Bus │ │
│ Runtime │◄─┤ │ Inbound ←── Channels │ │
│ │ │ │ Outbound ──► Channels │ │
└──────────────┘ │ └──────────────┬──────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ AgentScope.NET Runtime │ │
│ │ (ReAct loop + tool execution) │ │
│ └──────────────────────────────────┘ │
│ │
│ ┌──────────┐ ┌────────────────────┐ │
│ │ Memory │ │ Config │ │
│ │ (SQLite │ │ (JSON + env vars) │ │
│ │ + daily)│ │ │ │
│ └──────────┘ └────────────────────┘ │
└───────────────────────────────────────┘
| myclaw (Go) | MyClaw.NET (C#) | AgentScope.NET 基础 |
|---|---|---|
| agentsdk-go Runtime | AgentScope Runtime | EnhancedReActAgent |
| Message Bus | MessageBus | Msg + IMessage |
| Channel Manager | ChannelManager | 自定义实现 |
| Memory System | MemorySystem | SqliteMemory |
| Tool System | ToolSystem | ITool + ToolBase |
| Config | Configuration | Configuration |
| Cron Jobs | CronScheduler | 自定义实现 |
| Heartbeat | HeartbeatService | 自定义实现 |
命名空间: MyClaw.CLI
职责:
class Program
class AgentCommand
class GatewayCommand
class OnboardCommand
class StatusCommand
命名空间: MyClaw.Agent
职责:
class MyClawAgent : EnhancedReActAgent
{
// 使用 AgentScope.NET 的 EnhancedReActAgent 作为基类
// 添加 myclaw 特定功能
}
class ReplLoop
{
// 实现交互式循环
}
命名空间: MyClaw.Gateway
职责:
class GatewayService
{
ChannelManager ChannelManager { get; }
CronScheduler CronScheduler { get; }
HeartbeatService HeartbeatService { get; }
MessageBus MessageBus { get; }
Task StartAsync(CancellationToken ct);
Task StopAsync();
}
class MessageBus
{
Channel<IMessage> InboundChannel { get; }
Channel<IMessage> OutboundChannel { get; }
Task ProcessLoopAsync(CancellationToken ct);
}
命名空间: MyClaw.Channels
职责:
interface IChannel
{
string Name { get; }
bool IsEnabled { get; }
Task StartAsync(CancellationToken ct);
Task StopAsync();
Task SendAsync(IMessage message);
}
abstract class ChannelBase : IChannel
{
// 基础实现
}
class TelegramChannel : ChannelBase
class FeishuChannel : ChannelBase
class WeComChannel : ChannelBase
class WhatsAppChannel : ChannelBase
class WebUIChannel : ChannelBase
实现优先级:
命名空间: MyClaw.Memory
基于 AgentScope.NET:
SqliteMemory 作为基础class MyClawMemory : SqliteMemory
{
// 长期记忆 (MEMORY.md)
Task<string> LoadLongTermMemoryAsync();
Task SaveLongTermMemoryAsync(string content);
// 每日记忆
Task<List<DailyMemory>> GetDailyMemoriesAsync(DateTime date);
Task AddDailyMemoryAsync(DailyMemory memory);
}
class DailyMemory
{
DateTime Timestamp { get; set; }
string Content { get; set; }
string Category { get; set; }
}
命名空间: MyClaw.Skills
职责:
class SkillManager
{
string SkillsDirectory { get; }
List<ISkill> LoadedSkills { get; }
Task LoadSkillsAsync();
ISkill GetSkill(string name);
}
interface ISkill : ITool
{
string Name { get; }
string Description { get; }
List<string> Keywords { get; }
}
class SkillLoader
{
static ISkill LoadFromMarkdown(string path);
}
命名空间: MyClaw.Cron
职责:
class CronScheduler
{
IScheduler Scheduler { get; }
Task AddJobAsync(CronJob job);
Task RemoveJobAsync(string jobId);
Task<List<CronJob>> GetJobsAsync();
}
class CronJob
{
string Id { get; set; }
string Name { get; set; }
string CronExpression { get; set; }
string Action { get; set; }
Dictionary<string, object> Parameters { get; set; }
}
命名空间: MyClaw.Heartbeat
职责:
class HeartbeatService
{
TimeSpan Interval { get; }
List<HeartbeatTask> Tasks { get; }
Task StartAsync(CancellationToken ct);
Task StopAsync();
}
class HeartbeatTask
{
string Name { get; set; }
Func<Task> Action { get; set; }
}
命名空间: MyClaw.Configuration
职责:
class MyClawConfiguration
{
ProviderConfig Provider { get; set; }
AgentConfig Agent { get; set; }
ChannelsConfig Channels { get; set; }
SkillsConfig Skills { get; set; }
static MyClawConfiguration Load(string path);
static MyClawConfiguration LoadFromEnvironment();
}
class ProviderConfig
{
string Type { get; set; } // "anthropic" | "openai"
string ApiKey { get; set; }
string BaseUrl { get; set; }
}
Telegram/Feishu/etc ──► Channel ──► MessageBus.Inbound
│
▼
ProcessLoop
│
▼
AgentScope Runtime.Run()
│
▼
MessageBus.Outbound ──► Channel ──► Telegram/Feishu/etc
User Input ──► MyClawAgent.CallAsync() ──► AgentScope Runtime ──► AI Response
| 功能 | 库 | 说明 |
|---|---|---|
| 命令行 | System.CommandLine | 微软官方 CLI 框架 |
| 控制台美化 | Spectre.Console | 彩色输出、进度条等 |
| HTTP 客户端 | System.Net.Http | 内置 |
| WebSocket | System.Net.WebSockets | WebUI 通信 |
| JSON | System.Text.Json | 高性能 JSON |
| 数据库 | EF Core + SQLite | AgentScope.NET 已使用 |
| 调度 | Quartz.NET | Cron 任务调度 |
| Telegram | Telegram.Bot | 官方 SDK |
| 配置 | Microsoft.Extensions.Configuration | 标准配置框架 |
| DI | Microsoft.Extensions.DependencyInjection | 依赖注入 |
| 日志 | Microsoft.Extensions.Logging | 标准日志框架 |
| 方面 | 兼容性策略 |
|---|---|
| 配置文件 | 相同的 JSON 结构 |
| 环境变量 | 相同的命名 (MYCLAW_*) |
| 工作区结构 | 相同的目录布局 |
| SKILL.md 格式 | 完全兼容 |
| API 接口 | 如果实现 HTTP API,保持兼容 |
| AgentScope 组件 | 使用方式 |
|---|---|
| EnhancedReActAgent | 继承并扩展 |
| SqliteMemory | 直接使用或扩展 |
| ITool | 实现 Skill 接口 |
| Msg | 作为消息基础类型 |
| IModel | 支持 Anthropic/OpenAI |
| Hook System | 用于扩展 Agent 行为 |
| 风险 | 影响 | 缓解措施 |
|---|---|---|
| AgentScope.NET 功能不完整 | 高 | 必要时扩展框架 |
| Channel SDK 兼容性 | 中 | 选择成熟的 .NET SDK |
| 性能问题 | 中 | 性能测试和优化 |
| 安全漏洞 | 高 | 安全审计和最佳实践 |
| 跨平台兼容性 | 低 | .NET 天然支持 |
文档版本: 1.0
创建日期: 2026-02-19
作者: MyClaw.NET Team
还没有人回复