DSH 的"思考"发生在远端:会话需要补全时,请求会发往你配置的模型服务商,
模型权重并不在手机上运行。而证明"这个请求是你发的、账单算你的"的唯一凭证,
就是 API 密钥。它值得你花几分钟认真对待。
在这套环境里,密钥是什么
在 DSHBox 中,模型一侧是在 DSH WebUI 里配置的:一个接入点、一个模型名、
一个 API 密钥。DSH 把密钥和它自己的配置一起存放在
user-data/.dsh,位于应用私有存储内。安卓应用本身不索要密钥,
也不保留副本。
配好之后,每次补全请求都带着这把密钥发往你设置的接入点。中间没有 DSHBox
账号——密钥就是你与服务商之间的全部关系。
谁真的能读到它
运行在应用环境里的任何东西都能。Debian guest 与安卓应用共享同一个 UID,
而 PRoot 是兼容层,不是安全边界。你在终端里跑的脚本、DSH 应模型要求执行的
命令,读的是同一块存储。
实用结论:密钥的安全性完全等于你运行的代码的可信度。如果一段来路不明的
脚本你不会在笔记本上跑,就别在密钥旁边跑。完整分析见
《PRoot 不是沙箱》。
保护密钥的习惯
- 绝不把密钥粘贴进提示词。对话里的内容会成为会话历史,
而会话历史会作为上下文发给服务商。
- 绝不把密钥写进
/root/projects 下的文件。
那是你的工作区,工作区里的东西迟早进仓库;被提交的密钥比任何疏忽都活得久。
- 密钥只放在配置里。
user-data/.dsh 是应用私有的,
仓库里的 .env 不是。
- 优先用带消费上限的密钥。服务商支持限额就一定要设。
- 泄露就轮换。密钥泄漏不是教训,是待办:吊销旧的,换新的。
日志和导出会记住
终端保留最近 150 行命令历史,诊断视图分别保留 DSH、沙箱和 guest 命令日志的
最近 150 行,都可以在"设置 → 诊断与日志"里导出。密钥可能藏在三个地方:
- 粘贴进命令的密钥(比如
export API_KEY=...)会留在终端历史里;
- guest 命令可能出现在导出的诊断日志中;
- 粘贴进聊天消息的密钥会留在会话历史里。
这些内容不会自己离开设备,真正的风险发生在你分享的时候:把导出文件附到
问题报告之前,先搜一遍密钥、涂掉,再上传。
备份里也有密钥
包含配置的工作区备份会一并复制 user-data/.dsh——密钥也在里面。
下载目录里躺着的导出压缩包就是一个秘密,请按秘密对待。备份包含哪些内容,
见 《DSHBox 把数据存在哪,怎么备份》。
DSHBox 不做的事
出于诚实,把不提供的东西也列出来:没有密钥保险库,不宣称静态加密,
也不会替你擦除终端历史。应用给你私有存储和一个真终端,其余靠你的习惯。
配置服务商之前,过一遍这份清单:
|
| | 检查项 | 为什么重要 |
| 密钥只在 DSH WebUI 配置中输入 | 配置存储是应用私有的;提示词、脚本和仓库都不是 |
| 给密钥设置了消费上限 | 泄漏时把损失封顶 |
| 分享前先涂掉终端与诊断导出里的敏感内容 | 两者都可能带最近 150 行命令 |
包含 .dsh 的备份按秘密对待 | 配置备份等于密钥副本 |
| 泄漏过的密钥已轮换 | 泄漏之后唯一可靠的补救 |
会话期间到底有什么数据离开设备,见
《"本地运行"到底意味着什么》;
第一次配置密钥的完整流程,见
《第一个 DSH 会话》。