feat(admin): 面板暴露 contextWindow(可见可改)+ DocumentRef 语义注释同步
- 面板读写面与 maxTokens 逐处对齐:读 DTO 增 contextWindow(omitempty)、写请求 ContextWindow *int(缺失=保留、显式 0=未声明同义、负数 400)、回写 models.json;负数红线仍由 runtimeconfig.Group.Validate 唯一裁决,网关守卫只做「更早失败 + 面板可读字段名」。前端:类型 + 表单字段(提交前 /^\d+$/ 校验)+ 分组行角标 + Notice + 目录候选用早已解析却没人用的 contextLimit 预填。文案写明「重启后生效」(推导只在进程启动时算一次)。 - 顺手修既有红线违反:ProviderFields 87→76(抽 ApiKeyAndBudgetField)、LlmProviderForm 113→74(buildRequest 提为模块级纯函数)——本次碰过的文件里已无 >80 的函数,行为/文案逐字未变。 - DocumentRef 的 chars/truncated 注释从「抽取侧」改为「本回合注入侧」(全文长度只在 document-read 的 totalChars、extractTruncated 专指撞 8 MiB 安全上限);机械校验为空 ⇒ 代码零改动。 - 主会话独立验收:隔离 worktree Go 侧 build/vet + gateway/history 两包绿;主树 npx tsc --noEmit exit 0、npm run build 成功并 copy 到 internal/webui/dist;注释机械校验为空;变异由子代理复现(写路径不认该键 ⇒ 3 红;去掉网关负数守卫 ⇒ 400 变 500)。
This commit is contained in:
1 parent
3a01b4e236
commit
47e56ca13c
11 files changed
+355
-68
No files matched your search
@@ -12,9 +12,9 @@ import (
|
||||
// 本文件归属聊天消息携带的**文档引用**(design/24 §2.4),以及 chat_messages
|
||||
// 上「建表之后才引入的列」的前滚聚合(client_msg_id 与 document)。
|
||||
//
|
||||
// document 列只存「引用 + 抽取统计」——存储名、嗅探所得 MIME、字节数、抽取
|
||||
// 字符数、是否截断、抽取状态;**绝不存抽取正文**。G3(base64 原样落库 → 每页
|
||||
// 历史背着重传)与 H1(每回合重算)两条教训说的都是同一件事:正文一旦进了
|
||||
// document 列只存「引用 + 本回合注入统计」——存储名、嗅探所得 MIME、字节数、注入
|
||||
// 字符数、注入是否被截断、抽取状态;**绝不存抽取正文**。G3(base64 原样落库 →
|
||||
// 每页历史背着重传)与 H1(每回合重算)两条教训说的都是同一件事:正文一旦进了
|
||||
// 历史,每读一页都要为它付一次代价,而且它是提示词注入面(design/11 §10)。
|
||||
//
|
||||
// 列的内容是**引用数组**(≤maxDocumentsPerMessage 条),因为一个回合可以挂
|
||||
@@ -61,10 +61,14 @@ type DocumentRef struct {
|
||||
MIME string `json:"mime"`
|
||||
// Size 是该文档的字节数。
|
||||
Size int64 `json:"size"`
|
||||
// Chars 是本次抽取进上下文的字符数(已截断者填截断后的值)。
|
||||
// Chars 是**本回合注入**上下文的字符数(被注入预算截断时填截断后的值,
|
||||
// 即真正进了模型可见视图的那个数)——不是抽取侧的正文长度。
|
||||
// 全文长度只有读侧出口能看到(document-read 的 totalChars)。
|
||||
Chars int `json:"chars,omitempty"`
|
||||
// Truncated 报告抽取正文是否被预算截断(design/24 §4.3:截断必须诚实
|
||||
// 标注,绝不静默)。
|
||||
// Truncated 报告**本回合的注入**是否被预算截断(design/24 §4.3:截断必须
|
||||
// 诚实标注,绝不静默)——不是「文件是否被截断」。抽取期自己撞上 sidecar
|
||||
// 安全上限(documents.MaxSidecarBytes)是另一回事,由 document-read 的
|
||||
// extractTruncated 专指。
|
||||
Truncated bool `json:"truncated,omitempty"`
|
||||
// Status 是抽取状态,取值见 DocumentStatus* 常量。
|
||||
Status string `json:"status,omitempty"`
|
||||
|
||||
Reference in new issue
Block a user