Skip to content

Commit a28400e

Browse files
committed
feat: unify initialization language and runtime state
1 parent 5951ae9 commit a28400e

62 files changed

Lines changed: 1108 additions & 348 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
> **说明**: 版本概览摘要。最新版本的详细变更见下方表格首行的 `changelogs/releases/vX.Y.Z.md` 链接;历史版本见对应详细变更文件
44
> **最后更新**: 2026-08-03
5-
> **当前未发布**: v1.15.9 已归档;后续未发布实现继续记录到 [`changelogs/unreleased.md`](./changelogs/unreleased.md)
5+
> **当前未发布**: v1.16.0 已归档;后续未发布实现继续记录到 [`changelogs/unreleased.md`](./changelogs/unreleased.md)
66
77
---
88

99
## 版本概览
1010

1111
| 版本 | 日期 | 变更摘要 | 详细 |
1212
|------|------|---------|------|
13+
| [v1.16.0](./changelogs/releases/v1.16.0.md) | 2026-08-03 |**首次初始化、用户语言与多项目运行态统一**`init` 自动生成非覆盖式 workspace Profile,`init --profile` 一步初始化唯一目标项目;用户回复与产物正文跟随消息语言,派生状态集中隔离并提供 runtime status/prune | [查看](./changelogs/releases/v1.16.0.md) |
1314
| [v1.15.9](./changelogs/releases/v1.15.9.md) | 2026-08-03 | 🔧 **SkillRoute 部分阶段 rebind 恢复防死锁**:相同语义的 ContextRead 刷新可安全迁移未完成阶段进度并重新签发新 plan cursor;rebind、status 与 Stop 返回同一可执行续页调用,语义或依赖漂移仍 fail closed | [查看](./changelogs/releases/v1.15.9.md) |
1415
| [v1.15.8](./changelogs/releases/v1.15.8.md) | 2026-08-03 | 🔧 **新电脑 Profile 初始化与 MCP source observation 防复发**:MCP 直接调用会从 workspace-namespace activeRoot 推断项目 hook state,避免已读 Profile/memory 后 `skill_route commit``CONTEXT_BINDING_PENDING`;Profile README 缺失与 `status` 输出给出完整 `profile plan/init` 命令 | [查看](./changelogs/releases/v1.15.8.md) |
1516
| [v1.15.7](./changelogs/releases/v1.15.7.md) | 2026-07-31 | 🔧 **SkillRoute MCP schema + closeout/rebind 防复发**`skill_route` schema 改为 per-op `oneOf`,禁止 `catalog/load_stage/status` 接收 `contextBinding``CONTEXT_BINDING_PENDING/STALE` 返回结构化恢复建议,Stop closeout 阻断给出可执行 `load_stage` 调用 | [查看](./changelogs/releases/v1.15.7.md) |
@@ -133,7 +134,7 @@
133134

134135
## 相关文档
135136

136-
- [`changelogs/releases/v1.15.9.md`](./changelogs/releases/v1.15.9.md) — 最新版本详细变更文档
137+
- [`changelogs/releases/v1.16.0.md`](./changelogs/releases/v1.16.0.md) — 最新版本详细变更文档
137138
- [`changelogs/releases/v1.15.8.md`](./changelogs/releases/v1.15.8.md) — 上一版本详细变更文档
138139
- [`changelogs/releases/v1.15.7.md`](./changelogs/releases/v1.15.7.md) — 历史版本详细变更文档
139140
- [`changelogs/releases/v1.15.0.md`](./changelogs/releases/v1.15.0.md) — 上一版本详细变更文档

