mcpField
D
DevTime

DevTime

本地服务
github.com开发工具115 周前更新

关于 DevTime

DevTime 是面向软件仓库的本地优先工程分析工具,可从代码、测试、配置和决策记录中核验仓库声明并标示证据与不确定性,适合开发者和代码审查者。它不执行代码,也不要求 AI;其只读 MCP 服务可向编码 Agent 提供经过证据支持的仓库信息。

主要功能

  1. 01扫描代码、测试、配置与文档
  2. 02核验声明并呈现证据和矛盾
  3. 03跟踪证据变化导致的过期状态
  4. 04基于本地证据审查风险差异
  5. 05记录本地决策以减少不确定性

适用场景

  1. 01熟悉陌生仓库中的功能实现
  2. 02审查变更对已有声明的影响
  3. 03回顾项目行为背后的决策
  4. 04向编码 Agent 提供仓库上下文

MCP 相关

DevTime 提供本地只读 MCP 服务,通过 stdio 暴露四个工具:列出概念、解释概念、获取受控上下文包和核验声明。它只返回证据文件路径,不提供写入工具,也不启动网络监听。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"devtime": {
"command": "uvx",
"args": [
"devtime-ei"
]
}
}
}
启动命令uvx devtime-ei

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypidevtime-ei0.7.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

DevTime

DevTime 验证你的代码库实际上能证明什么。

名为 stripe/webhook.ts 的文件看起来像是代码库处理 Stripe webhook 的证明。但它可能只是一个只返回 404 的处理程序。DevTime 会根据代码库的实现、测试、配置和记录的决策来核查相关陈述,然后报告哪些内容得到支持、哪些与事实矛盾、哪些内容缺失,以及哪些内容已经过时。

无云端服务。无遥测。无代码执行。无需 AI。

DevTime 验证演示 - 一项声明从 SUPPORTED 变为 CONTRADICTED,再变为 STALE

更喜欢看视频?观看 2 分钟演示:DevTime 在本地扫描代码库,根据证据解释概念,指出不确定之处,发现有风险的差异,并展示一项得到佐证的决策如何帮助加深理解。


60 秒体验 DevTime

pipx install devtime-ei
dtc demo init
cd devtime-demo-saas
dtc init
dtc scan
dtc verify

在演示代码库中,账单 webhook 签名验证和 JWT 身份验证的结果为 SUPPORTED,路由测试关联的结果为 WEAK,因为这些路由没有任何测试导入。将它指向你自己的代码库,答案就会改变:

cd your-repo
dtc init && dtc scan && dtc verify

PyPI 发行包名为 devtime-ei。Python 包仍名为 devtime,CLI 命令仍为 dtc。dtc demo init 会将一个小型静态示例代码库复制到 ./devtime-demo-saas,让你无需克隆此代码库即可试用 DevTime。

从源代码运行
git clone https://github.com/Shakargy/devtime.git
cd devtime
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cd examples/demo-saas
dtc init
dtc scan
dtc concepts
dtc explain "Billing Webhooks"

在 Windows PowerShell 中:

git clone https://github.com/Shakargy/devtime.git
cd devtime
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -e ".[dev]"
cd examples/demo-saas
dtc init
dtc scan
dtc concepts
dtc explain "Billing Webhooks"

你应该会看到根据证据解释的 Billing Webhooks,包括受支持的声明、文件引用、不确定之处、Understanding Score 和 Understanding Debt。

要测试风险审查,请先进行本地修改,然后运行:

dtc risk --diff

完整且可直接复制粘贴的操作指南(包括风险差异和佐证决策步骤)见 DEMO_SCRIPT.md。

验证声明(实验性)

声明是关于代码库的陈述。验证会给出状态和凭据作为回答,绝不会声称证据无法支持的确定性。

Status: CONTRADICTED

Contradictions:
  - The billing webhook endpoint cannot verify signatures
    because it is a disabled stub.
      claimed:  pages/api/stripe/webhook.ts is named and routed
                as a billing webhook endpoint.
      observed: The handler's only behavior is a 404/501 response.
  • SUPPORTED - 当前扫描中存在所需的行为证据
  • WEAK - 存在相关表面,但缺少证明证据
  • CONTRADICTED - 可信证据与声明相冲突,并展示双方证据
  • UNKNOWN - 存在相关表面,但无法负责任地判断覆盖情况
  • NOT_APPLICABLE - 代码库中不存在与此声明相关的表面

内置四项声明:路由测试关联、管理员授权、账单 webhook 签名和 JWT 身份验证。dtc verify 会优先展示它在你的代码库中实际能够验证的内容;如果没有任何适用项,它会说明需要什么才能验证某项声明,而不会让你陷入僵局。

真实性与时效性是分开的:已验证声明所依据的文件发生变化时,该声明会变为 STALE,并指出相应文件。

要审查更改,请比较两个提交中的声明:

dtc review --base origin/main

