本地数据
LinkCode 保存在你机器上的每个文件、各自的用途、凭据如何受保护,以及如何全部重置到干净状态。
你的 host(即 LinkCode daemon)把它拥有的一切都放在主目录下,都是你可以自己查看或删除的普通文件。除非你使用了明确说明会同步的 LinkCode Cloud 功能,这里的东西不会同步到任何地方。
~/.linkcode/config.json
可选——第一次保存需要它的东西时创建。存放监听项覆盖(host/端口)以及你的按智能体设置:是否启用、默认模型、使用哪个账号。
它不含任何凭据,凭据在下面的 secrets.json 里。以仅属主可读的权限(0600)写入。若设置了环境变量 LINKCODE_PORT 和 LINKCODE_HOST,它们优先于此文件中的值。
~/.linkcode/secrets.json
host 持有的每一份长期凭据:API key、每个 provider 账号背后的密钥、你的 LinkCode Cloud 登录态,以及设备密钥。该文件是 AES-256-GCM 密文,解开它的主密钥存放在你操作系统的钥匙串里——所以单独拿到这个文件毫无价值,把备份恢复到另一台机器得到的也是一个空的凭据库,而不是一份可移植的凭据。
并非每台机器都有可用的钥匙串
在没有可用钥匙串的机器上(最常见的是没有 Secret Service 的无头 Linux),存储会降级为明文而不是拒绝启动,并在文件中记录这一点、在启动时告警。一旦钥匙串可用,它会自行重新加密。明文存储是可移植的——这句话等同于「任何能读到该文件的东西都能读到它」。
丢失钥匙串条目只会丢失凭据本身:host 变为未登录状态,账号从可用池中消失,你重新填一次即可。
~/.linkcode/daemon.db
一个 SQLite 数据库——线程与工作区的登记表。它记录存在哪些线程、各属于哪个工作区、创建与最近使用时间,以及指向智能体自身历史的指针,供 LinkCode 恢复或导入。
它不保存你的对话内容。真正的记录存在各个智能体自己保存历史的地方。新版本 host 首次启动时会自动执行迁移。
~/.linkcode/runtime.json
在 host 完成监听绑定后写入,仅属主可读。客户端正是靠它在你不指定端口的情况下找到运行中的 host:读取其中的进程 ID 和 URL,确认该进程仍存活,并确认它确实以 LinkCode host 的身份应答,然后才信任它。
host 正常关闭时会自动删除。若 host 被强制杀掉,可能残留一个过期文件——下次启动(或客户端检查时)会发现进程 ID 已失效并忽略它。
~/.linkcode/cloud.json
登录 LinkCode Cloud 后出现:记录这台 host 注册为哪个账号、哪台设备。凭据本身在 secrets.json 里。退出登录会同时清除两者。
~/LinkCode
Chats 背后的文件夹——用于不挂靠你自己添加项目的线程的内置工作区。它就是一个普通文件夹:可以从应用的 Chats 区块打开,也可以直接浏览。
下载的智能体运行时
LinkCode 替你下载的智能体存放在它的资源库中,位于平台的应用数据目录下,与桌面应用自身的数据同级——例如 macOS 上的 ~/Library/Application Support/LinkCode/assets。被取代的旧版本会在新版就位后自动清理。
桌面设置与日志
桌面应用把自己的设置——主题、语言、外观,以及手动的 host URL 覆盖——以 settings.json 存放在各系统标准的应用数据目录下,仅属主可读:
- macOS:
~/Library/Application Support/LinkCode - Windows:
%APPDATA%\LinkCode - Linux:
~/.config/LinkCode
应用同时会把 host 的输出记录到日志文件:
- macOS:
~/Library/Logs/LinkCode/main.log - Windows:
%APPDATA%\LinkCode\logs\main.log - Linux:
~/.config/LinkCode/logs/main.log
端口
host 默认监听 19523 端口。若该端口被别的程序占用,它会向上寻找——19524、19525,依此类推直到 19532——再放弃。如果占用者是同一份安装的另一个 host,新进程会直接拒绝启动:同时只运行一个。客户端不需要猜是哪个端口胜出——它们从上面的 runtime.json 读取。遇到端口冲突见疑难排查。
从源码构建的 LinkCode 使用自己的状态目录(~/.linkcode.development)和端口区间,因此永远不会与已安装的应用相撞。
重置 LinkCode
想回到干净状态:
退出 LinkCode。host 会随之关闭。
删除 ~/.linkcode/daemon.db 和 ~/.linkcode/runtime.json。这会清空你的线程与工作区列表。真正的对话不会丢——每个智能体独立于 LinkCode 保存自己的记录,可恢复的内容都还在,之后可以重新导入。
如果你还想清掉已保存的账号、API key 和 Cloud 登录,把 ~/.linkcode/secrets.json(以及 config.json、cloud.json)也删掉。
除非你真想删掉 Chats 里的文件,否则别动 ~/LinkCode——它是普通文件夹,不是内部状态。