PRODUCT SPACE

CoDelphi ⌁ gzhanlei/codelphi · main ↗

CoDelphi 把 GitHub 仓库变成一份可追溯的产品规格。 连接仓库后,AI 自动提取功能清单与用户场景,每次 push 自动总结行为变化——每一条结论都附带可点击的源码证据,而不是凭空生成的摘要。

最近一次分析:succeeded

分析完整性:部分完整——合并完整性部分(合并层有截断/冲突/护栏检出);核验部分(存在一致性冲突或影子对比不一致)。分析成功不等于完整,完整不等于正确;结论采纳前应经人工核实。

源码装配覆盖率(按文件字节)12.7%(已装配实现文件 196/492 个,6 趟提取);本规格未覆盖全部实现面(提取趟数触顶),未覆盖部分不产生结论。。运行时开关与数据依赖行为静态提取不可见(边界说明);发现缺口请在左侧功能树进入功能页,用「编辑/新增场景」人工补充并标记核实。

MCP key 管理与只读工具面

MCP 连接指南、OAuth 自动发现、动态客户端注册与授权/令牌流程。

代码生成稳定链接 mcp key 管理与只读工具面
未核实
实现分布 · 2 个文件
  • components/mcp-keys-settings.tsx ↗5 行EC-15ER-8HP-14HP-15HP-16
  • lib/mcp/server.ts ↗14 行EC-1EC-10EC-11EC-12EC-13EC-14EC-2EC-3EC-4EC-5EC-7EC-8EC-9ER-1ER-11ER-12ER-9HP-1HP-10HP-11HP-12HP-13HP-17HP-18HP-19HP-2HP-20HP-21HP-22HP-23HP-24HP-25HP-26HP-27HP-28HP-29HP-3HP-30HP-32HP-33HP-4HP-5HP-8HP-9
