168 Commits

Author SHA1 Message Date
776e583be2 fix(upload): 会话上传文件复制进项目根目录+prompt告知路径——根治agent找不到上传文件 2026-08-31 17:54:27 +08:00
9926042c9b fix(workspace): 通用会话工作空间按钮补传产线参数(产线隔离) 2026-08-31 16:54:09 +08:00
2dcf463b42 fix(skills): load_skill技能名归一化——容忍LLM传入[产线]前缀/加粗/描述尾巴等目录层装饰 2026-08-31 16:24:04 +08:00
21c62aacda QC评分协议技能:review-requirement/design/develop重写(契合度>9.5+硬门禁)、agent.qc统一评分、agent.pm复盘章节、sdlc-repo-standard复盘报告规范 2026-08-31 16:02:03 +08:00
5a965b94d5 feat(bidding skills v1.2): 商务标写者角色+篇幅/完整性门禁+样板标书规范技能
- 新增roles/agent.bid_biz_writer: 商务标要素齐全/篇幅达标/搜不到冒泡
- agent.bid_writer改技术标写者: 篇幅门限+ask_question冒泡硬规则
- 新增common/bid-spec: 样板标书编写规范抽取(PM capability声明)
- agent.pm加bid_spec_capability: 编写阶段前抽样板规范
- bid-doc-spec/bid-review/bid-workflow: 篇幅门禁+分角色+并发规范
2026-08-31 15:40:04 +08:00
bb16345fc1 feat(bidding skills): 产线起点改上传招标文件+QC契合度审核规范
- 删agent.tender_scout与tender技能(采集审批归商机产线)
- bid-workflow总纲: 阶段链更新, QC门禁/两级回退/阻塞门禁重写
- 新增common/bid-qc: 四类审核清单/10分制打分口径/退回重做流程
- agent.qc角色技能重写: 解析产出契合度审核职责
- agent.tender_analyst补QC退回重做说明
2026-08-31 13:37:49 +08:00
fd3dbbd5a5 opp-workflow技能: 海外数据覆盖声明+2个海外工具入表 2026-08-30 19:54:01 +08:00
ymq
c848bda300 fix(generic): agent_chat_generic 透传前端模型选择 model_id 2026-08-30 15:07:35 +08:00
914f883ed3 docs: opp-workflow技能补众包需求工具(category_references/demands/hot_demands) 2026-08-30 13:50:19 +08:00
337a4c6f90 fix(model-select): 下拉值改llm.id显示llm.name——同名不同供应商不再合并 2026-08-30 09:49:38 +08:00
032fd853ee fix: agent_menus产线隔离——跨产线项目不劫持本产线菜单; 工作空间按钮带产线参数 2026-08-29 15:00:21 +08:00
b0f08e83fb feat(skills): feature-granularity-and-testing——功能点必须单次操作级小功能+正反用例设计;requirement/test角色技能引用 2026-08-29 11:57:17 +08:00
377bbbbf09 feat: 商机产线技能库——opp-workflow总纲(爬取平台工具用法/流程链/门禁) 2026-08-29 09:21:33 +08:00
618fdd155a fix(review-deploy): 去硬编码主机hrstest——部署目标一律从项目env/{test,prod}.json读取,禁编造规范主机 2026-08-28 17:22:05 +08:00
a484e5f46c fix(load_path): app根从脚本自身位置上溯三级解析(~/pipeline在部署机不存在) 2026-08-28 16:39:39 +08:00
34a13ebf37 refactor(pipeline_core): 移除产线管理三功能(产线定义/产线步骤/发布记录)死库存
- 证据: pipeline_steps、pipeline_versions 表恒为0行, 三功能上线后从未使用
- 产线定义已收敛为代码能力包(PipelineAbility)+pipelines表元数据,
  页面无法定义新能力(每种能力需先写代码注册handler), 在线开发属伪命题
- 删除: wwwroot 下 pipelines/pipeline_steps/pipeline_versions/pipeline_editor
  页面目录与配套 API dspy、json/models CRUD 定义、init.py 死函数、
  load_path.py 权限注册
- 保留: pipelines 表(agent 运行时读 name/default_model)、executor 引擎、
  agent/llm/skill_proposals 等模块主体
