Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>工时账本 · 自动化开发报价New to Visual Studio Code? Get it now.
工时账本 · 自动化开发报价

工时账本 · 自动化开发报价

vortelyn

|
3 installs
| (0) | Free
分别记录人工与 AI 工时及各会话模型的 Token 用量,按工时、Token 或代码量核算成本与报价,支持基础模块分摊及压缩账本。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

工时账本 · 自动化开发报价

工时账本 Logo

为自动化软件开发记录实际投入、核算项目成本、分摊基础模块投入,并独立估算新项目预算。扩展标识为 vortelyn.vortelyn-devledger。

五个工作模块

模块 用途
工时计算 分别记录人工工时、AI 执行时长及各会话模型的 Token 用量,三项并列核算内部成本与报价金额,并统计代码规模
工时明细 日、周、月、年汇总;GitHub 风格的年度热力图,可切换工时与成本,点击日期查看当天记录
项目成本 统一维护基础模块、开发计价、补充工作、直接费用、税费及报价说明;核算并导出成本
项目报价 展示保存后的总价与费用明细,可直接勾选报价包含人工、AI 执行时长、AI Token 用量中的哪几项,支持客户展示及导出
项目估价 根据拟开发功能、预计工时或功能点、复杂度和复用比例独立估算预算

项目估价有独立的参数文件和导出入口。修改估价不会改变项目报价。按工时报价使用项目完整有效记录,按代码量报价使用保存的计价数量;工时计算页的日期筛选用于期间分析。

安装和使用

  1. 在 VS Code 扩展面板选择 从 VSIX 安装,选择 vortelyn.vortelyn-devledger-1.7.3.vsix。
  2. 打开可信的本地项目文件夹,点击状态栏的工时状态,或运行 工时账本:打开工时与报价面板。
  3. 在“项目成本”中维护全部费用、内部成本与客户单价,点击“保存全部项目设置”。在“项目报价”中预览、展示或导出结果。
  4. 在“项目估价”中维护拟开发功能,选择预计工时法或功能点法,独立保存和导出。

从早期本地版本升级时,请先禁用或卸载 local-workshop.devledger 或 vortelyn.devledger,保留项目 .devledger 文件夹,避免两个扩展同时记录。原工时账本继续使用;旧版功能估算模块在首次保存项目估价时迁入 estimate.json,原设置文件中的历史字段保留。

在编辑器已信任的工作区中,遇到 NAS、共享目录等引起的 Git 所有权错误时,扩展会自动把当前项目所属仓库加入本机当前用户的 Git 信任列表并重试,无需逐个项目手动执行命令。映射盘与 UNC 路径统一识别,已有信任配置保留。

支持 VS Code 1.96 及以上版本。AI 工具的任务钩子需要相应工具版本支持。远程工作区需在扩展宿主所在环境中读取日志与执行接收脚本。

工时与成本

  • 人工工时:依据前台编辑器键盘、鼠标、切换文件及终端操作记录,默认保留 3 分钟阅读和思考宽限期。离开窗口、暂停、超时闲置后停止;休眠或超过 25 秒的心跳间隔剔除。
  • AI 工时:根据任务生命周期记录后台分析、生成和工具执行。已识别的审批和同步提问等待扣除。未完成任务先累计至最近执行事件,后续记录补齐时更新。
  • 开发有效时长:人工和 AI 在时间轴上合并去重。同一人多窗口重叠去重,不同人的人工投入按人时累计。 人工、AI 执行时长、AI Token 用量三项始终分别计算数量、内部成本和报价金额,工时计算页的“投入核算”表并列显示,未计入的项目以灰色标注:
投入类型 数量 内部成本 报价金额
人工 实际人工工时(含可计费工时) 实际工时 × 人工内部成本单价,始终计入 可计费工时 × 对应人工单价
AI 执行时长 AI 任务时长 任务累计时长 × AI 执行内部成本单价 计费时长 × AI 执行计费单价
AI Token 用量 各会话各模型的 Token 数 Token × 模型单价 × 汇率 × 成本倍率 Token × 模型单价 × 汇率 × 报价倍率

