Initial commit: sage:TypeScript AI Agent 框架 monorepo(llm / memory / tui 三包)

This commit is contained in:
WpyQwq
2026-09-19 12:10:51 +08:00
commit eb29eb3fa1
47 changed files with 4429 additions and 0 deletions
+93
View File
@@ -0,0 +1,93 @@
# Sage — AI 编程助手
功能上高度对应 opencode,但 UI 风格完全不同(Tokyo Night 配色 + Ink/React TUI),并额外内置**长期记忆**系统。
## 启动
```bash
# 在终端里直接运行(需要真实 TTY)
node sage.mjs
# 或者
cd packages/tui && node --import=tsx/esm src/index.tsx
```
## 配置 `~/.sage/config.json`
```json
{
"defaultProvider": "anthropic",
"defaultModel": "claude-sonnet-4-6",
"theme": "tokyo-night",
"providers": {
"anthropic": { "apiKey": "sk-ant-..." },
"openai": { "apiKey": "sk-..." },
"google": { "apiKey": "..." },
"openrouter":{ "apiKey": "sk-or-..." }
},
"memory": {
"autoSummarize": true,
"maxMemories": 500,
"recallCount": 5
}
}
```
也可以通过环境变量:`ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `GOOGLE_API_KEY` / `OPENROUTER_API_KEY`
## 键位
| 按键 | 功能 |
|------|------|
| `^B` | 切换 session 面板焦点 |
| `↑↓` | 在 session 面板中导航 / 历史命令 |
| `Enter` | 发送消息 / 选中 session |
| `^C` | 中断当前生成 |
| `Esc` | 关闭弹窗 / 清除错误 |
## 斜线命令
| 命令 | 说明 |
|------|------|
| `/remember <文字>` | 手动保存一条长期记忆 |
| `/memories` | 浏览 & 删除所有记忆 |
| `/model <id> [provider]` | 切换模型,如 `/model gpt-4o openai` |
| `/new` | 新建 session |
| `/clear` | 清空显示 |
| `/abort` | 停止生成 |
| `/help` | 命令列表 |
## 长期记忆
- 每次发消息前,自动用 BM25 召回最相关的历史记忆注入上下文
- 底部黄色条 `◊ 3 memories recalled` 显示命中的记忆
- 每 20 条消息自动用 LLM 摘要本次会话并写入记忆库
- 数据存于 `~/.sage/sage.db`(SQLite + FTS5)
## 内置工具
| 工具 | 说明 |
|------|------|
| `bash` | 执行 shell 命令 |
| `read` | 读取文件 |
| `write` | 写入文件 |
| `edit` | 精确字符串替换 |
| `glob` | 文件模式匹配 |
| `grep` | 正则内容搜索(ripgrep) |
## 支持的 Provider
- **Anthropic** — Claude Opus 4.8 / Sonnet 4.6 / Haiku 4.5
- **OpenAI** — GPT-4o / GPT-4o-mini / o3
- **Google** — Gemini 2.5 Pro / Flash
- **OpenRouter** — 所有主流模型
## 项目结构
```
packages/
core/ — DB、session、工具系统
llm/ — 多 Provider + 流式调用循环
memory/ — 长期记忆 (FTS5 BM25 检索)
tui/ — Ink (React) TUI,Tokyo Night 风格
```