它会根据两个提交的独立快照报告更改对各项声明的影响(回归、新近适用的声明,或原本成立的声明下发生变化的证据),且不会触碰你的工作树。它也会在 GitHub Actions 中以建议性作业摘要的形式运行。

完整模型及其局限性请参阅 VERIFICATION.md。

为什么要做这个项目

Git 会记录发生了什么变化,却不会保留这些变化背后的推理。当你再次查看某个代码库,或审查一个并非由你编写的代码库时,往往需要重新梳理某项行为为何存在、有哪些证据支持它,以及哪些内容仍不确定。

DevTime 会构建有证据支撑的代码库记忆:一个本地层,帮助代码库根据代码、测试、配置、路由和记录的决策来解释自身。它会展示代码库有证据支持什么,以及同样重要的——它目前还无法支持什么。

适用人群

DevTime 适合需要依据证据而非记忆来了解代码仓库的人。

如果你:

  • 正在熟悉不熟悉的代码库,需要了解某项功能是如何实现的;
  • 正在审查拉取请求,想查看有哪些证据支持某项行为;
  • 几周或几个月后重新回到一个项目,已经不记得某些内容为何存在;
  • 维护一个长期运行的项目,其中的设计决策很容易被遗忘;
  • 希望对代码仓库的理解有代码和记录下来的决策作为依据,而不是依赖自动生成的摘要;

那么 DevTime 会特别有用。

DevTime 可以帮助回答以下问题:

  • 这个代码仓库能否真正证明其文件名所暗示的内容?
  • 身份验证实际上是在哪里实现的?
  • 哪些文件可以证明 Billing Webhooks 的存在?
  • 还有哪些内容尚不确定?
  • 这个差异是否触及了有风险的概念?
  • 是否有解释这种行为的决策记录?

DevTime 的功能

  • 验证对代码仓库的主张,并报告状态、证据以及任何矛盾双方的情况。
  • 跟踪时效性,因此证据发生变化时,已验证的主张会变为过时。
  • 从路由、测试、配置、依赖项和文档中检测概念。
  • 通过将主张关联到文件和信号,基于证据进行说明。
  • 在证据缺失或薄弱时指出不确定性。
  • 使用理解度评分和理解债务标签评估理解程度。
  • 对范围较窄且有风险的差异进行审查,并提供建议性发现,包括差异会动摇哪些已验证的主张。
  • 在本地记录决策,以便有代码佐证时,决策依据可以降低不确定性。

支持的概念

验证功能的底层是一个扫描器,它会构建本地且有证据支持的记忆:

DevTime 终端演示 - 安装、扫描并依据证据说明代码仓库

DevTime 可检测六类受支持的概念。目前还无法发现任意领域概念:

  • 身份验证
  • Billing Webhooks
  • 后台任务
  • 数据导出
  • 管理员权限
  • 文件上传

目前,除此六类之外的所有内容均不在支持范围内。请参阅 LIMITATIONS.md。

DevTime 不会做什么

  • 它不会执行你的代码。
  • 它不会通过网络发送代码或数据。
  • 它不需要也不会调用 AI 模型。
  • 它不保证正确性或修改安全性。
  • 它不能取代代码审查或架构决策。
  • 它不是文档生成器、静态分析器、可观测性工具、生产力跟踪器或 AI 编码 Agent。

信任模型

  • DevTime 会将本地代码仓库记忆存储在 .devtime/ 中(本地 SQLite 数据库)。
  • 扫描期间不访问网络。
  • 扫描期间不执行代码。
  • 在扫描前会先裁剪被忽略的目录;被忽略的文件和机密信息绝不能成为证据或主张。
  • 每项主张都必须关联到证据——没有证据,就没有主张。
  • 证据薄弱时,应产生不确定性,而非信心。
  • 使用不等于决策:使用了某个依赖项,并不意味着有人决定了使用它的原因。
  • 默认情况下,风险审查仅提供建议——不会阻止 PR。

命令

命令用途
dtc init创建本地 .devtime 记忆。
dtc scan扫描当前仓库,并提取有证据支持的信号。
dtc concepts列出检测到的概念及其置信度和理解债务。
dtc explain <concept>解释一个概念:主张、证据、置信度、不确定性和理解债务。
dtc context <concept>为 Agent 或人类创建受治理的上下文包。
dtc risk --diff使用本地证据审查 git diff 中的高风险更改(仅供参考)。
dtc decision add添加本地决策记录,以减少不确定性。
dtc verify [claim]根据证据验证仓库中的主张:状态、矛盾和时效性(实验性)。
dtc review --base <ref>比较两个提交中的主张,并报告更改对它们的影响(仅供参考)。

(另有:dtc evidence、dtc debt、dtc status、dtc doctor --privacy、 dtc export、dtc reset、dtc mcp start。)

需要 Python >= 3.11 和 git。请参阅 QUICKSTART.md,了解 分步首次运行指南和故障排除。

