AI编码活动日志服务

一个自动记录AI编码助手活动(如命令执行、代码生成等)的MCP服务器,支持日志保存为JSON格式以便后续搜索和分析。

  • by annenpolka
  • TypeScript
  • 本地部署
  • 25 星标
  • 更新于
在 GitHub 查看 annenpolka/roo-logger

使用说明

Roo活动记录器

日语版在这里 | 中文版

太长,读不下去了

  • 这是怎么一回事? --这是一个 MCP服务器 自动记录AI编码助手的活动,如命令执行和代码生成(支持Roo code、Cline、Claude code等)。
  • 它有什么作用? --它将活动历史记录保存为JSON文件,您可以稍后搜索和分析。
  • 我该如何使用它? --将其添加到您的Claude Code、Cline或Roo Code设置中,以启用自动活动日志记录。

概述

Roo Activity Logger是一个MCP(模型上下文协议)服务器,可以自动记录AI编码助手的开发活动,包括命令执行、代码生成、文件操作等。它支持Claude Code、Cline、Roo Code和其他兼容MCP的AI助手。 所有日志均以JSON格式保存,便于随时搜索、分析和恢复上下文。

活动日志记录的工作原理

flowchart TD
    A[Roo's Action] --> B[Select Activity Type]
    B --> C[Log via log_activity]
    C --> D[Provide Log Info<br>- Summary<br>- Details<br>- Intention<br>- Context]
    D --> E[Specify Save Directory]
    E --> F[Save as JSON file]

恢复任务时如何搜索日志和恢复上下文

flowchart TD
    G[Resume Task] --> H[Search with search_logs]
    H --> I[Set Search Filters<br>- Type<br>- Date Range<br>- Text]
    I --> J[Retrieve Related Activities<br>- Parent/Child<br>- Sequence<br>- Related IDs]
    J --> K[Restore Context & Resume<br>- Review Past Intentions<br>- Understand Progress]

日志条目示例

以下是一个示例 file_operation 日志条目保存为JSON格式:

{
  "id": "75add15d-8d5b-4e60-b327-fde785050c86",
  "timestamp": "2025-04-10T01:58:02.905Z",
  "type": "file_operation",
  "level": "info",
  "summary": "Inserted mermaid diagram into README.md",
  "details": {
    "file": "README.md",
    "operation": "insert_content",
    "insertedLines": "mermaid code block",
    "position": "after overview section"
  },
  "intention": "To visually explain the flow of saving and retrieving activities",
  "context": "Improving documentation for Roo Activity Logger",
  "parentId": "98280366-1de1-48e0-9914-b3a3409599b4"
}

每个日志包含:

  • 日志级别(debug, info, warn, error)
  • 总结
  • 详细信息(任何结构化数据)
  • 意图/目的
  • 上下文信息
  • 父活动ID(用于层次结构)
  • 序列号(用于订购)
  • 相关活动ID(用于分组)

日志包括:

  • 已保存 基于日期的JSON文件
  • 可搜索 按类型、级别、日期、文本等。
  • 可定制的 --您可以为每个活动指定不同的保存目录

特性

  • 记录各种活动类型:

    • 命令执行(command_execution)
    • 代码生成(code_generation)
    • 文件操作(file_operation)
    • 错误(error_encountered)
    • 决定(decision_made)
    • 对话(conversation)
  • 每个活动日志包括:

    • 唯一ID
    • 时间戳
    • 活动类型
    • 摘要、细节、意图、上下文和可选元数据

用法(推荐:通过 npx)

您可以使用以下命令直接运行Roo Activity Logger,而无需克隆存储库 npx.

将此添加到Cline、Roo Code或Claude Code配置中:

{
  "mcpServers": {
    "roo-activity-logger": {
      "command": "npx",
      "args": ["-y", "github:annenpolka/roo-logger"],
      "env": {},
      "disabled": false
    }
  }
}

然后,在规则文件(适用于Cline/Roo代码)或CLAUDE.md(适用于CLAUDE代码)中添加提示以确保日志记录,例如:

## Important

Always log activities using roo-activity-logger according to the logging rules.

## Preparation

Check the current context with `git status`.

Then, use roo-activity-logger's `search_logs` to review existing logs and identify current tasks.

Be sure to perform the logging steps.

## Logging

- Always use roo-activity-logger for all logs
- Include stack traces and execution context
- Record intention and context

开发者:本地设置

要在本地开发或自定义,请克隆存储库并构建:

# Clone the repo
git clone https://github.com/annenpolka/roo-logger.git
cd roo-logger

# Install dependencies
npm install

# Build
npm run build

使用本地版本的示例配置:

{
  "mcpServers": {
    "roo-activity-logger": {
      "command": "node",
      "args": ["/path/to/your/local/roo-logger/dist/index.js"], // adjust path accordingly
      "env": {},
      "disabled": false
    }
  }
}

备注

  • 如果指定的目录不存在,将自动创建该目录。

MCP工具

log_activity --记录活动

记录活动的工具。

基本示例

{
  "type": "command_execution",
  "summary": "Run npm command",
  "intention": "Update project dependencies",
  "context": "Preparing for new feature development",
  "logsDir": "/absolute/path/to/logs/activity"
}

参数

名称 必填 类型 描述
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 无 string[] 相关活动ID

详细示例

{
  "type": "file_operation",
  "summary": "Update README file",
  "intention": "Clarify documentation and improve usability",
  "context": "Improvements based on user feedback",
  "level": "info",
  "details": {
    "file": "README.md",
    "operation": "update",
    "changedLines": 15
  },
  "logsDir": "/absolute/path/to/logs/activity",
  "sequence": 3,
  "relatedIds": ["11223344-5566-7788-99aa-bbccddeeff00"]
}

get_log_files --列出已保存的日志文件

递归列出已保存的日志文件。您可以指定最大搜索深度。

基本示例

{
  "logsDir": "/absolute/path/to/logs"
}

参数

名称 必填 类型 描述
logsDir Yes string 要搜索的目录(仅绝对路径)
limit No number 要检索的最大文件数(默认值:10)
offset No number 要跳过的文件数(默认值:0)
logFilePrefix 无 string 日志文件前缀(默认值: "roo-activity-")
logFileExtension 无 string 日志文件扩展名(默认: ".json")
maxDepth 否 编号 最大目录深度(默认值:3)

search_logs --搜索已保存的日志

使用各种过滤器搜索已保存的日志。

基本示例

{
  "logsDir": "/absolute/path/to/logs"
}
{
  "logsDir": "/absolute/path/to/logs",
  "type": "command_execution"
}

参数

名称 必填 类型 描述
logsDir Yes string 日志目录(仅绝对路径)
logFilePrefix 无 string 日志文件前缀(默认值: "roo-activity-")
logFileExtension 无 string 日志文件扩展名(默认: ".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 No number 要检索的最大日志数(默认值:50)
offset No number 要跳过的日志数(默认值:0)
parentId 否 字符串 按父活动ID筛选
sequenceFrom 否 编号 序列号下限
sequenceTo 否 编号 序列号上限
relatedId 否 字符串 按相关活动ID筛选
relatedIds 否 string[] 按任何相关活动ID筛选

许可证

麻省理工学院