# hxclaw AI 行为指南 ## 开发规范 ### 设计原则 - **面向对象 + 设计模式**:所有功能拆分成模块,模块可复用 - **模块化**:每个功能独立成包,包内高内聚,包间低耦合 - **设计模式**:常用单例、工厂、策略模式 ### 代码要求 - **注释**:全局使用中文注释,注释内容详细,说明意图和实现逻辑 - **测试**:所有代码需编写单元测试和功能测试,通过后才可交付 - **命名**:变量、函数、文件名使用英文,注释使用中文 ### 交流规范 - **语言**:全程使用中文回答和思考 - **问题处理**:一个问题若超过3次尝试仍无法解决,立即停止,告诉用户遇到的问题,询问用户接下来怎么办 - **进度同步**:每次开始编写代码前,更新讨论记录和其他文档 --- ## 项目背景 ### 定位 - hxclaw 是 picoclaw 的 CLI 增强工具 - 提供流式输出和 Markdown 终端渲染 - 作为独立二进制,与 picoclaw 共存 ### 技术栈 - 语言:Go 1.21+ - 依赖:通过 go.mod replace 复用 picoclaw - 终端库:charmbracelet/lipgloss - 测试:Go 标准测试框架 --- ## 当前任务 ### v0.1.0 目标 实现流式输出功能: 1. 创建 go.mod 配置依赖 2. 实现 main.go 入口 3. 实现流式 Provider 调用 4. 实时打印 token 5. 处理非流式 Provider 回退 6. Markdown 终端渲染(glamour) --- ## 实现进度 ### v0.1.0 已完成功能 1. **流式输出(新流程)** - 等待 AI 返回完整响应 - Markdown 转译 - 模拟流式输出(从配置读取速度) - 效果更好,无残留问题 2. **Markdown 渲染** - 使用 glamour 库渲染 Markdown - 支持多种主题(dark, light, dracula, tokyo-night 等) - 通过 project.config.yml 配置主题 3. **项目配置** - 通过 project.config.yml 统一管理配置项 - 支持流式速度、渲染主题、Logo 等配置 --- ## 项目配置 ### project.config.yml 配置文件位于项目根目录: ```yaml # hxclaw 项目配置文件 # 模拟流式输出配置 streaming: simulated_speed_ms: 30 # 模拟流式输出速度(毫秒/字符) # Markdown 渲染配置 markdown: glamour_style: dark # 渲染主题:dark, light, dracula, tokyo-night 等 # UI 配置 ui: logo: "🦐" ``` 配置加载优先级: 1. 环境变量 `HXCLAW_CONFIG` 指定路径 2. 项目根目录 `project.config.yml` --- ## 依赖管理 ### Go 依赖 - `charm.land/glamour/v2` - Markdown 渲染 - `charm.land/lipgloss/v2` - 终端样式 - `charm.land/x/term` - 终端控制 - `github.com/muesli/termenv` - 终端环境工具 - `gopkg.in/yaml.v3` - 配置文件解析 ### 配置文件 - `cmd/hxclaw/main.go` - 主入口逻辑 - `cmd/hxclaw/internal/markdown.go` - Markdown 渲染器 - `cmd/hxclaw/internal/helpers.go` - 辅助函数 - `cmd/hxclaw/internal/config.go` - 项目配置加载 --- ## 已知问题 1. **重绘残留**:某些情况下有轻微文本重复(可接受) 2. **终端兼容性**:termenv 在某些终端可能不完全工作 --- ## 待优化 1. 优化重绘逻辑,解决残留问题(已通过新流程解决) 2. 添加更多主题支持 3. 添加命令行参数支持主题选择 --- ## 构建命令 picoclaw GitHub地址:https://github.com/sipeed/picoclaw.git ```bash go build -o hxclaw ./cmd/hxclaw ``` 生成的可执行文件位于项目根目录。 --- ## 注意事项 - 不要修改 picoclaw 源码 - 保持代码独立,便于后续版本同步 - 优先实现核心功能,再考虑增强功能 - 文档和代码同步更新