
UpToCode
io.github.DDYRich72由 GitHub 账号 DDYRich72 发布v1.0.0更新于 Oct 27, 2026
Evidence-backed architecture-quality analysis for Python agent applications.
概览
UpToCode 扫描 Python 与 TypeScript 智能体代码中的架构缺陷,如无界循环、缺少预算与审批,并生成需人工批准的修复计划。
- 可以做什么
- 扫描仓库、文件、源码与差异,返回带证据的架构缺陷发现
- 对智能体代码执行严格的 schema 与循环检查
- 查询规则目录,涵盖执行边界、预算、审批、校验、容错、评测与可观测性
- 审阅发现并批准或拒绝,生成与报告绑定的修复计划
- 审计 MCP 服务器是否缺少认证、工具注解与严格参数
- 适用场景
- 适合在审查或加固基于 OpenAI、Anthropic、CrewAI、PydanticAI、LlamaIndex 或 LangGraph 构建的智能体应用时使用,也适合在改代码前先获得有证据支撑的结构化整改计划。
- 运行要求
- 本地模式以 Python 包形式运行(需 Python 3.11 或更高版本),可通过 uvx 或 pip 安装,并限定在配置的工作区根目录内。托管 Streamable HTTP 端点需要在 Authorization 头中提供单独签发的 bearer 令牌。静态扫描离线进行,无需凭据。
安装
在 SourceWeft 中
- 打开 控制台中的 UpToCode,将其添加到工作区。
- 连接 Authorization token 凭据。它们会被私密存储,绝不会在公开页面上展示。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
交给智能体安装
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/io.github.DDYRich72%2Fuptocode/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"uptocode": {
"type": "http",
"url": "https://uptocode-mcp-1015314816960.us-central1.run.app/mcp",
"headers": {
"Authorization": "Bearer <YOUR_TOKEN>"
}
}
}
}README
UpToCode
[PyPI version] [Scanned with UpToCode]
UpToCode is a design-time architecture-quality scanner for Python and TypeScript agent applications. It finds missing execution bounds, run budgets, approvals, validation, resilience controls, evals, and observability; explains the evidence; and produces an approval-driven plan for Codex without rewriting source code.
The product is deliberately narrower than a general agent-security scanner. Version 1.7 recognizes OpenAI, Anthropic, CrewAI, PydanticAI, LlamaIndex, LangGraph, conservative custom Python/TypeScript loops, and positive evidence of unbounded context growth. Static scans are local and offline. Optional GPT‑5.6 judgment remains explicit, bounded, redacted, and code-sharing gated.
The Python distribution, import package, and command are all
uptocode. Version 1.0.0 is the published baseline; this source tree is prepared as 1.10.0 for the operator-gated Batch 3 release train.
Install locally
UpToCode requires Python 3.11 or newer. Install the verified 1.0 release from PyPI:
For repository development, use the editable test environment:
All ordinary tests are mocked/offline:
Judge test build
The repository and package are public. No hosted credential or paid model call is required for the complete offline test build.
Activate the environment with .venv\Scripts\activate on Windows PowerShell or
source .venv/bin/activate on POSIX, then run:
The first scan intentionally exits 1 because the fixture contains critical findings.
The remaining commands produce a report-bound review manifest and an approved-only
FIXPLAN.md; they do not edit the fixture. To inspect the local MCP surface, run
uptocode serve --transport stdio --root . from an MCP client or use the JSON
registration under MCP registration. python scripts/acceptance.py
also launches a real stdio server, lists all ten tools, and calls check_loop offline.
The submitted-content hosted transport is deployed at
https://uptocode-mcp-1015314816960.us-central1.run.app/mcp. Its bearer credential is
issued separately and read from UPTOCODE_API_KEY; never commit it or enter it into the
website. The immutable production revision passed readiness, unauthorized-access, AA001,
tool-discovery, judgment-gate, rate-limit, and payload-free-log checks. Hosted judgment is
off, no OpenAI key is attached, and verification made zero paid model calls.
Scan, review, plan
Scanning, review, planning, and the default fix preview are non-mutating:
review binds decisions to the exact report fingerprint. plan refuses a mismatched manifest and includes only approved findings. Neither command edits the scanned repository.
fix is also a no-write dry-run unless --apply is supplied. The applying path requires
a clean Git checkout, creates one retained uptocode/fix-<fingerprint12> branch/worktree
per approved finding, invokes only the selected external runner there, verifies fingerprint
absence, and never commits, merges, deletes work, or changes the invoking checkout.
Exit codes are 0 for no configured threshold breach, 1 for a finding at or above --fail-on (or a requested analysis-warning gate), and 2 for invalid configuration or an unrecoverable scan error. Experimental findings remain visible but require --include-experimental to affect --fail-on. --share-safe sanitizes JSON, HTML, or SARIF for distribution while retaining the repository revision. Baseline 2.1 reports new, aging, and resolved debt and preserves first_seen when updated. Suppressions may include owner, quoted reason, and an inclusive expires date. HTML requires --output. GitHub workflow commands escape untrusted command data and properties. SARIF 2.1.0 omits absent fields, declares default rule levels, and carries stable partial fingerprints. --github-summary PATH appends a bounded Markdown summary; when GITHUB_STEP_SUMMARY is set, the summary is appended there automatically.
Pre-commit
Run pre-commit install, then use pre-commit run uptocode --all-files. To copy the
project badge into your own README:
GitHub Action
The repository ships a composite Action that installs UpToCode from the Action checkout,
runs the scan, uploads SARIF with always(), and only then returns the preserved scanner
exit code:
version: source installs from the checked-out Action source. An exact semantic version,
such as 1.0.0, installs the matching uptocode PyPI release. Set
upload-sarif: "false" when code-scanning
upload is not desired; otherwise the calling workflow needs security-events: write.
Example terminal output:
Privacy model
- Static scanning is the default and makes no network calls.
--judgmentis rejected unless--send-codeis also present.- Judgment sends only normalized evidence and bounded, redacted excerpts, grouped once per candidate rule. Requests use
gpt-5.6, Pydantic Structured Outputs,store=false, a 2,000-token output ceiling, a 30-second timeout, and a six-rule call budget. - Recognized OpenAI keys, AWS access keys, bearer tokens, email addresses, and US Social Security numbers are replaced before report or judgment output. Detection is intentionally narrow and is not a substitute for a dedicated secret/PII scanner.
- Nested
.gitignorefiles, default build/dependency/generated exclusions,.uptocode.yml, 1 MiB per-file and 4 MiB aggregate limits, binary/non-Python exclusion, and explicit suppressions are honored. Production UpToCode source is gated at zero suppressions. - Refusal, timeout, authentication failure, or API failure never deletes static results; the report records
partialorfailedjudgment status and an analysis warning.
No live API call is part of the offline test or acceptance suite. The submission smoke test requires a key and separate approval for paid usage.
Rules
Each static verdict requires recognized syntax and source-backed evidence. Unsupported or dynamic constructs produce coverage gaps or analysis warnings; they are never silently declared clean.
VS Code
The standalone extension in editor/vscode-uptocode/ scans Python documents on save and
turns valid UpToCode JSON findings into file diagnostics. It runs no daemon or background
repository scan and provides no auto-fix. Build and install a local package with:
Configure uptocode.executable, uptocode.extraArgs, and uptocode.failOn in VS Code.
Marketplace publication remains operator-only.
Supported and unsupported constructs
Recognized evidence includes:
- OpenAI
Runner.run/run_synclimits: omittedmax_turnsis clean because the SDK default is bounded; explicit numeric limits are clean;max_turns=Noneis flagged. - LangGraph
recursion_limitwhen statically resolvable. while Trueloops with detectable exits, constant bounds, and simple recursive base cases.- OpenAI Responses model calls, output caps, client/call timeouts, bounded client retries, and simple source-level run budgets.
@function_toolapprovals, its model-controlled parameters reaching common SQL/shell/file/network sinks, parameter-linked validation, agent eval markers/tests, and nearby logging/tracing evidence.- Anthropic Messages/Agent SDK, CrewAI, PydanticAI, and LlamaIndex framework contracts documented under
docs/frameworks/. - Tree-sitter analysis for
.ts,.tsx, and.mts: custom infinite loops, OpenAI Agents JSmaxTurns, LangGraph.jsrecursionLimit, token/timeout/retry options, Zod tool parameters, and tracing imports.
Known limitations:
- TypeScript coverage is intentionally limited to AA001, AA002, AA004, AA007, and AA012; every other rule is reported per-language as not applicable.
- Dynamic imports, metaprogramming, dispatch beyond the supported one-hop project call graph, and runtime-only behavior remain inconclusive and produce coverage warnings when recognized.
- Static side-effect and schema analysis is conservative and can produce false positives; findings should be reviewed before planning.
- Secret/PII recognition covers a small explicit pattern set, not arbitrary credentials or personal data.
- No instruction-file linting, runtime tracing service, in-process source-changing codemod,
browser repository upload, or account system. Explicit
fix --applyremediation is delegated to an external runner in an isolated Git worktree.
Configuration
Create .uptocode.yml at the scan root:
Paths in reports are normalized relative to the scan root. Report 2.2 coverage records aggregate and per-language discovered/analyzed files, detected frameworks, evaluated/not-applicable rules, suppressions, warnings, judgment status, and redaction counts.
Standalone HTML reports include keyboard-accessible Approve/Reject decisions and download
a report-bound ReviewManifest 2.0 locally through a Blob. The report performs no network
requests; uptocode plan remains the only manifest consumer and never edits source.
Generate matching HTML and JSON from one scan before reviewing:
MCP registration
Run the stdio server directly with uptocode serve, or register the module with an MCP client:
Local mode exposes repository/file/source/diff audits, strict schema and loop checks, the rule catalog, review, and FIXPLAN generation. It is bounded to the configured canonical workspace root, including symlink defense, and may load only explicitly trusted local rulepacks.
Hosted Streamable HTTP mode registers only submitted-content tools. It has no repository or
filesystem-path tools, never persists submitted code or results, and requires private-beta
bearer keys configured as SHA-256 digests in UPTOCODE_API_KEY_HASHES. Authenticated
requests use an in-memory per-key token bucket (UPTOCODE_RATE_LIMIT_PER_MINUTE, default
30); excess requests return 429 with Retry-After. Logs attribute traffic only to an
eight-character digest prefix. Hosted judgment is rejected unless
UPTOCODE_HOSTED_JUDGMENT=true; the default is false. The double-consent
judgment=true, send_code=true rule still applies when the global gate is enabled.
Local mode resolves its canonical workspace root once when the server is created. Relative
and absolute file, repository, and diff-base paths are all contained against that same root,
including symlink resolution. The pinned MCP SDK compatibility guard fails server startup
with the installed SDK version if the strict-schema private contract changes; the upgrade
procedure is documented in docs/operations.md.
The functional landing and connection generator live in web/. /connect generates local stdio or hosted Codex MCP configuration; bearer keys remain in the user's local environment and are never entered into or transmitted by the page.
UpToCode audits itself
The release gate runs python scripts/compliance.py against UpToCode's production Python
source. The current verified result is zero findings, zero suppressions, and zero unexplained
analysis warnings. Deliberately bad fixtures and synthetic redaction sentinels remain test
evidence and are excluded from that production claim. This dogfood check is part of every
release candidate, alongside the full offline suite and branch-coverage floor.
Built with Codex and GPT-5.6
Codex was the development collaborator throughout UpToCode: it translated the product
specification into vertical slices, implemented and reviewed the scanner, CLI, reports,
MCP servers, site, and tests, fixed clean-clone defects, and ran the Windows/POSIX
submission gates. UpToCode also produces a report-bound FIXPLAN.md with a copy-paste
Codex hand-off, so approval—not automatic source mutation—connects analysis to coding.
The competition-first work order, decisions, progress log, and validation report remain
in the repository as an auditable record of that collaboration.
GPT-5.6 powers the optional judgment tier through OpenAI Responses Structured Outputs.
It evaluates only bounded, redacted evidence for candidate rules that need contextual
judgment. The feature is opt-in twice (--judgment --send-code), uses store=false, and
never replaces or deletes deterministic static findings when a request fails or is
refused. Ordinary tests, the judge test build, and the demo dry-run are entirely offline;
any live paid call requires separate operator approval.
Project evidence
- Implementation specification
- Goal prompt
- Progress and self-scan triage
- Validation report
- Architecture compliance matrix
- Reference production specification
- Hosted operations and rollback
- Hosted judge access
- Under-three-minute demo script
- Event rules and evidence checklist
- Submission evidence index
No repository, package, video, deployment, or submission is published by this project workflow without explicit approval.
来源:README.md,提交 84d19ba
工具
0版本历史
1- v1.0.0最新Sep 16, 2026
评分
已满足适用检查项的 85%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通必需25 分
- 已声明认证方式必需10 分
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分