内容
<p align="center">
<img src="public/header.png" alt="莫里斯 — 克劳德的伙伴" width="540" />
</p>
# 莫里斯
一个 **本地、只读** 的网络浏览器,用于你的 `~/.claude` 文件夹 — 围绕你的个人工作流程(按 **技能**、**工单**、**分支** 分组会话),并提供预估成本和上下文窗口使用情况。
与 `ccusage`(CLI 成本)和 `awa:skill-stats` 相辅相成:在这里,你可以 **浏览和重读** 会话,而不仅仅是统计数据。
## 截图
> 以下数据是真实的;只有机密部分(会话内容、项目名称、工单、分支)被模糊处理。主题:_莫里斯之夜_。
**仪表盘** — 某个时间段的分析:关键绩效指标、活动图表、按模型 / 技能 / 项目计算的成本。

**会话** — 可搜索、可筛选的列表,包含预估成本、峰值上下文填充、错误和子代理。

**会话详情** — 可读的线程,带有上下文窗口填充曲线和成本 / token 面板。

| | |
| --- | --- |
| **工作流程** — 按技能 / 工单 / 分支计算的成本。<br> | **时间线** — 会话作为时间定位条,颜色根据模型区分。<br> |
**MCP 服务器** — 实时、自描述的工具文档(只读)。

## 入门指南
```bash
npm install
npm run dev # Vite :5173 (UI) + Express API :5174, with proxy
# → http://localhost:5173
```
生产环境构建:
```bash
npm run build
npm start # serves dist/ + API on http://localhost:5174
```
## 显示内容
- **仪表盘** — 某个时间段(7 / 30 / 90 天 / 所有)的分析概览:关键绩效指标(成本、token、会话、每会话成本、缓存命中率、错误率)、活动图表(成本和会话随时间变化、日×小时热图)、按模型 / 技能 / 项目计算的成本、最高成本会话、token 组成、上下文峰值分布和 MCP 工具使用情况。卡片链接到筛选后的会话。
- **会话** — 所有会话:项目、工单、技能、日期、消息、token、**预估成本**、**峰值上下文窗口填充**、错误徽章、子代理计数。全文搜索 + 过滤器(项目 / 工单 / 技能 / 模型 / MCP / 错误)。包括 **分支列** 和 **活动会话指示器** 在顶部栏中。
- **详情** — 可读的线程(突出显示错误、思想可折叠)、上下文窗口填充曲线(下降 = 压缩)、成本 / token 面板、**MCP** 工具调用、**子代理**(可点击的转录)、以及 "复制 `claude --resume <id>`" 按钮。第一/最后一页导航按钮(⟪ / ⟫)。
- **工作流程** — 会话按 **技能**(默认)、工单或分支分组,并带有每组的聚合指标。技能分组中的 token/成本归因于 **每个消息**(`attributionSkill`),因此在技能之间不会重复计算。
- **时间线** — Gantt 风格的视图,会话作为时间定位条,按 **工单**(默认)、分支或项目分组,颜色根据模型区分,并带有时间段过滤器。
- **内存** — 浏览和 **删除** 来自 `~/.claude/projects/*/memory/` 的条目。
- **计划** — 浏览、**重命名** 和 **删除** 来自 `~/.claude/plans/`(全局)和每个项目的 `.claude/plans/` 的计划模式 Markdown 文件,按日期 / 文件夹 / 工单分组。
- **钩子** — 浏览在 `settings.json`(全局 / 项目,以及它们的 `.local` 变体)中配置的钩子命令,按事件分组,并可按范围过滤。
- **MCP** — MCP 服务器的安装说明(见下文)和其工具的实时列表 — 参数、类型、描述 — 直接从服务器获取,因此永远不会过时。
- **结算** — 由 `awa:bilan` 技能生成的定期总结,列出每个时间段的已完成工作和关键决策。
## MCP 服务器
莫里斯还将其只读数据作为 **MCP 服务器** 公开,以便代理可以直接查询你的克劳德代码历史。它由同一个 Express 进程在 `/mcp` 上提供服务(可流式传输的 HTTP),仅限环回访问,并带有 DNS 重新绑定保护 — 启动莫里斯(`npm run dev` 或 `npm start`),然后注册它:
```bash
claude mcp add --transport http maurice http://localhost:5174/mcp
```
工具(均为只读):`search_sessions`、`list_sessions`、`get_session`、`list_memories`、`list_bilans`、`read_bilan`、`cost_summary`、`filters`。成本仍为预估值(见下文)。
## 技术说明
- 读取 `process.env.CLAUDE_DIR ?? ~/.claude`。**只读**,除了明确由用户驱动的文件操作:删除内存条目,以及删除/重命名计划。缓存保留在项目本地的 `.cache/` 中。
- 流式解析器;会话索引 **磁盘缓存**(`.cache/`),由(大小,修改时间)失效 — 第一次运行需要几百毫秒,随后的运行几乎是瞬间的。
- **成本是预估值**(`server/pricing.ts`):克劳德代码订阅报告 `costUSD: 0`,因此成本来自公共 API 定价,按模型计算。可以自由调整表格。
## 环境变量
| 变量 | 默认值 | 目的 |
| ---------------- | ----------- | --------------------------------------- |
| `CLAUDE_DIR` | `~/.claude` | 源目录(只读) |
| `PORT` | `5174` | API / 生产服务器端口 |
| `CONTEXT_WINDOW` | `200000` | 填充比率的窗口大小 |
| `PERF` | _(关闭)_ | 设置 `1` 以启用每个请求的 API 计时日志 |
## 许可证
[MIT](LICENSE) © Awalgawe.
莫里斯是一个非官方、独立的工具,与 Anthropic **无关**、**未获得 Anthropic 认可** 或 **未获得 Anthropic 赞助**。"克劳德" 和 "克劳德代码" 是 Anthropic 的商标。它只读取你的本地 `~/.claude` 数据,永远不会将数据传输到其他地方。