openqj
|
8d7651b0b7
|
Merge pull request #172 from openqj/feat-metrics-extended
feat: /metrics 可观测性扩展
|
2026-10-30 05:00:53 +08:00 |
|
openqj
|
903098de09
|
Merge pull request #171 from openqj/feat-cloud-mcp-more2
feat: 云端 MCP 工具 12→20
|
2026-10-30 05:00:50 +08:00 |
|
openqj
|
0787496427
|
Merge pull request #170 from openqj/feat-image-edit-mcp
feat: 图片改图 MCP 工具 image_edit
|
2026-10-30 04:12:46 +08:00 |
|
openqj
|
09880e8f4e
|
Merge pull request #79 from openqj/feat-app-max-permissions
feat: GitHub App manifest 扩到主机最大权限
|
2026-10-30 04:11:13 +08:00 |
|
openqj
|
5b03e0a85d
|
Merge pull request #169 from openqj/feat-console-redesign
console: 重排版为侧边导航 + 三栏工作台 + 任务详情内页签
|
2026-10-30 03:45:48 +08:00 |
|
openqj
|
f0aba700e0
|
Merge pull request #168 from openqj/feat-imagegen-mcp-basefix
fix: imagegen MCP env 必须写死本地网关 base URL
|
2026-10-30 03:15:59 +08:00 |
|
openqj
|
da7b8e3a4f
|
Merge pull request #167 from openqj/feat-imagegen-mcp
feat: 图片生成 MCP 工具 image_generate(中转站图片分组)
|
2026-10-30 03:03:07 +08:00 |
|
openqj
|
cf6721f427
|
Merge pull request #163 from openqj/feat-docker-timeout-evidence
feat(docker): 超时不再只剩一句 docker run timeout,留存 partial 与容器日志
|
2026-10-30 02:54:30 +08:00 |
|
openqj
|
27ca53465e
|
Merge pull request #162 from openqj/feat-task-result-full
feat(tasks): 完整结果另存 result_text_full,详情不再只剩 2000 字
|
2026-10-30 02:54:21 +08:00 |
|
openqj
|
4bbe6a99e3
|
Merge pull request #164 from openqj/feat-cloud-mcp-more
feat(mcp): 云端 MCP 工具从 8 个扩到 12 个
|
2026-10-30 02:47:36 +08:00 |
|
openqj
|
367b9d8873
|
Merge pull request #161 from openqj/feat-automation-audit-pg
fix(automations): 审计行不再显式插 TEXT id,PG identity 下不再丢审计
|
2026-10-30 02:47:28 +08:00 |
|
openqj
|
276d433da6
|
Merge pull request #166 from openqj/feat-console-pagination-tabs
console: 任务列表服务端分页 + 控制台分页面签
|
2026-10-30 02:38:35 +08:00 |
|
openqj
|
6a5a837aac
|
Merge pull request #165 from openqj/feat-doc-tools-result-cap
文档/图片工具进任务镜像 + 结果截断改为提取 text 上限 20000 字
|
2026-10-30 02:19:46 +08:00 |
|
openqj
|
9a11ef27b8
|
Merge pull request #159 from openqj/feat-cloud-mcp-server
feat(cloud): MCP 云端任务入口 + 上游 0.164 对齐配置
|
2026-10-30 01:55:43 +08:00 |
|
openqj
|
0c458cb2ce
|
Merge pull request #158 from openqj/feat-repo-access-check
feat(repos): 仓库接入预检 + codexsvc deploy key 配给脚本
|
2026-10-30 01:53:52 +08:00 |
|
openqj
|
aa5bf7da72
|
Merge pull request #157 from openqj/feat-final-audit-detail
fix(worker): 终态审计带上 error,复发卡死可定位
|
2026-10-30 01:53:39 +08:00 |
|
openqj
|
8d8774edee
|
Merge pull request #160 from openqj/feat-console-single-chat
console: 对话只留一处实时单列;任务列表与 API Key 加滚动上限、三栏等高
|
2026-10-30 01:52:45 +08:00 |
|
openqj
|
9ac0199eba
|
Merge pull request #156 from openqj/feat-cross-worker-kill
feat: 跨 worker 真 kill(kill_requests 意图表 + 收殓器)与自动化触发入闸
|
2026-10-30 01:40:05 +08:00 |
|
openqj
|
b306b56517
|
Merge pull request #155 from openqj/feat-chatgpt-codex-align1
ChatGPT Codex 对齐:技能包 + 租户播种 + web_search Docker 联网修法
|
2026-10-30 01:29:47 +08:00 |
|
openqj
|
3c80d277b0
|
Merge pull request #154 from openqj/feat-console-detail-cards
console: 任务详情改卡片式排版
|
2026-10-30 01:24:54 +08:00 |
|
openqj
|
6d4f87e286
|
Merge pull request #151 from openqj/feat-trace-truncation
trace: 标注被截断的链路消息,避免误读为模型未写完
|
2026-10-30 01:12:33 +08:00 |
|
openqj
|
fd9fe5f254
|
Merge pull request #153 from openqj/feat-auth-unknown-role
fix(auth): unknown project role denies instead of KeyError 500
|
2026-10-30 00:55:54 +08:00 |
|
openqj
|
284e821d0c
|
Merge pull request #152 from openqj/feat-console-task-detail-meta
console: 任务详情显示首字、总耗时、token 与自动成本明细
|
2026-10-30 00:50:08 +08:00 |
|
openqj
|
3696dad7c8
|
Merge pull request #146 from openqj/feat-task-files-tenant
fix: task files endpoint resolves tenant docker worktrees
|
2026-10-30 00:04:37 +08:00 |
|
openqj
|
d4a517fc7e
|
Merge pull request #150 from openqj/feat-console-task-meta
console: 任务列表行显示首字、总耗时、token(服务端列表补 total_tokens)
|
2026-10-29 18:38:36 +08:00 |
|
openqj
|
e5bf361c6d
|
Merge pull request #149 from openqj/feat-no-full-confirm
console: 新建任务选完全访问不再弹确认框
|
2026-10-29 18:17:16 +08:00 |
|
openqj
|
baf330f112
|
Merge pull request #148 from openqj/feat-console-goal-invincible
console: 增加 goal 模式无敌版勾选
|
2026-10-29 18:05:19 +08:00 |
|
openqj
|
9961a251d1
|
Merge pull request #147 from openqj/feat-prestart-goal-logs
worker: 补漏:goal 路径的 docker 分段日志 + 审计任务 id
|
2026-10-29 17:52:30 +08:00 |
|
openqj
|
a17f0c7412
|
Merge pull request #145 from openqj/feat-prestart-logs
worker: 启动前分段日志(派发卡死可定位)
|
2026-10-29 17:33:05 +08:00 |
|
openqj
|
0129b0149a
|
Merge pull request #144 from openqj/feat-neverstart-fresh
worker: 从未启动的任务自动续跑回落全新跑
|
2026-10-29 16:51:42 +08:00 |
|
openqj
|
a4586cbebc
|
Merge pull request #143 from openqj/feat-harness2-followups
harness2: per-role models, sweep batch, task file assets endpoint
|
2026-10-29 16:39:48 +08:00 |
|
openqj
|
9e444eca38
|
Merge pull request #142 from openqj/feat-state-lock
host: 修复断点丢失(tmp 碰撞 + 跨容器 flock 失效)
|
2026-10-29 16:04:12 +08:00 |
|
openqj
|
7425f2e778
|
Merge pull request #141 from openqj/feat-harness2-gaps
harness2: upstream gap fill — trivial fix, session budget, tag validation, preflight
|
2026-10-29 15:40:09 +08:00 |
|
openqj
|
4d16d63313
|
Merge pull request #140 from openqj/feat-longtask-p0-three
断点镜像状态标签回落:host-state 条目写 status 不是 goal_status
|
2026-10-29 15:37:51 +08:00 |
|
openqj
|
3d60f32bd3
|
Merge pull request #139 from openqj/feat-longtask-p0-three
长任务 P0 三件:断点进库、错误分类+熔断、Run/Step 时间线
|
2026-10-29 15:19:43 +08:00 |
|
openqj
|
d56bd3a99e
|
Merge pull request #138 from openqj/feat-harness2
harness2: recursive harness optimization wired to real codex tasks
|
2026-10-29 14:28:44 +08:00 |
|
openqj
|
b34812f605
|
Merge pull request #137 from openqj/feat-longtask-resume-guard
fix: 断点丢失时 goal-resume 拒绝成 failed,阻断自动恢复空转
|
2026-10-29 14:24:44 +08:00 |
|
openqj
|
e48b756f96
|
Merge pull request #136 from openqj/feat-longtask-invincible
无敌补齐:连续失败上限 + worker退出审计 + 配额恢复自动续跑
|
2026-10-29 13:16:49 +08:00 |
|
openqj
|
88fcfeebd3
|
Merge pull request #135 from openqj/feat-console-keys-ui
CI verify pass. Deploy follows separately via deploy.py.
|
2026-10-29 12:57:18 +08:00 |
|
openqj
|
49f3ff7cb6
|
Merge pull request #134 from openqj/feat-longtask-docker-resume-env
修法:Docker 断点续跑透传密钥环境(SUB2API_API_KEY 缺失空转)
|
2026-10-29 12:48:12 +08:00 |
|
openqj
|
c757810097
|
Merge pull request #133 from openqj/feat-longtask-auto-resume
长任务中断自动恢复:仅用户暂停才暂停,不限时
|
2026-10-29 11:48:22 +08:00 |
|
openqj
|
0ef896c317
|
Merge pull request #132 from openqj/feat-console-gapfix
console: 分栏改独立容器,修模块间空白间距
|
2026-10-29 11:04:22 +08:00 |
|
openqj
|
e7f7edf5c2
|
Merge pull request #131 from openqj/feat-readme-update
docs: README 对齐生产现状(main 93c25a9,补 PR #130 自适应分栏)
|
2026-10-29 10:48:52 +08:00 |
|
openqj
|
93c25a92bc
|
Merge pull request #130 from openqj/feat-console-adaptive
console: 按宽度自适应分栏(一栏/两栏/三栏)
|
2026-10-29 10:35:54 +08:00 |
|
openqj
|
4c3420ae8e
|
Merge pull request #129 from openqj/feat-console-github
console: GitHub 风格(Primer)
|
2026-10-29 10:21:44 +08:00 |
|
openqj
|
bbe02efc14
|
Merge pull request #128 from openqj/feat-console-dashboard
console: 一页式控制台排版 + 数据卡片
|
2026-10-29 10:04:17 +08:00 |
|
openqj
|
a13762cfbe
|
Merge pull request #126 from openqj/feat-chat-history
chat: 持久化继续消息,chat-history 交替历史
|
2026-10-29 07:07:34 +08:00 |
|
openqj
|
811912c841
|
Merge pull request #125 from openqj/feat-console-muse-style
console: 按 Muse 网页端/桌面端视觉重做
|
2026-10-29 06:58:11 +08:00 |
|
openqj
|
5ca5cc91cc
|
Merge pull request #124 from openqj/feat-console-react
console: React 生产级重写(左列表 + 中对话 + 右详情)
|
2026-10-29 06:38:35 +08:00 |
|
openqj
|
3f4e849a93
|
Merge pull request #122 from openqj/feat-pm-wait-deadlock
worker: always start capacity pool threads in run_all
|
2026-10-29 05:47:32 +08:00 |
|
openqj
|
ab0aaf4a5e
|
Merge pull request #121 from openqj/feat-child-model
feat: 子任务默认模型/强度(child_model/child_effort)
|
2026-10-29 05:35:51 +08:00 |
|
openqj
|
f99e667222
|
Merge pull request #120 from openqj/feat-marker-wait-heartbeat
worker: heartbeat parent task during marker poll/wait loops
|
2026-10-29 04:47:33 +08:00 |
|
openqj
|
fd2309686e
|
Merge pull request #119 from openqj/feat-git-pull-deploy
deploy: add git-pull source for host deployment
|
2026-10-29 03:45:27 +08:00 |
|
openqj
|
630d14fe07
|
Merge pull request #118 from openqj/feat-coord-running-leak
worker: release running slot after coordinator completes
|
2026-10-29 03:07:35 +08:00 |
|
openqj
|
a367da3ed0
|
Merge pull request #117 from openqj/feat-autoscaler-coord-guard
autoscaler: guard scale-down against live coordinators and busy victims
|
2026-10-29 00:37:44 +08:00 |
|
openqj
|
4cf5888f94
|
Merge pull request #116 from openqj/feat-automem-pg-replace
fix(db): register auto-memory tables in _OR_REPLACE_PK
|
2026-10-28 23:01:16 +08:00 |
|
openqj
|
ce83dcf586
|
Merge pull request #114 from openqj/feat-websearch-docker-env
fix: pass search env into Docker task containers (SEARXNG_URL was lost)
|
2026-10-28 22:22:55 +08:00 |
|
openqj
|
ffeed25f50
|
Merge pull request #115 from openqj/feat-rate-limit-retry-after
429 限流加 Retry-After 头
|
2026-10-28 20:22:11 +08:00 |
|
openqj
|
7279d0a81c
|
Merge pull request #110 from openqj/feat-marker-tools
任务内标记工具:task-create/task-poll/task-read、wait-threads、task-cancel/task-retry
|
2026-10-28 20:19:39 +08:00 |
|
openqj
|
eae9884b13
|
Merge pull request #111 from openqj/feat-coord-row-vanished
协调员行消失按中断处理:本体行消失即放槽,子任务行消失按 interrupted 合流
|
2026-10-28 17:46:23 +08:00 |
|
openqj
|
a0b6333f0c
|
Merge pull request #113 from openqj/feat-websearch-worker
feat: websearch MCP worker wiring + egress (public SearXNG route)
|
2026-10-28 17:36:22 +08:00 |
|
openqj
|
075908fe58
|
Merge pull request #112 from openqj/feat-websearch-mcp
feat: web search MCP v1 (oh-my-pi pattern, Python stdlib)
|
2026-10-28 17:21:19 +08:00 |
|
openqj
|
5026e75b2c
|
Merge pull request #109 from openqj/feat-goal-fail-resume
goal 异常退出记 interrupted,可断点续跑
|
2026-10-28 15:53:35 +08:00 |
|
openqj
|
d129f7bf8c
|
Merge pull request #108 from openqj/feat-auto-memory
云端身份记忆 + 自动提取注入:官方 memories 对齐(确定性 v1)
|
2026-10-28 12:19:17 +08:00 |
|
openqj
|
ea5ab6207c
|
Merge pull request #93 from openqj/feat-cost-notify-3
成本预算与失败通知第三批:G7 分层、G8 Docker 轮询掐断、G9 worker 忽略 host 预算、G13/G14 归属
|
2026-10-28 11:49:44 +08:00 |
|
openqj
|
ac553509ea
|
Merge pull request #107 from openqj/feat-thread-unarchive-noresume
fix: thread/unarchive 不再预 resume
|
2026-10-28 09:46:57 +08:00 |
|
openqj
|
5c9beb8a6d
|
Merge pull request #106 from openqj/feat-thread-unarchive
fix: thread/unarchive 走已归档解析(--archived 列表)
|
2026-10-28 06:30:17 +08:00 |
|
openqj
|
f5d6d6b9f0
|
Merge pull request #105 from openqj/feat-thread-resolve
fix: 线程解析按 home×provider 穷尽回退(共享 home + sub2api)
|
2026-10-28 05:45:43 +08:00 |
|
openqj
|
86eb43f1ca
|
Merge pull request #104 from openqj/feat-thread-lifecycle
feat: 线程生命周期对齐 15 项(bindings/refs/快照/心跳绑定/移交落点)
|
2026-10-28 05:04:53 +08:00 |
|
openqj
|
aee60fcb7d
|
Merge pull request #103 from openqj/feat-thread-wait-ops
feat: 线程等待与状态读取 8 项(wait/read/message/handoff/worktree/pr-checks/automation/sleep)
|
2026-10-28 04:43:02 +08:00 |
|
openqj
|
38c0797cb3
|
Merge pull request #100 from openqj/feat-residual-a
残留批次A:成员删除、PR needs_local_worker 落库、推送 DNS TOCTOU
|
2026-10-28 03:27:59 +08:00 |
|
openqj
|
6e3eb7ba11
|
Merge pull request #99 from openqj/feat-p2
feat: P2 控制台与运维批(成员管理、任务筛选、链路下载、线程操作与 skills/MCP、迁移对齐、monitor 告警、备份回滚、Caddy 选项)
|
2026-10-28 00:52:55 +08:00 |
|
openqj
|
97f019d1dd
|
Merge pull request #98 from openqj/feat-p1-security
feat: P1 安全批(执行中配额检查、成本实账、goal/协调员语义、PR 通道、孤儿签名、控制面与控制台加固)
|
2026-10-28 00:36:54 +08:00 |
|
openqj
|
d254240d84
|
Merge pull request #96 from openqj/feat-p0-security
feat: P0 安全批(真全局管理员、双人配额门、默认配额、fix-review 收紧、App 配置限管理员、取消真杀任务)
|
2026-10-28 00:17:37 +08:00 |
|
openqj
|
d0ca1f7f60
|
Merge pull request #97 from openqj/feat-login-retry
登录限流下开通突发不再硬失败(节流 + 429 重试)
|
2026-10-27 23:34:41 +08:00 |
|
openqj
|
494c3847d4
|
Merge pull request #94 from openqj/feat-regperf
perf: 注册开通复用进程内管理员会话
|
2026-10-27 22:46:50 +08:00 |
|
openqj
|
cc0c707ccd
|
Merge pull request #90 from openqj/feat-cost-notify-1
成本预算与失败通知第一批(G1/G2/G5/G6/无价上报)
|
2026-10-27 21:58:55 +08:00 |
|
openqj
|
c2f82da5e0
|
Merge pull request #92 from openqj/feat-sub2api-hotfix
fix: docker 默认 runner 支持 env + 并发开通竞态复用
|
2026-10-27 18:10:50 +08:00 |
|
openqj
|
99efa93bd3
|
Merge pull request #88 from openqj/feat-sub2api
sub2api 网关接入:每用户独立账号 + 任务注入 + 网关可配置
|
2026-10-27 17:30:14 +08:00 |
|
openqj
|
437684902a
|
Merge pull request #86 from openqj/feat-multiuser-hardening
多用户生产级缺口批:sweep 鉴权、默认配额、默认 executor、 无价 token 上限
|
2026-10-27 17:22:40 +08:00 |
|
openqj
|
c1f9313c10
|
Merge pull request #87 from openqj/feat-coordinator
feat: 协调员任务(并行子任务、等齐、合流汇总)
|
2026-10-27 16:25:32 +08:00 |
|
openqj
|
e786e1f85d
|
Merge pull request #89 from openqj/feat-p1
P1 补齐:自动评审队列、自动化+分诊、并发 caps、运行时审批队列
|
2026-10-27 16:00:53 +08:00 |
|
openqj
|
29efc6c61f
|
Merge pull request #85 from openqj/feat-task-turn-ids
feat: 任务列表显示 turn_id 与 root_turn_id
|
2026-10-27 15:44:33 +08:00 |
|
openqj
|
559a7dcb9f
|
Merge pull request #84 from openqj/feat-peer-messages
feat: 任务间互发消息(API + agent 标记块,不中断任务)
|
2026-10-27 14:30:14 +08:00 |
|
openqj
|
4901a1090b
|
Merge pull request #83 from openqj/feat-tenant-trace
fix: 租户 Docker 任务链路可见(租户目录优先、共享目录兜底)
|
2026-10-27 13:01:35 +08:00 |
|
openqj
|
79a1d56856
|
Merge pull request #82 from openqj/feat-subagent-chain
feat: 命令台子代理链路(主任务/模型子代理/委派子任务 + 过程调用实时同步)
|
2026-10-27 11:54:41 +08:00 |
|
openqj
|
34cd0eeba7
|
Merge pull request #81 from openqj/feat-orphan-worker
fix: worker 代码变化自退 + 部署时清孤儿 worker
|
2026-10-27 11:26:47 +08:00 |
|
openqj
|
c007fafcc7
|
Merge pull request #78 from openqj/feat-quota-hardening
worker: enforce quotas during execution
|
2026-10-27 11:13:49 +08:00 |
|
openqj
|
c189df4a20
|
Merge pull request #76 from openqj/fix-handler-500
fix: 请求处理未捕获异常回 500 JSON,不再断连变 nginx 502
|
2026-10-27 11:01:31 +08:00 |
|
openqj
|
ad8bf280d0
|
Merge pull request #77 from openqj/feat-staging-cleanup
fix: 提前失败路也清附件暂存
|
2026-10-27 11:00:27 +08:00 |
|
openqj
|
b0772d0eac
|
Merge pull request #75 from openqj/feat-deploy-key
feat: deploy 无密码时走密钥直连
|
2026-10-27 05:50:52 +08:00 |
|
openqj
|
0a862c11f7
|
Merge pull request #74 from openqj/feat-repo-picker2
GitHub 仓库选择菜单:安装仓库列表 + PATCH 补仓库 + 控制台下拉
|
2026-10-27 05:48:08 +08:00 |
|
openqj
|
d91e5134f5
|
Merge pull request #73 from openqj/fix-rate-limit-deadlock
fix: 限流清理移出请求路径,根治 rate_limit_hits 死锁
|
2026-10-27 05:45:18 +08:00 |
|
openqj
|
5ba4d35839
|
Merge pull request #72 from openqj/feat-goal-marker
fix: goal 宣告检测容忍行尾句号
|
2026-10-27 05:32:11 +08:00 |
|
openqj
|
43748804d3
|
Merge pull request #71 from openqj/feat-quotas
租户配额与计费:按用户月度 USD 上限 + 建任务/分支/重试准入 402
|
2026-10-27 05:28:25 +08:00 |
|
openqj
|
2a7cdd582f
|
Merge pull request #70 from openqj/feat-continue
feat: 旧任务继续会话——终端任务带新消息 + 全部选项同一会话续跑
|
2026-10-27 04:46:06 +08:00 |
|
openqj
|
cf293914d9
|
Merge pull request #69 from openqj/feat-attachments
feat: 任务附件——文件/文件夹/图片进任务工作区
|
2026-10-27 04:39:05 +08:00 |
|
openqj
|
c102327040
|
Merge pull request #68 from openqj/env-console
feat: 命令台云端环境——选、建、管 + 任务绑定环境
|
2026-10-27 04:13:11 +08:00 |
|
 openqjandhost
|
c86b450851
|
feat: goal 模式新语义——prompt 即目标,无验收命令,不限轮次,模型宣告完成 (#67)
console 打勾 goal 模式时不再有专用 goal 文本、验收命令、轮次
三个输入(已移除,换成说明行),只发 goal_mode=1;server 侧
goal_mode=1 时 goal 存 prompt、验收命令空、轮次存 0,带验收
命令或与计划模式同用时 400,旧的带验收命令任务照原样可用。
host.py goal 循环:verify 为空时不跑验测,轮次提示里写明
标记约定;模型在完整跑完的回合末尾单独一行输出“目标已
达成”即达标(超时回合的部分文本含标记也不算);--max-rounds
0 为不限轮次,goal-resume 续跑按 0 处理(不用 or 兜底成 3)。
刹车只有取消与预算耗尽(后者记 interrupted、可续跑)。
迁移与 worker:tasks 加 goal_mode 列(server 迁移、worker 列
补齐、PG schema 三处同步);worker 按 goal_mode 或
verify_command 判定 goal 路径,重试与后续消息排空对新语义
同样只跑一次/不排空;Local/Docker goal_task 的 --verify 可选、
--max-rounds 0 原样传。
Co-authored-by: host <host@test.local>
|
2026-10-27 03:54:48 +08:00 |
|
 openqjandhost
|
4179fb1a0a
|
fix: 命令台初始化有 key 即加载模型列表 (#66)
回访用户 key 已在 localStorage 里:此前模型列表只在点“保存”
时加载一次,重开页面下拉永远只有默认项(2026-10-27 实测)。
初始化序列补 if (getKey()) loadRelayModels();单测补初始化
序列含该调用的标记断言。
另:公网 /relay/models 曾因 nginx 缺 /relay/ 代理返回 404,
与本修无关,nginx 侧另行补 location。
Co-authored-by: host <host@test.local>
|
2026-10-27 03:33:35 +08:00 |
|