“计入项目成本”和“计入对外报价”分别勾选。人工成本包括实际投入中的不计费时间;两种 AI 成本若对应同一笔支出,只勾选其一,同时勾选时页面会提示核对。

“投入核算”可切换为汇总、按开发者、按电脑。按开发者或按电脑时,每个分组同样列出人工、AI 执行时长、AI Token 用量三项及计入合计,各组之和与汇总一致(AI 按执行时段合并去重计费时,各组之和可能大于汇总)。开发者以 Git 账号区分:user.email 识别同一人,同一人在多台电脑上的记录合并;user.name 用于显示;Git 未配置用户时使用设置 devledger.developerName,再留空使用系统用户名。每个编辑器安装把自己的 Git 账号和电脑名写入 .devledger/identities/,随 Git 同步,该安装此前写入的记录也一并归属;钩子记录的 AI 任务按电脑名归属。内部报价导出包含按开发者、按电脑统计表,工时 CSV 增加开发者和电脑列。补充工作、基础模块分摊与项目直接费用不按开发者或电脑分摊。

日历成本包括上述工时成本及单独计入的补充工作成本。基础模块分摊、订阅分摊、API 账单、差旅等项目费用在“项目成本”中另行归集,避免将无明确发生日期的支出分配到某一天。

日历显示所选年份;日、周、月表格汇总该年的记录,年视图比较全部有记录年份。窄窗口首次打开日历时居中定位今天,完整年份可见时保留全年视图;“今天”按钮可回到当前日期。手动滚动后的视野不会被周期刷新重置。周一为周起点,跨年周只汇总所选年份的部分。日期划分使用项目统计时区,中国大陆默认为 UTC+8。

会议、外部调研、现场工作和长时间阅读可补录并填写依据。历史估算单列。Git 提交历史可生成待确认的历史估算;有日志的 Codex 历史任务可导入,早期人工投入也可依据工作记录补录。

AI 接入

工具 接入方式
Codex VS Code 插件 自动读取本机匹配当前项目的任务记录;支持同步历史会话
Claude Code VS Code 插件 自动写入项目 .claude/settings.json 中的共享任务钩子
GitHub Copilot Agent 写入 .github/hooks/devledger.json,支持 VS Code Local 对 Copilot 格式的映射
Cursor Agent 写入项目 .cursor/hooks.json

打开可信工作区后,默认自动配置 Claude Code、GitHub Copilot 和 Cursor 的任务钩子,新会话即可记录工时。设置 devledger.autoConnectTools 可关闭后续自动配置;已有钩子继续有效。“工时计算”底部的 AI 工具接入与计时状态 保留手动接入入口。接收脚本需要 node 可用(建议 Node.js 18 或以上)。配置备份保存在本机缓存目录的 hook-backups/,原有钩子保留。旧版 Claude 本地配置中的账本钩子自动迁入共享配置,个人权限、环境变量和其他钩子留在原文件。面板区分“尚未接入”“已配置,等待事件”“已收到事件”。

Codex 默认每 10 秒增量同步,每分钟发现最近 7 天新建的会话;启动后约 30 秒及此后每 12 小时自动补读一次全部历史会话,“同步 Codex / Claude 历史记录”可立即读取。设置 devledger.codexHome 可指定源数据目录,默认使用 CODEX_HOME 或用户目录的 .codex。Claude Code 的 Token 用量读取用户目录 .claude/projects 中属于当前项目的会话记录(含子代理),可用 devledger.claudeHome 或 CLAUDE_CONFIG_DIR 指定目录。通过映射盘、UNC 共享路径或目录链接打开同一项目时,Codex 与 Claude Code 会话按文件夹本身识别归属;已接入钩子的 Claude Code 会话还会记下本机会话文件夹名称(保存在 .devledger/local/,按电脑与用户区分,不随 Git 同步),即使路径写法完全不同也能统计。

