A Letaido / docs
DOCUMENTATION

数据与存储

内容存放在哪里、谁可以读取什么,以及智能体遵循的规则,确保面向客户的页面绝不会意外看到内部数据。

内容所在的三个位置

1. 你的工作区 (~/workspace/)

agent 运行所在的文件系统。Markdown 草稿、生成的资源、自定义技能、作业、临时空间以及这些文档都存放在这里。

  • 所有者:agent Linux 用户(agent 本身)。
  • 可从聊天访问。无法从 Console 进程或公共站点进程访问。
  • 两个常规路径:
  • ~/workspace/uploads/:你粘贴到聊天中的文件会到这里。
  • ~/workspace/downloads/:agent 通过工作区 UI 注册供下载的文件。由 nginx 在受限 URL 提供服务。

2. PostgreSQL(三个数据库)

任何结构化的内容都使用持久化状态。应用状态绝不使用 SQLite,绝不使用磁盘上的 JSON。

数据库 所有者 Agent Console 公共网站
console_db console 读/写 读/写 (已阻止)
site_db site 读/写 读/写 读/写
console_site_db 共享 读/写 读/写 读/写

哪些内容放在哪里:

  • console_db:仅供内部使用的状态。客户列表、交易阶段、内部评分表、审计日志。公共站点无法访问它;REVOKE 位于数据库角色层,而不只是约定。
  • site_db:公共站点渲染的内容。预先计算的报告、文档页面,以及任何在页面渲染时应当低成本读取的内容。控制台写入这里,站点读取。
  • console_site_db:一个明确的跨端通道。控制台写入审核队列;站点渲染已批准的条目;站点写回交互信号;控制台读取这些信号。

3. 记忆和进度 (markdown)

你的工作区中的两个特殊文件:

  • ~/workspace/.memory.md:每次聊天开始时读取。使用“remember this: X”来追加内容。
  • ~/workspace/progress.md:变更日志。智能体会在有意义的变更后追加内容;你可以读取它来重建发生了什么。

这些内容特意采用 markdown:你可以 grep 它们、对它们进行版本管理、手动编辑它们,然后再次 grep 它们。

为什么是三个数据库,而不是一个

两个原因。

  1. 界面隔离。 公共站点访客原则上可能会找到查询站点用于身份验证的数据库角色的方法。如果该角色只能访问 site_db,那么任何泄露的影响范围都会被限制在你已经决定公开的数据内。
  2. 意图清晰。 当智能体编写 Console 应用时,它知道要使用 console_db。当它编写站点页面时,使用 site_db。当它构建跨界面工作流时,使用 console_site_db。不会意外出现“这个表应该公开吗?”

智能体不会试图绕过这些规则。如果你要求“公开暴露这个 Console 页面”,它会告诉你需要通过 console_site_db 传递数据,并在网站上重建读取路径,而不是从网站直接访问 console_db

使用数据库

每次都是这个模式:

  • src/db.py 导入 SQLAlchemy session(每个应用共享的模块)。
  • Pydantic models 保护每个输入和每个 API 边界。
  • 仅在 SQLAlchemy 过于繁重时使用原始 psycopg2(只读的令牌门控查找、简单脚本)。

你会在新应用的顶部看到 CREATE TABLE IF NOT EXISTS 语句。智能体将模式视为代码:每个应用都会声明自己的表。没有平台迁移系统;新列会通过 ALTER TABLE 添加,并且智能体会记录该变更。

ClickHouse 怎么样

ClickHouse 可在本地用于 PostgreSQL 会比较慢的分析工作负载:对数百万行进行时间序列汇总、列式聚合,诸如此类。智能体会在使用前读取 ClickHouse 技能,经过有意选择,并告诉你原因。默认仍然是 PostgreSQL。

哪些东西不在这里

  • 没有平台托管的对象存储。 如果你想存储 50 MB 的 PDF 或视频,请将其保存为 ~/workspace/downloads/ 中的文件(由 nginx 设门控),或保存为 Postgres 中的 BYTEA 列(适合小型产物)。
  • 不要用环境变量存放密钥。 凭据保存在类型化密钥存储中,作用域限定到界面和连接器。智能体绝不会将它们复制到文件或数据库列中。
  • 除了工作区 UI 暴露的内容之外,没有“平台设置”页面。 计划、模式、审批都是显式开关。

数据生命周期

  • 你创建的文件会一直保留,直到你删除它们。智能体不会对你的工作区进行垃圾回收。
  • 数据库行会一直保留,直到你(或明确的清理任务)移除它们。当你提出要求时,智能体会编写清理任务:“每周日删除超过 90 天的 vsg_runs 行。”
  • 内存和进度文件会随着时间增长。当内存变得嘈杂时,智能体偶尔会建议修剪。
  • 连接器审计日志由平台保留;你可以浏览它们,但不能删除它们。

底层机制。 每个 Postgres 角色都通过 Unix-socket 对等认证进行身份验证(OS 用户与角色名匹配)。没有可泄露的密码,也没有可能配置错误的连接字符串。GRANT 和 REVOKE 都是显式且可见的。system_db 数据库用于平台内部(api-proxy、connectors 服务、bridge);任何外部界面都不会连接到它。

Last updated 2026-07-15