惠子
AI代理的安全秘密管理器。Keiko让Claude Code等人工智能工具使用API令牌、密码和凭据 从未见过实际值.
问题
人工智能代理需要API令牌来完成有用的工作——调用API、部署代码、管理基础设施。但是,通过AI的上下文窗口传递秘密值是一种安全风险:它们出现在对话日志、工具响应中,并可能出现在训练数据中。
惠子是如何解决的
惠子使用 代理模式人工智能特工告诉Keiko *运行什么命令* 和 *它需要什么秘密*,但从未见过秘密值本身:
AI Agent ──► Keiko MCP Server ──► Keiko Backend
│ │
resolves secrets ◄── HTTPS ──┘
│
spawns: bash -c "your command"
with secrets as env vars
│
captures output
sanitizes (redacts leaked values)
│
AI Agent ◄── clean output onlyAI表示 *“使用我的API令牌运行此curl命令”* --Keiko将令牌作为环境变量注入,运行命令,扫描输出中的任何泄漏值,对其进行编辑,并返回干净的输出。
快速开始
1.部署后端
后端存储加密的机密(AES-256-GCM),并通过HTTPS提供服务。使用Docker部署到任何具有持久存储的平台:
# Generate an encryption key
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# Deploy (Railway, Render, Fly, Docker Compose, etc.)
# See docs/setup-guide.md for full instructions2.设置MCP服务器
MCP服务器在每台需要访问机密的机器上运行。它是一个只有2个依赖项的独立包,不需要本机编译。
cd packages/mcp
npm install
npm run build
node dist/index.js --store-token YOUR_TOKEN3.连接到克劳德代码
添加 ~/.mcp.json:
{
"mcpServers": {
"keiko": {
"command": "node",
"args": ["/absolute/path/to/keiko/packages/mcp/dist/index.js"],
"env": {
"KEIKO_URL": "https://your-keiko-backend.example.com"
}
}
}
}重新启动克劳德代码。问 *“检查Keiko会话状态”* 以验证。
AI如何使用它
一旦连接,人工智能就会发现可用的秘密,并在命令中使用它们——而永远看不到这些值:
AI: list_secrets
→ my_api_token [Bearer token in Authorization header]
AI: run_with_secrets
command: curl -s -H "Authorization: Bearer $API_TOKEN" https://api.example.com/data
secrets: [{env: "API_TOKEN", name: "my_api_token"}]
→ {"data": [...]} (secret values redacted from output)每个秘密包括 auth_pattern 和 auth_instructions 元数据,因此AI知道如何在没有外部文档的情况下使用它。
MCP工具
| 工具 | 目的 |
|---|---|
run_with_secrets | 运行一个命令,将secrets作为env变量注入 |
list_secrets | 发现可用的秘密(仅限名称和身份验证模式) |
session_status | 检查身份验证状态 |
lock | 终止开关--撤销所有活动会话 |
set_ttl | 配置会话到期时间(0.5-24小时) |
add_secret | 创建新秘密 |
get_guide | 获取使用指南 |
安全
- 静态加密 --AES-256-GCM,每密随机IV
- 哈希认证令牌 --64个字符的十六进制令牌,在数据库中哈希SHA-256,明文显示一次
- 输出净化 --扫描原始、base64和URL编码形式的命令输出以查找秘密值
- 会话管理 --可配置TTL、自动刷新、全局终止开关
- 审计跟踪 --使用令牌ID、会话ID、IP和时间戳记录的每个操作
秘密值 从不 出现在AI工具响应、对话日志或客户端计算机上的磁盘上。
建筑
keiko/
├── packages/mcp/ # MCP server (runs on your machine)
│ ├── src/
│ │ ├── server.ts # 7 tool registrations
│ │ ├── client.ts # HTTPS client to backend
│ │ ├── executor.ts # Shell spawner + env var injection
│ │ ├── sanitizer.ts # Output redaction
│ │ └── keychain.ts # OS keychain (Win/Mac/Linux)
│ └── package.json # 2 deps: @modelcontextprotocol/sdk + zod
│
├── src/ # Backend API (runs on your server)
│ ├── api/ # Express routes, auth, crypto
│ └── ui/ # EJS admin templates
│
└── Dockerfile # Multi-stage production buildMCP服务器和后端是完全独立的软件包。MCP服务器具有 零本地依赖关系 — npm install 无需编译器或 --ignore-scripts.
平台支持
| 环境 | 令牌存储 | 注释 |
|---|---|---|
| Windows | Windows凭据管理器 | 通过Git Bash(而非WSL)运行的命令 |
| macOS | macOS钥匙扣 | 系统bash |
| Linux | libsecret | 需要 secret-tool |
| Docker/CI | KEIKO_TOKEN env var | 不需要密钥链 |
文档
- 安装指南 -所有环境、后端部署、故障排除、API参考和配置选项的完整设置说明
技术栈
后端: Node.js 20、TypeScript、Express、SQLite(better squelite3)、EJS、谷歌OAuth
MCP服务器: Node.js 20、TypeScript、MCP SDK v1.x、Zod
部署: Docker(多阶段构建),任何具有持久卷的平台。经过测试 铁路.