Claude Code、Copilot 和 Cursor 从接入后的新会话开始记录,其旧会话历史尚未自动导入。普通行内补全按人工操作统计。某些工具版本没有完整等待事件,统计中可能包含尚未识别的等待时间。钩子按主任务记录,其内部子代理执行计入主任务经过时间;Codex 独立子任务日志可形成独立记录。

AI 默认采用“并发任务累计”计价,同时保留“执行时段合并去重”选项。例如两个任务同时执行一小时,默认计费两任务小时。已有项目继续使用已保存的选择,可在项目成本的开发计价分组切换。人工计时暂停和窗口焦点均不影响 AI 记录。手动 AI 观察仍保留为单独参考,不与自动记录重复计费。

按 Token 用量计费

扩展按会话和模型统计本项目的 AI Token 用量:Claude Code 读取会话记录中每次模型响应的用量,同一响应的多条记录只计一次;Codex 读取每次请求的用量,重复事件与派生会话继承的累计值不重复计入。用量按会话、模型、计价变体(如 Claude 快速模式、Codex 优先处理)和小时汇总写入项目账本,源会话记录日后被工具清理也不影响已同步的统计。

每个模型分别计价:

Token 金额 = Σ(输入、输出、缓存读取、缓存写入 Token × 对应模型单价)÷ 1,000,000 × 美元汇率 × 倍率。

  • 单价单位为美元 / 百万 Token,内置常见 Claude、GPT、Gemini、DeepSeek、GLM、Kimi 等模型的公开标准价,可在“项目成本 → 开发计价 → AI Token 单价与汇率”中逐项修改,修改值只保存为本项目的自定义单价。
  • Claude 缓存写入按 5 分钟与 1 小时分开计价;有分档价格的模型按每次请求的输入规模自动套用。Codex 的输入扣除缓存读取部分后按输入价计算。
  • 成本倍率反映实际采购价格,例如按标准价 3 折采购填 0.3;报价倍率反映对外加价,例如加价 50% 填 1.5。
  • 未内置的模型显示为“未定价”,暂按零计价,并在面板和导出中提示;计价变体没有公开倍率时按标准价估算并标注。

Token 用量计入报价时按模型逐项列示,客户展示只显示 Token 数量与金额,不显示汇率、倍率和内部成本;工时 CSV 按会话、模型、日期列出 Token 明细。工时计算页的 Token 卡片随日期筛选统计,工时明细按日、周、月、年显示 Token 数量。

多人或多台电脑开发同一项目时,每台电脑只读取本机的会话记录,按会话写入项目账本:不同会话分别计入;同一会话被多个编辑器读取(例如同一台电脑上的 VS Code 与 Cursor)只保留最新一份,不会重复累计。每个编辑器安装、每台电脑写入各自的账本文件,复制到另一台电脑的编辑器配置也不会在 Git 中写同一文件。用量按开发者标注,名称取设置 devledger.developerName,留空时使用 Git user.name,再留空使用系统用户名;Token 卡片、内部报价和工时 CSV 按开发者分列,“最近上报”显示各开发者电脑最近保存用量的时间。其他电脑的用量需该电脑启用本扩展并提交、同步账本后才计入,未同步前总量偏低。

已读取的 AI 任务与 Token 用量保存在项目账本中,Codex、Claude Code 之后清理、归档会话记录不影响已统计的数据。同一会话的多份用量记录按小时取较大值合并,日志被删减或改写后重新读取只会补充、不会减少已保存的用量;在原位置改写过的日志会从头重新读取。自动补读历史可在工具清理旧记录前保存用量(Claude Code 默认保留约 30 天);从未被任何电脑读取就已删除的记录无法恢复。

项目成本

新项目默认 AI 内部成本为 40 元/小时,对外报价为 60 元/小时。已有项目沿用已保存的单价,零成本及其他自定义值均保留。