边界情况EC-1生成未核实
情境
尚无任何 key
操作
渲染 key 列表
结果
显示「尚无 key」
边界情况EC-10生成未核实
情境
授权请求使用未注册 client_id 或回跳地址不匹配
操作
GET 或 POST /api/mcp/oauth/authorize
结果
返回 400 client 校验失败(未注册或回跳地址不匹配)。
边界情况EC-11生成未核实
情境
用户在授权页选择拒绝
操作
POST /api/mcp/oauth/authorize,decision=deny
结果
带 error=access_denied 回跳 redirect_uri(含 state)。
边界情况EC-12生成未核实
情境
令牌请求缺少 client_id
操作
POST /api/mcp/oauth/token
结果
返回 400 invalid_request。
边界情况EC-13生成未核实
情境
refresh_token 分支缺少 refresh_token
操作
POST /api/mcp/oauth/token,grant_type=refresh_token
结果
返回 400 invalid_request。
边界情况EC-14生成未核实
情境
设置页 06 面板已签发 key 并展示明文
操作
查看明文区与配置卡片
结果
明文 key 仍单独显示一次并可复制;配置卡片同时提供烤入该 key 的 JSON,两者互不影响
边界情况EC-15生成未核实
情境
无管理权限的成员查看设置页 06 面板
操作
查看连接向导
结果
仍可见端点、配置 JSON 与客户端说明,但不显示签发输入框与撤销按钮
边界情况EC-2生成未核实
情境
viewer 打开 MCP 面板
操作
渲染面板
结果
不显示签发与撤销入口,仅可查看列表
边界情况EC-3生成未核实
情境
调用工具时未提供 JSON 参数
操作
运行 mcp-call.py <tool>
结果
以空对象作为 arguments 发送 tools/call
边界情况EC-4生成未核实
情境
尚未签发 key 或刚签发前
操作
查看连接配置
结果
Authorization 头显示可见占位符 <sk_cd_…>,签发后替换为真实 key
边界情况EC-5生成未核实
情境
尚未签发 key 或 key 为空白
操作
渲染连接配置
结果
Authorization 头回退为可见占位符 <sk_cd_…>,不写入空值
边界情况EC-7生成未核实
情境
尚未签发 key 或签发后未保留明文
操作
查看连接配置
结果
Authorization 使用可见占位符 <sk_cd_…>,提示签发 key 后自动写入真实值
边界情况EC-8生成未核实
情境
注册请求体不是合法 JSON 或缺少 client_name
操作
POST /api/mcp/oauth/register
结果
返回 400 invalid_client_metadata。
边界情况EC-9生成未核实
情境
注册请求的 redirect_uris 为空、超过 5 个、超长或非 http/https
操作
POST /api/mcp/oauth/register
结果
返回 400 invalid_redirect_uri。
错误路径ER-1生成未核实
情境
签发或撤销请求失败
操作
提交操作
结果
显示接口错误消息或「签发失败」「撤销失败」
错误路径ER-11生成未核实
情境
调用 lookup_by_files 时 paths 为空或超过 20 个
操作
handleMcpRpc 处理 tools/call
结果
返回 JSON-RPC 错误码 -32602(INVALID_PARAMS)
错误路径ER-12生成未核实
情境
调用不存在的工具或方法
操作
handleMcpRpc 处理 tools/call 或未知 method
结果
返回 JSON-RPC 错误码 -32601(METHOD_NOT_FOUND)
错误路径ER-8生成未核实
情境
设置页 06 面板签发 key 失败
操作
点击「签发 key」且接口返回错误
结果
面板显示错误信息,不产生明文与配置变更,pending 状态复位
错误路径ER-9生成未核实
情境
客户端以无效凭据访问 /api/mcp
操作
发送带无效 Bearer token 的请求
结果
返回 401 JSON-RPC 错误(code -32001),响应头携带指向资源元数据的 WWW-Authenticate
正常路径HP-1生成未核实
情境
工作区 editor/owner 在设置页
操作
填写名称并签发 key
结果
返回明文仅显示一次,列表展示 key 提示与创建者
正常路径HP-10生成未核实
情境
连接器启动连接时自动注册客户端
操作
POST /api/mcp/oauth/register,提交 client_name 与 1-5 个 http/https redirect_uris
结果
返回 201,含 client_id、client_id_issued_at、client_name、redirect_uris。
正常路径HP-11生成未核实
情境
已登录用户批准已注册客户端的授权请求
操作
GET 授权页携带 client_id、redirect_uri、code_challenge、S256,随后 POST decision=approve
结果
页面展示注册应用名与回跳地址;批准后带授权码回跳 redirect_uri(含 state)。
正常路径HP-12生成未核实
情境
连接器用授权码换取令牌
操作
POST /api/mcp/oauth/token,grant_type=authorization_code 并携带 client_id、code、code_verifier、redirect_uri
结果
返回 access_token、token_type Bearer、expires_in 与 refresh_token。
正常路径HP-13生成未核实
情境
访问令牌过期后静默续期
操作
POST /api/mcp/oauth/token,grant_type=refresh_token 并携带 client_id 与 refresh_token
结果
返回新的 access_token、token_type Bearer、expires_in 与旋转后的 refresh_token。
正常路径HP-14生成未核实
情境
管理员在设置页 06 MCP 集成面板
操作
输入 key 名称并点击「签发 key」
结果
key 签发成功,明文只显示一次;连接配置卡片标题切换为「已写入刚签发的 key,复制即用」,配置 JSON 中已烤入真实 key
正常路径HP-15生成未核实
情境
设置页 06 MCP 集成面板已展示连接配置
操作
点击「复制配置」
结果
通用 mcpServers JSON 被写入剪贴板,按钮文案变为「已复制」
正常路径HP-16生成未核实
情境
未签发 key 时查看设置页 06 面板
操作
查看连接配置卡片
结果
卡片标题显示「签发 key 后自动写入真实值」,配置 JSON 以占位符形式展示端点与 key 位置
正常路径HP-17生成未核实
情境
访客未登录访问 /mcp
操作
打开 /mcp 页面
结果
以公开外壳渲染连接指南,含端点、通用 mcpServers JSON、各客户端文件位置、OAuth 连接器说明、13 个工具清单与工作流约定,并显示「返回产品总览」链接
正常路径HP-18生成未核实
情境
已登录用户访问 /mcp
操作
打开 /mcp 页面
结果
以应用外壳渲染同一连接指南内容,侧栏 MCP 项高亮
正常路径HP-19生成未核实
情境
支持 OAuth 自动发现的连接器(ChatGPT/Claude 网页版)
操作
以无凭据请求访问 /api/mcp
结果
返回 401 JSON-RPC 错误,WWW-Authenticate 头为 Bearer resource_metadata="<appUrl>/.well-known/oauth-protected-resource/api/mcp",连接器据此发现授权服务器
正常路径HP-2生成未核实
情境
已签发 key 需要失效
操作
点击撤销
结果
key 标记已撤销,使用该 key 的连接立即失效
正常路径HP-20生成未核实
情境
用户在设置页 MCP 卡片查看连接向导,且刚签发了新 key。
操作
渲染通用 mcpServers JSON 模板。
结果
模板中 Authorization 为 Bearer 加新签发 key(去空白),并展示各客户端文件位置提示与连接/验证说明。
正常路径HP-21生成未核实
情境
用户尚未签发 key 时查看连接向导。
操作
渲染 mcpServers JSON 模板。
结果
Authorization 使用占位符 <sk_cd_…>,提示用户先签发 key。
正常路径HP-22生成未核实
情境
ChatGPT/Claude Web 连接器请求受保护资源元数据。
操作
GET 资源元数据端点。
结果
返回 resource=<base>/api/mcp、authorization_servers=[base]、scopes_supported=[mcp:read]、resource_documentation=<base>/mcp,并带 access-control-allow-origin:* 与 5 分钟缓存头。
正常路径HP-23生成未核实
情境
连接器请求授权服务器元数据。
操作
GET 授权服务器元数据端点。
结果
返回 issuer、authorize/token/register 端点、response_types=[code]、grant_types=[authorization_code,refresh_token]、code_challenge_methods=[S256]、token_endpoint_auth_method=none、scopes_supported=[mcp:read]。
正常路径HP-24生成未核实
情境
连接器进行 RFC 7591 动态客户端注册。
操作
提交 client_name 与 redirect_uris。
结果
返回 mcp_ 前缀的 client_id,客户端信息落库(名称截断 191,回跳地址 JSON 存储)。
正常路径HP-25生成未核实
情境
用户已批准授权,连接器持授权码、PKCE verifier、回跳地址与 client_id 换取 token。
操作
调用授权码换 token。
结果
校验通过后返回 access token(expiresIn=3600)与 refresh token,授权码一次性作废。
正常路径HP-26生成未核实
情境
客户端 access token 过期,持有效 refresh token 与相同 client_id 续期。
操作
调用 refresh 换新 token。
结果
返回新的 access 与 refresh token,refresh 有效期顺延 30 天,旧 refresh 立即失效。
正常路径HP-27生成未核实
情境
客户端发起 MCP initialize 握手
操作
handleMcpRpc 处理 initialize 请求
结果
响应含 protocolVersion、tools 能力、serverInfo 与 instructions 工作流约定(覆盖 lookup_by_files、get_release、send_feedback 等时机)
正常路径HP-28生成未核实
情境
agent 读取工具列表
操作
handleMcpRpc 处理 tools/list 请求
结果
返回 13 个只读工具,描述中标注调用时机(list_projects 先匹配 slug、lookup_by_files 改前必查、list_releases/get_release push 后对账、send_feedback 带三要素)
正常路径HP-29生成未核实
情境
客户端发起 initialize 握手
操作
handleMcpRpc 处理 initialize 请求
结果
响应除 protocolVersion、capabilities.tools 与 serverInfo 外,还携带 instructions 字段,内容含 lookup_by_files、get_release、send_feedback 等工作流约定
正常路径HP-3生成未核实
情境
需要接入 AI 客户端
操作
查看 MCP 集成面板
结果
展示 Streamable HTTP 端点、通用 mcpServers JSON 连接配置与 Claude Code / ZCode / Cursor 文件位置提示
正常路径HP-30生成未核实
情境
客户端请求 tools/list
操作
handleMcpRpc 处理 tools/list 请求
结果
返回只读工具清单,其中 list_projects 描述提示先用 git remote 的 owner/name 匹配产品取 slug,lookup_by_files 描述标注做计划或改文件前必查,list_releases 与 get_release 描述标注 push 后对账,send_feedback 描述要求带场景、证据、代码实际行为三要素
正常路径HP-32生成未核实
情境
agent 查看工具清单以决定调用时机
操作
tools/list 返回工具定义
结果
list_projects 描述提示先用 git remote 的 owner/name 匹配产品取 slug,lookup_by_files 标注做计划或改文件前必查,list_releases 标注 per-push 一条且 push 后用本次 sha 找发布,get_release 标注 push 后对账,send_feedback 标注带场景/证据/实际行为三要素
正常路径HP-33生成未核实
情境
coding agent 以 API key 或 OAuth 身份连接 MCP 端点并发送 initialize 请求
操作
客户端调用 initialize
结果
响应包含 protocolVersion、capabilities、serverInfo,并新增 instructions 字段,值为四条工作流约定文本(计划前 lookup_by_files 反查、search_scenarios/get_feature 理解行为、push 后 list_releases/get_release 对账、send_feedback 三要素上报)
正常路径HP-4生成未核实
情境
本地已配置 ~/.zcode/cli/config.json 中的 codelphi MCP 服务
操作
运行 mcp-call.py tools-list
结果
逐行打印 MCP 工具名列表
正常路径HP-5生成未核实
情境
本地已配置 codelphi MCP 服务
操作
运行 mcp-call.py <tool> '<json-args>' 调用工具
结果
以缩进 JSON 打印 result.structuredContent
正常路径HP-8生成未核实
情境
连接器读取授权服务器元数据
操作
GET /.well-known/oauth-authorization-server
结果
返回 RFC 8414 授权服务器元数据 JSON(issuer 为站点 origin),附带发现响应头。
正常路径HP-9生成未核实
情境
连接器读取受保护资源元数据
操作
GET /.well-known/oauth-protected-resource 或 /.well-known/oauth-protected-resource/api/mcp
结果
返回 RFC 9728 受保护资源元数据 JSON,附带发现响应头。