包含关键字 typecho 的文章

佬友们,分享一下我最近开发的 Excel 智能数据分析软件–ExcelMind
算是在 L 站第一次分享我的开源项目,希望佬友们多多提 Issue,多多 Star。

下面是演示视频:

这个项目是基于 LangGraph 开发的,支持自然语言查询、多轮对话、流式输出、ECharts 图表可视化 和可视化思考过程。

GitHub 地址:GitHub - stark-456/ExcelMind: AI 智能分析 Excel 文件,对话式完成多场景 Excel 分析任务,解决 Excel 报表分析复杂、效率低等痛点

上传 Excel 文件后,我们可以用自然语言跟 AI 对话,AI 会自主决策,自主调用工具,完成 Excel 的分析任务。
原理呢,其实是只给 AI 看一部分 Excel 的局部,让 AI 了解表结构之后,调用十个工具来完成分析任务,避免 AI 直接看数据做分析带来幻觉,是我觉得做分析必须要考虑到的。

分析过程可视化:

AI 的分析过程,我都尽可能做了显式的输出,并做了前端优化让工具调用更易于阅读,目的是让 AI 做的每一步都是易于追溯的,这样可以让分析过程摆脱黑盒,让我们对分析过程掌控度更高,即使是出错了,也容易改正。

图表分析:

这里我先加入了 bar (柱状图), line (折线图), pie (饼图),scatter (散点图), radar (雷达图), funnel (漏斗图)。你可以指定 AI 输出什么图,如果不指定,AI 会自主决策输出什么图

知识库

考虑到有时候我们的 Excel 文档有很多 AI 不易理解的字段或信息,我加入了知识库功能,会在每次问答前进行召回,这样,有一些特殊需求我们就可以放在知识库里

智能联表

这个是考虑到有时候需要多表联查,但是很多朋友没有数据库基础,这里选定两张表,可以触发 AI 推荐联表的外键跟连接方式,实测,还是很准的,基本上不用自己去考虑怎么联表方式。

实测,模型能力越强,回答越精准,所以推荐佬们用 Sota 模型,站里很多公益站的模型就很不错!

大概功能就是这些,希望有建议的佬随时互动,我会认真看并改进。
以后会不断开发 AI 智能体项目,并开源给大家,希望多多支持!
GitHub 地址:GitHub - stark-456/ExcelMind: AI 智能分析 Excel 文件,对话式完成多场景 Excel 分析任务,解决 Excel 报表分析复杂、效率低等痛点


📌 转载信息
原作者:
fengling666
转载时间:
2025/12/30 10:20:29

书接上回:【Github 开源】Obsidian 插件:obsidian-github-stars-manager
小工具,加了一些小更新,不多, GitHub: 代码仓库

本来想上架官方仓库之后再发的,目前看来遥遥无期,想问点问题,熟悉 Obsidian 插件开发、上架的大佬来解惑一下

1、Obsidian 插件上架周期大概多久,PR 一直处于原地打转的状态
2、有没有什么检验代码规范的插件或者其他工具,每次 PR 都要等待,然后解决 bot 提的不规范代码,目前用的 eslint-plugin-obsidianmd(Claude 给的建议)
3、当前使用 json 存储数据,但是有同学反馈 star 数超过 600 会有卡顿现象,有没有必要换 SQLite 或者 LokiJS(AI 给的建议)

接下来准备做的:

添加标签颜色,同步选择显示颜色
标签信息可修改
删除主题切换功能,鸡肋
优化性能

看看收藏的 L 站大佬们的项目

其他

  1. 随缘更新:能用就行原则
  2. 风格参考:站内看到的各种 github stars 管理项目

感谢站内公益站点!

Anyrouter、Wong、随时跑路、Cubence、Duckcoding、我爱 996

依然暂时提供插件压缩包

github-stars-manager.zip


📌 转载信息
原作者:
sparks
转载时间:
2025/12/30 10:19:06

背景

看过 afimory 这样的开源项目,更多像是纯粹的的照片展览了,与我的需求稍微有点不一样

Mo Gallay

mo gallary 是一个基于 nextjs​honojs 的项目,由于 honojs 的特性,可以直接部署在 vercel,专为摄影爱好者打造的照片博客平台。

类似于博客,但其更偏向于照片叙事,生活分享,个人展示方面