项目成本 = 基础模块分摊 + 实际人工投入成本 + 勾选计入的 AI 执行时长成本与 AI Token 用量成本 + 补充工作成本 + AI 其他直接费用 + 其他项目实际费用。

成本页按基础模块分摊、开发计价、补充工作、直接费用、税费与报价说明分组,统一维护内部成本和客户收费单价。所有修改一次保存,成本与报价同步更新;撤销本次修改可恢复最近保存的设置。成本页显示税前报价与项目成本的差额,并可单独导出成本明细。小时成本属于依据实际投入形成的内部核算,尚未录入的支出不计入合计。

订阅折算公式为:同账期订阅与额外额度费用 ÷ 对应账户在全部项目中的 AI 任务累计小时。多订阅合并核算时,费用与工时应覆盖相同工具和账期。折算结果可填入 AI 内部成本单价;同笔订阅已计入小时成本后,应从其他直接费用中扣除,额外支出可单独登记。

订阅成本按实际账单和同账期任务累计时长折算,客户单价按约定维护。

补充工作:录入一次,共用于成本与报价

“项目成本”提供共用补充工作清单,涵盖需求对接、文档编写、现场部署、现场联调、培训验收、差旅途中及其他工作。每项记录发生日期、工作事项、实际小时数和内部说明,无需填写起止时间。

每项分别设置内部成本单价和对外报价单价。留空时使用项目的人工内部单价、人工计费单价;填写 0 表示零价。工作项确定后先加入当前草稿,统一保存项目设置后,项目成本和项目报价引用同一条记录,修改事项、工时或单价后两边共同更新。报价页提供返回成本页的入口,无需重复录入。

  • 单独计入成本:小时数 × 内部成本单价,加入项目成本。
  • 单独计入报价:小时数 × 对外报价单价,加入税前报价并按项目税率计算税费。
  • 若工作已包含在开发单价或总价中,可取消对应选项,记录仍保留。

两种计价方式均支持补充工作。按代码量报价时,需求对接、现场部署等额外服务仍可按工作项计价。基础库分摊、AI 实际支出及其他项目费用继续沿用现有参数。

补充工作只填写自动计时和已有工时补录尚未覆盖的净投入。每项工时为 0.01 至 24 小时,跨日工作分日记录。它按日期统计,不生成虚构时间段,也不参与时段重叠去重。工时明细单列补充小时;日历工时为记录有效时长加补充工时,日历成本包括单独计入的补充成本。

内部成本明细和工时 CSV 包含补充记录;客户报价仅显示勾选计入报价的工作事项、小时、对外单价和金额,隐藏内部说明及成本单价。共用清单保存在现有 settings.json 中,不额外生成记录文件。

从 Git 历史补估

在“项目成本 → 补充工作 → 从 Git 历史补估”中选择作者、日期范围和估算参数,生成候选工作项。仅分析当前本地分支、当前工作目录范围内的非合并提交,最多读取最近 5000 条;浅克隆按本地可见历史处理。

建议工时采用明确的假设:每段起始计入 30 分钟;同一作者同一天相邻提交相隔不超过 120 分钟时连接,长间隔重新开始;单日默认上限 8 小时。参数与逐日小时数均可修改。这些初始值用于整理历史线索,不是行业标准或实测工时。批量导入、集中提交、修改提交日期及 AI 批量生成都会影响估算。

候选项显示提交次数、文本增删行数和已有记录。增删行数排除常见构建、依赖目录与锁文件,包含注释等文本;二进制修改不计行数。行数仅供核对,不直接换算为小时。

候选列表支持全选可导入项、仅选未记录项和取消全选,也可逐项调整选择。选择范围为当前作者与日期条件下生成的全部候选项,已导入项自动跳过;部分选中时全选框显示半选状态。所有候选均需勾选后导入,已有记录日期会提示核对。同一作者同一天的已导入估算不能重复导入。导入后可编辑、移除,并统一保存到现有的补充工作清单。默认不单独计入报价;按代码量核算时也默认不单独计入成本,勾选前需核对开发单价是否已覆盖这些投入。