2026-08-28 16:34:02 +08:00
b5617fc3f4 docs(webapp-deploy): 模块安装四步规范(json2ddl建表→json/build.sh→wwwroot软链→数据导入);模块一律clone进pkgs禁mv 2026-08-28 14:54:15 +08:00
1c4b158a3f feat(agent): 会话模型选择持久化——agent_chat 传 model_id、下拉按项目模型选中
- agent_chat.dspy: 提取前端 model_id 传给 gateway.run_message(校验+持久化到项目)
- agent_model_options.dspy: selected 标记=当前项目已设模型(按 session_id 解析,
  无项目回退个人全局)——下拉每次打开都恢复项目当前模型,不回退首项
- agent/index.ui: 模型下拉带 session_id(多 tab 各自项目,下拉解析对的项目)
2026-08-28 12:26:18 +08:00
b5c7dd3f44 fix(agent_menus): 项目解析收敛到 get_session_project_id(含悬空引用防护)
不再手写 session→项目解析(与解析层语义漂移是「会话有项目、入口说没有」的根因之一)
2026-08-27 17:44:38 +08:00
ymq
f5689defa8 feat(agent): 会话入口支持 pipeline_id 传参(默认产线) 2026-08-27 13:12:45 +08:00
7ffb5bd773 feat(skills): 投标产线技能库(pipelines/bidding_general)
6 common:bid-workflow总纲 / tender招标状态机 / bid-chapter章节状态机 /
          bid-review评审评分规范 / bid-qualification资质匹配 / bid-doc-spec编写规范 /
          team-communication问答冒泡
9 roles:tender_scout / tender_analyst / bid_prep / bid_writer / bid_reviewer /
         bid_compositor / bid_scorer / pm / qc(frontmatter 声明 capability+tools)
2026-08-26 22:54:12 +08:00
ff667c58cd feat: 环境信息唯一事实源 + 应用脚手架 QC 硬门禁 + 基础模块 load 反模式
1) project-directory-spec 新增第八章「部署环境信息(env/)」:
   - 唯一事实源 projects/{项目名}/env/{test,prod}.json;禁止 apps/ 下放部署凭据
     (人事项目7 实测三份 env 矛盾:项目 9187 / 应用 9288+postgresql / 实际 mariadb)
   - 固定字段 schema;db.engine 必须与 DDL 方言一致
   - 铁律:环境信息由人提供,agent 不得编造;禁「待明确」占位当交付;缺字段冒泡 need_info
   - PM 在 need_info 未答结时不得 review_rollback(回退上游解决不了外部输入缺口)

2) qc/review-develop 新增第六章「应用脚手架硬门禁」(原技能只有模块检查,
   应用脚手架零检查项,Flask 因此两次过审):
   - 6.1 入口必须 ahserver,grep 命中 Flask/FastAPI/Django/jsonify 直接 reject
   - 6.2 基础模块 appbase/rbac 必须真正调 load_XXX(),只 import 标 loaded 属反模式
   - 6.3 端口三处一致 6.4 DDL 方言与 engine 一致 6.5 依赖完整性

