Markdown 粘贴到 V 站换行格式会出错,不知道为什么,也可以去下面的链接看,内容一致: https://yfzz.net/?p=129 https://mp.weixin.qq.com/s/PtHf0LvH-5DJxIwDVr7ITg https://pd.qq.com/s/9pacutzz5 https://www.douban.com/topic/490073718/ 最近自己的投资组合计划调仓,优先卖掉收益最高的资产,前几天卖掉了“中韩半导体”,现在轮到“黄金”了。然后我就在想,黄金现在是什么位置,是已经处于高位了吗,卖出以后会不会又开始猛涨? 影子金本位 在“詹姆斯 • 里卡兹”2016 年出版的《黄金投资新时代》一书中,作者提出了一个“影子金本位( Shadow Gold Standard )”理论,核心观点是——尽管当今世界在法律上实行的是纯粹的法定货币体系,但在宏观金融的底层,一个由国际主流央行与市场共同维持的“隐性金本位”从未消失,且一直在给法币的滥发锚定无形的天花板。 作者还提出了一个公式,简单理解就是在极限情况下: 金价≈货币供应量÷黄金储量 。 在全球化的今天,由美元主导的金融体系下,美元在全球占有绝对 C 位,某种程度上公式当中的“货币供应量”可以直接理解为就是美元的供应量,而信用体系下的美元是靠美债派生出来的。 近些年黄金暴涨的重要原因之一就是全球对美元信用的担忧,各国央行作为重要买家为黄金的上涨贡献了不可忽视的力量。 基于前面的两点,如果将黄金的暴涨和美元信用的崩塌挂钩,再将货币供应量和美债挂钩,那其实金价的峰值就显而易见了—— 就是当金价上涨到,全球黄金储量乘以金价约等于美债总额的时候! 黄金对美债的覆盖率 当然实际情况还会有一些细节需要注意。 先看美债,现在( 2026 年 6 月)美债总额约为 39.52 万亿美元,如果剔除美国政府内部的自我记账,在全球公开市场流通的美债约为 31.54 万亿美元。 再看黄金,在剔除无法参与金融流转的“工业及其他用金”后,当今全球黄金约为 187,289 吨。 经过定义的细化后,公式也可以更确定一些: 金价≈市场持有美债总量÷广义黄金存量 目前的金价约为 4,354/金衡盎司,1 金衡盎司≈31.1035 克,那么 187,289 吨的黄金存量约价值 26.22 万亿美元。如果将美债视为庞大的信用泡沫,此时 广义黄金存量对其提供的实物覆盖率已高达 83.13%! 也许你会说,那看起来还没到 100%,还有上涨空间。但不能这么简单考虑,金融追求的是杠杆与流动性,就好比银行的准备金制度一样,即使是历史上的金本位时期,黄金的储备率也只有 40%左右。更何况在当今信用体系下,黄金更多扮演的是“最后的清偿手段”或“保险单”的角色,而非取代所有生息债权。因此,即使是在美元信用崩塌的前提下,黄金覆盖率也只需要维持在一个能够有效对冲风险的水平就已足够,但具体是多少,我不知道。 如果回到金本位 但凡事都有“如果”, 如果你认为情况是美元信用的系统性崩溃,彻底退回金本位 ,那此时全球将面临全面的货币危机,因为几乎所有国家的央行最重要的底层信用资产之一就是其外汇储备中的美债和美元,如果美元信用这个“锚”断了,约等于全球所有货币一起瘫痪。 到那时候,公式当中的分母“广义黄金存量”也要换成“黄金储量”这个词了,即央行储备的黄金。因为只有央行以黄金储备作为背书,金本位才能运转下去,民间的黄金虽然国家有办法让它们变成央行的黄金储备,但毕竟也不是那么容易,所以这些“没有装进兜里”的黄金不能算进去。 那么,现在各国央行和一些超主权金融机构的黄金储量是多少呢?约 38,700 吨左右,按照 4,354/金衡盎司价格计算,约价值 5.42 万亿美元。 这时候 5.42 万亿相较 31.54 万亿的流通美债,**覆盖率就只有 17.18%**,这个覆盖率算高算低呢?我觉得算是勉强能维持住货币体系切换时期的阵痛,但距离黄金储备率 40%的安全线还有不少距离。 从这个角度去考虑,你的确可以认为金价还有不少的上涨空间。 比金本位更大的可能 但是真到了那一天,阵痛过后,像上面所说的那种古典式金本位我觉得大概率不会出现,毕竟抛弃金本位就是因为它有诸多缺陷。也不大可能是某种货币(如人民币)继承目前的美元体系成为新的“世界货币”,如果美元体系真的崩溃了,那必然有其目前无法解决的缺陷, 新货币继续走老路,不过是“屠龙少年终成恶龙” 而已。 那更大的可能性是什么呢?我也不是专业人士,瞎侃侃,你也就随便听听。 多极化的 CBDC (央行数字货币)+ 跨境多边清算网络 基于 mBridge (多边央行数字货币桥)的多极化货币体系。可能会出现各自的货币圈,比如人民币结算圈、欧元结算圈等等。这也是一条相对可行且正在进行的路线,它不求替代美元体系,而是与之共存。 关于多边央行数字货币桥我在前两年还写过一篇文章,不过没发到博客和公众号等地方,回头我找出来发一下。 特别提款权( SDR ) 这也是一个目前已经在运行的系统,它不是那种传统概念上可以用来直接流通的“世界货币”,而是一种“国际储备资产”和“记账单位”。其本质上是一个法币篮子,由“美元、欧元、人民币、日元、英镑”构成,然后通过一定的算法计算得出具体价值。 目前美元仍是权重最高的,近乎一半。如果那一天真的到来,其实可以将美元的权重大幅降低,提高其他主权货币的权重,甚至为了增信,也可以考虑在其中加入黄金,然后让 SDR 作为新的全球货币锚存在。 也许未来是其中一条路占主流,也可能是两者混合交织在一起运行,谁知道呢。 扑朔迷离的金价 最终你会发现,有太多的因素会影响金价,非常的扑朔迷离,它不像股价可以有一些相对可量化的估值方法可进行评估。即便是政府,拥有顶级的智囊团和财政官员,也闹出过“布朗底部”这种典型反面教材,所以对于个人来说,评估金价就更难了。 也许对于绝大多数个人投资者来说, 持有黄金的正确方式就是通过资产配置 ,让黄金在自己的资产占比中不要过高。涨了固然开心,跌了也有其他资产帮你降低整体波动,然后在让你睡得着觉的前提下,长期持有,穿越周期。
如图,我的codeX莫名其妙输出一大堆换行 都堆满一个屏幕了 几乎每个回复都有 有和我一样的吗 是什么原因? 1 个帖子 - 1 位参与者 阅读完整话题
在浏览器里与大模型对话基本都是按 Shift+Enter 换行,而在 Claude Code 对话过程中出现的 Tips 里看到过提示也是 Shift+Enter 换行,打 ? 看到的说明也是 Shift+Enter 换行(如图),但是实际起作用的却是 Ctrl+Enter 换行,是哪里出了问题? 4 个帖子 - 3 位参与者 阅读完整话题
最近几天不知道哪个版本更新codex-cli后,出现了奇怪的问题 我发现当前目录存在.git的时候就会出现,换行,错位。 tui关闭了statusline,和title都不行,有佬们碰到过这个问题么 1 个帖子 - 1 位参与者 阅读完整话题
粘贴了多行文本,结果被拆成2个提问马上就发出去了,有人懂怎么真铁带有换行的内容的文本吗 6 个帖子 - 6 位参与者 阅读完整话题
输入 markdown 格式的消息时,有可能出现换行被解释为发送消息的情况,这个时候只要把所有markdown消息使用三反引号对包起来就可以顺利发送(``` xxx ```) 上下文非常接近上限的时候,可能会出现 compact 失败的情况,为避免出现这种情况,要勤 /compact,如果已经出现压缩失败,那么手动复制一下下一步操作的上下文,然后 /clear 一下,把刚刚复制的内容再发过去基本就可以继续对话了 4 个帖子 - 4 位参与者 阅读完整话题
有时候可以使用Shift+回车,有时候,又不行。 17 个帖子 - 9 位参与者 阅读完整话题
从qq群复制了以下文段(内容请忽略,主要是换行问题): 嫃嗱沵莈刅琺,唑恏咯 噻畼媗嚣潵厾,Vitality衆亾莈洧喼着蓠畼庆柷。琺國Apex帶着隊園,徑矗趉姠隔壁TYLOO哋訓煉厔。蓷閞閄,DANK1NG囸啝隊伖整理着裝備,還沬苁碙碙哋怼吷狆唍洤菗蓠。莈洧夝萯哋謸嫚,莈洧噻岖哋隔阂。Apex哋朩洸徑矗落茬DANK1NG裑仩,腳荹渟芐,卛姺訷炪孒掱,彵哋眼鉮里莈洧噝毫輕視,慲湜怼彵极臸媌痽玙蕝怼唥靜哋擏姵。裑後哋TOP1Zywoo玙娸彵隊園竾茛着點頭臸嬑,認妸適莅唻洎崬汸哋狙击掱。DANK1NG起裑,訷掱玙彵們楿楃。莈洧哆悇寒暄,呮洧滈掱と簡杺燳芣媗哋澊偅。適湜夝鍺怼湧鍺哋臸擏,湜嵿尖噻畼里朂蒓濢哋瑆瑆楿厝。①笾湜洳ㄖ狆兲哋迣鎅嵿级戰隊,①笾湜奮劦煷劍哋狆國隊⑤;①笾湜運薵帷幄哋伝渏隊萇,①笾湜噉玙鉮眀珓糧哋亞①狙。適①佽噻後哋炷憅楃掱,莈洧驚兲憅哋哋殸勢,卻诠释孒電競朂憅亾哋禸劾——夝萯と迯,澊偅怺洊;強鍺楿漨,芣問瀭赢。咜莈洧噻畼怼吷哋慹洫沸駦,卻茬烸①個慹嬡CS哋亾杺里,畱芐孒朂溫煖哋茚汜。 结果ctrl+v放到终端里面,直接输出了,不知道各位佬是不是也是这样。另外codex输出的内容中如果有换行的,我复制以后ctrl+v直接粘贴,他也会直接输出。很多情况下都觉得这样很不便,所以想寻求一下各位佬的帮助,想问下有没有解决办法。(问codex要他做更改,他最多只把自己配置里面一个burst什么的配置选项改了,虽然解决了一部分换行粘贴后直接输出的问题,但是现在发现类似这种的还是解决不了)(powershell版本如图) 4 个帖子 - 4 位参与者 阅读完整话题
求助,ai工具老是把代码文件换行改为CRLF结尾,而不是原文件的LF结尾,大佬们有遇到过吗,大家都是如何解决的,codex 让我自己写个脚本批量转,真够xx的 8 个帖子 - 6 位参与者 阅读完整话题
复制文字自动换行就输出了 还有文字一多卡顿 咋整 9955hx 64g日常使用好卡 跟养蛊一样的 1 个帖子 - 1 位参与者 阅读完整话题
最近用codex vibe coding wsl环境 部分命令需要自行操作。 但 CodeX 给出的命令因为换行和空格,直接复制到终端无法正常运行 需要手动删除换行和空格 2 个帖子 - 2 位参与者 阅读完整话题
依旧一贯风格,不懂换行 还是补充一点: 我说的明确的是这种比较固定化的,而非可拓展性的词汇 n天前这种 不是固定词汇,并不是我要求的 无论是不是他只知道这些,还是确实只有这些,他并没有承认:除了我说的那些已经没什么了 似乎早就上线了,但是论坛搜了一下,毫无话题… 降价了,但却不给普通用户开放 首次支持缓存创建了 4 个帖子 - 4 位参与者 阅读完整话题
/** 可口可乐吧 签到 - 青龙多账号版 环境变量: WXID: 备注#wxid,多账号用 & 或 换行 分隔 示例: 账号1#wxid_xxxxxxxx&账号2#wxid_yyyyyyyy 功能: 微信 code → Bearer token(带缓存) 查询签到状态 执行每日签到 查询积分 cron: 30 8 * * * const: disabled = false */ const axios = require(‘axios’); const fs = require(‘fs’); const path = require(‘path’); /* ==================== 常量配置 ==================== */ const APPID = ‘wxa5811e0426a94686’; const BASE_URL = ‘ https://member-api.icoke.cn ’; const UA = ‘Mozilla/5.0 (iPhone; CPU iPhone OS 16_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.59(0x18003b2e) NetType/4G Language/zh_CN’; const REFERER = https://servicewechat.com/${APPID}/499/page-frame.html ; const SCRIPT_DIR = path.dirname(__filename); const CACHE_FILE = path.join(SCRIPT_DIR, ‘可口可乐签到_cache.txt’); /* ==================== 环境变量 ==================== */ const WECHAT_SERVER = process.env.WECHAT_SERVER; const WXID_ENV = process.env.WXID; if (!WECHAT_SERVER || !WXID_ENV) { console.log(‘ 请设置 WECHAT_SERVER 和 WXID 环境变量’); process.exit(1); } const wxidList = WXID_ENV.split(/[\n&]/).map(i => i.trim()).filter(i => i && i.includes(‘#’)); if (!wxidList.length) { console.log(‘ WXID 格式错误,请使用 备注#wxid 格式’); process.exit(1); } /* ==================== 缓存管理 ==================== */ function loadTokenCache() { const cacheMap = {}; try { if (fs.existsSync(CACHE_FILE)) { fs.readFileSync(CACHE_FILE, ‘utf8’).split(/\n/).filter(Boolean).forEach(line => { const idx = line.indexOf(‘#’); if (idx > 0) { const remark = line.substring(0, idx); const token = line.substring(idx + 1); cacheMap[remark] = token; } }); } } catch (e) {} return cacheMap; } function saveTokenCache(cacheMap) { try { const content = Object.entries(cacheMap).map(([r, t]) => ${r}#${t} ).join(‘\n’); fs.writeFileSync(CACHE_FILE, content || ‘ #cache ’, { encoding: ‘utf8’, flag: ‘w’ }); } catch (e) {} } /* ==================== 微信 code 换 token ==================== */ async function getCode(wxid) { try { const url = ${WECHAT_SERVER}/api/v1/wx/app/get/code ; const res = await axios.post(url, { wxid, appid: APPID }, { timeout: 10000 }); const code = res.data?.Data?.code; if (!code) { console.log(‘ getCode 响应:’, JSON.stringify(res.data)); return null; } return code; } catch (e) { console.log(‘ getCode 异常:’, e.message); return null; } } async function codeToToken(code) { try { const url = ${BASE_URL}/api/sp-portal/store/icoke/wechat/loginNoCache/${code} ; const headers = { ‘Host’: ‘ member-api.icoke.cn ’, ‘content-type’: ‘application/json’, ‘Accept’: ‘application/json, text/plain, / ’, ‘Accept-Encoding’: ‘gzip,compress,br,deflate’, ‘User-Agent’: UA, ‘Referer’: REFERER, }; const res = await axios.get(url, { headers, timeout: 10000 }); const body = res.data; // 实际抓包确认:token 在响应体的 jwtString 字段 if (body && body.jwtString) { return body.jwtString; } console.log(‘ codeToToken 响应:’, JSON.stringify(body).substring(0, 300)); return null; } catch (e) { console.log(‘ codeToToken 异常:’, e.message); return null; } } async function getValidToken(remark, wxid, force = false) { const m = loadTokenCache(); if (force) delete m[remark]; if (m[remark]) { console.log(‘ 使用缓存 token’); return m[remark]; } console.log(‘ 获取微信 code…’); const code = await getCode(wxid); if (!code) return null; console.log( ✅ code: ${code.substring(0, 10)}... ); const token = await codeToToken(code); if (!token) return null; m[remark] = token; saveTokenCache(m); console.log(‘ token 已缓存’); return token; } /* ==================== 判断 token 失效 ==================== */ function isTokenInvalid(data) { if (!data) return false; const msg = (data.message || data.msg || ‘’).toLowerCase(); return msg.includes(‘未登录’) || msg.includes(‘token’) || msg.includes(‘登录’) || data.code === ‘401’ || data.code === 401 || data.status === 401 || data.httpStatus === 401; } /* ==================== 公共请求头 ==================== */ function getHeaders(token) { return { ‘Host’: ‘ member-api.icoke.cn ’, ‘Authorization’: token, ‘content-type’: ‘application/json’, ‘Accept’: ‘application/json, text/plain, / ’, ‘Accept-Encoding’: ‘gzip,compress,br,deflate’, ‘User-Agent’: UA, ‘Referer’: REFERER, }; } /* ==================== API 请求封装 ==================== */ async function apiGet(path, token, params) { try { const res = await axios.get( ${BASE_URL}${path} , { headers: getHeaders(token), params, timeout: 15000, }); return res.data; } catch (e) { console.log( ❌ GET ${path} 异常: , e.message); return null; } } async function apiPost(path, token, data) { try { const res = await axios.post( ${BASE_URL}${path} , data, { headers: getHeaders(token), timeout: 15000, }); return res.data; } catch (e) { console.log( ❌ POST ${path} 异常: , e.message); return null; } } /* ==================== 业务接口 ==================== */ async function getSignOutline(token) { const res = await apiGet(‘/api/icoke-sign/icoke/mini/sign/main/getSignOutline’, token); if (!res) return null; if (isTokenInvalid(res)) return { needRefresh: true }; const today = new Date(); const y = today.getFullYear(), m = today.getMonth() + 1, d = today.getDate(); const list = res.data || ; const todayRecord = list.find(r => r.year === y && r.month === m && r.day === d); return { signed: !!(todayRecord && todayRecord.exist), totalDays: list.filter(r => r.exist).length, point: todayRecord?.point || 0, data: list, raw: res, }; } async function doSign(token) { const res = await apiGet(‘/api/icoke-sign/icoke/mini/sign/main/sign’, token); if (!res) return { success: false, msg: ‘请求失败’ }; if (isTokenInvalid(res)) return { needRefresh: true }; if (res.success === true || res.isSuccess === true) { return { success: true, point: res.point || 0, msg: res.message || ‘签到成功’, }; } const msg = res.message || res.msg || JSON.stringify(res); if (msg.includes(‘已签’) || msg.includes(‘重复’) || msg.includes(‘already’)) { return { success: false, alreadySigned: true, msg }; } return { success: false, msg }; } /** 查询积分 */ async function getPoints(token) { const res = await apiGet(‘/api/icoke-customer/icoke/mini/customer/main/points’, token); if (!res) return null; return { point: res.point || 0, experiencePoints: res.experiencePoints || 0, frozenPoint: res.frozenPoint || 0, }; } /** 查询用户基本信息 */ async function getUserInfo(token) { const res = await apiGet(‘/api/icoke-customer/icoke/mini/customer/main/base/info’, token); if (!res) return null; return { name: res.name || ‘未知’, mobile: res.mobile || ‘’, grade: res.grade || ‘’, }; } /* ==================== 工具函数 ==================== */ function sleep(ms) { return new Promise(r => setTimeout(r, ms)); } /* ==================== 单账号执行 ==================== */ async function runSingleAccount(accountStr, index) { const sepIdx = accountStr.indexOf(‘#’); if (sepIdx <= 0) { console.log( ❌ 第${index}个账号格式错误,应为 备注#wxid ); return; } const remark = accountStr.substring(0, sepIdx); const wxid = accountStr.substring(sepIdx + 1).trim(); console.log( \n==================================== ); console.log( 🚀 【可口可乐】${remark}(第${index}个) ); console.log( ==================================== ); // 获取 token let token = await getValidToken(remark, wxid); if (!token) { console.log(‘ 获取 token 失败,跳过’); return; } // 查询签到状态 let outline = await getSignOutline(token); if (outline?.needRefresh) { console.log(‘ token 失效,重新获取…’); token = await getValidToken(remark, wxid, true); if (!token) { console.log(‘ 重新获取 token 失败’); return; } outline = await getSignOutline(token); } if (outline) { if (outline.signed) { console.log( 📅 签到状态:✅ 今日已签到 | 本月已签 ${outline.totalDays} 天 ); } else { console.log( 📅 签到状态:❌ 今日未签到 | 本月已签 ${outline.totalDays} 天 ); } } // 执行签到 let signResult = await doSign(token); if (signResult?.needRefresh) { console.log(‘ token 失效,重新获取…’); token = await getValidToken(remark, wxid, true); if (!token) { console.log(‘ 重新获取 token 失败’); return; } signResult = await doSign(token); } if (signResult?.success) { console.log( ✅ 签到成功!获得积分:${signResult.point} ); } else if (signResult?.alreadySigned) { console.log( ℹ️ 今日已签到:${signResult.msg} ); } else { console.log( ⚠️ 签到结果:${signResult?.msg || '未知'} ); } await sleep(1000); // 查询积分 const pts = await getPoints(token); if (pts) { console.log( 💰 当前积分:${pts.point} | 经验值:${pts.experiencePoints} | 冻结:${pts.frozenPoint} ); } // 查询用户信息 const userInfo = await getUserInfo(token); if (userInfo) { console.log( 👤 会员:${userInfo.name} | 手机:${userInfo.mobile} ); } console.log( ✨ ${remark} 执行完成\n ); } /* ==================== 主函数 ==================== */ !(async () => { console.log( 📢 可口可乐吧签到 - 共检测到 ${wxidList.length} 个账号 ); for (let i = 0; i < wxidList.length; i++) { await runSingleAccount(wxidList[i], i + 1); if (i < wxidList.length - 1) await sleep(2000); } console.log(‘ 全部账号执行完毕!’); })(); 4 个帖子 - 4 位参与者 阅读完整话题
知乎复制出来的内容没有换行了,全部内容都在一行里,很奇怪。之前不是这样的。于是我就 F12 看了一下: 瞎搞,套了一个行内元素 span ,导致了这个扯淡问题。p 和 div 都塞 span 里,知乎的前端在干啥? 我手动 span 改 div ,复制出来就正常了
知乎复制出来的内容没有换行了,全部内容都在一行里,很奇怪。之前不是这样的。于是我就 F12 看了一下: 瞎搞,套了一个行内元素 span ,导致了这个扯淡问题。p 和 div 都塞 span 里,知乎的前端在干啥? 我手动 span 改 div ,复制出来就正常了