Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 0.13.2

- Exit the production stdio entry on EOF/closed pipes, unify shutdown events and terminate on process-level fatal errors. Connect transport before initialization so disconnect can cancel startup.
- Cancel startup/workspace rebinding and all MCP request signals on shutdown; prevent late resources from restarting the runtime.
- Share the existing eight-second shutdown budget across owners, retain failures and attempt independent owned-process cleanup even when an adapter hangs.
- Add actual dist-entry EOF tests and lifecycle regression coverage. Abnormal termination and idle-resource reclamation continue in the next iteration.
- Synchronize previously audited Skill and configuration guidance. Actual Codex-client Roslyn acceptance still awaits a refreshed connection.

## 0.13.1

- Mask comments/literals before local declarations, add TSX/JSX scanning and scoped context, preserve original signatures/lines and invalidate legacy declaration caches. Uncertain lexical boundaries are incomplete and uncached; text references remain heuristic.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ WinCode is a local MCP server built for Windows and .NET engineering. It bridges
- **Inspect the running app:** Enumerate visible windows, query specific controls or subtrees, and capture numbered visual overlays without activating or stealing focus from the target.
- **Review with evidence:** Trace on-screen widgets back to literal XAML declaration tags, line numbers, and file hashes, with transparent reporting for ambiguity, truncation, or degraded upstreams.

Current source version: **0.13.1**. All UI tools are strictly read-only and non-destructive. See [CHANGELOG](CHANGELOG.md) for full version history.
Current source version: **0.13.2**. All UI tools are strictly read-only and non-destructive. See [CHANGELOG](CHANGELOG.md) for full version history.

### Quick start

Expand Down Expand Up @@ -234,7 +234,7 @@ WinCode 是面向 Windows 与 .NET 工程研发的本地 MCP 服务。它将项
- **观察实际界面:**发现系统可见窗口,按条件定向查询目标控件或子树,并在不激活、不抢占前台焦点的前提下获取数字标注截图。
- **源码双向印证:**将运行时抓取的控件关联回 XAML 源码声明的起始行号、代码片段与文件哈希,清晰报告歧义、截断与降级状态。

当前源码版本为 **0.13.1**。所有 UI 取证工具均为纯只读与非侵入设计。版本历史见 [CHANGELOG](CHANGELOG.md)。
当前源码版本为 **0.13.2**。所有 UI 取证工具均为纯只读与非侵入设计。版本历史见 [CHANGELOG](CHANGELOG.md)。

### 快速上手

Expand Down
11 changes: 8 additions & 3 deletions WinCode-Skill制作与MCP配置指南.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# WinCode Skill 安装、维护与 MCP 配置指南

适用于 **0.13.1**,核对日期 2026-09-08(北京时间)。以下使用本机 `I:/WinCode` 路径举例;其他机器必须替换路径。客户端界面名称随版本变化,以实际界面为准。
适用于 **0.13.1**,核对日期 2026-09-09(北京时间)。以下使用本机 `I:/WinCode` 路径举例;其他机器必须替换路径。客户端界面名称随版本变化,以实际界面为准。

## 1. 三个独立对象

- **Skill 手册**指导 Agent 选择工具和使用规范字段,不启动服务器。
- **磁盘交付物**包含 Gateway、原生 UI Host、构建身份和交付清单。
- **磁盘交付物**包含 Gateway、原生 UIA/Code Host 的完整发布目录、构建身份和交付清单。
- **MCP 连接实例**是客户端已经启动的进程;更新源码、构建或复制 Skill 都不会自动更新这个进程。

