feat: vault core/CLI/workbench, vaultd token path, filetree view-state cleanup

Land password-vault dedicated workbench and mnote-vault-core/CLI, agent token
read path design, vault transport split, and retire obsolete filetree smokes.
Ignore local vault reimport scripts that trip secret scanners.
This commit is contained in:
Agent Board
2026-07-24 11:36:06 +08:00
parent b798f628ee
commit bc6f8488ee
41 changed files with 13072 additions and 2316 deletions
+48 -35
View File
@@ -1,53 +1,66 @@
---
name: mnote-vault
description: >
MNote AI 密码本(多 agent 唯一策略)。登录优先 mnote.vault.login(复用/刷新 session);
取密 mnote.vault.resolve;禁扫 .mnote/vault 文件。Cloudflare 时人机验证后 session 回写
MNote AI 密码本(多 agent 唯一策略)。读密与 login/sessionmnote-vault CLI + capability token(不依赖 mnote-web)。
禁扫 .mnote/vault 文件
---
# MNote 密码箱 / AI 密码本
**SSOT**`/home/lix/.agent-infra/vault-policy.md`
**SSOT**`/home/lix/.agent-infra/vault-policy.md`
**设计**`design/12-vault/process/12-2-vaultd-local-token-agent-read-path-v1.md`
## 稳态:登录(目标约 3 次 shell:鉴权 + list? + login×2
## 读密稳态(P0 · 不依赖 mnote-web
```
# 本机 mnote-web 鉴权(一次性,非 vault
eval $(node scripts/mnote-vault-cli.js auth-e2e)
二进制:`rust/target/debug/mnote-vault`(或 `cargo run -p mnote-vault --`)。
# 可选 list 找 id;已知 id 则跳过
node scripts/mnote-vault-cli.js list
```bash
# 一次(人 / 安装):签发 token
cargo run -q -p mnote-vault --manifest-path rust/Cargo.toml -- issue-token --agent paseo --ttl 90d
# 核心:复用 session / 登录并保存
node scripts/mnote-vault-cli.js login --id <id>
# 再调一次应 reused=true
# Cloudflare:人验证后
node scripts/mnote-vault-cli.js session --id <id> --cookie '...'
# Agent 每次(已知 id
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
```
Pi`mnote.vault.login` / `session` 同语义。
**禁止**每次:读 policy、猜 /api/auth 路径、list+resolve+多次 chrome 试错。
| 工具 | 用途 |
| 命令 | 用途 |
|------|------|
| `mnote.vault.login` | **首选**:复用/刷新登录态 |
| `mnote.vault.session` | 人机验证后回写 Cookie |
| `mnote.vault.list` / `get` | 选型;L0 无密文 |
| `mnote.vault.resolve` | 仅当需要密码本身(非登录会话) |
| `doctor` | workspace / token / hmac 状态(无明文) |
| `issue-token` | 签发 capability token**不是** master key |
| `whoami` | 当前 token claims |
| `list` / `get` | L0 选型;无密码明文 |
| `resolve` | **唯一取密**;审计无 value |
| `login` | 复用未过期 session,或 api_first 出站登录并写回 session |
| `session` | 浏览器/人机验证后回写 Cookie(不启 3000 |
| `serve` | 可选 UDS vaultdCLI 默认 sock→内嵌 fallback |
HTTP/CLI 同语义:`/api/vault/ai/items/{id}/login|session``scripts/mnote-vault-cli.js login|session`
**禁止**:为读密 / login / session`auth-e2e` / 起 3000 / 用 cookie 调 `/api/vault/ai/*`
`scripts/mnote-vault-cli.js` 的 web 路径仅调试 UI。
## 登录稳态(P1d · 同样不依赖 mnote-web
需要外站 cookie 时:
```bash
# 优先复用已有 session(无 HTTP 出站)
mnote-vault login --id <id>
# human_required / CFchrome-bridge 登录后回写
mnote-vault session --id <id> --cookie-header 'name=value; …' --source human_bridge
# 强制重新 api_first 登录(忽略未过期 session
mnote-vault login --id <id> --force-refresh
```
- `resolve` / `session` 写盘:本地 `.mnote/vault/**`core)。
- `login``api_first` 仅对目标站出站 HTTP**不**经 mnote-web。
- Cloudflare / captcha → `mode=human_required` + `humanInstructions.cli`,完成后 `session` 回写。
## 硬规则
1. 禁 file/local_file`.mnote/vault/**`
2. 聊天不贴 password/cookieHeader
3. 长期态存在 **AI 密码本条目**session + playbook),不另建文件池
4. 人机验证:本机 **chrome-bridge** / 远程 **Paseo 浏览器**`session` 回写;过期再验证
## 工作流
1. 用户共享条目到 AI 本(自动带默认 playbookemail 优先 + api_first
2. Agent`login(id)`
3. 用返回 cookie 访问站点;或 human_required 后等人回写再 `login`
1. 禁 file 扫 `.mnote/vault/**`
2. 聊天不贴 password / cookie / token
3. Token `0600`;故障先 `issue-token`,不要默认起 3000