Files
mnote/skills/mnote-vault/SKILL.md
T
Agent Board 262e66b02e feat: purge legacy agent hosts and land vault Chrome extension path
Retire ACP/Hermes/OpenCode surfaces and rename hermes_tools to
mnote_agent_tools so Page AI stays on Pi Lab only. Add Chrome vault
extension + extension token route, pre-release purge design, and soft-retire
legacy smokes for the small-group production cut.
2026-07-25 14:25:37 +08:00

120 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: mnote-vault
description: >
MNote AI 密码本(多 agent 唯一策略)。读密与 login/sessionmnote-vault CLI + capability token(不依赖 mnote-web)。
登录态为每账号独立 session 文件;禁扫 .mnote/vault 文件。
---
# MNote 密码箱 / AI 密码本
**SSOT**`/home/lix/.agent-infra/vault-policy.md`
**设计**
- `design/12-vault/process/12-2-vaultd-local-token-agent-read-path-v1.md`agent 读密 / login
- `design/12-vault/process/12-3-chrome-extension-vault-save-v1.md` §5.6 / §6.5(每账号 session 文件;扩展只写入)
## 读密稳态(P0 · 不依赖 mnote-web
### 可执行入口(agent 必看 · 不要自己 find
| 优先级 | 路径 | 说明 |
|--------|------|------|
| **1(默认)** | `mnote-vault` | 已装到 `~/.local/bin/mnote-vault`symlink |
| **2(绝对路径)** | `/home/lix/.local/bin/mnote-vault` | PATH 异常时直接用 |
| **3(源码构建产物)** | `/mnt/Data1T/mnote/rust/target/debug/mnote-vault` | 开发树;**不要**在 `/home/lix``find` 全盘 |
```bash
# 一次(人 / 安装):签发 token(cwd 任意)
mnote-vault issue-token --agent paseo --ttl 90d
# 或绝对路径:
# /home/lix/.local/bin/mnote-vault issue-token --agent paseo --ttl 90d
# Agent 每次(已知 idcwd 任意,不要求在 mnote 仓库)
export MNOTE_VAULT_TOKEN_FILE="${MNOTE_VAULT_TOKEN_FILE:-$HOME/.config/mnote/vault-tokens/default.token}"
mnote-vault list
mnote-vault resolve --id <id> --field password
# 管道只要明文:
mnote-vault resolve --id <id> --field password --raw
```
**故障排查顺序**(≤2 步,禁止全盘搜索二进制):
1. `command -v mnote-vault || ls /home/lix/.local/bin/mnote-vault`
2. `mnote-vault doctor``tokenValid=false` 时只跑 `issue-token`**不要**起 3000
| 命令 | 用途 |
|------|------|
| `doctor` | workspace / token / hmac 状态(无明文) |
| `issue-token` | 签发 capability token**不是** master key |
| `whoami` | 当前 token claims |
| `list` / `get` | L0 选型;无密码/cookie 明文;可见 `hasLoginSession` |
| `resolve` | **取密**;字段 `password` / `apikey` / `token` 等;审计无 value |
| `login` | **优先复用登录态**;无/过期则 api_first 或 human_required |
| `session` | 浏览器/人机验证后回写 Cookie(写 session 文件;不启 3000 |
| `serve` | 可选 UDS vaultdCLI 默认 sock→内嵌 fallback |
**禁止**:为读密 / login / session 去 `auth-e2e` / 起 3000 / 用 cookie 调 `/api/vault/ai/*`
**禁止**`Read` / `cat` / `grep` `.mnote/vault/**`(含 `entries/``sessions/`)。
`scripts/mnote-vault-cli.js` 的 web 路径仅调试 UI。
## 登录态文件(每账号一份 · 12-3)
磁盘(AI 本 / 用户 vault 同结构):
```text
{workspace}/.mnote/vault/
entries/{credId}.md # 账号密码;勿手读
sessions/{credId}/primary.json # 主账号登录态
sessions/{credId}/{accountId}.json
```
- **写入口(人)**:Chrome 扩展默认保存登录态 → `PUT …/session`;或 Agent `mnote-vault session`
- **读入口(AI**:只经 `login` / `session` /P1`resolve --field session`
- frontmatter 内旧 `loginSession`:兼容读;**新写一律走 session 文件**。
- 扩展写入的是**人用 vault**Agent 默认读 **AI 本** → 须用户 **share-to-ai**(会连同 session 文件复制)。
## 登录稳态(外站 cookie · 12-2 P1d + 12-3
需要外站已登录状态(Cookie)时:
```bash
# 1) 优先复用已有 session(读 sessions/…json;无 HTTP 出站)
mnote-vault login --id <id>
# 多账号:
mnote-vault login --id <id> --account-id <accId>
# 2a) mode=session | reused | ok → 用响应里的 cookieHeader
# (仅进程内/管道使用;禁止贴进聊天、commit、issue
# 2b) human_required / CFchrome-bridge 登录后回写
mnote-vault session --id <id> --cookie-header 'name=value; …' --source human_bridge
# 可选:--account-id <accId>
# 3) 强制重新 api_first 登录(忽略未过期 session
mnote-vault login --id <id> --force-refresh
```
| `login` 结果 | Agent 动作 |
|--------------|------------|
| `mode=session` / `reused` / `ok` 且含 `cookieHeader` | 用 Cookie 调目标站 API 或注入浏览器 |
| `mode=human_required` | chrome-bridge / 人完成验证 → `session` 回写 → 再 `login` |
| 无 session 且 api_first 失败 | 查 playbook / 人用扩展是否已 share-to-ai |
- `resolve` / `session` / `login` 写盘:本地 `.mnote/vault/**`core),**不**经 mnote-web。
- `login``api_first` 仅对目标站出站 HTTP。
- 默认 session TTL7 天(`MNOTE_VAULT_SESSION_TTL_HOURS`)。
## 与 Chrome 扩展的边界
| 角色 | 通道 | 鉴权 |
|------|------|------|
| 人:外站保存账号+登录态 | 扩展 → mnote-web `/api/vault/*` | human Bearer**非** agent token |
| AI:读密 / 复用登录态 | `mnote-vault` CLI → core | capability token |
扩展 **不是** agent 通道。人保存后若要 AI 用:在确认层勾选 **同步到 AI 密码本**(或工作台 share-to-ai)。
## 硬规则
1. 禁 file 扫 `.mnote/vault/**`(含 sessions
2. 聊天不贴 password / cookieHeader / token
3. Token `0600`;故障先 `issue-token`,不要默认起 3000
4. 需要登录态时 **先 `login`**,不要先 `resolve` 密码再手拼 Cookie