diff --git a/agent/chat.go b/agent/chat.go index 75bc9d4..0b75cfc 100644 --- a/agent/chat.go +++ b/agent/chat.go @@ -167,8 +167,8 @@ func (c *ChatAgent) Chat(ctx context.Context, agentKey, sessionID, message strin opts.Transcript = c.tx opts.SessionID = sessionID } - // 实验功能:开启后由 noa 接管上下文压缩(归档落在本会话 sessionWorkDir 下,持久)。 - enableNoa(&opts, c.noaEnabledFn, sessionWorkDir, "chat-"+sessionID, noaWarn("chat-"+sessionID)) + // 实验功能:开启后由 noa 接管上下文压缩(归档集中在 /noa/ 下,持久)。 + enableNoa(&opts, c.noaEnabledFn, c.workDir, "chat-"+sessionID, noaWarn("chat-"+sessionID)) ctx = attachSideCapture(ctx, &opts) s := agentcore.NewSession(opts) defer s.Close() diff --git a/agent/mainagent.go b/agent/mainagent.go index e8a1726..6de01a7 100644 --- a/agent/mainagent.go +++ b/agent/mainagent.go @@ -172,13 +172,13 @@ func (m *MainAgent) Chat(ctx context.Context, taskID int64, mainSeg int, as *db. opts.SessionID = fmt.Sprintf("exp%d-main-s%d", ts.ID(), mainSeg) } } - // 实验功能:开启后由 noa 接管上下文压缩(归档落在本任务 mainDir 下,任务级持久)。 + // 实验功能:开启后由 noa 接管上下文压缩(归档集中在 /noa/ 下,持久)。 // session id 与 transcript 同规则(分段感知),使归档与恢复对齐。 noaSession := fmt.Sprintf("exp%d-main", ts.ID()) if mainSeg > 0 { noaSession = fmt.Sprintf("exp%d-main-s%d", ts.ID(), mainSeg) } - enableNoa(&opts, m.noaEnabledFn, mainDir, noaSession, noaWarn(noaSession)) + enableNoa(&opts, m.noaEnabledFn, m.workDir, noaSession, noaWarn(noaSession)) ctx = attachSideCapture(ctx, &opts) s := agentcore.NewSession(opts) defer s.Close() diff --git a/agent/noa.go b/agent/noa.go index 9f6d197..9a28fd2 100644 --- a/agent/noa.go +++ b/agent/noa.go @@ -21,7 +21,8 @@ func noaWarn(session string) func(string) { // 一次,故切换只影响之后启动的 run,无需重建 agent。 // enableNoa 在解析器报告开启时把 noa 接入 opts。archiveRoot 是压缩原文的持久化基目录 -// (取各 agent 本 run 的工作目录,任务级持久),sessionID 命名其下的归档子目录。 +// (取全局 workDir,各 agent 统一落在 /noa 下,不随任务/意图目录分散),sessionID +// 命名其下的归档子目录(全局唯一,故同一基目录内不冲突)。 // // noa 是实验功能:接入失败不得中断真实任务。发生错误时经 onWarn 上报并回退内置压缩。 // 启用成功时清掉 opts.Compaction,避免 agentcore 因「两个上下文管理器同时设置」告警。 diff --git a/agent/planner.go b/agent/planner.go index d71eec4..94d17e5 100644 --- a/agent/planner.go +++ b/agent/planner.go @@ -435,9 +435,9 @@ func (p *Planner) Plan(ctx context.Context, taskID int64, as *db.AssetStore, ts opts.Transcript = p.tx opts.SessionID = fmt.Sprintf("exp%d-planner", ts.ID()) } - // 实验功能:开启后由 noa 接管上下文压缩(归档落在本任务 taskDir 下,任务级持久)。 + // 实验功能:开启后由 noa 接管上下文压缩(归档集中在 /noa/ 下,持久)。 noaSession := fmt.Sprintf("exp%d-planner", ts.ID()) - enableNoa(&opts, p.noaEnabledFn, taskDir, noaSession, noaWarn(noaSession)) + enableNoa(&opts, p.noaEnabledFn, p.workDir, noaSession, noaWarn(noaSession)) // 态势(刚完成的意图 + 完整图)现在拼进本轮 user 输入(见下方 input)。user 里还有 // 指令 + 跨唤醒待办(todo 是模型自己的规划便签,可再生,放 user 即可)。 // 开场白按「本轮有无具体变动」分两种:有变动 → 指向下方【实际变动】块;无变动 diff --git a/agent/worker.go b/agent/worker.go index a2ce7e1..1c767f3 100644 --- a/agent/worker.go +++ b/agent/worker.go @@ -487,9 +487,9 @@ func (w *Worker) execute(ctx context.Context, name string, taskID int64, as *db. input = "开始执行 system 里领到的意图:只做它、只产生事实、assets、finding、做完即停。" } - // 实验功能:开启后由 noa 接管上下文压缩(归档落在本意图 runDir 下,任务级持久)。 + // 实验功能:开启后由 noa 接管上下文压缩(归档集中在 /noa/ 下,持久)。 noaSession := WorkerSessionID(ts.ID(), intent.ID) - enableNoa(&opts, w.noaEnabledFn, runDir, noaSession, noaWarn(noaSession)) + enableNoa(&opts, w.noaEnabledFn, w.workDir, noaSession, noaWarn(noaSession)) ctx = attachSideCapture(ctx, &opts) s := agentcore.NewSession(opts) defer s.Close() // release the session's background-task manager (temp dir + processes)