refactor: 项目结构重组,src/ 扁平化为根目录,提取 pkg/ 子包
- 模块名重命名 yunshu -> hub.gaomia.site/titor/YunShu - Go 版本升级 1.21 -> 1.25 - src/ 目录删除,所有文件移至根目录 - 新增 pkg/mdprint/: Markdown AST 解析+ANSI 渲染 - 新增 pkg/style/: 终端颜色样式(8色 ANSI + 24位真彩色) - 新增 pkg/termui/: 终端输入组件(交互式输入/密码/确认) - 更新文档:AGENTS.md、architecture.md、changelog.md、taolun.md - gitignore 通配符修复 yunshu.exe -> yunshu.exe*
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
## 通用规范
|
||||
|
||||
- 全程使用中文书写注释、文档和沟通
|
||||
- 全程使用中文书写注释、文档、沟通以及内部思考过程
|
||||
- 所有代码必须包含详细的中文注释,说明函数功能、参数含义、关键逻辑
|
||||
- Markdown 文件使用 `#` 标题层级,保持结构清晰
|
||||
- 变量命名采用驼峰式,类型和函数首字母大写导出
|
||||
@@ -16,6 +16,10 @@
|
||||
- 导出函数(首字母大写)供包外调用,非导出函数(首字母小写)为内部实现
|
||||
- HTTP 客户端设置超时(默认 15s),避免资源泄漏
|
||||
- JSON 序列化/反序列化使用 `encoding/json` 标准库
|
||||
- 终端颜色输出优先使用 `pkg/style` 包:
|
||||
- 8 色用 `Fg(ColorXxx)` / `Bg(ColorXxx)`
|
||||
- 真彩色用 `FgHex("#RRGGBB")` / `BgHex("#RRGGBB")`
|
||||
- 所有通配 `.Render(text)` 生成 ANSI 转义序列
|
||||
|
||||
## Agent 定义规范(.md 文件)
|
||||
|
||||
@@ -115,3 +119,11 @@ tools:
|
||||
14. **geocode 工具用 Go 代码实现比让 LLM 自己调 http-get 解析 JSON 更可靠**。LLM 在构造 URL 和解析嵌套 JSON 时容易出错(尤其是中文编码问题)。注册为 tool 后,LLM 只需提供城市名参数,Go 代码处理所有细节。
|
||||
|
||||
15. **项目正式命名为云枢·Agent(YunShu / yunshu)**,配置目录从 `~/.config/weather-cli/` 迁移到 `~/.config/yunshu/`。旧目录在首次运行时会自动迁移并删除。二进制名称改为 `yunshu`。如果迁移失败,用户可手动复制旧目录内容后重新运行。
|
||||
|
||||
### 2026-05-09
|
||||
|
||||
1. **Windows raw mode + bufio.Reader 冲突**:在禁用 `ENABLE_LINE_INPUT` 的 raw mode 下,`bufio.NewReader(os.Stdin).ReadRune()` 会因内部预读缓冲(默认 4KB)导致读取阻塞。后续尝试用 `ReadConsoleInputW` + 手动回显也因光标位置计算不一致而放弃。**最终决定放弃自实现 Tab 补全**,后续如需补全功能,引入第三方库(如 `go-prompt` / `readline`)。
|
||||
|
||||
2. **ANSI 光标移动需要启用输出 VT 处理**:`\033[A`(光标上移)/ `\033[J`(清屏)等输出序列需要输出句柄设置 `ENABLE_VIRTUAL_TERMINAL_PROCESSING`(0x0004)才能生效。只设置输入句柄的 mode 不够,输入输出句柄是两个独立的控制台句柄。
|
||||
|
||||
3. **ReadLineWithCompletion / Completer 类型已移除**。`completer.go` 清空,`main.go` 回到 `termui.ReadLine()`。`cmdCompleter`、`commonPrefix`、相关测试一并移除。`input.go` 中 `ReadConsoleInputW` 相关的 `keyEventRecord`/`inputRecord` 结构和 proc 也一并清理。
|
||||
|
||||
Reference in New Issue
Block a user