career-asset
v0.3.0
Published
把工作痕迹蒸馏成带证据的职业资产:本地优先、多宿主编程助手插件
Readme
career-asset
把你的工作痕迹蒸馏成带证据的职业资产:每周 10 分钟,攒出一份能站得住脚的成果库, 需要时派生简历条目、述职稿和面试故事。
本地优先。 不联网、不建账号、不上传。所有文件都在你自己指定的目录里,可以整个拷走。
为什么
你可能也有过这种经历:实习时用文档记每天学了什么,越写越敷衍,最后只剩一摊流水; 实习结束想说清自己的成果,却说不出来;秋招春招里,那段实习只发挥了它真实价值的三四成。
问题不在意志力,在录入成本。这个工具不要求你写字——它读你已有的痕迹(git commit), 把「改动」翻译成「影响」,而你要做的只是判断它写的那句话对不对。
安装
把下面这段交给你的 agent,安装和接入都由它完成:
帮我安装并接好 career-asset(需要本机有 Node 20+ 和 git):
1. 全局安装:npm install -g career-asset
2. 用 `npm root -g` 定位安装包里的 skills/career-asset,把整个目录(含 references/)装进
你当前宿主的全局 skills 目录。不要只复制 SKILL.md;不要写进任何公司代码仓库。
3. 跑 `career-asset skill check`:确认 SKILL.md 和两份 references 都在;失败就停下告诉我。
4. 如果宿主有 skill / 插件清单,确认它已经能加载 career-asset。
5. 跑 `career-asset --version` 和 `career-asset --help`,把版本和可用命令告诉我。
6. 最后告诉我:资产目录建议放哪、第一次使用我需要提供哪些信息。装好后你不需要记命令——把下面的提示词整段交给它。
用法:把提示词交给你的 agent
这几段提示词只保留任务参数和完成标准,完整流程以 skill 为准。每次任务先跑
career-asset skill show,让 agent 按输出的 SKILL.md 和 references 执行;不要凭提示词摘要或聊天记忆代替 skill。
skill show 读的是 npm 包里随 CLI 安装的那一份,不依赖宿主里可能过期的副本。
如果宿主没有提问控件,让 agent 退回文本逐条问,不要默认确认,也不要把关闭 / 超时当成选择。
第一次使用
用 career-asset 帮我建资产库并跑第一次采集。
- 资产目录:<你的路径>,不要放在公司代码仓库里;我还没给路径就先问我,不要替我选。
- git email:<[email protected]>
- 要采集的仓库:<~/work/proj>
- 目标岗位:<backend>
- 脱敏词:<公司名 / 内部模块名 / 库表名;没有就写“无”,不要把它登记成词>
开始前先跑 `career-asset skill show`,按输出的 SKILL.md 和 references 执行;
不要凭这份提示词或聊天记忆代替 skill。
完成标准:
- init / collect 成功;失败把 stderr 原样给我,不要猜原因。
- 给我最多 3 条候选,每条先摆证据(40 位全 sha、subject、改动文件、关键 file:line、机制与权衡),
再逐条让我确认 / 改写 / 丢掉。
- 我选完再落盘,回显 entry id 和路径,最后 validate。
影响、意义、风险判断标成 inferred;没有证据的数字不要写。init 会检查资产目录是否落在某个 git 工作树里;落在里面会直接拒绝,不写指针。
每周提炼
用 career-asset skill 做本周蒸馏。
开始前先跑 `career-asset skill show`,按输出的 SKILL.md 和 references 执行;
不要凭这份提示词或聊天记忆代替 skill。
完成标准:
- 先判断该不该提炼;不该就告诉我下次时间。
- 该提炼就给我最多 3 条候选,每条先摆证据(40 位全 sha、subject、改动文件、关键 file:line、
机制与权衡、claim_class、score_note),再逐条让我确认 / 改写 / 丢掉。
- 我选完再落盘,回显 id 和路径,最后 validate。
这周没有能立住的成果就直说,不要凑数。没有证据的数字不要写,inferred 不要放进任何视图。出简历 / 述职
用 career-asset skill 生成<简历 | 述职>视图,只生成我指定的那一种。
开始前先跑 `career-asset skill show`,按输出的 SKILL.md 和 references 执行;
不要凭这份提示词或聊天记忆代替 skill。
完成标准:
- 先 validate;有阻塞先列给我,别渲染。
- 简历:先让我确认入选 / 换下的条目,再 state 和 render;述职:直接汇总 achievement + headline。
- 渲染前做脱敏检查;角色归因和数字先让我确认。
- 最后给我输出路径和每条用的证据。定时采集(可选)
用 career-asset skill 生成每周一 09:00 的定时任务配置,只跑 collect。
开始前先跑 `career-asset skill show`,按其中的调度边界执行;不要现在替我跑 collect。
把配置内容、安装步骤和卸载方法告诉我。加新仓库
以后有新项目,不必重跑 init,也不用记流程——把路径给 agent,或者自己跑:
career-asset repo add ~/work/new-project
career-asset repo list
career-asset repo remove ~/work/old-project # 只改配置,不删本地目录子目录会归到仓库根,worktree 归并到主工作树;submodule 不会从父仓库递归采集,需要时单独加入。
确认这一步
每条候选都会先在对话里摆出证据(40 位 sha、commit subject、改动文件),再出现一个选择框: 确认 / 改写 / 丢掉。
- 证据先于选择框。 框里只放决定,不放 sha;没看到证据的那次点击不算确认。
- 没有「全部确认」,也没有默认选项。 关掉、超时、没选,一律按没确认处理。
- 改写用你自己的措辞。 可以挑一个备选说法,也可以直接说你会怎么讲。
confirmed的含义是这句话你敢在面试里说。 - 选完立刻落盘。 只有
entries/里出现条目、并回显 id 和路径,才算确认完成。
选 6 条上简历、勾脱敏词时也是同一套:先摆入选和换下的理由,再让你选。
claim 写什么
一句话里至少要有:角色 + 技术机制 + 约束/权衡 + 可验证结果。比如「作为订单网关核心开发, 把三处订单校验收敛到网关,用 Redis Lua 原子扣减 + 本地缓存兜底,消除并发超卖与口径不一致的资损风险」。 角色要具体到能看出你的贡献,归因词(负责人 / 主导 / 牵头)和量化数字都要先经你确认。
只写「优化了查询」「重构了校验」的,是 commit 的中文改写,不算成果。技术机制必须能从
git show 的 diff 里指出来;单条小 commit 最多进 achievement,不进 headline。
没有证据的数字不要写,影响和风险判断要先经你确认。
四态
| 状态 | 含义 |
|---|---|
| raw | 机器采来的原料,还没被人看过 |
| achievement | 你确认过的成果,一句话 + 证据 |
| headline | 当前这版简历优先入选的那几条,上限 6 |
| archived | 被合并或淘汰的,留着能追溯,但不占注意力 |
headline 满了只能合并或换下一条,不许扩容。简历只有一页;能无限长大的「成果库」
最后一定会退化成一堆没人看的流水。反过来,可入选的成果少于 4 条时 validate 会提醒,
但那只是提醒——先继续攒,不要为了凑数写没证据的条目。
述职(review)汇总全部 achievement + headline,按工作线分组,不受 6 条限制。
证据三分类
| 类别 | 含义 | 能进简历吗 |
|---|---|---|
| proven | 仓库里能证明的事实(sha、改动文件、时间段) | 能 |
| confirmed | 你本人确认过的判断 | 能 |
| inferred | AI 的推断 | 不能,必须先经你确认 |
没有证据支撑的百分比和倍数会被 validate 拦下来。宁可写定性描述,不要编数字。
脱敏与弃选
- 脱敏词表(公司名、内部模块名、库表名)用
career-asset redact --add <词>维护。 条目或视图命中词表时,validate和render直接阻塞;词表为空而已经有条目时会提醒。 - 名额满了而丢掉的方向,用
career-asset skip --direction <名> --reason <原因>记一行。 下个季度还记着它,才知道要不要捡回来。
定时的边界
定时任务只允许跑 collect。蒸馏、确认、合成、渲染必须有人在场——夜里无人值守生成的
只会是一堆没人确认过的推断,正是这个工具要避免的东西。
本地审计前端
web/ 里有一个本地审计页:左侧是 视图 → 条目 → 证据 → commit 的链路树,中间是条目详情、
证据和受控写入,右侧打开资产根内文件的对应行。确认、改写、改状态、脱敏和渲染都通过
/api/action 调 career-asset CLI,页面本身不写资产文件。
随 npm 包安装的版本直接跑:
career-asset ui # 默认 127.0.0.1:4317
career-asset ui --port 5000 # 改端口启动前先让 CLI 找得到资产目录:已经有 ~/.career-asset/pointer.json 就不用管,否则用
CAREER_ASSET_HOME 指定存放指针文件的家目录(不是资产根本身)。服务启动后会打印一条带 token 的 URL,
打开它即可;token 存在页面的 sessionStorage 里,重启服务后要重新用新 URL 打开。
- 只监听
127.0.0.1,不联网:页面不加载外部字体、图标、脚本或 telemetry。 - 读与写都经过 CLI:
/api/inspect调career-asset inspect --json,写入走/api/action; 服务端不解析、不修改entries/或profile.yml,journal 也由 CLI 自己写。 - 主包只带
web/dist和web/dist-server;web/src、web/server、测试和 devDependencies 不进包。prepack会在发布前跑npm run build:web重建它们。
在仓库里改页面时,先构建再启动:
cd web
npm install
npm run build
npm start开发时开两个终端:
cd web
npm run dev:server # 终端 1:/api/*,默认端口 4317
npm run dev # 终端 2:Vite 页面,默认 5173打开服务打印的 Vite URL。默认用仓库里的 bin/career-asset.mjs 调 CLI;要指向别的安装就设
CAREER_ASSET_BIN(.mjs / .cjs / .js 用当前 node 执行),都没有时才回落到 PATH 里的
career-asset。接口细节与已知边界见 web/README.md。
开发
npm install
npm test # 单元 + 集成
npm run test:e2e # 端到端实现计划与已知待办见 TODO.md。
发布
推送 v* tag 会触发 .github/workflows/publish.yml:先校验 tag 与 package.json 版本一致,
跑完全部测试后用 npm trusted publishing 发布(不需要长期 token)。仓库和包都公开时 npm 会自动生成
provenance;本仓库目前是私有仓库,因此不会生成。
npm publish 会触发 prepack,先跑 npm run build:web 重建 web/dist 与 web/dist-server,
再打包;产物不是仓库里的旧构建。
首次发布前需要在 npmjs.com 的包设置里配置一次 Trusted Publisher:
- Provider:GitHub Actions
- Organization or user:
tu1918 - Repository:
career-asset - Workflow filename:
publish.yml - 允许
npm publish
配置创建后要在 2 天内完成第一次成功发布,否则配置会过期。