功能

  • 使用 postgreSQL(supabase)
  • 支持评论,精选照片
  • 支持 github,r2 存储源
  • 照片故事
  • 照片 exif 信息参数,色卡盘
  • 画廊多视图切换
  • 夜间模式切换

当前存在博客菜单,感觉和其本质有点出入,未来可能会将博客砍掉

特点 & 未来(目标)

  • 支持文件路径调整
  • 存储源迁移(如 github 迁移到 r2)
  • 照片集锦
  • 组图查看

全部 vibe coding 的项目,bug 有点多,就不便直接开源,待我再打磨打磨

预览地址:

移动端访问问题较多,建议 pc 访问

欢迎提供建议

首页



画廊




管理页面





📌 转载信息
原作者:
shaioo
转载时间:
2025/12/30 10:13:20

下载地址:

特点:

  • 批量操作 - 一键关闭、休眠或复制多个标签页
  • 标签页分组 - 自定义颜色和名称,随心折叠和展开
  • 闪电搜索 - 通过标题、网址或自定义名称实时筛选
  • 快速刷新 - 点击任意网站图标即可刷新页面
  • 自定义命名 - 重命名标签页,告别混乱的标题
  • 拖放排序 - 自由调整标签页和分组的顺序
  • 标签页休眠 - 释放内存,提升浏览器性能
  • 一键恢复 - 标签页关错了?右键菜单轻松找回
  • 明暗主题 - 适配您的浏览偏好
  • 字体大小调节 - 自定义文字大小,打造最舒适的阅读体验



📌 转载信息
转载时间:
2025/12/30 10:11:52

下载最新版本 esimplus,输入优惠码 NYGIFT2026(不是 AFF,是官方活动)就能获取一个月免费美国手机号,快去试试,随时失效,反正我领到了,好像说是只能 ios。领取后要邮件联系激活手机号,怕麻烦的可以润了,我挺怕麻烦的


为了验证是否是个例,我又注册了一个账号,又领到了,不过一个 ip 只能领取一次,这个号码可以更换的,不过是随机更换




📌 转载信息
原作者:
yonxinli
转载时间:
2025/12/30 10:09:57

看着佬友开源了基于智谱的手机助手的 Android 应用,感觉很高级,使用了一下,感觉还是不是我想的那种效果,想到以前的 autojs 就支持了类似的自动化,想着给它加上 mcp 服务端,不就是一个 ai 的自动化工具了吗。

说的做到

在驱动 codex-5_2 进行几轮对话后,就帮我集成了这个,通过 mcp 就能够驱动 autojs 来完成相应的

效果

期望

  • 其他佬友们能够开发基于这个的 skills 支持更复杂的自动化开发
  • 添加多模态支持,而不是 ocr,在复杂情况下 ocr 无法满足 ai 自动化的要求

已知问题

  • 由于部分 Android(miui)的安全限制,无法操控微信等关键隐私 app

最后

源码地址: jinhan1414/AutoX: A UiAutomator on android, does not need root access (安卓平台上的 JavaScript 自动化工具)

文档: AutoX/docs/MCP_USAGE.md at setup-v7 · jinhan1414/AutoX

安装包: Release test · jinhan1414/AutoX


📌 转载信息
原作者:
jincs
转载时间:
2025/12/30 10:04:10

——————事情又双叒是这样的——————
由于我本人想在 Mac 上爽看小说,但是苦于各大平台广告贼多,像类似于 Android 的开源阅读【Legado】在 Mac 端找不到相关的资源。于是,趁着手头上还有一些闲下来的时间,用 Swift 和 SwiftUI 自己写了一个在 Mac 端上运行的阅读 App【Legado for Mac】,基于原版 Andorid 的开源阅读。

最重要的书源、订阅,都可以平滑地从安卓中迁移过来,在【导入书源】后【解析】,基本实现了【在线找书】-> 【阅读】 → 【换源】 和 【订阅】 → 【解析】超方便的一体化工具链。并且在阅读逻辑上,基本保持了人类的阅读习惯。

下载地址:Release Legado for Mac v1.0.0 · Kequans/legado-for-mac-pub · GitHub

书架页面:

书架 1

书架 2:

阅读页面:


书籍搜索页面:
书源管理页面:
订阅管理页面:
关于页面:

后续代码会陆续开源。

(有 BUG,可以积极回帖反馈呀,虽然可能改不动 wuwuwu​)