3) web-application-spec 补「基础模块只 import 不调 load_XXX()」反模式警示
2026-08-25 21:27:10 +08:00
520a6d4f89 feat(sdlc): RoleSpec 加 task_title 字段(声明式阶段标题模板)
title 继承 bug 根治的一部分:RoleSpec 声明该角色作为自动派生下一任务时的
标题后缀(如 agent.design→「应用架构与模块设计」),_create_next_task 不再硬编码。
2026-08-25 17:01:18 +08:00
717651f4ab fix(llm-proxy): get_userorgid 是 async,补 await(否则 coroutine str 化超长 DataError 1406) 2026-08-25 14:13:45 +08:00
7c57550277 feat(llm-proxy): OpenAI 兼容代理端点 + token 签发/吊销/列表 dspy 2026-08-25 14:11:42 +08:00
20f3e6ebb2 feat(skills): 规范分层——global project-directory-spec 去掉 apps/modules(只留通用项目目录),产线版(pipelines/sdlc_general/common/)新增 apps/modules/spec.json/引用模块写保护/部署前远程仓库 2026-08-24 17:24:47 +08:00
21a9f3cfad feat(skills): app 划分职责归 design(根据需求划分一个项目几个app) + 角色技能路径同步机构工作空间新设计(去 repos/{项目名}_pc/_app/_模块, 改 projects/docs + 机构 apps/modules) 2026-08-24 16:43:40 +08:00
7842d2570f feat(agent): 工作空间控件按会话传递session_id
- agent_menus.dspy 按 session 解析项目 + 工作空间按钮URL拼 session_id
- index.ui 默认tab/新建会话 tab 的 agent_menus urlwidget 带 session_id
2026-08-24 16:40:49 +08:00
0bc23c1d69 feat(skills): sdlc-repo-standard 同步机构工作空间新设计——去 {项目名}_pc/_app/repos 旧约定,改 docs/+spec.json+机构 apps/modules 落点 2026-08-24 16:36:18 +08:00
3cde0d9ce2 feat(skills): 机构工作空间目录重构——projects/apps/modules 三目录 + 项目去 repos/references 改 app spec.json(引用/生成模块) + 应用/模块落点改机构 apps/modules + 部署前设置远程仓库 2026-08-24 16:33:54 +08:00
8164444ab3 feat(skills): web-application-spec 加框架铁律(入口必须ahserver禁止Flask/http.server + 主页必须有完整index.ui) + bug 加fixed→复测部署门禁(必须先部署测试环境+QC验证) 2026-08-24 15:53:49 +08:00
84cc15dd1d fix: PM 角色技能撤销「任务审核里处理 bug」——bug 流转改为独立循环
用户定:任务和 bug 是两套独立逻辑。PM 只管任务审核,Bug 生命周期由独立的
bug poller 循环驱动,不在任务审核里顺手处理(不 list_bugs/confirm_bug/派发修复)。
PM 角色 capability 从 task_capability,bug_confirm_capability 收敛为 task_capability。
2026-08-24 08:28:18 +08:00
b6eadecbe6 feat: PM bug 推动要求强化到技能——每次审核任何任务都检查并推动 Bug 流转
用户定:在 PM 的技能里加 bug 推动要求(而非 system_prompt 硬编码)。

bug-confirm 技能:
- 标题「闭环触发(审核 test 交付通过时)」→「Bug 推动要求(每次审核任何
  任务都要执行,铁律)」
- 加「硬性动作」:先 list_bugs 真实调用,禁止编造「无 open Bug」
- description 三段式强化:每次审核都要 load_skill 本技能

PM 角色技能 description 同步:bug-confirm 的触发从「审核 test 后」改为「每次审核任何任务」
2026-08-24 08:10:34 +08:00
26e1e0269d fix: PM 职责——Bug 生命周期是独立循环,每次审核都检查并推动流转
用户纠正语义:任务流转和 bug 流转是两个独立的循环,PM 要有「添加流转」
的能力。之前写「审核 test 通过后执行 Bug 闭环」太窄,改为「每次审核任何
任务都检查当前迭代 Bug 状态并主动推动流转」。
2026-08-24 08:03:45 +08:00
f51452d262 fix: rework(回退重做)不调 bug 工具,只有 bug_fix 走状态机
用户纠正语义:rework=重做交付件(QC/PM 退回),不是修 bug,不走 start_fix/fix_bug
状态机。只有 PM 明确派发的「修复 Bug」任务(bug_fix)才走。修正 develop 角色技能
第一步判断 + 回退重做职责段 + bug-fix 技能决策表。
2026-08-23 21:52:51 +08:00
023b2c6145 feat: 技能 publish 落点按 org_id 分流——组织自有规范落 org scope
机构技能层架构配套:技能提议 publish 时按提案 org_id 决定落点——
org_id='0'(ocai/平台)写 global(所有组织缺省共享);org_id≠'0' 写
skills/orgs/{org_id}/(组织自有开发规范,经 get_merged 的 org 缺省继承
+ 组织覆盖机制,该组织项目角色可见且覆盖 ocai 同名)。
2026-08-23 21:43:04 +08:00
48a26e5375 feat: org scope 缺省继承——ocai(org_id='0')机构技能所有组织共享,其他组织可覆盖
机构技能层架构:org_id='0' 是 ocai 组织(缺省机构),其机构技能(基础模块
apppublic/sqlor/ahserver/rbac/appbase/accounting 的应用/模块规范)是所有组织
缺省共享的内容;其他组织(org_id≠'0')先继承 ocai 缺省,再用自己 org scope
的同名技能覆盖(很多组织有自己的开发规范)。