导入项在成本、报价、明细和导出中保留“历史估算”标记。Git 记录不能可靠区分人工与 AI,补估小时不加入自动记录的人工或 AI 工时。作者姓名与邮箱仅用于本地选择,提交内容和候选列表不另存文件;只保存选定日期、小时数、统计依据及去重标识。

项目报价

项目报价 = 基础模块分摊 + 勾选计入的人工开发费用、AI 执行时长费用与 AI Token 用量费用 + 补充工作报价 + 另计 AI 直接费用 + 其他直接费用 + 附加税费。

项目报价页的“报价包含”可直接勾选人工开发、AI 执行时长、AI Token 用量中的任意几项,勾选后立即保存;未勾选的项目不计费,也不在客户报价中显示。项目成本页“对外报价”分组中的同名勾选与之同步。

基础模块支持三种分摊方式:

方式 计算
按项目数 原开发成本 ÷ 预计复用项目数
按比例 原开发成本 × 本项目分摊比例
固定金额 直接填写本项目承担的金额

例如,通信框架原开发成本 30,000 元,预计用于 10 个项目,本项目分摊 3,000 元。参数按各项目实际使用情况维护;当前版本不自动汇总其他工作区的已回收成本。

人工默认单价 200 元/小时,AI 默认单价 60 元/小时,均为可修改的经营参数。分类人工单价可以覆盖默认单价。AI 执行时长费用与 Token 费用可分别计入或不计入报价,记录始终保留。若计入报价的 AI 费用已包含订阅或 API 支出,勾选“开发计费单价已包含 AI 直接费用”;内部成本仍保留实际支出。两种 AI 费用都不计入报价时,填写的 AI 直接费用单独计入报价。

修改单价后,已有记录按新单价重新核算。已确认的报价以导出快照留档。

报价明细显示实际小时单价;存在不同分类单价时逐项列示。工时显示六位小数,费用按原始记录计算,金额保留两位小数;必要时单列分位舍入调整,使费用明细与合计一致。综合展示使用各项计费工时之和及折合单价,隐藏人工与 AI 的分项。

按代码量核算成本与报价

项目成本的“开发计价”分组分别设置成本核算和对外报价依据,均支持“按工时计算”和“按代码量评估”。默认沿用工时方式,也可采用工时核算成本、代码量形成报价的组合。

计价行数 = 代码总行数 − 扣除行数。

代码开发成本 = 计价行数 × 内部每行成本。

代码开发费用 = 计价行数 × 对外每行报价。

成本与报价分别维护数量、单价和计算依据,在项目成本页统一保存;对外报价可引用当前成本代码量。每行单价由项目经验确定,初始为 0,支持四位小数。单价应覆盖对应开发范围的人工与 AI 投入,设计、调试和交付要求应一并考虑。

数量支持手工录入或引用最近扫描,只引用代码行,排除注释与空白行。扫描范围中的基础库、第三方及其他不计价代码通过扣除行数剔除,说明中保留依据。每次重新引用扫描会重置扣除行数。保存后固定本次计价快照,后续扫描不会自动变更金额。

选择代码量方式后,相应成本或报价中的人工与 AI 工时费用由代码开发金额替代,勾选的补充工作、基础模块分摊与项目直接费用继续分别计入。报价勾选“开发计费单价已包含 AI 直接费用”时,该费用不再另加。代码量方式不改变工时记录、开发日历和独立项目估价。

独立项目估价

两种测算方法:

  1. 预计工时法:每个功能的预计工时 × 复杂度 ×(1 − 复用折减)。
  2. 功能点法:功能点数 × 每功能点耗时 × 复杂度 ×(1 − 复用折减)。

汇总调整后工时,乘估价单价,再加入风险准备、质保准备、其他预计费用和税费。

