Merge branch 'feat/noa-experimental':noa 实验性上下文压缩
This commit is contained in:
commit
95bcd4ef9c
13 files changed
+181
-6
No files matched your search
@@ -2,7 +2,7 @@
|
||||
|
||||
import * as React from "react";
|
||||
|
||||
import { CpuIcon, KeyboardIcon, RadioTowerIcon, SearchIcon, ShieldAlertIcon } from "lucide-react";
|
||||
import { CpuIcon, FlaskConicalIcon, KeyboardIcon, RadioTowerIcon, SearchIcon, ShieldAlertIcon } from "lucide-react";
|
||||
import { toast } from "sonner";
|
||||
|
||||
import { Button } from "@/components/ui/button";
|
||||
@@ -41,6 +41,8 @@ export default function SystemSettingsPage() {
|
||||
// 操作约束注入范围(默认都开)。
|
||||
const [injectPlanner, setInjectPlanner] = React.useState(true);
|
||||
const [injectWorker, setInjectWorker] = React.useState(true);
|
||||
// 实验功能:noa 上下文压缩(默认关)。
|
||||
const [noaCompaction, setNoaCompaction] = React.useState(false);
|
||||
// 纯前端偏好:不走 /api/settings,直接读写 localStorage。
|
||||
const sendMode = useChatSendMode();
|
||||
|
||||
@@ -57,6 +59,7 @@ export default function SystemSettingsPage() {
|
||||
setWorkers(String(s.workers ?? 3));
|
||||
setInjectPlanner(s.constraints_inject_planner !== false);
|
||||
setInjectWorker(s.constraints_inject_worker !== false);
|
||||
setNoaCompaction(!!s.noa_compaction);
|
||||
}, []);
|
||||
|
||||
const saveWorkers = () => {
|
||||
@@ -146,6 +149,20 @@ export default function SystemSettingsPage() {
|
||||
.catch(() => setInjectWorker(!v)); // revert on failure
|
||||
};
|
||||
|
||||
const toggleNoaCompaction = (v: boolean) => {
|
||||
setNoaCompaction(v); // optimistic
|
||||
api
|
||||
.setSettings({ noa_compaction: v })
|
||||
.then((s) => {
|
||||
apply(s);
|
||||
toast.success(v ? "已开启 noa 上下文压缩(对之后启动的运行生效)" : "已关闭 noa 上下文压缩(恢复内置压缩)");
|
||||
})
|
||||
.catch((e) => {
|
||||
setNoaCompaction(!v); // revert on failure
|
||||
toast.error(`保存失败:${(e as Error).message}`);
|
||||
});
|
||||
};
|
||||
|
||||
// Persist a web-search patch (enable and/or backend). Optimistic with refetch.
|
||||
const saveWebSearch = (patch: Partial<Settings>) => {
|
||||
setSaving(true);
|
||||
@@ -387,6 +404,34 @@ export default function SystemSettingsPage() {
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
<Card className="mb-4 break-inside-avoid md:mb-6">
|
||||
<CardHeader>
|
||||
<CardTitle className="flex items-center gap-2 text-base">
|
||||
<FlaskConicalIcon className="size-4" />
|
||||
实验功能
|
||||
</CardTitle>
|
||||
<CardDescription>
|
||||
尚在验证中的机制,默认关闭。可能改变 Agent 行为或影响稳定性,请在了解影响后启用。
|
||||
<br />
|
||||
<b>noa 上下文压缩</b>:由模型主动压缩长对话历史(norma v0.4.0)。开启后平台接入的四类 Agent(
|
||||
<b>规划者 / 执行者 / 主 Agent / 对话</b>)改用 noa 接管上下文,取代内置压缩,
|
||||
压缩原文会归档到任务工作目录下便于回溯。切换即时生效(对之后启动的运行生效),无需重建 Agent;
|
||||
关闭后立即恢复内置压缩。
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent className="flex items-center justify-between gap-4">
|
||||
<Label htmlFor="noa-compaction" className="text-sm font-normal text-muted-foreground">
|
||||
noa 上下文压缩{noaCompaction ? " · 已开启" : " · 已关闭"}
|
||||
</Label>
|
||||
<Switch
|
||||
id="noa-compaction"
|
||||
checked={noaCompaction}
|
||||
disabled={!loaded}
|
||||
onCheckedChange={toggleNoaCompaction}
|
||||
/>
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
<Card className="mb-4 break-inside-avoid md:mb-6">
|
||||
<CardHeader>
|
||||
<CardTitle className="flex items-center gap-2 text-base">
|
||||
|
||||
@@ -3326,6 +3326,7 @@ export const settings: Settings = {
|
||||
workers: 3,
|
||||
llm_pool_enabled: true,
|
||||
llm_pool_bind_fallback: false,
|
||||
noa_compaction: false,
|
||||
};
|
||||
|
||||
// ── LLM 轮询(故障转移)──────────────────────────────────────────────────────
|
||||
|
||||
@@ -913,6 +913,10 @@ export interface Settings {
|
||||
// 操作约束注入范围(默认都开):把任务的 allow/deny 约束拼进对应 agent 的系统提示。
|
||||
constraints_inject_planner?: boolean;
|
||||
constraints_inject_worker?: boolean;
|
||||
// 实验功能:noa 模型驱动上下文压缩(默认关)。开启后平台接入的四类 agent(planner/
|
||||
// worker/主 agent/对话)由 noa 接管上下文压缩,取代内置 compaction;每 run 读一次,对
|
||||
// 之后启动的 run 生效。
|
||||
noa_compaction?: boolean;
|
||||
}
|
||||
|
||||
// ---- LLM config ----
|
||||
|
||||
Reference in new issue
Block a user