README.md

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ DevCodex 不替代业务框架、GitHub CI、安全审计或人工评审。它
2323
- [它如何工作?](#它如何工作)
2424
- [适合谁?](#适合谁)
2525
- [5 分钟开始](#5-分钟开始)
26+
- [项目 Profile](#项目-profile)
2627
- [首次信任提示](#首次信任提示)
2728
- [更新](#更新)
2829
- [卸载](#卸载)
30+
- [运行态检查](#运行态检查)
2931
- [生效方式](#生效方式)
3032
- [添加自己的 Skill](#添加自己的-skill)
3133
- [与宿主原生 Skill 共存](#与宿主原生-skill-共存)
@@ -64,6 +66,7 @@ DevCodex 把这些能力组合成一个本地工作流入口:先理解当前
6466
| 文件记忆与长任务恢复 | 将关键过程写入当前项目的报告和记忆,减少“上一轮做到哪了”的断层。 |
6567
| 80+ 内置 Skill | 覆盖开发、修复、审计、发布、文档、架构、质量、安全、SRE、平台生态、产品与体验等专业场景。 |
6668
| 报告与验证闭环 | 任务结束时沉淀结果、验证命令和剩余风险,让交付不是只靠一句“完成了”。 |
69+
| 用户语言一致 | 回复、报告标题和面向用户的产物内容默认跟随当前用户消息;稳定命令、配置键、协议字段和默认文件名保持英文,便于跨语言兼容。 |
6770
| 工作区 Skill | 用户可以在项目下添加自己的 Skill,让项目流程跨五宿主复用。 |
6871
| 本地优先 | 安装包刷新本地用户级宿主适配;普通使用不需要启动额外后台服务。 |
6972
| 原生资产共存 | DevCodex 不扫描、复制、合并、覆盖或删除这些用户资产。宿主自己的 Skill、项目指令和个人配置继续按原宿主规则生效。 |
@@ -140,18 +143,21 @@ cd <你的项目或工作区根目录>
140143
devcodex init
141144
```
142145

143-
如果你使用的是 `D:\Worker\v2` 这类多项目 workspace,建议在 workspace 根目录执行一次 `devcodex init`,而不是分别在子项目里猜目录。DevCodex 会在 workspace 根目录创建 `.devcodex/layout.json``.devcodex/workspace/` 基线;后续子项目的报告、记忆会按项目名稳定落到 `.devcodex/<project>/`,Profile 配置会先查项目 overlay,缺失时回退到 workspace 层。
146+
如果你使用的是 `D:\Worker` 这类多项目 workspace,建议在 workspace 根目录执行一次 `devcodex init`,而不是分别在子项目里猜目录。DevCodex 会创建 `.devcodex/layout.json``.devcodex/workspace/` 和一份不会覆盖已有内容的 workspace Profile 基线;后续子项目的报告、记忆会按项目名稳定落到 `.devcodex/<project>/`项目 Profile 缺失时回退到 workspace 层。
144147

145148
安装和初始化完成后,重新打开 Codex、Claude Code、GitHub Copilot、Gemini CLI 或 Grok 的新会话。
146149

147-
如果 `devcodex status` 提示 `profile missing`,这不代表安装失败,只是当前项目还没有生成 Profile 文档。需要完整 Profile 基线时,可以先预览再生成:
150+
## 项目 Profile
151+
152+
普通单项目只需执行 `devcodex init`,无需再运行 Profile 命令。多项目 workspace 中,如果某个子项目需要独立于 workspace 基线的 Profile,可在 workspace 根目录按项目名初始化:
148153

149154
```bash
150-
devcodex profile plan --tier profile-lite
151-
devcodex profile init --tier profile-lite
155+
devcodex init --profile api
152156
```
153157

154-
多项目 workspace 中,如果希望所有子项目共用一份基础 Profile,请在 workspace 根目录执行上面两条命令;如果某个子项目需要自己的覆盖配置,再进入该子项目执行。
158+
`api` 必须能唯一匹配 workspace 中已经存在的项目;如果重名,请使用完整相对名称,例如 `apps/api`。DevCodex 会根据该项目已有的包、测试、构建与公开接口选择合适的 Profile 档位,并且只生成缺失文件,不覆盖已经编辑过的内容。
159+
160+
`devcodex update` 只刷新运行态,不会自动创建、升级或降级 Profile。需要手动预览或指定档位时,才使用高级命令 `devcodex profile plan` / `devcodex profile init`
155161

156162
## 首次信任提示
157163

@@ -230,6 +236,17 @@ devcodex --version
230236
npm uninstall -g devcodex
231237
```
232238

239+
## 运行态检查
240+
241+
需要排查空间占用或旧电脑遗留的运行态时,可以查看各类状态的负责人、文件数、体积和最后使用时间:
242+
243+
```bash
244+
devcodex runtime status
245+
devcodex runtime prune --dry-run
246+
```
247+
248+
清理命令默认只预览。确认列表后使用 `devcodex runtime prune --apply`;它只清理达到保留期限的原子写入临时文件,不会自动删除锁文件、当前任务状态或无法识别的文件。
249+
233250
## 生效方式
234251

235252
安装或更新 DevCodex 后,npm 会在安装生命周期中刷新用户级宿主适配。已打开的宿主会话通常不会回读刚更新的配置,因此需要重新打开一个新会话。
@@ -255,7 +272,8 @@ DevCodex 分两层生效:
255272
<workspace根目录>/.devcodex/
256273
layout.json
257274
workspace/
258-
profile/ # 按需创建:workspace 级 Profile 配置
275+
profile/ # init 自动创建:workspace 级 Profile 基线
276+
.runtime-state/ # DevCodex 管理的派生状态;不要手动编辑
259277
skills/ # 按需创建:workspace Skill
260278
<project>/
261279
profile/ # 按需创建:项目 overlay

RULES.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# DevCodex v1.15.9 — 使用入口
1+
# DevCodex v1.16.0 — 使用入口
22

3-
> AI workflow injector for Copilot / Claude Code / Codex / Gemini / Grok · publisher: Rocky · version: 1.15.9
3+
> AI workflow injector for Copilot / Claude Code / Codex / Gemini / Grok · publisher: Rocky · version: 1.16.0
44
55
## 正式主支持客户端
66

SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
| Version | Supported |
66
|---------|:----------:|
7-
| 1.15.x(当前) ||
7+
| 1.16.x(当前) ||
88
| 1.12.x | ⚠️ 仅安全补丁 |
99
| 1.11.x | ⚠️ 仅安全补丁 |
1010
| 1.6.x | ⚠️ 仅安全补丁 |

changelogs/releases/v1.16.0.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# v1.16.0
2+
3+
> 发布日期:2026-08-03
4+
> 类型:Minor
5+
6+
## 摘要
7+
8+
本版本统一首次初始化、项目 Profile、用户语言与多项目运行态行为。新电脑只需在 workspace 执行 `devcodex init` 即可获得非覆盖式 Profile 基线;指定项目可用 `devcodex init --profile <项目>` 一步生成合适档位的 overlay。回复与用户产物跟随当前消息语言,派生运行态则集中到 workspace 管理的隔离分区。
9+
10+
## 主要变更
11+
12+
- `devcodex init` 自动创建缺失的 workspace `profile-lite` 基线,并保留已存在的更高档位和人工内容。
13+
- `devcodex init --profile api` 只接受唯一存在的项目;重名时要求完整 namespace,并按项目证据选择推荐 Profile 档位。
14+
- `devcodex update` 不再创建、升级或降级任何 Profile,`update --profile` 明确失败且不写 Profile。
15+
- 新增 `LanguageContextV1`:当前用户消息或显式语言要求优先;回复、标题与自然语言产物正文跟随用户语言,命令、配置键、协议字段、Skill/Gate ID 与默认文件名保持稳定英文。
16+
- 新增 workspace-aware `RuntimeStateStore`:多项目状态物理隔离,新路径优先,旧项目本地状态只读兼容,所有新写入只进入 canonical 分区。
17+
- 新增 `devcodex runtime status``devcodex runtime prune`,可查看 owner、体积和最后使用时间;清理默认预览,`--apply` 也只删除过期的原子写入临时文件,不自动删除锁或未知状态。
18+
- README 更新首次初始化、项目 Profile、语言一致性与运行态检查说明。
19+
20+
## 验证
21+
22+
- CLI 初始化、更新、项目解析、推荐 Profile、runtime status/prune 正负场景
23+
- LanguageContext 中文、英文、显式语言、carrier 与英文 fallback 场景
24+
- 两项目运行态隔离、旧路径只读回退、新路径优先、禁止双写
25+
- ContextRead、SkillRoute、MCP、Workflow Completion、Project Knowledge、Validation DAG 与任务续接回归
26+
- `npm run test:full`
27+
- npm tarball 隔离安装与 registry 新装验证
28+
29+
## 发布说明
30+
31+
- npm 包名:`devcodex`
32+
- registry:`https://registry.npmjs.org/`
33+
- 发布分支:`main`
34+
- 发布路径:tag `v1.16.0` 触发 GitHub Actions `Publish to npm`

changelogs/unreleased.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# 未发布变更(Unreleased)
22

33
> **用途**: 记录尚未正式发版的实现级变更。
4-
> **当前**: v1.15.9 已归档到 `changelogs/releases/v1.15.9.md`;本文件仅保留历史锚点索引与镜像供 validate 探针消费。发版后新实现再写入下方「当前未发布」。
4+
> **当前**: v1.16.0 已归档到 `changelogs/releases/v1.16.0.md`;本文件仅保留历史锚点索引与镜像供 validate 探针消费。发版后新实现再写入下方「当前未发布」。
55
66
## 当前未发布实现候选
7+
- **v1.16.0 已归档**:首次初始化、项目 Profile、用户语言与 workspace runtime-state 一致性已进入 `changelogs/releases/v1.16.0.md`
78
- **v1.15.9 已归档**:SkillRoute 相同语义 rebind 现在可迁移未完成阶段前缀、重新签发新 plan cursor,并让 rebind/status/Stop 返回一致且可执行的恢复调用;语义、阶段内容或依赖漂移仍 fail closed。
89
- **v1.15.8 已归档**:新电脑 Profile 初始化提示、MCP source observation workspace-namespace 推断与 `skill_route commit` pending 防复发已进入 `changelogs/releases/v1.15.8.md`
910
- **README 首次信任与 workspace 初始化说明 + status 初始化误报修复**:公共 README 补充 `devcodex init`、多项目 workspace `.devcodex/layout.json` 基线、首次宿主 trust/allow 提示、工作区 Skill 路径、Profile missing 不是安装失败以及可选 `profile plan/init``devcodex status` 改为基于 workspace layout/runtime 证据判断 `.devcodex` 是否 ready,避免 fresh workspace 已初始化后仍提示 “Workspace runtime not initialized”;CLI 行为测试增加防复发断言。

content/duplication-inventory.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"schemaVersion": "ControlContentDuplicationInventoryV1",
3-
"sourceBundleDigest": "9094ea7de082ab1bb999727d88c3c12b2f4fbc680e3729070d64f55e96b2b66b",
3+
"sourceBundleDigest": "9187943a1a461d72406c4031b485d2b087cd90d552858095d9cd19df4947b737",
44
"thresholds": {
55
"minParagraphChars": 100,
66
"sectionThreshold": 0.94,

content/instructions/00-safety.instructions.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 安全底线与输出语言规则,定义 S01~S07、违规处理与不可豁免边界
44
priority: P2
5-
version: 1.15.9
5+
version: 1.16.0
66
---
77
# 安全底线规范(S01~S07)
88

@@ -28,12 +28,15 @@ version: 1.15.9
2828

2929
## 输出语言规则
3030

31-
| 场景 | 输出语言 |
32-
|------|---------|
33-
| 用户消息主要为中文 | 中文(技术术语可保留英文原文) |
34-
| 用户消息主要为英文 | 英文 |
35-
| 混合语言 | 以用户消息的主要语言为准 |
36-
| 无法判断 | 默认英文 |
31+
| 优先级 | 语言证据 | 人类可读输出 |
32+
|--------|----------|----------------|
33+
| 1 | 当前轮明确语言要求 | 使用明确要求的语言 |
34+
| 2 | 当前用户消息 | 使用消息的主要语言;技术术语可保留英文原文 |
35+
| 3 | 当前 turn 的 `LanguageContextV1` carrier | 使用已绑定语言 |
36+
| 4 | workspace 偏好、宿主/终端 locale | 使用可观察到的偏好 |
37+
| 5 | 无法判断 | English fallback,且不得声称观察到用户语言 |
38+
39+
人类可读回复、标题、报告/需求/问题正文、记忆摘要、closeout 与操作说明必须使用同一轮决策。协议 key、CLI 参数、JSON 字段、schema/gate/skill ID 与默认 canonical 文件名始终保持 English;只有用户明确要求本地化磁盘文件名时才可创建兼容 alias。无 raw prompt 的 MCP/CLI 只能使用 carrier 或 `und/en` fallback,不得伪报语言来源。
3740

3841
## 违规处理
3942

content/instructions/01-common.instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 通用规范总则,覆盖优先级、意图路由、Profile/active-root、宿主适配与治理总线
44
priority: P5
5-
version: 1.15.9
5+
version: 1.16.0
66
---
77
# 通用规范
88

content/instructions/01a-profile-loading.instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
applyTo: "**"
33
description: 意图驱动的 Profile 加载、active-root 路径、目标项目识别与项目现实扩展规范
44
priority: P5
5-
version: 1.15.9
5+
version: 1.16.0
66
---
77
# Profile 加载与项目现实扩展
88

0 commit comments

Comments
 (0)