get_merged 改为:先 update _orgs['0'](ocai 缺省),再 update _orgs[org_id]
(组织自有,org_id≠'0' 时),实现缺省继承 + 组织覆盖。
2026-08-23 21:40:08 +08:00
94bb572785 feat: develop 接任务先 classify_task 判断来源 + PM 派发修复bug要求查所有代码
1. bug-fix 技能:新增 classify_task 工具到 tools,写明任务来源→bug状态机决策表
2. develop 角色技能:新增「接到任务第一步必做」——先 classify_task 判断来源,
   bug_fix/rework 任务 start_fix→fix_bug,new_dev 不走状态机
3. PM 角色技能:派发「修复 Bug」任务 description 必须要求 develop 检查所有模块
   同类问题(不能只修报出来的),并强制 start_fix+fix_bug
2026-08-23 21:23:53 +08:00
5619c6e41d fix: bug-fix 技能状态机描述放宽 open,明确修完代码必须 fix_bug 2026-08-23 15:19:23 +08:00
6c60ef8160 fix: develop 技能补回退重做任务必须 fix_bug 规则
hrs6 断链根因3:develop 回退重做任务修了 payroll 脚本(code_files 交付)
但没走 start_fix/fix_bug 状态机,bug 全 open,PM 审核通过后按闭环规则
「查 status=fixed 的 Bug 派重新部署」查不到 fixed bug,无从派发,链断 approved。

补「回退重做任务」职责:修完代码必须 list_bugs 找对应 bug → start_fix →
fix_bug 标记 fixed。修复代码和推进 bug 状态是一体的,缺一即断链。
2026-08-23 14:48:20 +08:00
8068371ac1 fix: bug 闭环规则保持简单——部署出错报 bug,bug 修复后才重新派部署
纠正「部署 Bug 立即 rollback 回退 deploy_test 重部署」的死循环设计:
- 部署 Bug(代码问题)→ confirm + 派「修复 Bug」给 develop
- 部署 Bug(环境/运维)→ 冒泡人/运维,不 confirm 不派发
- 关键:bug 修复后(fixed)才重新派 deploy_test 部署,bug 未修复前不派部署

避免「部署失败→立即重部署→再失败」死循环,让闭环简单运转。
2026-08-23 12:47:31 +08:00
e945873fdd feat: 部署失败也报 Bug,PM 统一分析根因指派
bug 闭环从「只覆盖功能 bug」扩展为「覆盖所有失败」:
- 新增 bug-report 能力(bug_report_capability: report_bug+list_bugs),
  deploy_test 部署失败时 report_bug 报部署 Bug(不含 verify/close,避免越权)
- deploy_test 角色技能:capability 加 bug_report_capability,部署失败 → report_bug 报 Bug 让 PM 分析
- test 角色技能:冒烟失败也从「不 report_bug」改为 report_bug 报部署 Bug
- PM bug-confirm 能力:判断根因细分「部署 Bug(环境/运维→deploy_test,代码→develop)vs 功能 Bug(develop)」
- PM 角色技能:同步 bug 闭环职责

统一原则:任何失败都 report_bug 进 sd_bugs,PM 是唯一分析+指派点。
2026-08-23 11:28:05 +08:00
19bffb4465 fix: 修复产线三个「假产出/假通过」缺陷(hrs6 死循环根因)
1. deploy_test 编造部署成功:技能加硬门禁——/healthz 必须实测 200 才算成功,
   000/超时/连接拒绝一律算失败,必须如实记录+冒泡,禁止编造「返回200/部署成功」。
2. PM 审核不验证真实性:加审核标准——审核 deploy_test 必须独立 curl /healthz 验证,
   不能只信文档声称,声称200实测000=编造,直接退回。
3. develop 产出占位符:module-development-spec 加硬约束——init/data.json 必须是合法
   JSON 真实种子数据,禁止写「8组appcodes编码种子」这类占位符文本。
4. build.sh 不 fail-fast:webapp-deploy 加硬约束——必须 set -e,任一步失败立即退出,
   禁止 init_data 失败后继续 start app 造成「看似成功」。