开源地址:
(因为目前一些拓展功能还在开发,所以暂时先把部分核心代码开源了,还有一些拓展功能后续再做…… 不知道有没有时间)

下载地址:Release Legado for Mac v1.0.0 · Kequans/legado-for-mac-pub · GitHub

觉得本项目不错的话,可以用 LDC 赞助一下帮帮我,Vibe coding 的额度要上天了,让我回回血呜呜呜 ~~~~

||
——————————

——————————

-------------------- 附赞助链接:(LDC 打赏,最低 0.01,都是支持!)-----------------------


📌 转载信息
原作者:
Kequan
转载时间:
2025/12/30 10:03:25

在数学推理任务中,相比经 vLLM 优化的 Qwen3-8B,速度提升 3–6 倍
在大多数基准测试中,性能超越原始的 Qwen3-8B-Instruct
原生支持 KV Cache(兼容 FlashAttention、PagedAttention、CUDA Graphs)



📌 转载信息
原作者:
artorius
转载时间:
2025/12/30 10:02:25

终于用上反重力了!Mac 端完整配置指南

前言

之前尝试过各种方法想用上反重力,但一直没能成功。今天终于借助 Antigravity-Manager 这个项目实现了,体验相当刺激!

配置步骤(Mac 版)

1. 下载与安装

前往 v3.2.0 Release 页面 下载适合 Mac 的安装包。

安装完成后,在终端执行以下命令解除系统的安全限制:

sudo xattr -rd com.apple.quarantine "/Applications/Antigravity Tools.app" 

2. 登录配置

打开应用后,登录你的账号:

3. 启动 API 反代

进入 API 反代设置页面:

点击 "启动" 按钮:

实战测试

配置完成后,我测试了几个模型,效果不错。

测试 1:Claude Opus 4.5

使用 OpenAI SDK 调用 Claude Opus 4.5 模型:

from openai import OpenAI
 
client = OpenAI(
    base_url="http://127.0.0.1:8045/v1",
    api_key="sk-7cb9cb5ac43243b2b44c6139ecd8e24e"
)
 
response = client.chat.completions.create(
    model="claude-opus-4-5-thinking",
    messages=[{
        "role": "user",
        "content": "在白板上解:"一把钥匙开一把锁。现在有5把锁和相应的5把钥匙,但是全部放乱了,最多试几次,就可以打开全部的锁。",清晰地展示解题步骤"
    }]
)
 
print(response.choices[0].message.content)

运行结果:


测试 2:Gemini 3 Pro Image(Banana Pro)

这个模型支持生成图像,可以通过 size 参数或模型后缀指定输出比例:

from openai import OpenAI
import base64
 
client = OpenAI(
    base_url="http://127.0.0.1:8045/v1",
    api_key="sk-7cb9cb5ac43243b2b44c6139ecd8e24e"
)
 
response = client.chat.completions.create(
    model="gemini-3-pro-image",
    # 方式 1: 使用 size 参数(推荐)    # 方式 2: 使用模型后缀 # 例如: gemini-3-pro-image-16-9, gemini-3-pro-image-4-3 # model="gemini-3-pro-image-16-9",
    
    messages=[{
        "role": "user",
        "content": "在白板上解:"一把钥匙开一把锁。现在有5把锁和相应的5把钥匙,但是全部放乱了,最多试几次,就可以打开全部的锁。",清晰地展示解题步骤"
    }]
)

# 提取并保存图像
temp = response.choices[0].message.content
image_data = temp.split("![image](data:image/jpeg;base64,")[1][:-1]

with open("/Users/darbra/Downloads/result.jpg", 'wb') as f:
    f.write(base64.b64decode(image_data))

生成的白板图:



总结

整个配置过程其实并不复杂,关键是找到靠谱的工具。Antigravity-Manager 这个项目维护得不错,Mac 端体验流畅。

正如那句话说的:“得不到的永远在骚动”—— 真正用上了之后,好像也就那么回事。不过既然成功了,分享出来给有需要的朋友。


📌 转载信息
原作者:
user1558
转载时间:
2025/12/29 17:22:02

本人是在 Windows 环境配合 vscode、cursor 使用。
1、下载 exe 文件,并把路径配置到系统环境变量 Path:

2、进入代码项目
执行 codanna init,这步会自动生成配置文件 settings.toml

