CLI-Anything Intelwatch:从终端直连 OSINT、商业情报与 M&A 尽调的公司深度画像 CLI
【免费下载链接】CLI-Anything"CLI-Anything: Making ALL Software Agent-Native" -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything
导读
cli-anything-intelwatch是 CLI-Anything 生态中面向商业情报与开源情报(OSINT)场景的 Python 命令行包装器(harness),它把 Node.js 生态中的npx intelwatch工具无缝桥接到统一的 Python CLI 框架下,让销售、投资并购(M&A)与安全研究团队无需离开终端,即可对公司域名执行财务数据聚合、技术栈识别与 AI 驱动的尽职调查。读完本文,你将掌握该 CLI 的安装前提、核心命令(profile与--ai标志)、面向 AI Agent 的调用约定,以及其底层"零摩擦转发"架构的源码级原理。
什么是 cli-anything-intelwatch
Intelwatch 的核心定位是"弥合黑客式 OSINT 与 B2B 销售/并购数据之间的鸿沟"——它把复杂的数据聚合、技术栈检测与 AI 赋能尽调压缩到秒级执行,直接以人类可读的深描报告输出。cli-anything-intelwatch则是在此之上构建的 Python 封装:安装一个 pip 包,即可获得cli-anything-intelwatch命令,所有参数被原样转发给npx intelwatch执行。
从架构上看,这是一个典型的"薄包装器"设计(见 intelwatch/agent-harness/INTELWATCH.md):
- 语言栈:Python(
cli-anything-intelwatch)包装 Node.js(npx intelwatch); - 依赖:Python 侧仅需
click,系统侧需要node/npx; - 职责边界:Python 层不复制 Intelwatch 的任何业务逻辑,只负责进程转发、错误处理与退出码透传。
安装与环境准备
安装 Python 包
文档指定的标准安装方式为:
pip install cli-anything-intelwatch在仓库内开发调试时,也可以从 harness 目录以可编辑模式安装(见 intelwatch/agent-harness/setup.py):
pip install -e .安装后,setup.py中的entry_points会把cli-anything-intelwatch控制台命令绑定到cli_anything.intelwatch.intelwatch_cli:main。该包要求 Python >= 3.8,运行依赖仅click>=8.0.0,package_data中还会随包携带skills/*.md技能文档,供 Agent 在发现阶段读取。
前置条件:Node.js / npx
由于底层工具由 Node.js 提供,系统必须满足:
- Node.js >= 18,且
npx可通过PATH访问; - 安装后建议先自检版本:
node -v npx -v若npx缺失,CLI 会给出明确错误提示(详见下文"源码剖析"一节),因此务必先确认这两条命令可正常执行。
基本命令与快速上手
# 查看帮助 cli-anything-intelwatch --help # 为一家公司生成深度画像 cli-anything-intelwatch profile kpmg.fr # 生成画像并附带 AI 尽职调查 cli-anything-intelwatch profile kpmg.fr --ai命令的语义由底层npx intelwatch定义:
profile <domain>:针对给定域名生成公司的深度画像(deep profile),覆盖财务数据聚合、技术栈识别等维度;--ai:让 Intelwatch 自动执行尽职调查(due diligence),将结果以 AI 辅助分析的形式并入输出。
参数透传的灵活性
因为 harness 采用"原样转发"策略,你可以在profile子命令之后追加 Intelwatch 原生支持的任何参数(如--format json等格式选项),Python 包装层不会做任何拦截或过滤。这意味着底层工具的每一次能力升级,都会自动暴露给cli-anything-intelwatch用户,无需等待包装器发布新版本。
面向 AI Agent 的程序化调用约定
当 LLM Agent 需要把 Intelwatch 作为工具接入工作流时,文档给出了四步约定:
- 提供域名作为核心入参,例如
doctolib.fr; - 使用
--ai标志,让 Intelwatch 自动完成尽调分析; - 解析人类可读输出,该输出提供公司的深度拆解(deep breakdown);
- 确保目标机器上存在
npx,这是执行前置条件。
这套约定与 CLI-Anything 的"Agent-Native"理念一脉相承——每个 harness 都附带 skills/cli-anything-intelwatch/SKILL.md 这样的技能清单(frontmatter 中声明了名称与功能描述),供 Agent 自动发现该工具"能在终端直接完成竞对情报、M&A 尽调与 OSINT",从而在零人工配置的情况下被调用。
典型业务场景
M&A 尽职调查:对目标公司域名一键生成尽调画像,
--ai标志自动汇总风险与机会点:cli-anything-intelwatch profile company-name.com --ai销售情报(Sales Intelligence):快速摸清潜在客户的技术栈与经营基本面,辅助个性化销售策略:
cli-anything-intelwatch profile target-client.com
两个场景共享同一入口,区别仅在于是否启用 AI 分析——这也正是"零摩擦"设计的体现:一个命令、一个域名,即可从"只知道网址"推进到"掌握结构化情报"。
源码级原理剖析:零摩擦转发是如何实现的
入口实现
核心实现在 intelwatch/agent-harness/cli_anything/intelwatch/intelwatch_cli.py,全文件仅约 30 行:
@click.command(context_settings=dict( ignore_unknown_options=True, allow_extra_args=True, )) @click.pass_context def main(ctx): # Simply forward everything to `npx intelwatch` cmd = ["npx", "intelwatch"] + ctx.args try: sys.exit(subprocess.call(cmd)) except FileNotFoundError: click.secho( "Error: 'npx' command not found. Please ensure Node.js is installed ...", fg="red", err=True ) sys.exit(1)三个关键设计点值得关注:
ignore_unknown_options=True+allow_extra_args=True:这是"零摩擦"的技术基石。它让 click 不对未注册的参数报错,而是把所有额外参数收集进ctx.args,从而保证profile、--ai乃至任意底层原生参数都能原样穿过 Python 层;subprocess.call直接透传:stdin/stdout/stderr 自动继承自父进程,所以终端交互、彩色输出、进度条等特性都原样保留,这也是"人可读输出"能无缝到达用户的原因;FileNotFoundError兜底:当系统缺少npx时,不抛出晦涩的 traceback,而是输出红字提示并返回退出码 1,引导用户安装 Node.js。
测试验证
仓库配套了两组测试,印证了上述行为(见 intelwatch/agent-harness/cli_anything/intelwatch/tests/test_core.py):
test_argument_forwarding:断言调用['--query', 'recognity', '--format', 'json']时,实际执行的子进程命令为['npx', 'intelwatch', '--query', 'recognity', '--format', 'json'],即参数被逐字转发;test_exit_code_propagation:验证底层进程返回非零退出码(如 2)时,harness 会原样透传,让调用方(如 CI 或 Agent)能正确感知失败;test_npx_not_found:验证npx缺失时输出Error: 'npx' command not found并返回退出码 1。
端到端模拟测试(见 intelwatch/agent-harness/cli_anything/intelwatch/tests/test_full_e2e.py)则用 mock 替代真实网络调用,验证了['--domain', 'recognity.fr', '--format', 'json']到['npx', 'intelwatch', ...]的完整集成路径,确保 CI 环境无需真实安装 npx 也能回归测试。
与 CLI-Anything 统一终端的衔接
从源码结构看,harness 还预留了统一的 REPL 皮肤工具(见 intelwatch/agent-harness/cli_anything/intelwatch/utils/repl_skin.py)。ReplSkin提供品牌化横幅(banner)、彩色提示符、成功/错误/警告消息、状态面板、进度条与表格渲染等能力,并支持通过prompt_toolkit构建带历史记录和自动建议的交互式会话。虽然当前intelwatch_cli.py主流程走的是"直接转发 + 子进程"路线,但该皮肤工具的存在表明,intelwatch harness 已具备升级为交互式 REPL 界面的能力,可与 CLI-Anything 其他软件的终端体验保持一致。
适用前提与限制
- 网络与 Node 运行时:所有数据聚合与 AI 分析均由
npx intelwatch在远端/Node 进程内完成,因此执行机器需要能访问 npm 注册表以首次拉取工具,并具备外网连接能力; - 输出格式:文档约定输出为人类可读文本;如需结构化数据(如 JSON),应通过底层原生参数(如测试中出现的
--format json)指定,由npx intelwatch决定支持范围; - 版本边界:本文描述的行为基于当前仓库中
cli-anything-intelwatch1.0.0 版本(见 intelwatch/agent-harness/setup.py),底层intelwatch工具的参数细节以其自身帮助文档为准。
小结
cli-anything-intelwatch用约 30 行 Python 完成了一件"少即是多"的事:通过 click 的宽松参数解析、子进程透传与退出码映射,把 Node.js 生态中强大的商业情报工具变成 CLi-Anything 体系内一个零学习成本的统一入口。对 Agent 而言,它的技能文档(skills/cli-anything-intelwatch/SKILL.md)明确描述了入参(域名)、开关(--ai)与输出形态,可被自动发现与调用;对销售与并购团队而言,它把"从域名到深度尽调报告"的路径压缩到了一行命令。
【免费下载链接】CLI-Anything"CLI-Anything: Making ALL Software Agent-Native" -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考