功能点法初始参数为 8.46 小时/功能点、176 小时/人月、功能规模小于 1000,可根据项目调整。100 功能点对应 846 基准工时,约 4.81 人月。功能点数量按功能规模计数,功能模块数量单独记录;达到设定规模上限时显示复核提示。

展示和导出

顶部的“分别统计 / 综合统计”控制是否展开人工和 AI 数值。内部评估显示全部五个模块;客户展示仅显示项目报价,并采用相同的报价卡片和费用表布局。工时、成本及估价用于内部查看。

  • 内部模式导出项目报价:报价 Markdown、计费工时 CSV、内部 JSON 快照,包含成本核算。
  • 客户模式导出项目报价:按当前展示口径生成报价 Markdown,隐藏内部成本与估价数据。
  • 导出项目估价:单独生成估价 Markdown,包含功能清单、假设参数、工作量和估价结果。
  • 导出项目成本:在内部评估模式单独生成成本 Markdown,包含成本项目与报价对照。

CSV 使用 UTF-8 BOM。导出文件保存到 .devledger/exports/。

数据与代码规模

.devledger/
├─ project.json           # 项目信息与记录起点
├─ settings.json          # 单价、成本、共用补充工作及基础模块分摊
├─ estimate.json          # 首次保存估价后生成
├─ events/*.jsonl.gz      # 按月、编辑器安装与电脑分组的压缩工时账本
├─ integration/           # 接入 AI 钩子时生成的接收脚本
├─ exports/               # 用户主动导出时生成,默认忽略 Git
├─ identities/*.json      # 各编辑器安装的 Git 账号与电脑名,用于按开发者、按电脑统计
├─ local/                 # 本机 Claude Code 会话文件夹名称,按电脑与用户区分,忽略 Git
└─ .gitignore             # 忽略导出、旧扫描缓存、临时文件与锁

数据保存在本地项目。读取日志时仅持久化时间、工具、任务与会话标识哈希、状态、模型名称及 Token 计数;代码统计只保存计数,不保存提示词、源代码或工具输出。补录说明按用户填写内容保存。

代码统计排除依赖、构建目录和常见生成文件;支持 C#、C/C++、JS/TS、Python、SQL、XAML、PLC ST/SCL 等。混合代码和注释的行归入代码,Python 多行字符串归入代码。单文件上限 2 MB,总量上限 256 MB 或 20,000 文件;跳过链接、二进制及非 UTF-8 文件并显示说明。通用词法统计对复杂嵌入语法可能有分类误差。

新记录按月写入 gzip 压缩账本。同一记录来源每月复用一个文件;同一窗口连续的自动计时片段合并,同一 AI 任务保留最新状态和完整执行时段,人工补录及撤销记录保留。旧版 events/*.jsonl 继续读取并保留原文件。压缩文件的写入采用互斥锁、临时文件和原子替换,多窗口并发写入保持一致。

代码扫描只在本机缓存保存计数摘要;文件明细随当前扫描保留在内存。Windows 缓存位于 %LOCALAPPDATA%/vortelyn/devledger/工作区哈希/,其他平台位于用户目录 .cache/vortelyn/devledger/工作区哈希/。钩子配置备份也保存在此位置。新项目不主动生成导出文件或估价文件。

Git 可同步项目信息、单价、估价、压缩工时账本、钩子接收脚本及三种工具的共享配置。初始化时自动补充相关目录的 Git 忽略例外,覆盖外层、全局及子目录的宽泛忽略规则。导出、旧版扫描缓存、配置备份、临时文件及锁文件继续忽略;Claude 个人配置 settings.local.json 保留在本机。文件仍通过项目正常的 Git 提交和推送流程同步。已经被 Git 跟踪的文件需要从索引移出后,忽略规则才生效。gzip 仍会随历史增长,按月分文件可让已结束月份保持稳定。若同一压缩文件产生 Git 冲突,应保留双方副本并核对记录。

可整体备份 .devledger。设置保存有版本校验,避免多窗口静默覆盖;损坏记录会提示并跳过,完整记录继续参与统计。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft