feat: 权限档位体系(三档 plan/workspace/full + 四桥 from_session_id)
L2 核心改动:sessions 表补 permission_mode / permission_enforcement 两列 (sqlite + pg 同步),三桥 lib/permission-mode.js 翻译档位到平台原生配置, homeagent advisory 模式提示词告知模型实际强制力。四桥全部携带 from_session_id 供 relay 去重与会话回溯。 FromHuman / ToHuman 判据已加入心跳 payload 与 notify/mail.go。
This commit is contained in:
@ -63,6 +63,17 @@ CREATE TABLE IF NOT EXISTS agents (
|
||||
-- max_rounds 保留列但不再参与判断。
|
||||
max_rounds INTEGER NOT NULL DEFAULT 0,
|
||||
used_rounds INTEGER NOT NULL DEFAULT 0,
|
||||
|
||||
-- mode_enforcement 是该平台插件自报的权限档位强制能力(native / advisory),
|
||||
-- 随心跳上报(与模型目录同一条通道 —— I-1:平台自己说的才算)。
|
||||
--
|
||||
-- 为什么要存:发件人在派活前得知道 plan 档在对方那儿到底算不算。
|
||||
-- homeagent 的核心没有工具调用拦截点,档位只能写进提示词 ——
|
||||
-- 把这个事实藏起来比做不到本身更危险。
|
||||
--
|
||||
-- 默认 advisory 而不是 native:没自报过的插件,我们不能替它宣称
|
||||
-- 「档位在这里是被强制的」。
|
||||
mode_enforcement TEXT NOT NULL DEFAULT 'advisory',
|
||||
last_seen DATETIME,
|
||||
created_at DATETIME DEFAULT (strftime('%Y-%m-%d %H:%M:%f','now'))
|
||||
);
|
||||
@ -115,7 +126,18 @@ CREATE TABLE IF NOT EXISTS sessions (
|
||||
-- Agent 全局配额仍然生效(两者都要过):否则 Agent 自己 .new 开一串会话,
|
||||
-- 每条都是全新预算,全局上限就形同虚设。
|
||||
max_rounds INTEGER NOT NULL DEFAULT 0,
|
||||
used_rounds INTEGER NOT NULL DEFAULT 0
|
||||
used_rounds INTEGER NOT NULL DEFAULT 0,
|
||||
|
||||
-- 会话级权限档位(plan / workspace / full)。
|
||||
-- 旧库默认 'workspace' 而不是 'full':已在进行的会话大多是「在这个目录里干活」,
|
||||
-- 给 workspace 与它们的实际形态一致。默认 full 则等于给所有历史会话追授全权,
|
||||
-- 而「我忘了收紧」与「我确实需要全权」在数据上从此无法区分。
|
||||
permission_mode TEXT NOT NULL DEFAULT 'workspace',
|
||||
|
||||
-- 接收平台实际做到的强制力(native / advisory)。
|
||||
-- 旧库默认 'advisory':没自报过的插件,我们不能替它宣称
|
||||
-- 「档位在这里是被强制的」。保守方向是承认做不到,而不是假装做到了。
|
||||
permission_enforcement TEXT NOT NULL DEFAULT 'advisory'
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_sessions_alias ON sessions(session_alias);
|
||||
|
||||
Reference in New Issue
Block a user