| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/usr/bin/env node
- const fs = require('fs');
- const os = require('os');
- const path = require('path');
- const args = process.argv.slice(2);
- const tokenArg = args.find(arg => !arg.startsWith('--'));
- const token = tokenArg || (args.find(arg => arg.startsWith('--token=')) || '').slice(8);
- if (!token) {
- console.log('用法: node scripts/tools/set-voc-token.js <session-token>');
- console.log('示例: node scripts/tools/set-voc-token.js r:1234567890abcdef1234567890abcdef');
- process.exit(1);
- }
- if (!/^r:[0-9a-f]{32}$/i.test(token)) {
- console.error('无效 token:应为 Parse session token,格式示例 r:1234567890abcdef1234567890abcdef');
- process.exit(1);
- }
- const configDir = path.join(os.homedir(), '.openclaw');
- const configPath = path.join(configDir, 'voc-credentials.json');
- let config = {};
- if (fs.existsSync(configPath)) {
- try {
- const raw = fs.readFileSync(configPath, 'utf-8').trim();
- config = raw ? JSON.parse(raw) : {};
- } catch (error) {
- console.error(`读取现有配置失败: ${error.message}`);
- process.exit(1);
- }
- }
- config.vocToken = token;
- try {
- fs.mkdirSync(configDir, { recursive: true });
- fs.writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, 'utf-8');
- } catch (error) {
- console.error(`写入配置失败: ${error.message}`);
- process.exit(1);
- }
- const masked = `${token.slice(0, 6)}...${token.slice(-4)}`;
- console.log(`已写入 vocToken: ${masked}`);
- console.log(`配置文件: ${configPath}`);
|