为什么会有Nuanced的想法,这是因为大多数 AI 编程工具仍然将代码视为“散文”。实际上代码并非“散文”,代码是一种结构:控制流、调用边界、导入以及跨文件约束。如果没有这种结构,模型就会产生幻觉,忽略副作用,并消耗Token。
Nuanced采用的是静态分析,我考虑过让LLM来分析代码的调用链路,但是实测下来,LLM分析出来的调用链路也会存在幻觉问题,并且非常消耗token,所以,目前短期来看,静态分析是更好的解决方案。
更大的上下文窗口并不能解决这个问题。Nuanced认为重要的不是更多的上下文,而是正确的上下文。
nuanced逆向
python版本是开源的 github.com/nuanced-dev/nuanced
我们把代码下载下来,使用qwen-cli进行分析

得到文档后,查看下,由4个核心组件构成:
1. CLI (命令行界面) - 提供用户交互接口,支持 init 和 enrich 命令
2. CodeGraph (代码图) - 负责代码图的初始化、加载和增强操作,是系统的核心数据结构
3. CallGraph (调用图生成器) - 使用 jarviscg 库生成函数调用图
4. Utils (工具函数) - 提供超时处理、文件分组等辅助功能
——
原来是jarviscg,是从一个开源项目fork过来的

同样的原理,我们也用qwen来逆向下:

PythonJaRvis项目通过自研的Jarvis工具和第三方工具code2flow来生成Python代码的函数调用图。Jarvis工具通过静态分析技术,解析Python代码的语法树,识别函数定义和调用关系,构建完整的函数调用图。项目还提供了完整的评估框架来验证工具的有效性和准确性。
原来是code2flow


code2flow 为动态语言(如 Python、JavaScript、Ruby 和 PHP)生成调用图,帮助解开“意大利面条”代码和识别孤立的函数。 它将源文件转换为 AST,查找函数定义,并根据函数调用和变量将它们连接起来。
——
语义理解层
除此之外,Nuanced的蓝图更大,他们提出了语义理解层:

增强代码生成:
通过在生成新代码之前了解代码含义,帮助 AI 工具做出更明智的决策。将静态分析与运行时行为相结合,使 AI 工具能够全面洞察代码的实际工作方式,从而编写更优质的代码。
系统范围的背景:
通过综合来自不同工具、日志、指标和部署环境的信息,帮助 AI 推理跨服务的交互。
语义调试:
为 AI 工具提供理解代码行为所需的上下文,从而在调试期间提供更清晰的解释,并对其选择进行更透明的推理。
不止静态分析。这是一个更丰富的知识图谱,它将整合:
Nuanced正在将这些操作数据转换为人工智能助手的结构化上下文。
Nuanced的产品
1 / Nuanced CLI
帮助 AI 编程助手像经验丰富的开发人员一样理解您的代码。

2 / Nuanced MCP 服务器
这是最近发布的,需要付费购买,购买后会得到一个许可证密钥。使用它来验证私有的 npm 仓库并安装 TypeScript MCP 服务器。

有点意思,20美金
YC孵化
Nuanced是YC孵化的小型公司,资料显示只有2人,最早推出过检测AI图像的工具DEMO,后来转型到为AI编程工具提供语义层。


——
Nuanced 找到了中间层:基于确定性结构的对话式提示。