refactor(noa): 归档集中到 <workDir>/noa 下,不再分散在任务目录

各 agent 的 noa 归档基目录由本 run 的工作目录改为全局 workDir,
统一落在 <workDir>/noa/<SessionID>/。SessionID 全局唯一,同一基目录
内互不冲突。
This commit is contained in:
Autumn-27 committed 2026-09-15 12:01:38 -04:00
1 parent 865d52267d
commit c4579637dc
5 files changed
+10 -9

No files matched your search

+2 -2
View File
@@ -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 接管上下文压缩(归档集中在 <workDir>/noa/<SessionID> 下,持久)。
enableNoa(&opts, c.noaEnabledFn, c.workDir, "chat-"+sessionID, noaWarn("chat-"+sessionID))
ctx = attachSideCapture(ctx, &opts)
s := agentcore.NewSession(opts)
defer s.Close()
+2 -2
View File
@@ -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 接管上下文压缩(归档集中在 <workDir>/noa/<SessionID> 下,持久)。
// 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()
+2 -1
View File
@@ -21,7 +21,8 @@ func noaWarn(session string) func(string) {
// 一次,故切换只影响之后启动的 run,无需重建 agent。
// enableNoa 在解析器报告开启时把 noa 接入 opts。archiveRoot 是压缩原文的持久化基目录
// (取各 agent 本 run 的工作目录,任务级持久),sessionID 命名其下的归档子目录。
// (取全局 workDir,各 agent 统一落在 <workDir>/noa 下,不随任务/意图目录分散),sessionID
// 命名其下的归档子目录(全局唯一,故同一基目录内不冲突)。
//
// noa 是实验功能:接入失败不得中断真实任务。发生错误时经 onWarn 上报并回退内置压缩。
// 启用成功时清掉 opts.Compaction,避免 agentcore 因「两个上下文管理器同时设置」告警。
+2 -2
View File
@@ -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 接管上下文压缩(归档集中在 <workDir>/noa/<SessionID> 下,持久)。
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 即可)。
// 开场白按「本轮有无具体变动」分两种:有变动 → 指向下方【实际变动】块;无变动
+2 -2
View File
@@ -487,9 +487,9 @@ func (w *Worker) execute(ctx context.Context, name string, taskID int64, as *db.
input = "开始执行 system 里领到的意图:只做它、只产生事实、assets、finding、做完即停。"
}
// 实验功能:开启后由 noa 接管上下文压缩(归档落在本意图 runDir 下,任务级持久)。
// 实验功能:开启后由 noa 接管上下文压缩(归档集中在 <workDir>/noa/<SessionID> 下,持久)。
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)