Localize user-facing UI, agent output, and backend messages to Simplified Chinese
ci / go (push) Waiting to run
ci / go-db (agent) (push) Waiting to run
ci / go-db (config) (push) Waiting to run
ci / go-db (db) (push) Waiting to run
ci / go-db (evidence) (push) Waiting to run
ci / go-db (llmrec) (push) Waiting to run
ci / go-db (server) (push) Waiting to run
detections / detections (push) Waiting to run
docs / links (push) Waiting to run
web / web (push) Waiting to run

This commit is contained in:
dela
2026-10-09 14:08:31 +08:00
parent 8af63417c8
commit 97668dab7e
148 changed files with 1671 additions and 1672 deletions
+16 -16
View File
@@ -27,9 +27,9 @@ func (s *Server) chatGuard() *guard.Guard {
// intercept.Judge 가 msgModelApprovalFailed 로 감싸 Decision.Message 로 노출하므로,
// 래퍼(intercept 패키지)와 언어가 어긋나지 않게 함께 한국어로 둔다.
const (
errNoJudgeModel = "사용할 수 있는 판정 모델이 설정되지 않았습니다"
errJudgeModelUnavailable = "%d번 판정 모델 프로필을 사용할 수 없습니다"
errJudgeVerdictMalformed = "모델 판정 형식이 올바르지 않습니다. 판정·실제 동작·성공 후 결과·적중 규칙을 모두 포함해야 합니다"
errNoJudgeModel = "未配置可用的判定模型"
errJudgeModelUnavailable = "判定模型配置 %d 不可用"
errJudgeVerdictMalformed = "模型判定格式不正确,必须包含判定、实际动作、成功后的结果和命中的规则"
)
// wireInterceptReviewer installs the LLM fallback judge into the interceptor. The
@@ -326,12 +326,12 @@ func interceptFilterParams(q url.Values) (db.InterceptApprovalFilter, error) {
switch filter.Status {
case "", "pending", "allowed", "denied", "timeout":
default:
return filter, fmt.Errorf("status 값은 pending, allowed, denied, timeout 중 하나여야 합니다")
return filter, fmt.Errorf("status 值必须是 pending, allowed, denied, timeout 之一")
}
switch filter.DecisionSource {
case "", "model", "rule", "unknown":
default:
return filter, fmt.Errorf("decision_source 값은 model, rule, unknown 중 하나여야 합니다")
return filter, fmt.Errorf("decision_source 值必须是 model, rule, unknown 之一")
}
return filter, nil
}
@@ -365,7 +365,7 @@ func (s *Server) interceptDecide(w http.ResponseWriter, r *http.Request) {
return
}
if req.Decision != "allowed" && req.Decision != "denied" {
writeErr(w, 400, "decision 값은 allowed 또는 denied 중 하나여야 합니다")
writeErr(w, 400, "decision 值必须是 allowed 或 denied 之一")
return
}
if err := s.m.interceptor.Decide(id, req.Decision == "allowed"); err != nil {
@@ -430,13 +430,13 @@ func (s *Server) interceptSetJudgeConfig(w http.ResponseWriter, r *http.Request)
switch req.FailAction {
case "allow", "ask", "deny":
default:
writeErr(w, 400, "fail_action 값은 allow, ask, deny 중 하나여야 합니다")
writeErr(w, 400, "fail_action 值必须是 allow, ask, deny 之一")
return
}
switch req.AskTimeoutAction {
case "allow", "deny":
default:
writeErr(w, 400, "ask_timeout_action 값은 allow 또는 deny 중 하나여야 합니다")
writeErr(w, 400, "ask_timeout_action 值必须是 allow 或 deny 之一")
return
}
if err := s.m.interceptor.SetJudgeConfig(req); err != nil {
@@ -464,29 +464,29 @@ type interceptRuleReq struct {
func validateInterceptRuleReq(req interceptRuleReq) error {
if req.Name == "" {
return fmt.Errorf("name 값은 비워 둘 수 없습니다")
return fmt.Errorf("name 值不能为空")
}
switch req.MatchTarget {
case "tool_name", "tool_input":
default:
return fmt.Errorf("match_target 값은 tool_name 또는 tool_input 중 하나여야 합니다")
return fmt.Errorf("match_target 值必须是 tool_name 或 tool_input 之一")
}
switch req.MatchType {
case "string", "regex":
default:
return fmt.Errorf("match_type 값은 string 또는 regex 중 하나여야 합니다")
return fmt.Errorf("match_type 值必须是 string 或 regex 之一")
}
if req.Pattern == "" {
return fmt.Errorf("pattern 값은 비워 둘 수 없습니다")
return fmt.Errorf("pattern 值不能为空")
}
switch req.Action {
case "allow", "deny", "ask":
default:
return fmt.Errorf("action 값은 allow, deny, ask 중 하나여야 합니다")
return fmt.Errorf("action 值必须是 allow, deny, ask 之一")
}
if req.MatchType == "regex" {
if _, err := regexp.Compile(req.Pattern); err != nil {
return fmt.Errorf("pattern 값이 올바른 정규식이 아닙니다: %w", err)
return fmt.Errorf("pattern 值不是合法的正则表达式: %w", err)
}
}
return nil
@@ -549,11 +549,11 @@ func (s *Server) interceptExecution(w http.ResponseWriter, r *http.Request) {
return
}
if conv == nil {
writeErr(w, http.StatusGone, "대화가 이미 삭제되었습니다")
writeErr(w, http.StatusGone, "会话已被删除")
return
}
}
writeErr(w, 404, "승인 기록이 삭제되었거나 존재하지 않습니다")
writeErr(w, 404, "审批记录已被删除或不存在")
return
}
writeJSON(w, 200, map[string]any{"conversation_id": target.ConversationID, "task_id": target.TaskID, "session": target.Session, "seq": target.Seq, "items": activityDTOs(target.Items)})