vibe 了一个基于 AST 自动提取 js/ts 代码上下文的工具
起因是 CC 读大项目的时候,幻觉严重,特别是对于需要大量上下文的复杂流程理解错误,所以基于 AST 做了一个工具来提取函数签名,以及调用关系,能极大压缩上下文的情况下让 CC 完整理解调用链路。
欢迎佬友试用,轻喷,当然能给个 star 就更好了
xiaohack博客专注前沿科技动态与实用技术干货分享,涵盖 AI 代理、大模型应用、编程工具、文档解析、SEO 实战、自动化部署等内容,提供开源项目教程、科技资讯日报、工具使用指南,助力开发者、AI 爱好者获取前沿技术与实战经验。
起因是 CC 读大项目的时候,幻觉严重,特别是对于需要大量上下文的复杂流程理解错误,所以基于 AST 做了一个工具来提取函数签名,以及调用关系,能极大压缩上下文的情况下让 CC 完整理解调用链路。
欢迎佬友试用,轻喷,当然能给个 star 就更好了
Jetbrains家的KeyGen网上有很多,直接百度一下就能搜出来。
主要是ReSharper有联网验证,而且是.NET平台的软件,不能像Java一样用--javaagent直接进行注入。
这里给一个用Visual Studio拓展来解决的思路。
using HarmonyLib;
using System;
namespace ReSharperCrack
{
[HarmonyPatch]
internal static class Patches
{
static Patches()
{
try
{
var harmonyVersion = typeof(Harmony).Assembly.GetName().Version?.ToString() ?? "unknown";
Logger.Log($"Patch loaded. Start. Harmony={harmonyVersion}, AppDomain={AppDomain.CurrentDomain.FriendlyName}");
}
catch (Exception ex)
{
Logger.Log($"Patch static ctor exception: {ex}");
}
}
[HarmonyPatch("JetBrains.Application.License2.UserLicenses.UserLicenseViewSubmodel", "AddLicense")]
[HarmonyPrefix]
internal static bool AddLicense_Prefix(ref bool validateLicenseKey)
{
try
{
Logger.Log($"AddLicense_Prefix called. validateLicenseKey(before)={validateLicenseKey}");
validateLicenseKey = false;
Logger.Log($"AddLicense_Prefix finished. validateLicenseKey(after)={validateLicenseKey}");
return true;
}
catch (Exception ex)
{
Logger.Log($"AddLicense_Prefix exception: {ex}");
// be conservative: let original run if our prefix fails
return true;
}
}
[HarmonyPatch("JetBrains.Application.License2.NewLicenses.UserLicenseService", "VerifyCertificate")]
[HarmonyPostfix]
internal static void VerifyCertificate_Postfix(ref object __result)
{
try
{
Logger.Log($"VerifyCertificate_Postfix called. __result(before)={(__result == null ? "<null>" : __result + " (" + __result.GetType().FullName + ")")}");
if ((int)__result != 0)
{
__result = 0;
}
Logger.Log($"VerifyCertificate_Postfix finished. __result(after)={(__result == null ? "<null>" : __result + " (" + __result.GetType().FullName + ")")}");
}
catch (Exception ex)
{
Logger.Log($"VerifyCertificate_Postfix exception: {ex}");
}
}
}
}以及入口类:
/*...*/
[PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
[Guid(ReSharperCrackPackage.PackageGuidString)]
[ProvideAutoLoad(UIContextGuids80.NoSolution, PackageAutoLoadFlags.BackgroundLoad)]
public sealed class ReSharperCrackPackage : AsyncPackage
{
protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress<ServiceProgressData> progress)
{
// 在这里加载LibHarmony的Hook
}
}
/*...*/编译成vsix拓展,装载在Visual Studio上。
接着,使用License Key激活就可以了。
