Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,18 @@
8. `/memory`、`/clear-memory confirm`、`/clear-context`
9. 工作区目录感知(`--workspace` / `NEOCODE_WORKSPACE` / 当前目录)

## 文档导航

如果你想快速理解项目设计、接口约定、安全机制或团队协作方式,可以优先阅读以下文档:

- [整体架构设计说明](./docs/structure.md):快速了解项目分层思路、目录结构和模块职责。
- [架构详细说明文档](./docs/detailed_architecture_guide.md):深入理解系统目标、核心架构、数据流和后续演进方向。
- [API 契约书与开发指南](./docs/API_Contract_Guide.md):了解 `api/proto/chat.proto` 的契约设计和前后端协作边界。
- [GitHub Actions + Codecov 使用指南](./docs/github-actions-codecov-guide.md):面向新成员的 CI、测试覆盖率与 PR 检查上手文档。
- [安全拦截器模块文档](./docs/Security_Interceptor.md):说明工具执行前的安全校验模型与接口规范。
- [安全拦截器测试手册](./docs/Security_Interceptor_Test_Manual.md):整理安全拦截相关测试点与手工验证步骤。
- [Repository Guidelines](./docs/AGENTS.md):补充仓库协作约定、目录组织与开发命令说明。

## 配置方式

只需要维护根目录下的 `config.yaml`,并在系统环境变量中设置 API Key。
Expand Down
16 changes: 0 additions & 16 deletions cmd/tui/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ import (
"flag"
"fmt"
"os"
"runtime"
"strings"
"syscall"

"go-llm-demo/configs"
"go-llm-demo/internal/server/infra/provider"
Expand Down Expand Up @@ -317,17 +315,3 @@ func loadPersonaPrompt(path string) string {
return strings.TrimSpace(string(data))
}

func setUTF8Mode() {
if runtime.GOOS == "windows" {
setWindowsUTF8()
}
}

func setWindowsUTF8() {
kernel32 := syscall.NewLazyDLL("kernel32.dll")
setConsoleOutputCP := kernel32.NewProc("SetConsoleOutputCP")
setConsoleCP := kernel32.NewProc("SetConsoleCP")

setConsoleOutputCP.Call(uintptr(65001))
setConsoleCP.Call(uintptr(65001))
}
6 changes: 6 additions & 0 deletions cmd/tui/utf8_other.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
//go:build !windows

package main
// setUTF8Mode 在非 Windows 系统上是空操作。
// Linux 和 macOS 默认使用 UTF-8 编码,无需额外设置。
func setUTF8Mode() {}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

建议:考虑是否需要支持 Linux/macOS 的 UTF-8 设置

非 Windows 系统(Linux/macOS)默认 locale 通常是 UTF-8,但并不绝对。当前非 Windows 平台的 setUTF8Mode() 是空函数,这在绝大多数情况下没有问题。

但若要更严谨,可以在此文件中添加注释说明为什么非 Windows 系统不需要此操作,例如:

// setUTF8Mode 在非 Windows 系统上是空操作。
// Linux 和 macOS 默认使用 UTF-8 编码,无需额外设置。
func setUTF8Mode() {}

这样有助于后续维护者理解代码意图。

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

已添加相应注释

21 changes: 21 additions & 0 deletions cmd/tui/utf8_windows.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//go:build windows

package main

import (
"fmt"
"os"

"golang.org/x/sys/windows"
)

const utf8CodePage = 65001

func setUTF8Mode() {
if err := windows.SetConsoleOutputCP(utf8CodePage); err != nil {
fmt.Fprintf(os.Stderr, "警告: 设置控制台输出编码失败: %v\n", err)
}
if err := windows.SetConsoleCP(utf8CodePage); err != nil {
fmt.Fprintf(os.Stderr, "警告: 设置控制台输入编码失败: %v\n", err)
}
}
Loading