根因链:deploy_test 编造 /healthz 200 → PM 轻信 approved → 应用实际没起来 →
test 冒烟失败 → rollback → 死循环。
2026-08-23 11:21:02 +08:00
df7f5a0089 feat: PM 审核 Bug 时判断根因(环境 vs 功能)并正确指派
PM 审核 test 时,对 open Bug 逐个读 title/description 判断根因:
- 环境问题(部署/DB/服务/网络)→ review_rollback 回退 deploy_test,不 confirm
- 功能问题(代码逻辑)→ confirm_bug + 派发「修复 Bug」任务给 develop
- 误报 → reject_bug

正确指派:环境问题交部署工程师,功能问题交开发工程师。
2026-08-23 10:50:18 +08:00
56a5ef79dd feat: test 角色技能明确两种测试 + 问题归属区分
① 冒烟测试=验证部署(/healthz/端口/DB/进程),部署不正常 → 问题冒泡给部署工程师
   deploy_test 修复,不 report_bug、不落 sd_bugs(部署问题不是功能 Bug)
② 用例测试=验证功能(CRUD/接口/RBAC/数据契约/i18n),功能 fail → report_bug 落 sd_bugs
   交给开发工程师 develop,走 Bug 闭环

明确问题归属:部署问题→deploy_test,功能问题→develop。
2026-08-23 10:48:14 +08:00
8b0b1d71fa fix: bug-confirm 能力明确「只处理当前迭代的 Bug,不跨迭代/跨项目」
Bug 必须有 iteration_id 归属,闭环时 list_bugs 按当前迭代 id 过滤,
其他项目/其他迭代的 Bug 不 confirm/不修复/不关闭。
2026-08-23 10:43:29 +08:00
2ac7702c39 feat: Bug 闭环能力通过角色技能定义扩展(测试→bug→修复→复测→关闭)
按「能力通过技能定义扩展」原则,代码只补工具原语,闭环行为全在技能里:
- 新增 bug-confirm 能力技能(capability: bug_confirm_capability + confirm/reject/reopen/list_bugs)
- PM 角色技能:capability 加 bug_confirm_capability + 职责「审核 test 通过后查 open bug,零散→confirm+派发修复任务,系统→rollback;修复通过后派发复测任务」
- develop 角色技能:职责「修复 Bug 任务 → start_fix + fix_bug」
- test 角色技能:职责「复测任务 → verify + close / reopen」
- bug-test 能力补 reopen_bug 工具

LLM 读技能后自主驱动闭环,代码不写死「查 bug→派任务」逻辑。
2026-08-23 10:32:28 +08:00
6863f73728 fix: 全部 SDLC 规范技能 description 改三段式(触发场景+关键约束+不加载后果/边界)
让所有角色做事都能靠 description 判断加载哪个技能:
- database-table-definition-spec/crud-definition-spec/dspy-file-implementation-spec/sqlor-database-module
  由英文「Standardized/Comprehensive...」改为中文触发式(定义表结构/CRUD/dspy/写DB时必读+不加载后果)
- project-directory-spec/sdlc-repo-standard/webapp-deploy/database-design
  补「不加载后果」+ 互相指路边界(表四段式↔database-design、目录落点↔project-directory-spec)
2026-08-22 23:19:59 +08:00
aa756e5b4c fix: 技能 description 改为「触发场景+该加载哪个规范+不加载后果」
根因:develop 从不 load_skill module-development-spec,是因为 description 只写「是什么」
(英文的 Standardized workflow...),没写「什么场景必须加载我、不加载会怎样、什么场景别用我」。
目录层只注入 name+description,description 是 agent 决定是否 load_skill 的唯一触发依据,
写不清触发条件 → agent 不加载 → 规范静默失效。

改为:每个角色技能 + 关键规范技能的 description 都写清
① 触发场景(开发模块/应用脚手架/部署/测试/审查时必读)② 该加载哪个规范 ③ 不加载的后果(模块带 app.py 等)。
2026-08-22 23:13:28 +08:00
054dc6dd1f feat: deploy_prod 角色技能加「生产部署需人工指令」门禁
生产环境部署是高风险操作,不得自动执行。只有用户明确指令「部署生产」后才执行,
未收到人指令时 ask_question 冒泡等待。
2026-08-22 20:14:37 +08:00