| # Claude Agent 开发需求文档 |
| |
| ## 📋 基础需求 |
| - 你需要使用Python进行编程操作, 我已经提供了一个VENV环境 位于 当前工作目录的venv文件夹下,请使用venv进行软件依赖的安装,不要使用sudo |
| - 你需要实现一个ClaudeCodeSDK的命令行交互工具 关于ClaudeCodeSDK的使用方法 可以见 https://pypi.org/project/claude-code-sdk/ 和 https://docs.claude.com/en/docs/claude-code/sdk/sdk-overview |
| - 需要实现一个通用的Agent 并且可以调用MCP进行外部工具的操作,用来满足用户的需求。 |
| 并且需要支持YOLO模式,不是用户问一句你回答一句的模式,需要有多步的自我思考能力 |
| 关于ClaudeCodeSDK的MCP相关的文档 可以参考https://docs.claude.com/en/docs/claude-code/sdk/sdk-mcp |
| - 需要实现一个单独的TelegramBot程序,这个程序不需要与CLI交互,这个Bot程序仅回复的用户和群组ID需要通过配置文件配置,并且能够一直监听群组的公共消息和用户的私聊,并保证上下文不串台。当群组用户at该bot时,该bot基于用户的问题以及该群组的历史上下文给出消息回复 |
| - 你需要自己通过YOLO的方式进行这个需求的编写,需要对需求进行拆解,并且自己调试运行该程序,并完成相应的单元测试以保证程序运行稳健。你还需要设计一些完整的黑盒测试流程,保证你编写程序的正确运行,并且输出符合预期。 当你完成这些所有的工作后,再来向我交差 |
| - 代码在设计时就应当位后续UT编写做考量,以方便后面进行UT的编写和测试 |
| - 在准出前,需要先更新所有READMD,确保文档不过时 |
| - 准出时记得更新准出报告 |
| |
| ## 🚀 增强功能需求 (开发过程中新增) |
| |
| ### CLI界面增强 |
| - 实现支持行编辑和历史翻查的增强CLI界面 |
| - 基于prompt_toolkit实现现代化命令行交互 |
| - 支持↑/↓键历史导航和Tab键命令补全 |
| - 支持Ctrl+C中断、Ctrl+D退出等快捷键 |
| |
| ### SSHOUT聊天室集成 |
| - 实现SSH连接到SSHOUT聊天服务器的功能 |
| - **配置驱动**: 使用TOML配置文件管理连接参数,支持多环境配置 |
| - **配置文件位置**: `configs/default.toml` (开发环境), `configs/production.toml` (生产环境) |
| - **动态配置**: 支持相对路径自动转换为绝对路径 |
| - **配置验证**: 启动时自动验证配置完整性和文件存在性 |
| |
| ### Telegram集成 |
| - 使用python-telegram-bot包进行telegram api调用 |
| - Telegram 消息的发送应该是流式的,这部分可以使用编辑消息的方式来更新最新的Token输出到Telegram |
| - 并且能够处理Telegram中收到的各种图片以及文档。 以及发送AI生成的图片和文档到Telegram中 |
| |
| ### @Claude自动响应系统 |
| - 实时监听SSHOUT聊天室消息 |
| - 自动检测@Claude提及 (支持多种格式: @Claude, @claude, Claude:, claude,等) |
| - 基于上下文历史消息生成智能回复 |
| - 自动清理Markdown格式以适配聊天环境 |
| |
| ### YOLO思考模式可视化 |
| - 在YOLO自主思考模式中显示详细的思考过程 |
| - 使用emoji指示器和进度条显示当前思考阶段 |
| - 支持8-10个详细思考步骤的可视化展示 |
| - 实时更新思考状态和进度 |
| |
| ## 🏗️ 技术架构要求 |
| |
| ### 项目结构设计 |
| ``` |
| claude-agent/ |
| ├── src/claude_agent/ # 源代码 |
| │ ├── core/ # 核心功能 |
| │ ├── cli/ # 命令行界面 |
| │ ├── sshout/ # SSHOUT集成 |
| │ ├── mcp/ # MCP工具支持 |
| │ └── utils/ # 工具函数 |
| ├── tests/ # 测试套件 |
| │ ├── unit/ # 单元测试 |
| │ ├── integration/ # 集成测试 |
| │ └── blackbox/ # 黑盒测试 |
| ├── docs/ # 项目文档 |
| ├── scripts/ # 启动脚本 |
| ├── configs/ # 配置文件 |
| └── assets/ # 资源文件 |
| ``` |
| |
| ### 核心依赖包 |
| - `anthropic`: Claude API客户端 |
| - `click`: 命令行界面框架 |
| - `rich`: 美观的终端输出 |
| - `prompt-toolkit`: 增强CLI输入处理 |
| - `paramiko`: SSH连接支持 |
| - `pytest`: 测试框架 |
| - `asyncio`: 异步编程支持 |
| - `tomli/tomli-w`: TOML配置文件处理 |
| |
| ## 🧪 测试要求 |
| |
| ### 单元测试覆盖 |
| - **SSHOUT集成功能**: 消息解析、@Claude检测、响应清理 |
| - **增强CLI界面**: 命令处理、用户输入、状态管理 |
| - **核心Agent**: 思考模式切换、对话历史管理 |
| - **MCP工具集成**: 工具加载、调用处理 |
| - **配置管理系统**: 配置加载、验证、路径解析 |
| |
| ### 集成测试场景 |
| - **配置文件测试**: TOML配置加载和验证完整性 |
| - **SSH密钥测试**: 密钥文件存在性和权限检查 |
| - **网络连通性测试**: SSHOUT服务器可达性验证 |
| - **实际连接测试**: 可选的真实SSH连接测试 (需设置 `TEST_REAL_SSHOUT=1`) |
| |
| ### SSH认证黑盒测试 |
| - **实际SSH认证**: 真实SSH连接和认证测试 (需设置 `TEST_SSHOUT_AUTH=1`) |
| - **密钥文件验证**: SSH密钥文件存在性和权限安全检查 |
| - **网络连通性**: 到SSHOUT服务器的TCP连接测试 |
| - **消息发送测试**: 通过SSH连接发送测试消息验证 |
| |
| ### 黑盒测试场景 |
| - 命令行参数解析和帮助显示 |
| - 文件结构完整性检查 |
| - 核心模块导入验证 |
| - 消息解析功能端到端测试 |
| - @Claude检测功能综合测试 |
| - 依赖包可用性验证 |
| - **配置驱动测试**: 验证配置文件正确加载和使用 |
| |
| ### 测试质量标准 |
| - 单元测试通过率: 100% (461/461 测试用例通过) |
| - 黑盒测试通过率: 100% |
| - 单元测试覆盖率: 80+% |
| - 异常处理: 全面测试错误场景和边界条件 |
| |
| ### 覆盖率配置 |
| - 使用`.coveragerc`配置文件排除测试文件 |
| - 覆盖率统计仅针对`src/claude_agent`目录下的源代码 |
| - 排除模式: `*/tests/*`, `*/test_*`, `tests/*` |
| |
| ### 测试执行流程 |
| ```bash |
| # 激活虚拟环境 |
| source venv/bin/activate |
| |
| # 1. 运行所有单元测试(明确指定目录避免pytest扫描问题) |
| python -m pytest tests/unit/storage/ tests/unit/telegram/ tests/unit/test_cli/ tests/unit/test_utils/ tests/unit/test_mcp/ -v |
| |
| # 2. 运行单元测试并检查覆盖率 |
| python -m pytest tests/unit/storage/ tests/unit/telegram/ tests/unit/test_cli/ tests/unit/test_utils/ tests/unit/test_mcp/ --cov=src/claude_agent --cov-report=term |
| |
| # 3. 运行单元测试并检查详细覆盖率(显示未覆盖行) |
| python -m pytest tests/unit/storage/ tests/unit/telegram/ tests/unit/test_cli/ tests/unit/test_utils/ tests/unit/test_mcp/ --cov=src/claude_agent --cov-report=term-missing |
| |
| # 4. 运行特定模块测试 |
| python -m pytest tests/unit/telegram/ -v --cov=src/claude_agent/telegram --cov-report=term |
| python -m pytest tests/unit/storage/ -v --cov=src/claude_agent/storage --cov-report=term |
| |
| # 5. 运行集成测试 |
| python -m pytest tests/integration/ -v |
| |
| # 6. 运行黑盒测试 |
| python -m pytest tests/blackbox/ -v |
| |
| # 7. 运行实际连接测试 (可选) |
| TEST_REAL_SSHOUT=1 python -m pytest tests/integration/test_sshout_real_connection.py::TestSSHOUTConnectionReal::test_real_ssh_connection -v |
| |
| # 8. 运行SSH认证黑盒测试 (可选,需要实际SSH认证) |
| TEST_SSHOUT_AUTH=1 python -m pytest tests/blackbox/test_ssh_authentication.py -v |
| |
| # 9. 检查配置文件完整性 |
| python -c "from src.claude_agent.utils.config import get_config_manager; print('✅ 配置加载成功')" |
| |
| # 注意:避免使用 'python -m pytest tests/unit/' 命令,该命令会因pytest目录扫描机制卡住 |
| # 始终使用明确的目录路径列表来避免扫描.pyc缓存文件导致的进程卡死问题 |
| ``` |
| |
| ## 🎯 功能特性要求 |
| |
| ### 双模式操作 |
| - **交互模式**: 传统的问答交互方式 |
| - **YOLO模式**: 自主多步思考和问题解决能力 |
| |
| ### 智能上下文处理 |
| - 收集和分析聊天历史消息 |
| - 基于上下文生成相关性回复 |
| - 支持消息格式清理和长度限制 |
| |
| ### 异步架构设计 |
| - 非阻塞I/O处理 |
| - 并发消息监听和处理 |
| - 智能连接管理和错误恢复 |
| |
| ## 🔧 配置管理系统 |
| |
| ### TOML配置架构 |
| - **配置文件分层**: 支持多环境配置 (default.toml, production.toml) |
| - **路径解析**: 自动处理相对路径到绝对路径的转换 |
| - **配置验证**: 启动时进行完整性检查,确保所有必需配置项存在 |
| - **热加载**: 支持运行时配置重新加载 |
| |
| ### 关键配置项 |
| ```toml |
| [sshout] |
| mention_patterns = ["@Claude", "@claude", "Claude:", "claude,"] |
| |
| [sshout.server] |
| hostname = "tianjin1.rivoreo.one" # SSHOUT服务器地址 |
| port = 22333 # SSH端口 |
| username = "sshout" # 登录用户名 |
| |
| [sshout.ssh_key] |
| private_key_path = "assets/ssh-keys/id_ecdsa_sshout_test" # SSH私钥路径 |
| timeout = 10 # 连接超时(秒) |
| |
| [sshout.message] |
| max_history = 100 # 消息历史保留数量 |
| context_count = 5 # 上下文消息收集数量 |
| max_reply_length = 200 # 回复消息最大长度 |
| ``` |
| |
| ### 配置管理特性 |
| - **类型安全**: 强类型配置项验证 |
| - **默认值**: 支持配置项默认值设置 |
| - **环境变量**: 支持通过CLAUDE_CONFIG环境变量指定配置文件 |
| - **错误处理**: 详细的配置加载错误信息 |
| |
| ### 安全特性 |
| - SSH密钥安全认证 |
| - 输入验证和恶意内容过滤 |
| - 最小权限原则和访问控制 |
| |
| ## 📊 性能要求 |
| |
| ### 响应性能 |
| - 消息处理延迟 < 2秒 |
| - CLI命令响应 < 500ms |
| - SSH连接建立 < 10秒 |
| |
| ### 资源管理 |
| - 内存使用优化 (消息历史限制) |
| - 连接池管理和复用 |
| - 自动资源清理和释放 |
| |
| ## 📚 文档要求 |
| |
| ### 必需文档 |
| - `README.md`: 项目概述和使用指南 |
| - `FINAL_DELIVERY_REPORT.md`: 完整交付报告 |
| - 功能特性报告和测试报告 |
| - API文档和开发指南 |
| |
| ### 代码质量 |
| - 完整的docstring文档 |
| - 清晰的变量和函数命名 |
| - 模块化设计和依赖管理 |
| - 错误处理和日志记录 |
| |
| ## ✅ 交付标准 |
| |
| ### 功能完整性 |
| - 所有基础需求100%实现 |
| - 所有增强功能100%实现 |
| - 支持所有指定的使用场景 |
| |
| ### 代码质量 |
| - 通过所有单元测试和黑盒测试 |
| - 代码结构清晰,易于维护 |
| - 完善的错误处理和异常恢复 |
| - 需要对src目录下的代码进行覆盖率检测,确保单元测试覆盖率至少达到80% |
| |
| ### 文档完整性 |
| - 完整的使用文档和API文档 |
| - 清晰的安装和部署指南 |
| - 详细的测试报告和验证结果 |
| |
| ### 部署就绪性 |
| - 可直接运行的启动脚本 |
| - 完整的依赖包列表 |
| - 清晰的环境配置要求 |
| |
| ## 🔄 开发状态 |
| |
| **详细开发历程请参考**: [DEVELOPMENT_HISTORY.md](DEVELOPMENT_HISTORY.md) |
| |
| ### 当前项目状态 (v2.3.0) |
| - **测试结果**: 461个测试用例,100%通过率 |
| - **代码覆盖率**: 61%整体,核心模块74-83% |
| - **pytest问题**: ✅ 已解决目录扫描卡住问题 |
| - **核心功能**: ✅ 完整实现,包含离线记忆和持久化存储 |
| - **项目状态**: 🚀 生产就绪 |
| - **当前版本**: v2.3.0 Telegram Bot持久化存储版 |
| - **最后更新**: 2025-09-29 |
| |
| ## 💡 创新亮点 |
| |
| ### 技术创新 |
| - **异步消息处理架构**: 高性能并发处理和非阻塞I/O |
| - **Telegram Bot持久化存储**: 完整的离线记忆和对话历史恢复 |
| - **Claude Code SDK集成**: 稳定的AI能力集成和流式响应 |
| - **智能群组参与**: 支持@检测、随机参与和上下文感知回复 |
| - **配置驱动架构**: TOML配置系统支持多环境部署 |
| - **Agent状态序列化**: 完整保存和恢复AI会话状态 |
| - **安全Markdown处理**: 保守清理策略确保Telegram兼容性 |
| - **模块化MCP工具框架**: 支持外部工具集成和YOLO思考模式 |
| |
| ### 用户体验 |
| - **Telegram Bot智能交互**: 流式消息更新和实时编辑功能 |
| - **多媒体支持**: 图片分析、文档处理和文件上传功能 |
| - **智能群组参与**: 自动@检测、随机参与和上下文感知 |
| - **持久化记忆**: 重启后自动恢复所有对话历史 |
| - **权限控制**: 白名单用户和群组访问控制 |
| - **现代化CLI**: 支持历史翻查、命令补全和快捷键操作 |
| - **多平台集成**: 支持Telegram、SSHOUT等多种聊天平台 |
| |
| --- |
| |
| ## 📝 Git 提交规范要求 |
| |
| ### Google Commit Message 规范 |
| 本项目严格遵循 Google 的提交信息规范,所有commit message必须使用英文编写。 |
| |
| #### Git Username 和 Email |
| Rivoreo AutoPilot <autopilot@rivoreo.one> |
| |
| #### 基本格式 |
| ``` |
| <type>(<scope>): <subject> |
| |
| <body> |
| |
| <footer> |
| ``` |
| |
| #### Type类型说明 |
| - **feat**: 新功能 (feature) |
| - **fix**: 修复 (bug fix) |
| - **docs**: 文档 (documentation) |
| - **style**: 格式 (formatting, missing semicolons, etc) |
| - **refactor**: 重构 (refactoring production code) |
| - **test**: 测试 (adding missing tests, refactoring tests) |
| - **chore**: 构建过程或辅助工具的变动 (maintain) |
| |
| #### Scope范围说明 |
| - **core**: 核心Agent功能 |
| - **cli**: 命令行界面 |
| - **sshout**: SSHOUT集成 |
| - **mcp**: MCP工具集成 |
| - **config**: 配置系统 |
| - **test**: 测试相关 |
| |
| #### Subject主题要求 |
| - 使用英文,首字母小写 |
| - 使用祈使句形式 (imperative mood) |
| - 不超过50个字符 |
| - 结尾不加句号 |
| |
| #### Body正文要求 |
| - 详细描述变更内容和原因 |
| - 每行不超过72个字符 |
| - 可以包含多个段落 |
| |
| #### Footer页脚要求 |
| - 包含破坏性变更说明 |
| - 包含issue关闭信息 |
| - 包含Authored-by信息 |
| |
| #### 示例提交信息 |
| ``` |
| feat(sshout): implement @autopilot mention detection with regex patterns |
| |
| Add intelligent @autopilot detection system that supports multiple mention |
| formats including @autopilot, @autopilot, Autopilot:, and autopilot, patterns. |
| The system uses configurable regex patterns from TOML configuration. |
| |
| Features: |
| - Multi-format mention detection |
| - Case-insensitive matching |
| - Chinese punctuation support |
| - Configurable mention patterns via TOML |
| |
| Breaking Change: Old hardcoded mention patterns are replaced with |
| configuration-driven approach. |
| |
| Closes #123 |
| |
| 🤖 Generated with Rivoreo AutoPilot |
| |
| Authored-By: Rivoreo AutoPilot <autopilot@rivoreo.one> |
| ``` |
| |
| #### 提交流程 |
| 1. 确保所有测试通过 |
| 2. 遵循代码风格规范 |
| 3. 编写符合规范的commit message |
| 4. 使用英文编写所有提交信息 |
| 5. 包含适当的技术细节说明 |
| |
| #### 分支命名规范 |
| - **feature/**: 新功能分支 |
| - **fix/**: 修复分支 |
| - **docs/**: 文档分支 |
| - **test/**: 测试分支 |
| |
| **注意**: 本文档记录了完整的开发需求和实现过程,可作为后续维护和扩展的参考依据。 |