工时账本 · 自动化开发报价
为自动化软件开发记录实际投入、核算项目成本、分摊基础模块投入,并独立估算新项目预算。扩展标识为 五个工作模块
项目估价有独立的参数文件和导出入口。修改估价不会改变项目报价。按工时报价使用项目完整有效记录,按代码量报价使用保存的计价数量;工时计算页的日期筛选用于期间分析。 安装和使用
从早期本地版本升级时,请先禁用或卸载 支持 VS Code 1.96 及以上版本。AI 工具的任务钩子需要相应工具版本支持。远程工作区需在扩展宿主所在环境中读取日志与执行接收脚本。 工时与成本
日历成本包括上述工时成本及单独计入的补充工作成本。基础模块分摊、订阅分摊、API 账单、差旅等项目费用在“项目成本”中另行归集,避免将无明确发生日期的支出分配到某一天。 日历显示所选年份;日、周、月表格汇总该年的记录,年视图比较全部有记录年份。窄窗口首次打开日历时居中定位今天,完整年份可见时保留全年视图;“今天”按钮可回到当前日期。手动滚动后的视野不会被周期刷新重置。周一为周起点,跨年周只汇总所选年份的部分。日期划分使用项目统计时区,中国大陆默认为 UTC+8。 会议、外部调研、现场工作和长时间阅读可补录并填写依据。历史估算单列。Git 提交历史可生成待确认的历史估算;有日志的 Codex 历史任务可导入,早期人工投入也可依据工作记录补录。 AI 接入
在“工时计算”底部展开 AI 工具接入与计时状态,点击接入按钮,然后开启新会话。接收脚本需要 Codex 默认每 10 秒增量同步,每分钟发现最近 7 天新建的会话;“同步 Codex 历史任务”读取更早的匹配会话。设置 Claude Code、Copilot 和 Cursor 从接入后的新会话开始记录,其旧会话历史尚未自动导入。普通行内补全按人工操作统计。某些工具版本没有完整等待事件,统计中可能包含尚未识别的等待时间。钩子按主任务记录,其内部子代理执行计入主任务经过时间;Codex 独立子任务日志可形成独立记录。 AI 默认采用“并发任务累计”计价,同时保留“执行时段合并去重”选项。例如两个任务同时执行一小时,默认计费两任务小时。已有项目继续使用已保存的选择,可在项目成本的开发计价分组切换。人工计时暂停和窗口焦点均不影响 AI 记录。手动 AI 观察仍保留为单独参考,不与自动记录重复计费。 项目成本项目成本 = 基础模块分摊 + 实际人工投入成本 + AI 执行成本 + 补充工作成本 + AI 其他直接费用 + 其他项目实际费用。 成本页按基础模块分摊、开发计价、补充工作、直接费用、税费与报价说明分组,统一维护内部成本和客户收费单价。所有修改一次保存,成本与报价同步更新;撤销本次修改可恢复最近保存的设置。成本页显示税前报价与项目成本的差额,并可单独导出成本明细。小时成本属于依据实际投入形成的内部核算,尚未录入的支出不计入合计。 订阅折算公式为:同账期订阅与额外额度费用 ÷ 对应账户在全部项目中的 AI 任务累计小时。多订阅合并核算时,费用与工时应覆盖相同工具和账期。折算结果可填入 AI 内部成本单价;同笔订阅已计入小时成本后,应从其他直接费用中扣除,额外支出可单独登记。 公开的订阅额度受模型、任务复杂度和使用窗口影响,不对应固定可运行小时数。订阅成本折算采用实际记录和实际账单,客户单价按约定维护。OpenAI 官方额度说明。 补充工作:录入一次,共用于成本与报价“项目成本”提供共用补充工作清单,涵盖需求对接、文档编写、现场部署、现场联调、培训验收、差旅途中及其他工作。每项记录发生日期、工作事项、实际小时数和内部说明,无需填写起止时间。 每项分别设置内部成本单价和对外报价单价。留空时使用项目的人工内部单价、人工计费单价;填写 0 表示零价。工作项确定后先加入当前草稿,统一保存项目设置后,项目成本和项目报价引用同一条记录,修改事项、工时或单价后两边共同更新。报价页提供返回成本页的入口,无需重复录入。
两种计价方式均支持补充工作。按代码量报价时,需求对接、现场部署等额外服务仍可按工作项计价。基础库分摊、AI 实际支出及其他项目费用继续沿用现有参数。 补充工作只填写自动计时和已有工时补录尚未覆盖的净投入。每项工时为 0.01 至 24 小时,跨日工作分日记录。它按日期统计,不生成虚构时间段,也不参与时段重叠去重。工时明细单列补充小时;日历工时为记录有效时长加补充工时,日历成本包括单独计入的补充成本。 内部成本明细和工时 CSV 包含补充记录;客户报价仅显示勾选计入报价的工作事项、小时、对外单价和金额,隐藏内部说明及成本单价。共用清单保存在现有 settings.json 中,不额外生成记录文件。 从 Git 历史补估在“项目成本 → 补充工作 → 从 Git 历史补估”中选择作者、日期范围和估算参数,生成候选工作项。仅分析当前本地分支、当前工作目录范围内的非合并提交,最多读取最近 5000 条;浅克隆按本地可见历史处理。 建议工时采用明确的假设:每段起始计入 30 分钟;同一作者同一天相邻提交相隔不超过 120 分钟时连接,长间隔重新开始;单日默认上限 8 小时。参数与逐日小时数均可修改。这些初始值用于整理历史线索,不是行业标准或实测工时。批量导入、集中提交、修改提交日期及 AI 批量生成都会影响估算。 候选项显示提交次数、文本增删行数和已有记录。增删行数排除常见构建、依赖目录与锁文件,包含注释等文本;二进制修改不计行数。行数仅供核对,不直接换算为小时。 候选列表支持全选可导入项、仅选未记录项和取消全选,也可逐项调整选择。选择范围为当前作者与日期条件下生成的全部候选项,已导入项自动跳过;部分选中时全选框显示半选状态。所有候选均需勾选后导入,已有记录日期会提示核对。同一作者同一天的已导入估算不能重复导入。导入后可编辑、移除,并统一保存到现有的补充工作清单。默认不单独计入报价;按代码量核算时也默认不单独计入成本,勾选前需核对开发单价是否已覆盖这些投入。 导入项在成本、报价、明细和导出中保留“历史估算”标记。Git 记录不能可靠区分人工与 AI,补估小时不加入自动记录的人工或 AI 工时。作者姓名与邮箱仅用于本地选择,提交内容和候选列表不另存文件;只保存选定日期、小时数、统计依据及去重标识。 项目报价项目报价 = 基础模块分摊 + 实际人工开发费用 + 已启用的 AI 执行费用 + 补充工作报价 + 另计 AI 直接费用 + 其他直接费用 + 附加税费。 基础模块支持三种分摊方式:
例如,通信框架原开发成本 30,000 元,预计用于 10 个项目,本项目分摊 3,000 元。参数按各项目实际使用情况维护;当前版本不自动汇总其他工作区的已回收成本。 人工默认单价 200 元/小时,AI 默认单价 60 元/小时,均为可修改的经营参数。分类人工单价可以覆盖默认单价。AI 执行费用可选择计入或不计入报价,记录始终保留。若 AI 单价已包含订阅或 API 支出,勾选“开发计费单价已包含 AI 直接费用”;内部成本仍保留实际支出。关闭 AI 执行计费后,填写的 AI 直接费用单独计入报价。 修改单价后,已有记录按新单价重新核算。已确认的报价以导出快照留档。 报价明细显示实际小时单价;存在不同分类单价时逐项列示。工时显示六位小数,费用按原始记录计算,金额保留两位小数;必要时单列分位舍入调整,使费用明细与合计一致。综合展示使用各项计费工时之和及折合单价,隐藏人工与 AI 的分项。 按代码量核算成本与报价项目成本的“开发计价”分组分别设置成本核算和对外报价依据,均支持“按工时计算”和“按代码量评估”。默认沿用工时方式,也可采用工时核算成本、代码量形成报价的组合。 计价行数 = 代码总行数 − 扣除行数。 代码开发成本 = 计价行数 × 内部每行成本。 代码开发费用 = 计价行数 × 对外每行报价。 成本与报价分别维护数量、单价和计算依据,在项目成本页统一保存;对外报价可引用当前成本代码量。每行单价由项目经验确定,初始为 0,支持四位小数。单价应覆盖对应开发范围的人工与 AI 投入,设计、调试和交付要求应一并考虑。 数量支持手工录入或引用最近扫描,只引用代码行,排除注释与空白行。扫描范围中的基础库、第三方及其他不计价代码通过扣除行数剔除,说明中保留依据。每次重新引用扫描会重置扣除行数。保存后固定本次计价快照,后续扫描不会自动变更金额。 选择代码量方式后,相应成本或报价中的人工与 AI 工时费用由代码开发金额替代,勾选的补充工作、基础模块分摊与项目直接费用继续分别计入。报价勾选“开发计费单价已包含 AI 直接费用”时,该费用不再另加。代码量方式不改变工时记录、开发日历和独立项目估价。 独立项目估价两种测算方法:
汇总调整后工时,乘估价单价,再加入风险准备、质保准备、其他预计费用和税费。 功能点法初始参考参数为 8.46 小时/功能点、176 小时/人月、功能规模小于 1000,来自用户提供的报价示例,可独立修改。100 功能点对应 846 基准工时,约 4.81 人月。功能点数量按功能规模计数,功能模块数量单独记录;达到参考规模上限时显示复核提示。 展示和导出顶部的“分别统计 / 综合统计”控制是否展开人工和 AI 数值。内部评估显示全部五个模块;客户展示仅显示项目报价,并采用相同的报价卡片和费用表布局。工时、成本及估价用于内部查看。
CSV 使用 UTF-8 BOM。导出文件保存到 数据与代码规模
数据保存在本地项目。读取日志时仅持久化时间、工具、任务标识哈希与状态;代码统计只保存计数,不保存提示词、源代码或工具输出。补录说明按用户填写内容保存。 代码统计排除依赖、构建目录和常见生成文件;支持 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 跟踪的文件需要从索引移出后,忽略规则才生效。gzip 仍会随历史增长,按月分文件可让已结束月份保持稳定。若同一压缩文件产生 Git 冲突,应保留双方副本并核对记录。 可整体备份 .devledger。设置保存有版本校验,避免多窗口静默覆盖;损坏记录会提示并跳过,完整记录继续参与统计。 开发与发布包
打包命令在独立暂存目录中对运行时 JavaScript 混淆和紧凑化,对 HTML、CSS 压缩,然后生成
联系方式
参考资料MIT License。 |