3、调整 settings.toml, 比如嵌入模型、开启文档索引等

 [semantic_search] enabled = true # Model to use for embeddings # Note: Changing models requires re-indexing (codanna index --force) # - AllMiniLML6V2: English-only, 384 dimensions (default) # - MultilingualE5Small: 94 languages including, 384 dimensions (recommended for multilingual) # - MultilingualE5Base: 94 languages, 768 dimensions (better quality) # - MultilingualE5Large: 94 languages, 1024 dimensions (best quality) # - BGESmallZHV15: Chinese-specialized, 512 dimensions # - See documentation for full list of available models model = "MultilingualE5Large" # Similarity threshold for search results (0.0 to 1.0) threshold = 0.6 [documents] enabled = true [documents.collections.docs] paths = ["."]
patterns = ["**/*.md", "**/*.txt"]

4、开始建立索引,这步会下载模型(首次),需要配置好网络,下载速度视网络情况决定
代码索引:
codanna index . --force
文档索引(文档编码需要是 utf-8 格式):
codanna documents index --progress

5、MCP 配置(我的样例,仅供参考)
Vscode:

{
    "mcpServers": {
        "codanna": {
            "command": "D:\\soft\\codanna\\codanna.exe",
            "args": [
                "serve",
                "--watch"
            ],
            "alwaysAllow": [
                "analyze_impact",
                "find_callers",
                "get_index_info",
                "find_symbol",
                "semantic_search_docs",
                "semantic_search_with_context",
                "search_symbols",
                "get_calls",
                "search_documents"
            ]
        }
    }
}

Cursor:

	{
	  "mcpServers": {
	    "codanna": {
	      "command": "D:\\soft\\codanna\\codanna.exe",
	      "args": [
	        "--config",
	        "D:\\code\\xxx\\settings.toml",
	        "serve",
	        "--watch"
	      ],
	      "alwaysAllow": [
	        "analyze_impact",
	        "find_callers",
	        "get_index_info",
	        "find_symbol",
	        "semantic_search_docs",
	        "semantic_search_with_context",
	        "search_symbols",
	        "get_calls",
	        "search_documents"
	      ]
	    }
	  }
}

6、提示词加入:使用codanna mcp进行语义检索


📌 转载信息
原作者:
Metding
转载时间:
2025/12/29 17:20:16

前言说明

从原贴继续:IDEA 版 Claude Code GUI 插件 开发记录帖

本项目主要解决 IDEA 使用 Claude Code 没有可视化操作页面的问题


新帖原因

不知不觉已经开发一个多月了

以为老帖子已经无法修改编辑了,所以更换到本帖进行 v0.2 版本的开发记录


目前进度

目前版本为 v0.1.3 版本(还未发布)

正在内测 Codex Cli 功能,预计本周三发商店版

以下均为实机演示,功能已经实现,正在内测中(内测两天找 BUG,静静期待)


插件市场可下载

本插件已上架 Jetbrains 市场,搜索 claude code gui 安装即可

本项目后续不打算进行任何商业化行为,请放心食用

声明:政府部门,国企,学校 修改本项目代码,可遵循 MIT 协议,不需要遵守 AGPL-3.0 协议


致谢

感谢所有帮助 IDEA-Claude-Code-GUI 变得更好的贡献者!和感谢 L 站平台


本插件在极速更新中,每天预计发布 1 版,佬友们记得及时更新哦~


📌 转载信息
原作者:
longyuxi
转载时间:
2025/12/29 16:12:06

感谢这两个项目 + 谷歌的反重力额度,让我实现了无限的 claudecode 额度!!


📌 转载信息
转载时间:
2025/12/29 15:57:52

分享一个我最近开源的 API 测试框架,专门解决 AI 编程助手写测试代码的痛点。

背景

不知道大家有没有让 AI 写接口测试的经历?我之前用 Claude、Cursor 写测试,遇到了几个非常头疼的问题:

场景 1:重复劳动

每次让 AI 生成测试,都要重新描述项目结构、认证方式、断言风格。测 10 个接口,同样的 fixture 和 setup 代码能重复 10 遍。

场景 2:Token 黑洞

一个简单的登录接口测试,AI 生成 200 行代码。发现断言写错了,让它改,又生成 200 行。改 3 次,消耗 2000+ Token,最后还是自己手动改的。

场景 3:调试死循环

AI 生成的测试跑不通,报错信息贴给它,它改了一版还是不对。来回复 5 轮对话,问题还在,Token 已经烧了 5000+。


解决方案

传统方式:自然语言描述 → AI 生成完整代码 → 运行报错 → 贴报错 → AI 重新生成 → 循环…

本框架:自然语言描述 → AI 生成 YAML → 框架执行 → 直接定位问题 → 改 YAML 一行

这个框架的解决方案:


传统方式:自然语言描述 -> AI 生成完整代码 -> 运行报错 -> 贴报错 -> AI 重新生成 -> 循环...

本框架: 自然语言描述 -> AI 生成 YAML -> 框架执行 -> 直接定位问题 -> 改 YAML 一行

| 对比项 | 传统 AI 生成 | 本框架 |

|--------|-------------|--------|

| 测试 1 个接口 | ~200 行代码 | ~20 行 YAML |

| 修改断言逻辑 | 重新生成全部代码 | 改 1-2 行 YAML |

| 10 个接口测试 | 重复 setup 10 次 | 共享配置,0 重复 |

| 调试一个问题 | 平均 3-5 轮对话 | 通常 1 轮 |


核心特性

| 特性 | 说明 |

|------|------|

| YAML 声明式用例 | 测试逻辑与执行代码分离,AI 只需生成结构化数据 |

| MCP Server | 与 Claude/Cursor 等 AI 编辑器无缝集成 |

| 接口 Workflow 编排 | 单文件支持多步骤接口调用,步骤间数据传递与断言 |

| 变量解析引擎 | 支持步骤间数据传递、全局变量、动态函数调用 |

| 自动认证管理 | Token 获取和刷新由框架处理 |

| 数据工厂 | 无需 Java 依赖,内置 Mock 数据生成 |

| 多格式测试报告 | Allure(离线 / 在线)、pytest-html(独立 HTML,美化样式) |

| 多渠道通知 | 钉钉、飞书、企业微信 |

| 单元测试 | 支持 Python 代码单元测试,Mock 依赖自动注入 |


快速开始

安装

 # 1. 安装 uv(如果没有)

curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. 安装 MCP 服务器(推荐:安装为 tool)

uv tool install git+https://github.com/GalaxyXieyu/Api-Test-MCP.git

# 验证

api-auto-test-mcp --help # 管理工具

uv tool list

uv tool uninstall api-auto-test # 以 `uv tool list` 展示的 tool 名称为准 

📌 转载信息
原作者:
xieyuDaniel
转载时间:
2025/12/29 15:57:20

日常使用中,发现,不管是工作流使用,还是在 Cherry studio 中使用,都不可避免的会用到很多提示词,而对这些提示词做管理,说简单也简单,但繁琐也真是繁琐。也看到了佬友的帖子的一些需求:

也看到了一些提示词管理的开源项目,但都不是特别符合,索性自己对 Wordpress 比较了解,因此结合 wp 开发出了这个网站,我称之为:” 爱词网

爱词网主要功能就是:提示词交流,分享与管理。
做起来其实不复杂,但真正复杂的是,如何做起来后更好用,更简便。因此整个站总是在不停打磨中,慢慢优化,或是 UI,或者增加些实用功能。直到现在,我觉得可以开放了。

说在前面的话:整个网站很多代码都是通过 vibe coding 实现,我虽然有进行审阅和测试,但是还是会不可避免的遇到各种问题,因此,反馈及意见将帮助良多。

站内主要实现了以下方便快捷的提示词管理功能:

功能详情,多图,注意流量

1、AI 提示词上传,给许多不知道如何去描述一个 “AI 提示词” 一个方便快捷的操作;

2、提示词快捷 fork, 很多别人的提示词,自己拿来直接用总是不太符合自己胃口,需要针对性的进行修改和二次调整优化,因此,我加入了一个类似于 GitHub 的 fork 功能。


3、直观易懂的个人中心 实现了许多供交流和分享的用途,如用户名片(主要是为了间接实现关注作者功能,)收藏点赞,私信,评论评分,财富积分(暂时没什么用)…



说在最后的话:
目前已接入 linuxdo 登录,同样的继承 l 站的等级,名称和头像。
主机只是个 1H1G 的服务器,但是线路很好,因此访问速度应该不错,但是还是有点慌,因为扛不住太高并发,当然,到时候,社区如果可以孵化支持下最好了。