与编码 Agent 配合使用(MCP)

编码 Agent 每次开始会话时,对你的仓库都一无所知,然后还会自信地猜测。 DevTime 为它提供值得信赖的记忆:一个本地只读 MCP 服务,只会根据仓库能够证明的主张作答, 并明确指出无法确定的内容。

安装支持 MCP 的版本并扫描你的仓库:

pipx install "devtime-ei[mcp]"
cd your-repo
dtc init
dtc scan

将 DevTime 添加到 Claude Code:

claude mcp add devtime -- dtc mcp start

或者在任何可读取 .mcp.json 的 MCP 客户端中使用:

{
  "mcpServers": {
    "devtime": {
      "command": "dtc",
      "args": ["mcp", "start"]
    }
  }
}

Agent 可使用四种只读工具:list_concepts、explain_concept、 get_context_pack(受治理的上下文,包含未经审查不得更改的路径、要运行的测试 和 Agent 指南),以及 verify_claim(主张状态、矛盾和缺失证据;每次实时计算,绝不持久化)。仅限本地 stdio——没有网络侦听器,没有写入工具,不会返回源代码,只提供证据文件路径。

DevTime 已在官方 MCP Registry 中列出,名称为 io.github.Shakargy/devtime。

安装

推荐:通过 pipx 从 PyPI 安装,这样 dtc 命令就能在隔离环境中通过 PATH 使用:

pipx install devtime-ei

也可通过 pip 安装:

pip install devtime-ei

PyPI 发行包名为 devtime-ei。Python 包仍名为 devtime,CLI 命令仍为 dtc。安装后,运行 dtc demo init,即可创建一个本地示例仓库进行试用。

从源代码安装
git clone https://github.com/Shakargy/devtime.git
cd devtime
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Windows PowerShell:

git clone https://github.com/Shakargy/devtime.git
cd devtime
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -e ".[dev]"

输出示例

$ dtc explain "Billing Webhooks"
Concept: Billing Webhooks

Supported claims:
  - Billing Webhooks is present and supported by behavior evidence.
    type: concept  confidence: 0.86  evidence: src/billing/stripe-webhook.ts, tests/stripe-signature.test.ts
  - Billing Webhooks has active route handling.
    type: behavior  confidence: 0.82  evidence: src/billing/stripe-webhook.ts
  - Billing Webhooks verifies webhook signatures.
    type: behavior  confidence: 0.85  evidence: src/billing/stripe-webhook.ts

Uncertainty:
  - No decision was found explaining key choices for Billing Webhooks.

Understanding Score: 58 / 100
Understanding Debt: medium
causes:
  - missing or uncorroborated decision evidence
  - no confirmed owner

理解分数越高,表示理解程度越好;理解债务是一个标签(低/中/高),并非同一个数值。

验证

DevTime 可在 examples/demo-saas 和真实仓库上运行。在 Reality Validation 期间,它检测到真实故障并从中学习——包括对 Next.js App Router 的盲区、 在通用 Webhook 系统上误判为 Billing Webhooks、将数据库迁移错误计为 Background Jobs 证据等。每个故障都被加入测试样例,防止其悄无声息地再次出现。

  • 随着真实故障被加入测试样例,测试数量从 13 增至 88。
  • 在一个包含 355 个文件的真实仓库中,通过剪除被忽略的目录,扫描时间从约 27.3 秒降至约 0.48 秒。

完整证据、前后示例和验证报告见 PROOF.md 和 reports/reality-validation/。

隐私与安全

  • 完全在本地运行;扫描期间不会有任何内容离开你的计算机。
  • 扫描期间不会执行代码,也不会发起网络调用。
  • 按设计,机密信息和被忽略的文件不会纳入证据(dtc doctor --privacy 会报告这些边界)。
  • dtc reset 会删除本地记忆;绝不会修改你的源代码。

已知限制

DevTime 是一个启发式扫描器,不是完整的编译器或语义分析器。目前,它在与其测试样例相似的 TypeScript / Next.js / Express / FastAPI 风格代码仓库中表现最佳。可能出现误报和漏报。理解债务是一种产品信号,并非客观且普遍适用的真理。

请在 LIMITATIONS.md 中阅读完整列表,包括框架覆盖范围、风险审查范围,以及有意暂未构建的内容。

路线图

这是一个早期的本地优先 V0,重点是在扩大规模之前建立信任。尚未构建(有意为之)的内容:Git 历史信号、可写入的 MCP 工具、AI 提供商、UI,以及任何云端、团队或企业功能。请参阅 ROADMAP.md。

参与贡献

最有价值的贡献是一个测试样例:一个小型代码仓库模式,以及预期概念、允许的声明、禁止的声明和必须体现的不确定性。如果 DevTime 在你的代码上出错,这个错误输出可以成为测试样例,从而避免回归。请参阅 CONTRIBUTING.md。

许可证

基于 Apache License 2.0 许可。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。