Roo活动记录器是一个MCP(模型上下文协议)服务器,自动记录AI编码助手的开发活动——包括命令执行、代码生成、文件操作等。它支持Claude Code、Cline、Roo-Code和其他兼容MCP的AI助手。 所有日志都保存为JSON格式,便于随时搜索、分析和恢复上下文。
flowchart TD
A[Roo的动作] --> B[选择活动类型]
B --> C[通过log_activity记录]
C --> D[提供日志信息<br>- 摘要<br>- 细节<br>- 目的<br>- 上下文]
D --> E[指定保存目录]
E --> F[保存为JSON文件]
flowchart TD
G[恢复任务] --> H[使用search_logs搜索]
H --> I[设置搜索过滤器<br>- 类型<br>- 日期范围<br>- 文本]
I --> J[检索相关活动<br>- 父/子<br>- 序列<br>- 相关ID]
J --> K[恢复上下文并继续<br>- 查看过去的意图<br>- 了解进度]
这是一个保存为JSON的file_operation日志条目的示例:
{
"id": "75add15d-8d5b-4e60-b327-fde785050c86",
"timestamp": "2025-04-10T01:58:02.905Z",
"type": "file_operation",
"level": "info",
"summary": "在README.md中插入了mermaid图表",
"details": {
"file": "README.md",
"operation": "insert_content",
"insertedLines": "mermaid代码块",
"position": "概述部分之后"
},
"intention": "为了视觉上解释保存和检索活动的流程",
"context": "改进Roo活动记录器的文档",
"parentId": "98280366-1de1-48e0-9914-b3a3409599b4"
}
每个日志包含:
debug、info、warn、error)日志:
记录各种活动类型:
command_execution)code_generation)file_operation)error_encountered)decision_made)conversation)每个活动日志包括:
npx)您可以直接运行Roo活动记录器而不克隆仓库,使用npx。
将其添加到您的Cline、Roo-Code或Claude Code配置中:
{
"mcpServers": {
"roo-activity-logger": {
"command": "npx",
"args": ["-y", "github:annenpolka/roo-logger"],
"env": {},
"disabled": false
}
}
}
然后,在规则文件(对于Cline/Roo-Code)或CLAUDE.md(对于Claude Code)中添加提示,确保记录,例如:
## 重要
始终根据记录规则使用roo-activity-logger记录活动。
## 准备
使用`git status`检查当前上下文。
然后,使用roo-activity-logger的`search_logs`查看现有日志并识别当前任务。
确保执行记录步骤。
## 记录
- 始终使用roo-activity-logger记录所有日志
- 包括堆栈跟踪和执行上下文
- 记录意图和上下文
要开发或自定义,请克隆仓库并构建:
# 克隆仓库
git clone https://github.com/annenpolka/roo-logger.git
cd roo-logger
# 安装依赖
npm install
# 构建
npm run build
使用本地构建的示例配置:
{
"mcpServers": {
"roo-activity-logger": {
"command": "node",
"args": ["/path/to/your/local/roo-logger/dist/index.js"], // 根据需要调整路径
"env": {},
"disabled": false
}
}
}
log_activity — 记录活动一个用于记录活动的工具。
{
"type": "command_execution",
"summary": "运行npm命令",
"intention": "更新项目依赖",
"context": "为新功能开发做准备",
"logsDir": "/绝对路径/到/日志/活动"
}
| 名称 | 必需 | 类型 | 描述 |
|---|---|---|---|
type | 是 | 字符串 | 活动类型(command_execution,code_generation,file_operation,error_encountered,decision_made,conversation) |
summary | 是 | 字符串 | 活动的简短摘要 |
intention | 是 | 字符串 | 目的或意图 |
context | 是 | 字符串 | 上下文信息 |
logsDir | 是 | 字符串 | 保存目录(仅限绝对路径) |
level | 否 | 字符串 | 日志级别(debug,info,warn,error)。默认值:info |
details | 否 | 对象 | 额外的详细信息(任何JSON) |
parentId | 否 | 字符串 | 父活动ID |
sequence | 否 | 数字 | 序号 |
relatedIds | 否 | 字符串数组 | 相关活动ID |
{
"type": "file_operation",
"summary": "更新README文件",
"intention": "澄清文档并提高易用性",
"context": "基于用户反馈的改进",
"level": "info",
"details": {
"file": "README.md",
"operation": "更新",
"更改行数": 15
},
"logsDir": "/绝对路径/到/日志/活动",
"sequence": 3,
"relatedIds": ["11223344-5566-7788-99aa-bbccddeeff00"]
}
get_log_files — 列出已保存的日志文件递归列出已保存的日志文件。您可以指定最大搜索深度。
{
"logsDir": "/绝对路径/到/日志"
}
| 名称 | 必需 | 类型 | 描述 |
|---|---|---|---|
logsDir | 是 | 字符串 | 要搜索的目录(仅限绝对路径) |
limit | 否 | 数字 | 最大检索文件数(默认值:10) |
offset | 否 | 数字 | 要跳过的文件数(默认值:0) |
logFilePrefix | 否 | 字符串 | 日志文件前缀(默认值:"roo-activity-") |
logFileExtension | 否 | 字符串 | 日志文件扩展名(默认值:".json") |
maxDepth | 否 | 数字 | 最大目录深度(默认值:3) |
search_logs — 搜索已保存的日志使用各种过滤器搜索已保存的日志。
{
"logsDir": "/绝对路径/到/日志"
}
{
"logsDir": "/绝对路径/到/日志",
"type": "command_execution"
}
| 名称 | 必需 | 类型 | 描述 |
|---|---|---|---|
logsDir | 是 | 字符串 | 日志目录(仅限绝对路径) |
logFilePrefix | 否 | 字符串 | 日志文件前缀(默认值:"roo-activity-") |
logFileExtension | 否 | 字符串 | 日志文件扩展名(默认值:".json") |
type | 否 | 字符串 | 按活动类型过滤(command_execution,code_generation,file_operation,error_encountered,decision_made,conversation) |
level | 否 | 字符串 | 按日志级别过滤(debug,info,warn,error) |
startDate | 否 | 字符串 | 开始日期(YYYY-MM-DD) |
endDate | 否 | 字符串 | 结束日期(YYYY-MM-DD) |
searchText | 否 | 字符串 | 在摘要或详细信息中搜索文本 |
limit | 否 | 数字 | 最大检索日志数(默认值:50) |
offset | 否 | 数字 | 要跳过的日志数(默认值:0) |
parentId | 否 | 字符串 | 按父活动ID过滤 |
sequenceFrom | 否 | 数字 | 序号下限 |
sequenceTo | 否 | 数字 | 序号上限 |
relatedId | 否 | 字符串 | 按相关活动ID过滤 |
relatedIds | 否 | 字符串数组 | 按任意相关活动ID过滤 |
MIT