使用 SAST 插件构建多语言代码安全扫描体系:security-scanning/security-sast 实战指南
本文以 plugins/security-scanning/commands/security-sast.md 为主体,结合同插件下的 sast-configuration 技能 与 security-auditor 等仓库资源,系统讲解如何在 Claude Code / Codex / Cursor 等 Agent 工作流中,为 Python、JavaScript/TypeScript、Java、Ruby、Go、Rust 等多语言代码库落地 SAST(静态应用安全测试):涵盖工具选型、规则配置、漏洞模式修复、统一扫描器实现、CI/CD 集成与最佳实践。
在本仓库的 Agent 插件体系中,security-scanning 插件承载了代码安全扫描、安全加固编排与威胁建模三大能力。其中 security-sast 命令是面向静态代码分析的专门入口,通过 /security-scanning:security-sast 即可直接调用(参见 docs/agents.md 中的命令注册示例)。读完本文,你将能够:按语言挑选并配置 Bandit / ESLint Security / Semgrep 等 SAST 工具,编写组织级自定义规则,识别并修复 SQL 注入、XSS、硬编码密钥等高频漏洞,并将扫描接入 GitHub Actions 与 GitLab CI。
一、SAST 插件能做什么:能力边界与适用场景
security-sast.md 在 Frontmatter 中声明了该命令的适用文件范围(globs)与关键词(keywords),这说明它在 Agent 场景中会被自动匹配到对应的代码扫描任务:当工作区中出现 **/*.py、**/*.js、**/*.ts、**/*.java、**/*.rb、**/*.go、**/*.rs、**/*.php 等文件时,该命令即可被唤起。
其核心能力可分为四层:
- 多语言 SAST 覆盖:Python、JavaScript/TypeScript、Java、Ruby、PHP、Go、Rust;
- 工具生态集成:Bandit、Semgrep、ESLint Security、SonarQube、CodeQL、PMD、SpotBugs、Brakeman、gosec、cargo-clippy;
- 漏洞模式检测:SQL 注入、XSS、硬编码密钥、路径遍历、IDOR、CSRF、不安全反序列化;
- 框架感知分析:Django、Flask、React、Express、Spring Boot、Rails、Laravel。
在“何时使用”上,文档明确了适用场景:代码评审安全分析、注入类漏洞、硬编码密钥、框架特有模式、自定义安全策略强制、上线前校验、遗留代码评估,以及合规审计(OWASP、PCI-DSS、SOC2)。插件还提供了分工明确的配套工具——security-secrets.md 负责进阶凭据扫描、security-owasp.md 负责 Top 10 映射、security-api.md 负责 REST/GraphQL 端点测试(详见下文“协同工具矩阵”一节),避免单个命令职责过载。
二、按语言选择工具:从 Bandit 到 cargo-clippy
文档给出的选型思路是“语言优先”:每种主语言绑定一个最成熟的 SAST 工具,再以 Semgrep 作为跨语言兜底。
Python:Bandit
# 安装与扫描
pip install bandit
bandit -r . -f json -o bandit-report.json
bandit -r . -ll -ii -f json # 仅 High/Critical
-ll 表示最低严重级别为 HIGH(-lll 为 CRITICAL),-ii 表示最低置信度为 HIGH,二者叠加用于快速聚焦高风险问题;-f json -o 将结果导出为机器可读报告,便于后续接入扫描器统一汇总。
配置文件 .bandit:
exclude_dirs: ["/tests/", "/venv/", "/.tox/", "/build/"]
tests:
[
B201, B301, B302, B303, B304, B305, B307, B308, B312,
B323, B324, B501, B502, B506, B602, B608,
]
skips: [B101]
配置要点:exclude_dirs 排除测试目录、虚拟环境与构建产物以提升信噪比;tests 白名单精确圈定要启用的检查器 ID——例如 B608(SQL 注入相关)、B301/B302/B303(Pickle/黑名单反序列化)、B323(不安全随机数)、B506(YAML 不安全加载)、B602(subprocess 与 shell)、B501/B502(requests 证书校验);skips: [B101] 将 assert 使用(B101)整体放行,避免在测试代码中误报。
JavaScript/TypeScript:ESLint Security
npm install --save-dev eslint @eslint/plugin-security eslint-plugin-no-secrets
eslint . --ext .js,.jsx,.ts,.tsx --format json > eslint-security.json
配置文件 .eslintrc-security.json:
{
"plugins": ["@eslint/plugin-security", "eslint-plugin-no-secrets"],
"extends": ["plugin:security/recommended"],
"rules": {
"security/detect-object-injection": "error",
"security/detect-non-literal-fs-filename": "error",
"security/detect-eval-with-expression": "error",
"security/detect-pseudo-random-prng": "error",
"no-secrets/no-secrets": "error"
}
}
plugin:security/recommended 一键开启安全推荐规则集,再显式强化四条高危规则:对象属性注入(原型污染风险)、非字面量 fs 文件名(路径遍历)、eval 表达式执行、伪随机数 PRNG(安全上下文禁用 Math.random),并以 no-secrets 拦截代码中硬编码的秘密。注意该配置与仓库 tools/validate_generated.py 等生成物校验无关,它是面向 JS/TS 工程的独立规则集。
跨语言兜底:Semgrep
pip install semgrep
semgrep --config=auto --json --output=semgrep-report.json
semgrep --config=p/security-audit --json
semgrep --config=p/owasp-top-ten --json
semgrep ci --config=auto # CI 模式
Semgrep 基于模式匹配与元变量(metavariable)实现语法级分析,支持 30+ 语言,且同一套 YAML 规则可同时作用于多语言。--config=auto 自动挑选公共规则集;p/security-audit 与 p/owasp-top-ten 是社区维护的专项规则包;semgrep ci 则面向 CI 环境提供去重与增量结果。仓库中的 sast-configuration 技能 进一步给出了 semgrep --config=auto --error(命中即失败)以及 p/pci-dss(PCI-DSS 合规扫描)等用法。
其余语言工具速查
| 语言 | 命令 | 说明 |
|---|---|---|
| Java | mvn spotbugs:check |
SpotBugs 通过 Maven 插件执行字节码级缺陷分析 |
| Ruby | brakeman -o report.json -f json |
Rails 专用安全扫描器,输出 JSON 报告 |
| Go | gosec -fmt=json -out=gosec.json ./... |
检查 Go 源码的常见安全问题 |
| Rust | cargo clippy -- -W clippy::unwrap_used |
以 lint 警告形式暴露 unwrap 等风险模式 |
三、编写 Semgrep 自定义规则:组织级安全策略落地
security-sast.md 将“自定义规则编写”列为插件核心能力之一。SAST 工具出厂规则覆盖通用漏洞,但每个组织的框架约定、敏感 API、内部组件各不相同,必须通过自定义规则把安全策略固化为代码。配置文件为 .semgrep.yml,文档给出了五个可直接复用的示例规则:
rules:
- id: sql-injection-format-string
pattern: cursor.execute("... %s ..." % $VAR)
message: SQL injection via string formatting
severity: ERROR
languages: [python]
metadata:
cwe: "CWE-89"
owasp: "A03:2021-Injection"
- id: dangerous-innerHTML
pattern: $ELEM.innerHTML = $VAR
message: XSS via innerHTML assignment
severity: ERROR
languages: [javascript, typescript]
metadata:
cwe: "CWE-79"
- id: hardcoded-aws-credentials
patterns:
- pattern: $KEY = "AKIA..."
- metavariable-regex:
metavariable: $KEY
regex: "(aws_access_key_id|AWS_ACCESS_KEY_ID)"
message: Hardcoded AWS credentials detected
severity: ERROR
languages: [python, javascript, java]
- id: path-traversal-open
patterns:
- pattern: open($PATH, ...)
- pattern-not: open(os.path.join(SAFE_DIR, ...), ...)
- metavariable-pattern:
metavariable: $PATH
patterns:
- pattern: $REQ.get(...)
message: Path traversal via user input
severity: ERROR
languages: [python]
- id: command-injection
patterns:
- pattern-either:
- pattern: os.system($CMD)
- pattern: subprocess.call($CMD, shell=True)
- metavariable-pattern:
metavariable: $CMD
patterns:
- pattern-either:
- pattern: $X + $Y
- pattern: f"...{$VAR}..."
message: Command injection via shell=True
severity: ERROR
languages: [python]
规则结构拆解:
- 基础字段:
id全局唯一标识;message是命中时向开发者展示的修复提示;severity支持ERROR/WARNING/INFO;languages决定规则生效的语言;metadata.cwe与metadata.owasp将发现映射到 CWE 编号与 OWASP Top 10(如 CWE-89 → A03:2021-Injection),这正是后面统一扫描器里cwe/owasp字段的数据来源; - 组合模式:
patterns内并列条件须同时满足;pattern-either表示任选其一命中;pattern-not用于排除安全写法(如路径遍历规则显式豁免os.path.join(SAFE_DIR, ...)的白名单模式); - 元变量约束:
metavariable-regex用正则约束元变量取值(如$KEY必须是 AWS 密钥环境变量名);metavariable-pattern则对元变量施加模式约束(如路径遍历规则要求$PATH来自$REQ.get(...)这一用户输入来源)。
规则编写的关键在于同时声明漏洞形态与数据来源:仅匹配危险 API(如 open())会产生大量误报,叠加“输入来自用户请求”的条件后,才真正逼近“可被利用”的语义。sast-configuration 技能中同类的 hardcoded-jwt-secret 规则(pattern: jwt.encode($DATA, "...", ...))也印证了这一套路:先定位高危 API,再约束敏感上下文。
四、七类高频漏洞的检测与修复对照
文档将漏洞模式与修复方案成对呈现,形成“检测 → 修复”闭环。以下逐类说明其检测信号与安全写法。
SQL 注入
风险写法:使用字符串格式化/拼接将用户输入嵌入 SQL 查询。
安全写法:
# 参数化查询
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
User.objects.filter(id=user_id) # ORM
参数化查询将数据与语句分离,是杜绝注入的根本手段;ORM 查询天然参数化。对应检测规则即上文 sql-injection-format-string。
跨站脚本(XSS)
风险写法:用未经消毒的用户输入直接操作 DOM(innerHTML、outerHTML、document.write)。
安全写法:
// 纯文本使用 textContent
element.textContent = userInput;
// React 默认转义
<div>{userInput}</div>;
// 确实需要 HTML 时先消毒
import DOMPurify from "dompurify";
element.innerHTML = DOMPurify.sanitize(userInput);
优先 textContent;React 等框架默认对插值转义;必须渲染富文本时用 DOMPurify 消毒。仓库中 frontend-security-coder 等前端安全 Agent 的职责(XSS 防护、CSP 实施)与此形成纵深呼应。
硬编码密钥
风险写法:API Key、密码、Token 直接写入源码。
安全写法:
import os
API_KEY = os.environ.get('API_KEY')
PASSWORD = os.getenv('DB_PASSWORD')
密钥一律从环境变量或密钥管理系统读取。该场景与 security-secrets.md(进阶凭据扫描)及 security-hardening.md 中 Step 10 的“Secrets Management”步骤(Vault / AWS Secrets Manager、轮换策略、移除硬编码密钥)衔接紧密。
路径遍历
风险写法:直接使用未经消毒的用户输入打开文件。
安全写法:
import os
ALLOWED_DIR = '/var/www/uploads'
file_name = request.args.get('file')
file_path = os.path.join(ALLOWED_DIR, file_name)
file_path = os.path.realpath(file_path)
if not file_path.startswith(os.path.realpath(ALLOWED_DIR)):
raise ValueError("Invalid file path")
with open(file_path, 'r') as f:
content = f.read()
防御要点有三:基于白名单目录 os.path.join 拼接、用 os.path.realpath 解析符号链接与 .. 逃逸、用 startswith 校验规范化后路径仍位于允许目录内。
不安全反序列化
风险写法:对不可信数据使用 pickle.loads()、yaml.load()。
安全写法:
import json
data = json.loads(user_input) # SECURE
import yaml
config = yaml.safe_load(user_input) # SECURE
优先使用格式中立且无任意代码执行面的 json.loads;必须用 YAML 时改 yaml.safe_load。对应 Bandit 检查器 B301/B302/B303 与 B506 正是为这些模式设计。
命令注入
风险写法:os.system() 或 subprocess 开启 shell=True 且拼接用户输入。
安全写法:
subprocess.run(['ping', '-c', '4', user_input]) # 数组参数
import shlex
safe_input = shlex.quote(user_input) # 输入校验
优先传参数数组(不经过 shell,无解析注入面);确需 shell 时用 shlex.quote 转义。对应上文 command-injection 自定义规则。
不安全随机数
风险写法:将 random 模块用于安全关键操作(会话 ID、Token 生成)。
安全写法:
import secrets
token = secrets.token_hex(16)
session_id = secrets.token_urlsafe(32)
random 是伪随机且可预测,安全场景必须改用 CSPRNG 的 secrets 模块。ESLint 的 security/detect-pseudo-random-prng 规则即针对 JS 侧同类问题。
五、框架级安全配置模板
SAST 不只盯单条语句,还要识别框架层面的错误配置。文档给出三大主流框架的“危险配置 → 安全基线”。
Django
危险信号:@csrf_exempt、DEBUG=True、弱 SECRET_KEY、缺少安全中间件。
安全基线(settings.py):
DEBUG = False
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
X_FRAME_OPTIONS = 'DENY'
要点:生产环境关闭 DEBUG(避免调试信息泄露与敏感路径暴露);SECRET_KEY 从环境注入;启用安全/CSRF/点击劫持三道中间件;强制 HTTPS 跳转、Cookie 加 Secure 标记、X-Frame-Options: DENY 防点击劫持。
Flask
危险信号:debug=True、弱 secret_key、CORS 通配。
安全基线:
import os
from flask_talisman import Talisman
app.secret_key = os.environ.get('FLASK_SECRET_KEY')
Talisman(app, force_https=True)
CORS(app, origins=['https://example.com'])
Talisman 统一设置安全响应头并强制 HTTPS;CORS 明确白名单来源而非 *。
Express.js
危险信号:缺少 helmet、CORS 通配、无速率限制。
安全基线:
const helmet = require("helmet");
const rateLimit = require("express-rate-limit");
app.use(helmet());
app.use(cors({ origin: "https://example.com" }));
app.use(rateLimit({ windowMs: 15 * 60 * 1000, max: 100 }));
helmet() 一键设置安全响应头;cors 限定来源;rate-limit 以 15 分钟窗口 100 次请求的阈值缓解暴力破解与滥用。这些模板与仓库 backend-api-security 插件的“安全后端编码、API 安全实现”职责同属一个安全编码体系。
六、统一多语言扫描器实现(源码级解读)
security-sast.md 附带了一个完整的 MultiLanguageSASTScanner 参考实现,用于把多个工具的输出统一成结构化发现(finding)。这与插件体系的设计哲学一致:安全 Auditor Agent 在扫描时正是“Execute SAST analysis (Semgrep/SonarQube patterns)”的角色(见 security-auditor.md 的审计工作流)。
核心数据结构:SASTFinding
@dataclass
class SASTFinding:
tool: str
severity: str
category: str
title: str
description: str
file_path: str
line_number: int
cwe: str
owasp: str
confidence: str
该结构统一了跨工具的字段口径:tool 记录来源(semgrep / bandit / eslint-security),severity 归一化为 CRITICAL/HIGH/MEDIUM/LOW,cwe 与 owasp 直接对应自定义规则中的 metadata 字段,为后续风险评分与合规映射提供数据底座。
语言自动探测
def detect_languages(self) -> List[str]:
indicators = {
'python': ['*.py', 'requirements.txt'],
'javascript': ['*.js', 'package.json'],
'typescript': ['*.ts', 'tsconfig.json'],
'java': ['*.java', 'pom.xml'],
'ruby': ['*.rb', 'Gemfile'],
'go': ['*.go', 'go.mod'],
'rust': ['*.rs', 'Cargo.toml'],
}
for lang, patterns in indicators.items():
for pattern in patterns:
if list(self.project_path.glob(f'**/{pattern}')):
languages.append(lang)
break
return languages
以“扩展名 + 生态标志文件”双重信号判定语言,例如存在 *.py 或 requirements.txt 即视为 Python 项目。该思路与同插件 security-dependencies.md 中的 detect_ecosystems(通过 package.json、pyproject.toml、go.mod、Cargo.toml 识别 npm/pip/go/cargo 生态)完全同构,说明“按清单文件自动发现技术栈”是本插件族的通用模式。
编排与结果归一化
def run_comprehensive_sast(self) -> Dict[str, Any]:
languages = self.detect_languages()
scan_results = {
'timestamp': datetime.now().isoformat(),
'languages': languages,
'tools_executed': [],
'findings': []
}
self.run_semgrep_scan() # 始终执行(跨语言兜底)
scan_results['tools_executed'].append('semgrep')
if 'python' in languages:
self.run_bandit_scan() # Python 专属
scan_results['tools_executed'].append('bandit')
if 'javascript' in languages or 'typescript' in languages:
self.run_eslint_security_scan() # JS/TS 专属
scan_results['tools_executed'].append('eslint-security')
scan_results['findings'] = [vars(f) for f in self.findings]
scan_results['summary'] = self.generate_summary()
return scan_results
编排策略是“Semgrep 无条件执行 + 按语言追加专属工具”,形成纵深覆盖。run_semgrep_scan 内部对 ['auto', 'p/security-audit', 'p/owasp-top-ten'] 三个规则集逐一执行,并解析 JSON 输出填充 SASTFinding,单条工具失败只打印告警、不中断整体扫描(except Exception as e: print(...)),体现“扫描工具应具备容错性”的工程取舍。
风险评分模型
def calculate_risk_score(self, severity_counts: Dict[str, int]) -> int:
weights = {'CRITICAL': 10, 'HIGH': 7, 'MEDIUM': 4, 'LOW': 1}
total = sum(weights[s] * c for s, c in severity_counts.items())
return min(100, int((total / 50) * 100))
采用加权线性评分并钳制在 0–100:CRITICAL=10、HIGH=7、MEDIUM=4、LOW=1,total/50*100 的含义是“每 50 个加权分折算 100 分”,得分可作为质量门禁的数值依据。类似思路也出现在 security-dependencies.md 的 VulnerabilityPrioritizer(cvss*0.4 + exploitability*2.0 + fix_available*1.0 的优先级评分),可见“数值化排序发现”是该插件族的标准化产出。
七、CI/CD 集成:把 SAST 固化进流水线
文档提供了 GitHub Actions 与 GitLab CI 两套最小可运行配置,符合 “Run early and often”(尽早、频繁运行)的最佳实践。
GitHub Actions
name: SAST Scan
on:
pull_request:
branches: [main]
jobs:
sast:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install tools
run: |
pip install bandit semgrep
npm install -g eslint @eslint/plugin-security
- name: Run scans
run: |
bandit -r . -f json -o bandit.json || true
semgrep --config=auto --json --output=semgrep.json || true
- name: Upload reports
uses: actions/upload-artifact@v4
with:
name: sast-reports
path: |
bandit.json
semgrep.json
关键设计:on.pull_request 使扫描成为合入前置门禁;|| true 保证扫描命令非零退出不中断流水线(报告上传后人工或门禁工具再判定);upload-artifact 将 JSON 报告作为构建产物留存。若希望“命中即失败”,可参照 sast-configuration 技能改用 semgrep --config=auto --error 或在后续步骤解析 JSON 检查 CRITICAL 计数。
GitLab CI
sast:
stage: test
image: python:3.11
script:
- pip install bandit semgrep
- bandit -r . -f json -o bandit.json || true
- semgrep --config=auto --json --output=semgrep.json || true
artifacts:
reports:
sast: bandit.json
GitLab 侧利用原生 artifacts.reports.sast 字段将 Bandit JSON 直接注册为 SAST 安全报告,可在 MR 界面原生查看;stage: test 将其纳入既有测试阶段顺序。
此外,sast-configuration 技能补充了两类轻量接入:pre-commit 钩子(.pre-commit-config.yaml 中注册 semgrep hook,参数 ['--config=auto', '--error'])与 GitHub Actions 的 Semgrep 官方 action(returntocorp/semgrep-action@v1,可同时传入 p/security-audit 与 p/owasp-top-ten 多规则集)。
八、最佳实践十条与落地建议
文档在收尾处给出十条实践准则,可归纳为四个实施阶段:
- 扫描频率:pre-commit 钩子 + CI/CD 双通道,尽早频繁运行(#1);
- 工具策略:多工具组合,不同工具覆盖不同漏洞面(#2);使用框架专属规则集(#5);自定义组织级规则(#6);定期更新工具(#10);
- 结果治理:调优误报——配置排除项与阈值(#3);按 CRITICAL/HIGH 优先排序修复(#4);建立基线管理已知问题(#9);
- 团队机制:开发者安全编码培训(#7);增量式修复而非一次性大改(#8)。
仓库中的 sast-configuration 技能 对这些准则给出了更细的操作指引,可重点关注:
- 基线先行:首次扫描建立安全基线,优先处理 CRITICAL/HIGH,输出修复路线图;
- 渐进采用:先启用纯安全规则,再逐步叠加代码质量规则,仅在关键问题上设置阻断门禁;
- 误报管理:记录合理的抑制项、为已知安全模式建立白名单、定期复审被抑制的发现;
- 性能优化:排除测试与生成代码、大库启用增量扫描、CI 中缓存扫描结果;
- 团队赋能:提供安全培训、沉淀内部安全模式文档、建立安全 Champion 计划。
技能中还给出了工具选型对照表,可作为 SAST 平台级决策参考:
| 工具 | 最佳场景 | 语言支持 | 成本 | 集成 |
|---|---|---|---|---|
| Semgrep | 自定义规则、快速扫描 | 30+ 语言 | Free/Enterprise | 极佳 |
| SonarQube | 代码质量 + 安全 | 25+ 语言 | Free/Commercial | 良好 |
| CodeQL | 深度分析、安全研究 | 10+ 语言 | Free (OSS) | GitHub 原生 |
九、协同工具矩阵与插件内分工
security-sast.md 明确将自己定位为 SAST 专项入口,并与同插件其他命令、Agent 构成完整的安全扫描体系:
security-secrets.md:进阶凭据扫描,专注密钥/Token 的深度检测(SAST 中的硬编码密钥规则是其轻量子集);security-owasp.md:OWASP Top 10 映射,将发现对齐到 A01–A10 分类(对应metadata.owasp字段);security-api.md:REST/GraphQL 端点安全测试;security-scan.md:综合安全扫描编排,聚合 SAST/DAST/依赖等结果;security-dependencies.md:依赖漏洞扫描 + SBOM 生成,覆盖 npm audit / safety / govulncheck / cargo audit;security-hardening.md:四阶段安全加固编排(评估 → 修复 → 控制 → 验证),其 Step 1 明确要求 Agent “Execute SAST analysis (Semgrep/SonarQube patterns)”,Step 4 要求“Fix SQL injections with parameterized queries / Fix XSS with output encoding”——正是本文漏洞修复章节的工程化落地;security-auditorAgent(security-auditor.md)与threat-modeling-expertAgent(threat-modeling-expert.md):前者负责执行扫描与修复,后者以 STRIDE/攻击树方法做威胁建模,SAST 发现是其输入。
在 Agent 使用方式上,docs/agents.md 中的斜杠命令示例 #L369-L371 展示了 /security-scanning:security-sast 的直接调用形式;同时 security-auditor 被分配 model: opus(复杂安全审计任务),若需在流水线中自动触发,可由 orchestrator 按任务复杂度在 Sonnet(执行扫描)与 Opus(深度审计)之间编排。
结语
从工具选型、规则编写到统一扫描器与 CI/CD 落地,security-sast 命令为多语言代码库提供了一条可复制、可量化的 SAST 实施路径:以 Bandit/ESLint Security/gosec 等语言级工具覆盖各技术栈,以 Semgrep 自定义规则承载组织级安全策略,以 SASTFinding 统一数据结构收敛多工具输出,再通过风险评分与流水线门禁形成闭环。对于准备在 Claude Code、Codex、Cursor 或 Copilot 等 harness 中建立 DevSecOps 基线的团队,可从本文的配置模板与示例规则直接起步,并结合 security-hardening.md 的加固编排将扫描结果转化为系统性修复行动。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0631
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
video-shotcraftAI宣传片skill,使用 Remotion 制作电影级产品视频:提供106 张镜头配方卡和可复用的视频魔板。适用于 Claude Code 与 Codex以及所有其他智能体Markdown00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python09
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00