正在 / 计划实现的一些其他功能
提示词的快捷使用:计划接入常用的各个 AI 客户端,实现,点击提示词即可在对应的客户端 / 网页自动置入并直接使用。
其他,还没想好…,欢迎佬友提交。


📌 转载信息
原作者:
leonkuku
转载时间:
2025/12/29 15:46:03

Verdent 本身是必须要 下载 IDE 才可以拿到付款链接去试用的,插件和网页控制台都是无法获取试用链接的。

脚本自取,喜欢的老友留个评论和赞~

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Verdent 获取付款链接工具
用于获取注册后的Stripe支付链接(绑卡链接)
"""

import httpx
import json
import sys
import time
import io

# 修复 Windows 控制台编码问题
if sys.platform == 'win32':
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
    sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')

class VerdentPaymentLinkGetter:
    """Verdent 付款链接获取器"""
    
    def __init__(self, token):
        """
        初始化
        token: Verdent 访问令牌
        """
        self.token = token
        self.base_url = "https://api.verdent.ai"
        
        # 初始化 HTTP 客户端
        self.client = httpx.Client(
            timeout=30.0,
            headers={
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36',
                'Accept': 'application/json, text/plain, */*',
                'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
                'Origin': 'https://www.verdent.ai',
                'Referer': 'https://www.verdent.ai/',
                'sec-ch-ua': '"Chromium";v="142", "Microsoft Edge";v="142", "Not_A Brand";v="99"',
                'sec-ch-ua-mobile': '?0',
                'sec-ch-ua-platform': '"Windows"',
                'sec-fetch-dest': 'empty',
                'sec-fetch-mode': 'cors',
                'sec-fetch-site': 'same-site',
            }
        )
        
        # Verdent 计划 ID
        self.plan_ids = {
            'Free': 'Pl1181733412181114881',           # Free - 7天试用
            'Starter': 'Pl1181727875814031360',        # $19/月
            'Pro': 'Pl1181727875813916672',            # $59/月
            'Max': 'Pl1181727875813818368',            # $179/月
            'PayAsYouGo_20': 'Pl1181727875813720064',  # $20 一次性
            'PayAsYouGo_60': 'Pl1181727875813588992',  # $60 一次性
            'PayAsYouGo_80': 'Pl1181727875813474304',  # $80 一次性
            'PayAsYouGo_100': 'Pl1181727875813376000', # $100 一次性
            'PayAsYouGo_200': 'Pl1181727875813261312', # $200 一次性
        }
    
    def get_user_info(self):
        """获取用户信息(包含邮箱)"""
        try:
            print("📧 正在获取用户信息...")
            
            # 添加 Cookie 头(包含 token)
            headers = {
                'Cookie': f'token={self.token}'
            }
            
            response = self.client.get(
                f'{self.base_url}/verdent/user/info',
                headers=headers
            )
            
            if response.status_code == 200:
                data = response.json()
                email = data.get('email', '')
                print(f"✅ 用户邮箱: {email}")
                return email
            else:
                print(f"⚠️ 获取用户信息失败: {response.status_code}")
                print(f"   响应: {response.text}")
                return None
                
        except Exception as e:
            print(f"❌ 获取用户信息出错: {e}")
            return None
    
    def create_subscription(self, plan_name='Free', user_email=None):
        """
        创建订阅并获取支付链接
        plan_name: 计划名称 (Free, Starter, Pro, Max, PayAsYouGo_20, 等)
        user_email: 用户邮箱(如果不提供则自动获取)
        """
        try:
            # 获取 plan_id
            plan_id = self.plan_ids.get(plan_name)
            if not plan_id:
                print(f"❌ 未知的计划名称: {plan_name}")
                print(f"   支持的计划: {', '.join(self.plan_ids.keys())}")
                return None
            
            # 如果没有提供邮箱,尝试获取
            if not user_email:
                user_email = self.get_user_info()
                if not user_email:
                    print("❌ 无法获取用户邮箱,请手动提供")
                    return None
            
            print(f"\n💳 正在创建订阅...")
            print(f"   计划: {plan_name}")
            print(f"   Plan ID: {plan_id}")
            print(f"   邮箱: {user_email}")
            
            # 添加 Cookie 头
            headers = {
                'Cookie': f'token={self.token}',
                'Content-Type': 'application/json'
            }
            
            # 构造请求体
            payload = {
                'plan_id': plan_id,
                'user_email': user_email,
                'source': 'verdent'
            }
            
            # 发送请求
            response = self.client.post(
                f'{self.base_url}/verdent/subscription/create',
                headers=headers,
                json=payload
            )
            
            if response.status_code == 200:
                data = response.json()
                print(f"✅ 订阅创建成功!")
                print(f"\n📋 完整响应:")
                print(json.dumps(data, indent=2, ensure_ascii=False))
                
                # 尝试提取支付链接
                payment_url = None
                
                # 常见的字段名
                possible_keys = ['url', 'payment_url', 'checkout_url', 'stripe_url', 
                                'redirect_url', 'session_url', 'link', 'checkout_session_url']
                
                for key in possible_keys:
                    if key in data:
                        payment_url = data[key]
                        break
                
                # 如果没有直接的URL字段,检查嵌套对象
                if not payment_url:
                    if 'data' in data and isinstance(data['data'], dict):
                        for key in possible_keys:
                            if key in data['data']:
                                payment_url = data['data'][key]
                                break
                
                if payment_url:
                    print(f"\n🔗 支付链接:")
                    print(payment_url)
                    return payment_url
                else:
                    print(f"\n⚠️ 未在响应中找到支付链接,请查看完整响应")
                    return data
                    
            else:
                print(f"❌ 创建订阅失败: {response.status_code}")
                print(f"   响应: {response.text}")
                return None
                
        except Exception as e:
            print(f"❌ 创建订阅出错: {e}")
            import traceback
            traceback.print_exc()
            return None
    
    def close(self):
        """关闭客户端"""
        self.client.close()


def main():
    """主函数"""
    print("=" * 60)
    print("🌟 Verdent 付款链接获取工具")
    print("=" * 60)
    
    # 使用方式 1: 从命令行参数读取
    if len(sys.argv) > 1:
        token = sys.argv[1]
        plan_name = sys.argv[2] if len(sys.argv) > 2 else 'Free'
        user_email = sys.argv[3] if len(sys.argv) > 3 else None
    else:
        # 使用方式 2: 从 verdent_tokens.txt 读取
        try:
            with open('verdent_tokens.txt', 'r', encoding='utf-8') as f:
                lines = [line.strip() for line in f if line.strip()]
                if lines:
                    token = lines[0]
                    print(f"📄 从 verdent_tokens.txt 读取 token")
                else:
                    print("❌ verdent_tokens.txt 为空")
                    print("\n使用方法:")
                    print("  python get_payment_link.py <token> [plan_name] [email]")
                    print("\n参数说明:")
                    print("  token: Verdent 访问令牌(必需)")
                    print("  plan_name: 计划名称(可选,默认: Free)")
                    print("    支持: Free, Starter, Pro, Max, PayAsYouGo_20/60/80/100/200")
                    print("  email: 用户邮箱(可选,不提供则自动获取)")
                    return
        except FileNotFoundError:
            print("❌ 找不到 verdent_tokens.txt 文件")
            print("\n使用方法:")
            print("  python get_payment_link.py <token> [plan_name] [email]")
            print("\n或创建 verdent_tokens.txt 文件并在第一行写入 token")
            return
        
        plan_name = 'Free'  # 默认使用 Free 计划
        user_email = None
    
    print(f"\n🔐 Token: {token[:50]}...")
    
    # 创建获取器
    getter = VerdentPaymentLinkGetter(token)
    
    try:
        # 获取支付链接
        result = getter.create_subscription(plan_name=plan_name, user_email=user_email)
        
        if result:
            print("\n" + "=" * 60)
            print("✅ 成功!")
            if isinstance(result, str) and result.startswith('http'):
                print(f"🔗 复制此链接到浏览器即可绑卡:")
                print(result)
            print("=" * 60)
        else:
            print("\n" + "=" * 60)
            print("❌ 获取失败,请检查 token 是否有效")
            print("=" * 60)
            
    finally:
        getter.close()


if __name__ == "__main__":
    main()



📌 转载信息
转载时间:
2025/12/29 15:28:36

项目链接:GitHub - hsingjui/ContextWeaver: ContextWeaver 是一个基于 MCP 协议、利用 Tree-sitter 和向量搜索为大语言模型提供本地代码库智能上下文编织与检索的工具。

augment code 的账号太难注册了,注册了就封,从海鲜市场买别人注册好的号也是几天就封了,augment context engine 又很好用,只能试试看能不能做一个平替了

项目使用方式

  1. 安装
# 全局安装
npm install -g @hsingjui/contextweaver

# 或使用 pnpm
pnpm add -g @hsingjui/contextweaver
  1. 配置
# 初始化
contextweaver init
# 或者简写
cw init

#修改 `~/.contextweaver/.env`

EMBEDDINGS_API_KEY=your-api-key-here
EMBEDDINGS_BASE_URL=https://api.siliconflow.cn/v1/embeddings
EMBEDDINGS_MODEL=BAAI/bge-m3
EMBEDDINGS_MAX_CONCURRENCY=10
EMBEDDINGS_DIMENSIONS=1024

RERANK_API_KEY=your-api-key-here
RERANK_BASE_URL=https://api.siliconflow.cn/v1/rerank
RERANK_MODEL=BAAI/bge-reranker-v2-m3
RERANK_TOP_N=20

这里 EmbeddingReranker 模型用的硅基流动免费的模型,用 Qwen/Qwen3-Embedding-8BQwen/Qwen3-Reranker-8B,效果好一些,但是速度会慢一点

  1. 索引代码库
#这一步不是必须的,使用mcp搜索的时候,如果没有索引代码库会自动索引 # 在代码库根目录执行
contextweaver index

# 指定路径
contextweaver index /path/to/your/project

# 强制重新索引
contextweaver index --force
  1. 使用 mcp
{
  "mcpServers": {
    "contextweaver": {
      "command": "contextweaver",
      "args": ["mcp"]
    }
  }
}

claude code 使用

claude mcp add contextweaver -- command contextweaver mcp

这是项目的工作流程

下面是图一乐的用 claude codenew-api 的仓库对比 aceContextWeaver 的结果,仅供参考
使用的 prompt

任务:对比 Ace 和 ContextWeaver 在当前项目中的 Codebase Retrieval (代码库检索) 效果。
请执行以下步骤进行 A/B 测试:
设定三个测试问题:使用问题 "[请在此处填入具体的复杂技术问题,例如:如何修改鉴权逻辑以支持JWT?]" 作为基准。
分别检索:
场景 A (Ace):调用 Ace 的检索能力,列出其提取的关键文件和代码片段。
场景 B (ContextWeaver):调用 ContextWeaver 的检索能力,列出其提取的关键文件和代码片段。
对比分析:请基于以下维度创建一个对比表格:
相关性 (Precision):检索到的文件是否直接解决了问题?是否有核心文件遗漏?
噪音干扰 (Noise):是否包含了大量无关的测试文件或通用配置?
上下文完整度 (Context):是否提供了足够的上下文(如引用链路、类型定义)来理解代码?
结论:基于当前项目的代码结构,通过三个测试问题,指出哪一个工具的检索策略更优。

📌 转载信息
原作者:
hsingjui
转载时间:
2025/12/29 15:10:29

Gemini Nexus 是个好东西,但美中不足就是没有完整的 MCP 支持,等不及作者更新,我自己动手了。



核心代码让 vibe coding 抄自 MCP-SuperAssistant

最新代码:GitHub - alitrack/gemini-nexus: A powerful browser extension that integrates Google Gemini AI directly into your web experience. Features include sidebar chat, OCR text extraction, area sniping, and conversation history.


📌 转载信息
原作者:
yuke
转载时间:
2025/12/29 15:10:05

据推主 @Pirat_Nation 消息,黑客此行还窃取了数十 TB 内部源代码库,涵盖从上世纪 90 年代至当前项目的几乎所有游戏、工具、SDK 及服务。


转自游民星空

这次攻击是利用了 MongoDB 数据库的漏洞,2025 年 12 月 27 日 - 28 日 <彩虹六号> 游戏中断数据库被篡改相关.
它允许未经身份验证的攻击者发送 专门构造的压缩网络数据包,让服务器的 zlib 解压缩模块直接泄露内部堆内存碎片,然后暴露出会话令牌或者密钥
这个漏洞编码是: CVE-2025-14847 漏洞编号连接

之前不知道经过润色是需要截图的,我心疼我的赞,此次人工了


📌 转载信息
原作者:
okokxw
转载时间:
2025/12/29 15:04:53