架构与数据流见 [架构说明](WinCode-架构与数据流说明.md)。待办见 [当前计划](WinCode-下一轮工程化迭代计划书.md),不要按历史计划重复安装和升级。
Expand All @@ -22,7 +22,7 @@ npm run check
npm run delivery:verify
```

`check` 进行类型检查、Gateway 构建、锁定 NuGet restore、Release UIA/Code Host 与控制台夹具构建、核心回归、新 stdio 验证与交付清单生成。交互桌面验收另执行 `npm run check:desktop`,需要可用 Windows 桌面。真实 Roslyn/TavernDesk 验收按对应入口执行,详见 [CONTRIBUTING](CONTRIBUTING.md)。
`check` 进行类型检查、Gateway 构建、锁定 NuGet restore、Release UIA/Code Host 与控制台夹具构建、核心回归、新 stdio 验证与交付清单生成。交互桌面验收另执行 `npm run check:desktop`,需要可用 Windows 桌面。真实 Roslyn/TavernDesk 验收按对应入口执行,详见 [CONTRIBUTING](CONTRIBUTING.md)。Roslyn 维护脚本会锁定还原并构建/发布 Code Host,也会还原生成夹具,不还原用户目标应用;NuGet 缓存缺包时可能访问包源,不能将“不自动安装 SDK”理解为完全离线。

`npm run build` 只构建 Gateway,不能单独证明原生 Host、Skill 和整个交付物一致。生产使用发布的 Release Host;`npm run dev` 才显式启用开发回退。报告位于 `test-tmp/check/`,内容哈希不是发布签名。

Expand Down Expand Up @@ -77,6 +77,8 @@ npm run skill:check -- C:/Users/40218/.agents/skills/wincode

0.12.1 起 hello 不主动启动探测进程;unknown/null 表示未探测,不代表不可用。已知健康结果也可能陈旧。旧版本 hello 的行为不能套用新版说明。

实例选用的代码提供方看 `hello.codeProvider`,Roslyn 状态看 `hello.health.roslyn`。`hello.health.text.semanticConfigured=false` 只描述文本适配器,即使启用 Roslyn 仍为 false。`wincode_diagnose_project` 会检查 SDK、探测 Repomix/UIA,但不主动加载 Roslyn 项目;已明确授权的 Roslyn 配置由首次符号搜索触发加载。

0.13 系列已经退役外部 Serena,默认 local-text;C# 语义使用随产品交付的 Code Host,通过显式 --roslyn-config 配置入口项目、Configuration、TFM、SDK 与求值许可,字段示例见代码手册。真实 Host/MCP 验收通过也不代表实际客户端已启用 Roslyn。0.12.4 起 Repomix 直接执行已安装 JavaScript bin,不再使用 cmd/npx 包装链,也不会自动下载;非标准安装和降级边界见诊断手册。

## 6. 常见偏差
Expand All @@ -87,6 +89,9 @@ npm run skill:check -- C:/Users/40218/.agents/skills/wincode
| 字段被忽略,结果不像预期 | 对照规范字段表和实际工具 schema;容忍未知字段并不赋予其语义 |
| Host 缺失或身份不符 | 完整执行锁定构建和 delivery:verify;不混用旧 DLL、新 Gateway 或开发 Host |
| Roslyn/Repomix 不可用 | 先核对 provider、显式配置、项目求值许可、已知健康和恢复动作;Roslyn 失败不会暗中换成本地文本,Repomix 降级不代表语义验收成功 |
| Roslyn 返回候选且 references 为空 | 简单名请求未查询引用;按 signature/file/project 消歧,再传返回的 name 与完整 symbolLocation,不能当作零引用 |
| 旧定位报 SNAPSHOT_STALE/INPUTS_CHANGED | 等待写入稳定后显式重新搜索,由适配器执行所需重载,再使用新 location;MCP 没有独立 reload 工具 |
| 限定文件符号取证或 kind 筛选不像预期 | scopeFiles+symbol 支持 .cs/.ts/.tsx/.js/.jsx/.py,属于有限文本匹配;symbol 大小写精确。各后端 kind 类型和大小写规则以代码手册为准,不推定全语言一致 |
| UI 查不到或出现多个目标 | 核对 PID/HWND 和大小写准确的查询;只有 complete 且 unique 才能声称唯一定位 |

更新后仍无法核对客户端身份时,保留“客户端未验收”状态与实际证据,不反复尝试未声明参数。
Expand Down
23 changes: 15 additions & 8 deletions WinCode-下一轮工程化迭代计划书.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# WinCode 下一轮工程化迭代计划书

更新日期:2026-09-09(北京时间)。本轮实现版本 **0.13.1**,从 main@a23740c 推进;代码、专项验证及 CI 配置已完成,远端检查和合并以对应 PR 回执为准。实际客户端 Roslyn 验收按用户决定暂缓,不能宣称消费端已经验收。
更新日期:2026-09-09(北京时间)。本轮实现版本 **0.13.2**,从 main@a23740c 推进;代码、专项验证及 CI 配置已完成,远端检查和合并以对应 PR 回执为准。实际客户端 Roslyn 验收已按用户授权恢复;隔离项目和配置已就绪,等待客户端重连,不能宣称消费端已经验收。

已完成实现从待办移除:LocalText 非代码区屏蔽、有限 TSX/JSX 声明、旧缓存失效、E4 恢复与领域失败专项、未知工具协议错误、影响报告去重及仓内手册同步。过程和失败修复保留在[工作日志](docs/codex_worklog.md),对外变化见 [CHANGELOG](CHANGELOG.md)。

Expand All @@ -17,11 +17,11 @@
- 未知工具在正常受理状态返回 JSON-RPC -32602;已知工具失败保留 isError,JSON 文本与 structuredContent 同源。影响分析只有一个 JSON 文本块,保留 formattedReport 和全部证据字段。
- LocalText 仍是有限文本分析:插值/JSX 内表达式省略,复杂语法可能漏检;无法确定词法边界的文件标记 lexical-uncertainty 且不缓存。文本引用不等于语义引用,完整扫描不等于全语言语义完整。

## 2. 待恢复:实际客户端 Roslyn 验收
## 2. 进行中:实际客户端 Roslyn 验收

用户已决定“先完成代码与 CI,客户端验收暂缓”。本轮不修改客户端 MCP 配置,不部署全局 Skill;新 stdio、InMemory、磁盘清单及真实 Host/Gateway 测试均不能代替当前 Codex 连接验收。
用户在代码与 CI 完成后已授权恢复验收,随后完成 Skill 核对同步。当前已生成隔离 C# 项目、准备 Debug/net10.0 和已安装 SDK 10.0.303,更新现有 wincode 启动参数并备份原服务器配置。Codex CLI 已验证新配置可读取;当前会话仍为 0.12.5,等待刷新对应 MCP 连接。新 stdio、InMemory、磁盘清单及真实 Host/Gateway 测试均不能代替当前 Codex 连接验收。

恢复时先明确客户端、隔离工作区、入口 csproj、Configuration、单一 TFM、SDK 和 MSBuild 求值范围。推荐使用仓内生成的受控 C# 夹具;若改用 TavernDesk,另行确认真实项目配置和求值授权。
本次固定入口为生成夹具的 App/App.csproj,求值范围仅为其生成的 App/Lib 项目。包源已清空,fixture restore/build 通过,无新依赖下载。配置及回执位于 test-tmp/client-roslyn-20260909;验收后恢复原 wincode 启动参数。若改用 TavernDesk,另行确认真实项目配置和求值授权。

验收顺序:

Expand All @@ -31,9 +31,16 @@
4. 仅修改隔离夹具,用旧 location 验证明确的 stale/输入变化错误;按 recoveryAction 处理并重新搜索,新位置应恢复成功。
5. 记录实际连接身份、位置、错误恢复及结果。手册同步与磁盘文件一致不能替代重连;不得用终止 Codex 或修改真实项目制造验收条件。

**USER_DECISION_REQUIRED:** 恢复验收时确认上述项目和求值范围。当前暂缓,不影响已经授权的代码、CI、PR 和合并工作
**当前待办:** 对应 MCP 连接刷新后,核对新实例及当前交付版本、codeProvider=roslyn、实际隔离工作区和 symbolLocation Schema,再执行上述闭环。配置与求值范围已获授权,不重复申请;未重连前不向旧工具传递新定位字段

## 3. 条件性下一轮工作
## 3. 已授权的生命周期迭代

- 0.13.2:已实现 EOF/传输断开、初始化取消、统一关闭预算和故障后的独立资源回收;完整检查及 PR 合并状态以工作日志为准。
- 下一阶段:验证父进程异常终止、活动 Host/UI 辅助进程回收,明确 Windows Job 的实际保护范围;不把观察到的 PID 退出扩大为所有外部进程保证。
- 随后:Roslyn 空闲 120 秒实验值、工作区初始化延迟及监听/缓存休眠;唤醒必须核对新鲜度,旧 symbolLocation 明确失效。
- 保留现有 MCP 接口进程;客户端按需卸载、事件循环完全卡死时的外部兜底须依据实际客户端能力判断。

## 4. 条件性下一轮工作

| 方向 | 进入条件与最小实验 | 验收边界 |
| --- | --- | --- |
Expand All @@ -44,9 +51,9 @@

正式对照保持相同初始信息与任务,字符数不当作实际 token,不将不同模型/提示词的耗时归因于工具。

## 4. 持续关口
## 5. 持续关口

- 每个版本先针对性验证和 debug,再执行完整 check、必要的桌面/真实 Roslyn 验收,经过 PR 检查后合并。保留失败证据,不用旧成功覆盖新失败。
- Node 22 CI 执行 E4 专项与真实 Roslyn,Node 22/24 执行核心与交付检查;对应提交的有效 CodeQL 语言均须通过。当前 default-setup 已移除无源码 Python,核对新运行而非为历史红叉添加假源码。
- 当前历史中文文件指纹测试曾偶发失败,后续复现时保留现场,区分测试竞争与真实失效漏洞;不靠删测试或延长 sleep 掩盖问题。
- 版本、Host、仓内 Skill 与完整磁盘交付必须一致。短时有界负载不等于长期耐久性,异地发布目录不等于干净机器安装,客户端暂缓期间保留“消费者尚未验收”的限制。
- 版本、Host、仓内 Skill 与完整磁盘交付必须一致。短时有界负载不等于长期耐久性,异地发布目录不等于干净机器安装,客户端闭环完成前保留“消费者尚未验收”的限制。
4 changes: 2 additions & 2 deletions WinCode-迭代路线图.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# WinCode 迭代路线图

更新:2026-09-09(北京时间)。实现版本 **0.13.1**;远端 CI/合并状态查看对应 PR,实际客户端 Roslyn 验收按用户决定暂缓
更新:2026-09-09(北京时间)。实现版本 **0.13.1**;远端 CI/合并状态查看对应 PR,实际客户端 Roslyn 验收已恢复,隔离项目与配置准备完成,等待客户端重连

详细方针和验收条件以[下一轮工程化迭代计划书](WinCode-下一轮工程化迭代计划书.md)为准;完成内容记在 [CHANGELOG](CHANGELOG.md)和[工作日志](docs/codex_worklog.md),不再作为待办重复实施。

## Next:恢复消费端验收

先明确隔离 C# 项目的配置与 MSBuild 求值许可,再通过实际客户端完成版本核对、精确符号、引用、影响和旧快照拒绝闭环。当前只完成代码及可自动化的验收,不修改实际客户端或全局 Skill
隔离 C# 项目及 MSBuild 求值范围已获准,配置固定 Debug/net10.0,项目构建通过;本地 Skill 已同步,wincode 启动参数已更新并备份。正常重启客户端后完成版本核对、精确符号、引用、影响和旧快照拒绝闭环,结束时恢复原启动参数。当前连接仍为旧版,尚未完成消费端验收

## Later:由真实任务决定

Expand Down
Loading