SQLite(WAL 模式),Drizzle 管理迁移。文件内容不入库,只存元数据。
api_keys ──< sessions >── profiles ──< profile_knowledge >── knowledge_roots
├─< runs ──< interactions
├─< events
└─< files
settings audit_logs usage_daily admin_sessions
不区分使用者:上层平台通过 API Key 调用,会话归属到 API Key。
| 表 | 关键字段 | 说明 |
|---|---|---|
api_keys |
id, name, key_hash, key_prefix, enabled, created_at, last_used_at | 每个上层平台一个 Key,便于区分来源和单独吊销;只存哈希 |
profiles |
id, name, provider, model, system_prompt, permission_mode, allowed_tools(json), disallowed_tools(json), skills(json), file_access(json), network(json), overridable(json), auto_allow_rules(json), version, updated_at | Agent 预设;file_access 见 06 §4 |
knowledge_roots |
id, name, path, description, access('read'|'write'), enabled, visible(检测结果), checked_at | 资料库,在后台设定 |
profile_knowledge |
profile_id, knowledge_root_id | Profile 启用的资料库 |
sessions |
id, api_key_id, profile_id, provider, model, provider_session_id, workspace_dir, title, status, last_seq, created_at, updated_at, archived | |
runs |
id, session_id, status, started_at, ended_at, input_tokens, output_tokens, cost_usd, error | |
events |
session_id, seq, run_id, type, payload(json), ts — PK(session_id, seq) | 事件全量落库 |
interactions |
id, run_id, session_id, kind, request(json), response(json), status, created_at, resolved_at, expires_at | |
files |
id, session_id, rel_path, origin('upload'|'agent'), mime, size, sha256, created_at | |
settings |
key, value(json), updated_at | 全局配置,见 §3 |
audit_logs |
id, ts, actor, session_id, kind('command'|'file_access_denied'|'approval'|'admin'), summary, detail(json) | |
usage_daily |
date, api_key_id, provider, model, runs, input_tokens, output_tokens, cost_usd | |
admin_sessions |
id, created_at, expires_at | 后台登录会话 |
预留(暂不建表):connectors、profile_connectors(内部平台接入,见 08);credentials(API Key 类凭证,见 ADR-0008)。
settings)| key | 默认值 | 说明 |
|---|---|---|
paths.workspaceRoot |
/srv/agent-server/workspaces |
会话工作区根目录 |
paths.skillsDir |
/srv/agent-server/skills |
共享技能目录 |
paths.pythonRuntime |
/srv/agent-server/runtime/py |
Python 环境 |
paths.matplotlibrc |
/srv/agent-server/runtime/matplotlibrc |
中文字体配置 |
security.globalDeny |
内置清单(见 06 §4.1)+ 自定义 | 内置项不可删除 |
security.defaultFileAccess |
restricted |
新建 Profile 的默认模式 |
network.allowedDomains |
pypi.org, files.pythonhosted.org |
Claude Bash 沙箱的白名单 |
network.blockPrivateFetch |
true |
WebFetch 私网拦截 |
limits.concurrency |
{ global: 4, claude: 2, codex: 2 } |
|
limits.interactionTimeoutSec |
600 |
交互超时(按拒绝处理) |
limits.uploadMaxMB / workspaceMaxMB |
50 / 2048 |
|
retention.workspaceDays |
30 |
归档后的工作区保留天数 |
providers.claude |
{ enabled, cliPath, defaultModel } |
|
providers.codex |
{ enabled, cliPath, defaultModel, configOverrides } |
configOverrides 用于禁用个人 config 中的插件和 MCP |
修改后对新的 Run 立即生效;providers.codex 的修改会触发 app-server 进程平滑重启(等活动 turn 结束后再重启)。
/srv/agent-server/ (属主 jerry-remote)
├─ app/ 部署的构建产物
├─ data/agent.db SQLite
├─ workspaces/<sessionId>/
│ ├─ uploads/ 用户上传(数据文件、截图)
│ ├─ outputs/ 最终产出
│ └─ .agent/ 工具大输出等内部文件
├─ knowledge/ 默认资料库位置(也可以在后台添加其他路径)
├─ skills/ 共享技能
├─ runtime/py/ Python venv(已创建)
├─ runtime/matplotlibrc 中文字体配置(已创建)
├─ runtime/requirements.lock 锁定的 Python 依赖版本
└─ logs/
retention.workspaceDays 天,之后清理目录,会话与事件保留tool.completed.output 超过 64KB 时截断,全文写入 .agent/tool-outputs/