スキル一覧に戻る
majiayu000

sage-architecture

by majiayu000

3🍴 1📅 2026年1月24日
GitHubで見るManusで実行

SKILL.md


name: sage-architecture description: Sage 项目整体架构设计指南,基于 Claude Code、Crush 最佳实践的融合方案 when_to_use: 当涉及 Sage 项目架构设计、模块规划、重构决策时使用 allowed_tools:

  • Read
  • Grep
  • Glob
  • Edit
  • Write
  • Bash user_invocable: true priority: 100

Sage 项目架构指南

核心设计原则

1. 模块边界原则

每个模块 < 200 行,超过则拆分为子模块。

正确 ✓
src/tools/
├── mod.rs           # 公开接口 (~50行)
├── registry.rs      # 注册表 (~150行)
├── executor.rs      # 执行器 (~180行)
└── permission/      # 子模块
    ├── mod.rs
    ├── rules.rs
    └── handlers.rs

错误 ✗
src/tools/
├── mod.rs           # 800行的巨型文件

2. 层级职责分离

┌─────────────────────────────────────────────────────────────┐
│                      sage-cli (用户界面)                      │
├─────────────────────────────────────────────────────────────┤
│                      sage-sdk (高级 API)                      │
├─────────────────────────────────────────────────────────────┤
│                     sage-core (核心引擎)                       │
│  ┌─────────┬─────────┬─────────┬─────────┬─────────┐       │
│  │  agent  │   llm   │  tools  │ skills  │ context │       │
│  ├─────────┼─────────┼─────────┼─────────┼─────────┤       │
│  │recovery │learning │checkpoint│  mcp   │ storage │       │
│  └─────────┴─────────┴─────────┴─────────┴─────────┘       │
├─────────────────────────────────────────────────────────────┤
│                    sage-tools (工具实现)                      │
└─────────────────────────────────────────────────────────────┘

3. Sage 独有优势(必须保持)

模块功能竞品对比
recovery/熔断器、限流器、supervisorOpenClaude/Crush 无
learning/模式学习、用户偏好OpenClaude/Crush 无
checkpoints/状态快照、回滚恢复OpenClaude/Crush 无
storage/多后端(SQLite/Postgres)Crush 仅 SQLite
sandbox/安全沙箱执行OpenClaude/Crush 无

绝不删除这些模块,它们是 Sage 的核心竞争力。

4. 学习 Crush 的简洁模式

Prompt 模板化(而非硬编码):

prompts/
├── templates/
│   ├── coder.md.tpl      # 主 system prompt
│   ├── task.md.tpl       # 任务 prompt
│   └── initialize.md.tpl # 初始化 prompt
├── renderer.rs           # 模板渲染器
└── variables.rs          # 变量定义

工具描述文件(TOOL.md):

tools/builtin/
├── bash/
│   ├── mod.rs      # 实现
│   └── TOOL.md     # 描述(注入 system prompt)
├── edit/
│   ├── mod.rs
│   └── TOOL.md

模块重组方案

需要合并的模块

当前合并到原因
settings/config/功能重叠
session/context/会话是上下文的一部分
sandbox/tools/sandbox/沙箱服务于工具执行
modes/agent/modes/模式是 agent 的状态
cost/telemetry/cost/成本是遥测的一部分

需要拆分的模块

当前拆分为原因
llm/ 过大llm/{client,providers,streaming,fallback}/文件超 200 行
agent/unified/agent/executor/{loop,step,completion}/职责过多

命名规范

类型命名(RFC 430)

// 正确 ✓ - 缩写词当作普通单词
LlmClient, SseDecoder, McpServer, HttpRequest

// 错误 ✗ - 全大写缩写
LLMClient, SSEDecoder, MCPServer, HTTPRequest

模块命名

// 正确 ✓ - 小写下划线
pub mod rate_limiter;
pub mod circuit_breaker;

// 错误 ✗ - 驼峰或连字符
pub mod rateLimiter;
pub mod circuit-breaker;

依赖关系规则

sage-cli → sage-sdk → sage-core → sage-tools
                ↓
           外部 crates (tokio, serde, etc.)

禁止

  • sage-core 依赖 sage-cli
  • sage-tools 依赖 sage-sdk
  • 循环依赖

新模块检查清单

创建新模块前确认:

  • 是否真的需要新模块?能否放入现有模块?
  • 模块职责单一吗?
  • 预计代码量 < 200 行吗?
  • 与现有模块的边界清晰吗?
  • 命名符合 RFC 430 吗?
  • 有对应的测试模块吗?

文件结构模板

//! 模块简短描述
//!
//! 详细说明(可选)

mod submodule1;
mod submodule2;

pub use submodule1::PublicType;
pub use submodule2::public_function;

// 私有实现(如果有)

スコア

総合スコア

60/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です